Wren만의 특별함을 알아봐요
Wren은 작고 빠르며 클래스 기반인 동시성 스크립팅 언어예요. Lua 정도 크기의 패키지에 Smalltalk을 담고 Erlang을 살짝 곁들여 익숙하고 현대적인 문법으로 포장한 언어라고 생각해 봐요.
작아요. VM은 읽기 쉽고 정성껏 주석을 단 C 코드로 되어 있는데, 세미콜론이 4,000개가 채 안 돼요.
빨라요. 똑똑한 단일 패스 컴파일러가 꽉 짜인 효율적인 바이트코드를 만들어내요.
클래스 기반이에요. 클래스와 객체가 중심에 자리 잡고 있어요.
동시성을 지원해요. 가벼운 파이버가 언어에 내장되어 있어요.
스크립팅에 적합해요. 임베드할 수 있고, 의존성이 없으며, 표준 라이브러리가 작고, 사용하기 쉬운 C API를 갖추고 있어요.
Wren의 심장은 VM이에요. Wren 가상 머신은 언어의 핵심으로, 모든 Wren 소스 코드를 실행해요. 독립 실행형 애플리케이션이 아니라 그냥 라이브러리예요. 더 큰 호스트 애플리케이션 안에 임베드되도록 설계됐어요.
Wren이 임베드된 프로젝트로는 이런 것들이 있어요:
직접 만든 프로젝트 안에 Wren을 임베드할 수도 있어요. Exercism에서는 호스트 애플리케이션으로 Wren Console을 사용할 거예요. 터미널에서 Wren 스크립트를 실행하고 테스트할 수 있게 해줘요.
Wren은 원래 Crafting Interpreters로 유명한 Bob Nystrom이 만들었어요. 그는 여러 언어를 만들어 온 사람인데, Wren을 만들게 된 계기를 이렇게 설명해요:
애플리케이션에 임베드하는 데 쓰이는 스크립팅 언어가 몇 가지 있어요. 대표적인 게 Lua고, 예전에는 TCL도 그랬죠. Guile도 있고, 점점 JavaScript도 쓰이고, 어떤 애플리케이션은 Python을 임베드해요. 저는 게임 개발자 출신이라 "스크립팅"이라고 하면 "게임 스크립팅"을 먼저 떠올려요.
Lua는 좋아요. 작고 단순하고 빠르죠. 그런데, 비판하려는 건 아니고요, C++나 Java 같은 언어에 익숙한 사람에게는 좀 이상하게 느껴질 거예요. 문법이 다르고, 특히 객체 모델 같은 의미 체계가 독특하죠. 1부터 시작하는 인덱싱은 누구나 익숙해질 수 있지만, 메타테이블 같은 건 객체가 나중에 Lua에 억지로 붙여진 것이라는 걸 여실히 보여줘요.
Lua만큼 단순하면서도 객체 지향 프로그래밍(OOP)에 익숙한 사람에게는 자연스럽게 느껴지는 언어가 있을 자리가 있다고 생각해요. Wren은 그걸 위한 제 시도예요.
아무것도 설치할 필요 없이 웹 브라우저에서 바로 사용해 볼 수 있어요. 세련된 UI로 감싼 Wren을 가지고 실험해 보고 싶다면 Wren Playground를 살펴보세요.