Offcanvas

개발자 / 애플리케이션 / 자기계발

코코넷, 크리스탈, 오덴... 새 언어 3종과 창안자들의 이야기

2016.09.05 Paul Krill   |  InfoWorld
수백 가지 프로그래밍 언어가 이미 존재하는데 왜 새 언어를 만드느라 노력을 들일까? 그러나 3가지 최신 오픈소스 언어(코코넛, 크리스탈, 오덴)를 개발한 이들에게 그 답은 뚜렷했다. 채워야 할 틈이 있기 때문이다.

기존 툴에 무언가 부족함을 느껴왔던 이 개발자들은 각자의 이유로 인해 자신의 언어를 구축해냈다. 파이썬에 컴파일 하는 코코넛(Coconut)은 파이썬 언어에 함수형 프로그래밍(functional programming)을 가져오는 게 목적이다. 크리스탈(Crystal)은 여러 프로그래밍 기능을 통합하는 목적이 있다. 그리고 오덴(Oden) 개발 이면에는 구글의 인기 고(Go) 언어에 없는 몇 가지 기능을 채워 넣으려는 니즈가 있었다.

인포월드는 이들 언어 배후에 있는 개발자 및 팀과 이야기를 나누고 그 언어들의 기원과 실용성에 대해 더 이해해 보고자 했다. 그리고 개발자들이 어떤 영감으로 새 프로그래밍 언어를 개발하는 작업을 하게 되었는지도 확인해봤다.

코코넛: 파이썬의 영역 확장
코코넛 개발자 에반 허빙어(Evan Hubinger)는 “나는 함수형 프로그래밍(functional programming)을 좋아한다. 나는 함수형 패러다임이 문제에 대해 훨씬 자연스러운 사고방식을 가능케 하고, 훨씬 우아하고 간결하고 읽기 좋은 코드로 이어진다고 생각한다”라고 말했다.

그는 이어 “그러나 인기 있는 프로그래밍 언어 톱 20을 보면 어느 하나도 함수형이지 않다. 다행히 이들 다수에 대해 함수형 대안이 있다. 자바는 스칼라(Scala)가 있고 C#은 F#이 있다. 그런데 파이썬에는… 아무것도 없다”라고 전했다.

(자바의 경우 2014년 함수형 기능을 추가했지만 기능적 언어로 원래 개발된 것은 아니다)

허빙어는 파이썬이 그의 첫 번째 언어였다고 말하며, 파이썬의 경우 명령 프로그래밍에는 우아하지만 이를 함수형 프로그래밍에 쓰려면 어렵고 둔하다고 설명했다.

참고로 코코넛은 파이썬용 기능적 프로그래밍에 대한 그의 두 번째 시도다. 허빙어는 래빗(Rabbit)이라는 언어를 개발했지만 그리 만족스럽지 않자 이를 버렸다. 현재 대학생인 허빙어는 옐프(Yelp)에서 소프트웨어 개발 인턴으로 일하고 있다.

크리스탈: 기존 언어의 기능에 초점 맞추기
크리스탈의 주 개발자 아리 보렌스벡(Ary Borenszweig)은 기존의 프로그래밍 언어의 풍부함을 수용하는데 그치지 않고 최고 기능 위에 새롭게 (크리스탈을) 구축했다.

보렌스벡은 “물론 많은 언어가 존재하고 있다. 하지만 크리스탈은 기존과 다른 방식으로 다른 언어의 몇 가지 기능을 혼합한다”라고 소개했다.

크리스탈은 정적 유형-확인(static type-checking)을 가진다. 기법 논쟁 유형(types of method arguments)이나 로컬 변수를 특정하지 않고서다. 이는 더 빠른 프로토타이핑, 장황한 코드 감소, 더욱 일반화된 코드를 가능케 한다고 보렌스벡은 강조했다.

크리스탈은 또한 자동 메모리 관리 기능과 가상머신 없는 네이티브 컴필레이션(native compilation sans a virtual machine) 기능을 갖췄다.

보렌스벡은 “보일러플레이트 코드(Boilerplate code)를 피하는 매크로가 있다. 그리고 기존 C 라이브러리를 활용하기 위한 아주 쉬운 방식을 가지고 있다”라고 말했다. 그는 과학 분야 소프트웨어 개발 기업인 마나스(Manas)에서 근무하고 있다.

오덴: 고(Go)의 성공에 올라타기
한편 오덴(Oden)은 불만이 있던 고(Go) 팬에 의해 개발된 언어다. 오덴 개발자 오스카 비크스트롬(Oskar Wickstrom)은 “나는 고의 툴링(tooling) 및 배치 이야기를 좋아했다. 학습 곡선은 완만하고 툴도 아주 잘 작동한다. 하지만 고 언어는 몇 가지 특성이 있는데 여기에 일부 문제가 있었다”라고 말했다.

그는 제네릭 부재와 제어 흐름 추상화, 오류-처리, 닐-체킹의 어려움을 언급했다. 비크스트롬은 “오덴은 이런 제약을 해소하고 더욱 유연한 유형 시스템을 제공하는 한편 함수형 프로그래밍에 초점을 두기 위해 만들어졌다’라고 말했다. 그는 2011년부터 프로그래머로 일해왔으며 현재 엠피어(Empear)라는 스타트업에서 프로젝트 분석 툴을 개발하고 있다.

그는 “또 다른 주요 목표는 고와의 손쉬운 정보처리상호운용을 제공해 얼리어답터들이 그들의 표준 고 라이브러리를 바인딩 작성 없이 활용 할 수 있게 하는 것”이라고 말했다.

새로 등장한 언어들의 활용 증가
언어를 만드는 것도 일이지만 동일한 문제에 직면한 다른 사람들에게 유용하다고 알려내는 것도 일이다. 현재 이 3가지 신규 언어들의 개발자들은 각 언어의 사용 사례들이 진화하는 것을 이미 보고 있다.

비크스트롬은 오덴이 웹 서버, 백-엔드 서비스, 명령행 툴 등 고의 통제쪽 작업에 뛰어나다고 전했다. 또한 제네릭 이용자-정의 데이터 구조, 제네릭 알고리즘, 컨트롤-플로우 추상화를 제공하는 라이브러리 구축에도 좋다고 그는 덧붙였다.

한편 크리스탈은 비폐색 I/O와 경량 프로세스를 가지고 있어서 웹 서비스에 적합하다고 보렌스벡은 전했다. 기존 애플리케이션은 명령행 애플리케이션, 에뮬레이터, 웹사이트, IRC 봇들을 포함시켜왔다.

보렌스벡은 “빠르게 프로토타입 해야 하지만 좋은 성능을 달성해야 하는 경쟁 프로그램에도 사용될 수 있다”라며 “마지막으로 크리스탈처럼 컴파일러 구축에도 활용될 수 있다”라고 말했다.

코코넛은 파이썬과 동일 애플리케이션에 적합하다고 허빙어는 말한다. 그에 따르면 이는 “요즘 파이썬의 인기를 볼 때 아주 느슨한 기준에 해당한다.” 허빙어는 “코코넛이 파이썬에 컴파일 되기 때문에 코코넛이 할 수 없는 것을 파이썬이 할 수는 없다”라고 말했다.

크리스탈과 오덴이 개발 초기 단계로 남아있지만 코코넛은 6월 1.0 버전이 등장했고 7월에는 1.1판까지 나왔다.

한편 크리스탈은 루비로 원래 작성되었었다. 단 현재는 크리스탈 자체로 컴파일러가 재작성됐다. 오덴의 첫 컴파일러는 래켓(Racket)으로 쓰였지만 자체 유형 인퍼런서는 스킴(Scheme)에 내장된 관계형 프로그래밍 언어인 미니칸렌(MiniKanren)을 활용해 개발됐다. 이 컴파일러는 이후 하스켈(Haskell)을 활용해 재작성됐다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
Sponsored
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.