E D R , A S I H C RSS

D(프로그래밍 언어)

last modified: 2015-12-07 14:50:16 by Contributors

Contents

1. 역사
1.1. D1
1.1.1. 표준 런타임 라이브러리의 분열
1.2. D aka D2
1.3. 트리비아


1. 역사

1.1. D1

최초의 네이티브 C++ 컴파일러였던 Zortech C++ (Symantec C++이 되었다가 현재는 DMC++이 됨)의 메인 개발자였던 월터 브라이트는 C++의 괴물같은 복잡도를 줄이고 현대적인 언어 개념들을 포함한 언어를 만들기로 했고 1999년부터 작업을 시작해 2001년 12월 첫번째 릴리즈를 발표한다. 처음에는 Mars 언어라고 이름붙였지만 그의 동료 중 한명이 계속 D라고 부르다 보니 D로 이름을 바꾸게 되었다는 허무한 사연이 있다. 버전업이 매우 느렸기 때문에 D 1.0이 릴리즈된 건 2007년이 되어서였다.

범용 시스템 프로그래밍 언어인 C++을 대체하는 것을 목적으로 만들어졌으므로 C++과 같이 기계어 컴파일 되는 언어였으며 C#, Java 등 현대화된 메이저 언어들의 영향을 많이 받았다. 그러면서도 최근의 현대 언어들과 같이 VM상에서 실행되는 구조가 아니었으므로 퍼포먼스 지향적이어서 처음에는 많은 기대를 받았다.[1]

1.1.1. 표준 런타임 라이브러리의 분열

D는 표준 런타임 라이브러리로서 Phobos[2]가 존재했지만 D커뮤니티는 Phobos의 느린 발전속도에 만족하지 못했다. 언어와 개발환경의 느린 발전속도는 D1이 원래 오픈소스가 아니고 Digital Mars에 카피라이트가 있고 상용 언어를 목표로 했기 때문이었다. D 사용자 커뮤니티는 Phobos와는 별도로 오픈소스로서 존재하는 런타임 라이브러리를 만들기로 했고 Tango 라이브러리가 릴리즈되었다. Tango는 Phobos보다 다양한 기능을 제공했으며 커뮤니티가 참여해서 만들어졌기 때문에 발전속도가 빨랐다. D1에 자체에 관한 책은 거의 없지만 D programming with Tango라는 입문서가 출판될 정도였다.

그러나 이런 상황은 커뮤니티 자체를 분열시키는 결과를 낳았고 언어 자체의 발전속도를 저하시키고 인터넷상의 정보를 파편화시켰다. 정보가 많지도 않은 상황에서 입문자들은 전혀 다른 스타일의 런타임 라이브러리에 혼란을 겪어야 했다.

비슷한 상황을 맞은 Python[3]을 보면 구글이 창시자를 영입하고 재단이 출범해 로드맵을 조정하는 것과 대조적이었다.

월터 브라이트는 D1이 실패라고 판단하고 언어 자체를 재설계하기로 결정했다. D의 행보에 실망한 커뮤니티는 대부분 흩어지고, 초반에 받았던 세간의 관심으로부터도 멀어졌다.


1.2. D aka D2

한편, C++ 구루 중 한명이며 Modern C++ Design 이라는 책에서 템플릿 메타프로그래밍에 기반한 정책기반 설계라는 개념을 정립한 것으로 널리 알려진 안드레이 알렉산드레스쿠가 D2 프로젝트에 공동설계자로서 합류하게 된다. 그가 합류하면서 D는 메타프로그래밍 언어로서의 성향이 매우 강해졌으며 관련된 언어 상 기능들이 다수 추가되었다.

D2가 릴리즈되면서 D2는 D2라고 불리지 않으며 공식적으로 D 자체이다. D1은 deprecated 상태로 버그 수정 정도로만 유지된다.

D1과는 달리 현재의 D는 오픈소스 프로젝트로서 GitHub에 전체 프로젝트가 공개되어 있으며 커뮤니티가 활발하게 기여를 하고 있다.

핵심 개발자인 안드레이 알렉산드레스쿠는 현재 페이스북에서 연구자로 소속되어 있으며 페이스북 내에서 D를 사용한 프로젝트를 진행하고 있다고 한다. 페이스북은 주로 HHVM [4]을 사용하고 있는데 구글 내에서 파이썬이 그랬던 것처럼 메이저 IT 회사 중 하나인 페이스북 내에서 어느정도의 입지를 가지게 되느냐에 따라 향후 D의 운명이 결정될 가능성이 크다.

현재로선 알렉산드레스쿠의 연구 프로젝트 정도에서만 사용되고 있는 듯. 또한 페이스북 자체가 구글만큼 외부로의 기술적 공헌에 힘을 쏟지는 않는 회사이기 때문에 파이썬만큼 높은 입지를 갖지는 못할 가능성이 높다.

1.3. 트리비아

C++의 대안을 자처하고 나왔기 때문에 항상 C++ 세계의 흐름에 영향을 받을 수 밖에 없는 언어이다. D가 처음 나왔을 때는 C++이 겨우 표준안을 마련하고 현대화를 시작한 무렵이었으므로 C++의 복잡도를 크게 경감시킨 D가 설 자리가 충분히 존재했다. 그러나 커뮤니티가 분열하고 언어가 재설계되는 동안 C++0x가 준비되기 시작했으며 C++11로서 그 결과를 내놓으며 현대화에 박차를 가했다. .Net 프레임웍을 출시하고 오랫동안 C#을 밀던 MS도 다시 돌아와 네이티브 환경에 힘을 쏟기 시작했고 Visual C++ 10, 11 (각각 VS2010, 2012에 해당) 에서 C++11의 많은 기능을 수용했다. C#이 한창 푸시를 받던 당시 개차반이었던 C++의 인텔리센스 기능도 VS2013에 와서는 드라마틱하게 향상될 정도.

아직까지 레거시 코드의 컴파일을 보장해야 하고 헤더 인클루드 구조를 유지해야 하는 C/C++에 비해, 한 번역단위 내에 명세와 구현이 같이 존재하고 사용하기 쉬우면서도 C와 같은 저수준 개발이 가능하며 컴파일 속도가 빠른 네이티브 언어로서의 D의 유니크한 입지는 아직 유효하다. 그러나 네이티브 개발자 세계에서 예나 지금이나 주력은 C++이고 그 벌써 C++14, C++17을 논하며 현대화되는 현재 시점에서 D의 입지는 거의 남지 않게 되고 말았다.


(추가,수정예정) 혹은 추가바람

류:프로그래밍 언어
----
  • [1] 구글링해보면 D1에 관해서는 다양한 포스팅이 존재한다.
  • [2] D1의 원래 이름이 Mars였기 때문에 화성위성 이름에서 따왔다
  • [3] 파이썬 자체가 이런 부침을 겪지는 않았으나 파이썬3의 릴리즈로 인해 비슷한 커뮤니티 파편화가 존재한다.
  • [4] PHP를 JIT 컴파일해서 실행하는 VM
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2015-12-07 14:50:16
Processing time 0.0766 sec