본문 바로가기

Home > 열린마당 > 공개SW 소식

공개SW 소식

“유명 상표를 넘어서” 새롭게 떠오르는 10가지 프로그래밍 언어

OSS 게시글 작성 시각 2014-04-23 17:47:44 게시글 조회수 3445

2014년 04월 22일 (화)

ⓒ ITWorld, Serdar Yegulalp | InfoWorld


오늘날 사용되는 프로그래밍 언어의 수는 엄청나게 많다. 그러나 대부분의 조직은 어떤 프로그래밍 문제에 직면하든 '유명 상표'인 소수의 언어로만 대처한다. 자바, C++, 자바스크립트, PHP, 루비 등 개발자들이 항상 사용하는 검증된 코드들이다.
하지만 어떤 문제는 새로운 접근 방법과 새로운 도구를 필요로 한다. 여기서는 새로운 방식의 유용성으로 주목을 받고 있는 10가지 프로그래밍 언어를 살펴보자. 범용적인 기능부터 특화된 용도에 이르기까지 다양하며 그 뿌리도 리스프부터 자바에 이르기까지 광범위하다. 이 언어들은 앞으로 발전해 나가면서 현대 프로그래밍에 중대한 영향을 미칠 수도 있다.



실론(Ceylon) 1.0.0
유사 언어 : 자바(그러나 자바의 하위 버전이 아님)
라이선스 : 아파치 v2
특징 : 레드햇 개발자들이 모여 자바가 좋은 언어가 되기 위해 하지 말아야 할 부분과 해야 할 부분에 대해 논의한 적이 있다. 이런 희망 사항들이 축적되어 실론이 태어났다. 실론은 JVM과 Node.js에서 실행되며, 자바의 악명 높은 여러 문제점들을 없애준다. 트리 구조의 데이터에 XML 대신 JSON과 유사한 선언 구문을 사용하며, 정적 형식 지정, 모듈 시스템, 그리고 시퀀스, 인터섹션, 유니온 형식 등 자바에는 없는 몇 가지 구조에 대한 지원이 특징이다.


클로저(Clojure) 1.6
유사 언어 : 리스프
라이선스 : 이클립스 퍼블릭 라이선스 1.0
특징 : JVM에서 실행되며 자바의 프레임워크 및 라이브러리에 대해 완전한 접근 권한을 갖고 있음을 감안하면 JVM을 위한 리스프라고 생각할 수도 있다. 클로저를 만든 이들은 이 언어를 동시성을 감안하여 만들어진 함수형 프로그래밍을 위한 도구라고 한다. 달리 말하자면 멀티코어 또는 널리 분산된 애플리케이션에 적합하다. 인포월드의 앤디 올리버는 루비, 실론과 클로저를 비교해보고는 수학 또는 과학 백그라운드를 가진 프로그래머에게 가장 적합하다는 결론을 내렸다. 그러나 함수형 프로그래밍 패러다임이 부상하고 있는 상황에서 클로저는 계산 과학 이상의 관점에서 주목할 가치가 있는 언어다.


에지슨 3.3.3
유사 언어 : 리스프
라이선스 : MIT
특징 : 에지슨은 다양한 데이터를 기준으로 패턴 매치를 수행하는 함수형 언어다. 에지슨을 만든 사토시 에지는 기존 프로그래밍 언어의 패턴 매치는 데이터가 목록과 같은 구조적 형태로 저장된 경우에만 지원된다고 지적한다. 에지슨은 데이터 형식에 따라 다양한 방법으로 패턴 매치를 표현하고, 동일한 변수가 패턴으로 여러 번 발생하는 경우와 같은 비선형 패턴을 처리하고, 패턴을 수신하고 반환하는 함수를 만들 수 있도록 설계됐다.


그루비(Groovy 2.2)
유사 언어 : 자바
라이선스 : 아파치 라이선스 2.0
특징 : 그루비는 JVM에서 실행되며 자바 라이브러리 클래스를 이용할 수 있는 자바의 구문 확장이므로 "자바 플러스" 정도라고 생각하면 된다. 그러나 그루비는 자바에는 없는 기능을 자랑한다. 대표적으로 정적 및 동적 형식 지정이 있지만 연산자 오버로딩, 네이티브 정규 식 지원, 그리고 거추장스러운 구문으로 식을 래핑할 필요 없이 널 개체에 대한 안전한 확인을 가능하게 해주는 "?" 연산자가 있다. 링크드인, 와이어드와 같은 유명 기업들이 그루비(그리고 그루비 웹 프레임워크인 그레일스(Grails))를 웹 사이트에 사용하며, 이클립스와 인텔리J 등의 주요 IDE도 현재 그루비를 지원한다.


핵(Hack) 1.0
유사 언어 : PHP
라이선스 : PHP/젠드(Zend) 라이선스
특징 : 페이스북은 이미 PHP를 위한 자체 런타임(HHVM)을 만들었다. 그렇다면 한 걸음 더 나아가 PHP 자체를 손보면 어떨까? 페이스북이 새로 출범한 언어인 핵은 PHP의 빠른 개발 주기와 사용 편의성을 유지하면서 정적 개체 형식 지정과 람다 식을 추가하고 안전성과 내구성을 위해 OCaml로 작성됐다. 기존 PHP 코드는 대부분 핵에서 실행되므로 PHP에서 핵으로 마이그레이션하기는 이론상 쉬울 것이다. 그러나 지금으로서는 페이스북의 울타리를 벗어난 환경에서도 핵이 PHP와 같은 인기를 얻을지 여부는 확언하기 어렵다.


지브스(Jeeves)
유사 언어 : ML, 그러나 스칼라와 파이썬에 직접 구현됨
라이선스 : MIT
특징 : 지브스의 개발 목표는 한 가지다. 프로그래머가 애플리케이션에서 데이터 이동에 대해 개인정보 보호 정책을 시행할 수 있도록 하는 것이다. 이 언어의 파이썬 구현에 포함된 readme 파일에 설명되어 있듯이, 이것은 단순히 지정된 사용자가 값을 볼 수 있는지 여부를 확인하는 데서 더 나아가 해당 사용자가 그 값에서 파생된 값을 볼 수 있는지 여부까지 결정한다. 이러한 데이터 흐름 방법에 적용되는 정책은 프로그램 자체와는 별개로 생성되고 관리된다. 데이터 보안이 프로그래밍에서 중요한 요소가 되었음을 감안하면 지브스와 같은 프로젝트는 앞으로 더 많은 관심을 끌게 될 가능성이 높다.


줄리아(Julia) 0.2.1
유사 언어 : 파이썬
라이선스 : MIT
특징 : 줄리아는 병렬/분산 대량 고속 연산이 일상적으로 수행되는 기술 및 과학 컴퓨팅을 위해 개발된 언어다. 줄리아는 LLVM 기반 컴파일러의 지원을 받아 기계 코드로 컴파일되며, 일부 벤치마크에서 매트랩(Matlab), 매스매티카(Mathematica), R(마찬가지로 수학 및 과학용으로 개발됨)의 성능을 훨씬 넘어서는 것으로 나타났다. 언어의 기능을 확장하기 위해 리스프와 비슷한 매크로 함수도 지원한다. 또한 파이썬의 수학 및 과학 라이브러리를 옵션으로 활용할 수 있으므로 이러한 라이브러리를 애용했던 사람도 이질감 없이 사용할 수 있다.


님로드(Nimrod) 0.9.2
유사 언어 : 파이썬, 파스칼
라이선스 : MIT
특징 : 님로드 홈페이지는 이 언어를 "프로그래머에게 런타임 효율성의 희생 없이 궁극적인 힘을 주기 위한 정적 형식 지정 명령형 프로그래밍 언어"라고 소개한다. 님로드는 C(옵션으로C++와 오브젝티브 C도 가능)로 컴파일되며 가상 머신이나 런타임이 필요 없다. 님로드는 하드웨어에 직접 접근할 수 있고 가비지 수집 및 수동 수집 메모리 모두에 대한 포인터를 가지므로 시스템 프로그래밍 용도에 적합하다. 또한 사용자가 연산자와 매크로를 정의할 수 있으며, 윈도우, POSIX API, GTK2, OpenGL 등 널리 사용되는 여러 라이브러리 및 써드 파티 애플리케이션을 위한 바인딩이 제작되어 있다.


OCaml 4.01
유사 언어 : ML 정리 증명 언어, 일부분 리스프
라이선스 : Q 퍼블릭 라이선스
특징 : 대부분의 프로그래밍 언어는 함수형(리스프), 명령형(C), 객체지향(자바)의 세 가지 범주 안에 포함된다. OCaml은 이 세 가지 모두의 기능을 하며, 핵(앞서 언급한 페이스북의 PHP 개조판), 젠(Xen) 프로젝트의 미라지(Mirage) OS를 포함한 최근의 몇몇 OCaml 프로젝트는 큰 관심을 끌었다. 이 언어의 정적 형식 지정 설계는 동적 형식 지정 진영이 지금껏 투자하여 구축한 견고함에는 미치지 못할 수 있지만 다른 언어들이 뒤따르기 시작한 것을 보면(예를 들어 마이크로소프트의 F#) 주목할 만한 가치는 충분하다고 할 수 있다.


래킷(Racket) 6.0
유사 언어 : 리스프, 스킴(Scheme)
라이선스 : LGPL
특징 : 리스프의 변형인 스킴, 그 스킴의 변형인 래킷은 언어 만들기에 충분할 정도로 강력하면서 일반적인 애플리케이션 프로그래밍 용도로 사용할 수 있을 정도로 간단하고 견고하다. 너티 독(Naughty Dog)은 여러 게임에서 스크립팅용으로 이 언어를 사용하며 해커 뉴스 웹 사이트는 스킴을 사용해서 개발됐다. 다른 리스프 유사 언어와 달리 스킴의 매크로 시스템에는 컴파일러 자체도 포함되므로 기능을 마치 네이티브 래킷 구조와 같이 언어에 추가할 수 있다.



※ 본 내용은 한국IDG(주)(http://www.itworld.co.kr)의 저작권 동의에 의해 공유되고 있습니다.
Copyright ⓒITWORLD. 무단전재 및 재배포 금지



[원문출처 : http://www.itworld.co.kr/slideshow/87151]

맨 위로
맨 위로