현재 사용 중인 프로그래밍 언어의 수와 다양성은 엄청나다. 하지만 좋든 싫든 대부분의 기업들은 일반적으로 몇 안되는 언어에 의존해 실제로 발생하는 프로그래밍 문제를 해결하고 있다. 자바, C++, 자바스크립트, PHP, 루비(Ruby) 등 개발자들은 몇 번이고 자신들이 신뢰할 수 있는 입증된 언어로 최선의 코드를 개발하고 있다.
최근 유용성(utility)이 새로 발견됐거나 새롭게 생성되거나 재창조(reimagine)돼 관심을 받고 있는 10가지 프로그래밍 언어를 소개한다. 이 언어들은 일반적인 용도에서 구체적인 용도까지 다양하게 활용되고 있으며 리스프(Lisp)에서 자바까지 다양하게 뿌리를 두고 있지만 각각 발전하면서 현대의 프로그래밍에 유의적인 영향을 끼칠 수 있다. ciokr@idg.co.kr
실론(Ceylon) 1.0.0
유사 언어: 자바(파생 버전은 아님)
라이선스: 아파치v2
특징: 언젠가 레드햇에서 개발자들이 모여 이런 이야기를 나눴다. "자바가 이렇고 저랬으면 좋았을 뻔 했다." 그리고 얼마 지나지 않아 실론이 탄생했다. 이 언어는 JVM 및 Node.js에서 구동하며 자바의 악명 높은 많은 문제점들을 해결하고 있다. 해당 언어는 XML 대신에 3개의 구조화된 데이터를 위해 JSON과 유사한 선언 문법을 사용하며 정적 타이핑(Typing), 모듈 시스템, 자바에 존재하지 않는 시퀀스(Sequence), 인터섹션(Intersection), 유니온 타입(Union Type) 등의 일부 구조에 대한 지원 등이 특징이다.
클로저(Clojure) 1.6
유사 언어: 리스프(Lisp)
라이선스: 이클립스 퍼블릭 라이선스(Eclipse Public License) 1.0
특징: 클로저는 JVM에서 구동하며 자바의 프레임워크(Framework)와 라이브러리(Library) 전체에 접근할 수 있는 JVM용 리스프라 할 수 있다. 클로저의 개발자는 이 언어를 동시성을 위해 개발된 기능적 프로그래밍을 위한, 즉, 다중코어 또는 널리 배포된 애플리케이션에 적절한 툴로써 홍보하고 있다. 인포월드의 앤디 올리버는 루비와 실론 환경에서 클로저를 살펴보았으며 수학 또는 과학적 배경지식이 있는 프로그래머에 적합하다는 느낌을 받았다. 하지만 기능적 프로그램 패러다임이 상승세를 타고 있는 상황에서 클로저는 컴퓨터 공학 외의 분야에서도 주목받을 만 하다.
에기슨(Egison) 3.3.3
유사 언어: 리스프(Lisp)
라이선스: MIT
특징: 에기슨은 일련의 데이터 타입에 대해 패턴 매칭(Pattern Matching)을 수행하기 위한 기능 언어다. 에기슨의 개발자 사토시 에기는 기존 프로그래밍 언어의 패턴 매칭은 데이터가 목록 같은 구족화된 형태로 저장되어 있는 경우에만 지원된다고 말했다. 에기슨은 데이터 타입에 기초하여 다양한 방식으로 패턴 매칭을 표현하고 (목록 vs. 세트), 한 패턴에서 동일한 변수의 복수 발생 등의 비선형적 패턴을 처리하며 패턴을 수신하고 복귀시키는 기능을 생성하기 위해 개발됐다.
그루비(Groovy) 2.2
유사 언어: 자바
라이선스: 아파치 라이선스 2.0
특징: 그루비는 기본적으로 JVM에서 구동하며 자바 라이브러리 클래스를 사용할 수 있는 자바의 구문론적 확장이기 때문에 ‘자바 플러스’라 불러도 무방하다. 하지만 그루비는 자바에서 기본적으로 지원하지 않는 정정 및 동적 타이핑뿐만이 아니라 연산자 오버로딩(Overloading), 기본적인 일반 표현 지원, 표현을 많은 구문적 치장(Syntactic Sugar)으로 싸잡아 매지 않고 널(Null) 객체를 안전하게 확인할 수 있도록 하는 (필자가 좋아하는) 연산자 '?' 등의 기능을 잔뜩 지원한다. 또한 대기업들이 활용하는 모습도 심심치 않게 볼 수 있다. 링크드인과 와이어드(Wired)는 그루비(와 그루비 웹 프레임워크인 그레일스(Grails))를 자사 웹 사이트에 활용하고 있으며 이클립스(Eclipse)와 인텔리제이(IntelliJ) 등의 주요 IDE들도 이를 지원하고 있다.
핵(Hack) 1.0
유사 언어: PHP
라이선스: PHP/젠드(Zend) 라이선스
특징: 페이스북은 이미 HHVM으로 알려진 PHP용 자체 런타임(Runtime)을 개발한 상황에서 한 걸음 더 나아가 PHP 자체를 이행하지 않을까? 페이스북의 새로운 속편 언어인 핵은 PHP의 신속한 개발 사이클과 사용 편의성을 유지하면서 동적 객체 타이핑과 람다(Lambda) 표현을 추가하고 안전성과 내구성을 위해 OCaml으로 작성됐다. 기존의 많은 PHP 코드가 핵에서 구동할 수 있어 이론적으로는 PHP에서 핵으로 이행하기가 더욱 쉽지만 현재 페이스북을 제외한 다른 곳에서 핵이 PHP만큼이나 큰 인기를 누릴 것이라고 말하기는 어렵다.
지브스(Jeeves)
유사 언어: ML, 스칼라(Scala)와 파이썬에서 직접 이행
라이선스: MIT
특징: 지브스는 프로그래머가 애플리케이션을 통해 데이터가 이동하는 방식에 프라이버시 정책을 실시할 수 있도록 개발되었다. 해당 언어의 파이썬 이행에 관한 리드미(Readme)에서 설명했듯이, 한 사용자가 한 값으로부터 파생된 값을 볼 수 있는지 판단하는데 있어서 해당 값을 볼 수 있는지 여부를 확인하는 것 이상의 기능을 제공한다. 이런 데이터가 흐르는 방식에 대한 정책은 프로그램 자체와 별개로 생성되고 관리된다. 프로그래밍 활동에 있어서 데이터 보안이 중요해진 상황에서 지브스 등의 프로젝트는 앞으로 더욱 큰 관심을 불러 일으킬 것이다.
줄리아(Julia) 0.2.1
유사 언어: 파이썬
라이선스: MIT
특징: 줄리아는 병렬 및 분산형 대형 고속 처리가 중요한 기술 및 과학 컴퓨팅을 위해 개발되었다. LLVM 기반 컴파일러를 이용해 기계 코드로 컴파일하고 일부 핵심 벤치마크에서는 수학과 과학 작업을 위해 개발된 매트랩(Matlab), 매스매티카(Mathematica), R 등의 성능을 크게 상회한다. 심지어 리스프와 유사한 매크로(Macro) 기능을 지원하여 해당 언어의 기능을 확장하고 있다. 또한 줄리아는 선택적으로 기존 파이썬의 수학과 과학 라이브러리를 사용할 수 있기 때문에, 이를 선호하는 프로그래머가 굳이 단절감을 느끼지 않을 것이다.
님로드(Nimrod) 0.9.2
유사 언어: 파이썬, 파스칼(Pascal)
라이선스: MIT
특징: 님로드의 홈페이지에서는 해당 언어를 "런타임 효율성을 타협하지 않으면서 프로그래머에게 궁극의 능력을 제공하기 위해 노력하는 정적 타이핑 명령 프로그래밍 언어"로 설명했다. 님로드는 C로 컴파일이 가능하며 (C++ 및 오브젝티브(Objective)-C 옵션 제공) 가상 머신 또는 런타임을 필요로 하지 않는다. 이 언어는 하드웨어에 직접 접근할 수 있고 가비지(Garbage)를 수거하고 수동으로 관리되는 메모리에 대한 포인터(Pointer)가 있기 때문에 해당 개발자는 이 언어를 시스템 프로그래밍용으로 개발했다. 또한 이 언어를 통해 사용자는 연산자와 매크로를 정의할 수 있고, 바인딩(Binding)은 윈도우와 POSIX API, GTK2, OpenGL 등 다양한 인기 라이브러리와 제 3자 애플리케이션용으로 작성됐다.
오카멜(OCaml) 4.01
유사 언어: ML 정리 입증 언어, 리스프와 일부 유사
라이선스: Q 퍼블릭 라이선스(Q Public License)
특징: 대부분의 프로그래밍 언어는 일반적으로 기능(리스프), 명령(C), 객체 지향(자바) 등 3가지 범주 중 하나에 해당한다. 오카멜은 이 모든 기능을 제공하며 최근의 일부 프로젝트에서는 핵(앞서 언급한 페이스북의 최근 PHP 포크(Fork))과 젠 프로젝트(Xen Project)의 미라지(Mirage) OS 등에서 파장을 일으켰다. 정적 타이핑 디자인이 동적 타이핑에 확고하게 투자한 것들보다 뛰어지는 않을지 몰라도 마이크로소프트의 F# 등의 다른 언어들이 이에 어떻게 접근하고 있는지를 보면 그 만한 가치는 충분하다고 생각된다.
라켓(Racket) 6.0
유사 언어: 리스프, 스킴(Scheme)
라이선스: LGPL
특징: 그 자체로 리스프의 변종인 스킴의 변종인 라켓은 언어 개발이 충분하도록 개발되었으면서도 전통적인 애플리케이션 프로그래밍에 사용하기에 충분히 간소하면서 탄탄하다. 너티 도그(Naughty Dog)는 자사의 여러 게임에 이를 활용하고 있으며 해커 뉴스(Hacker New) 웹 사이트는 스킴을 이용해 개발됐다. 다른 리스프 유사 언어와는 달리 스킴의 매크로 시스템에는 컴파일러 자체가 포함되어 있어 기능들을 마치 라켓의 기본 구조인 것처럼 추가할 수 있다.