검수요청.png검수요청.png

D 언어

위키원
kskim5223 (토론 | 기여)님의 2020년 8월 3일 (월) 10:12 판 (등장배경)
이동: 둘러보기, 검색

D 언어는 2001년 12월에 처음 발표된 후, 2007년 1월에 정식 발표된 컴파일 언어이자 멀티 패러다임 프로그래밍 언어이다. C++이 본래 C 언어를 대체하기 위한 언어로 출발했듯이 D 언어는 C++을 대체하기 위한 목적으로 출발한 언어이다.

D 언어

개요

D는 디지털 마스의 월터 브라이트가 개발한 객체 지향 명령형 프로그래밍 언어이다. 2001년 공개되었다. C++의 리엔지니어링으로 기원하였으나 D는 해당 언어와는 별개의 언어이다. 일부 핵심 C++ 기능들을 다시 설계하였으며 자바, 파이썬, 루비, C#, 에펠과 같은 다른 언어들의 특징들을 공유하기도 한다. 이 언어의 설계 목적은 현대의 동적 언어의 표현 능력을 가지고 컴파일 언어의 성능과 안전의 병합을 시도하는 것이다. 관용적인 D 코드는 동등한 C++ 코드보다 크기가 짧더라도 C++만큼 속도가 빠른 것이 보통이다. 이 언어는 전반적으로 메모리 안전에 속하지 않으나 메모리 안전을 검사하도록 설계된 선택적 속성을 포함한다.[1]

역사

D 1.0

최초의 네이티브 C++ 컴파일러였던 Zortech C++(Symantec C++이 되었다가 현재는 DMC++이 됨)의 메인 개발자였던 월터 브라이트는 C++의 복잡도를 줄이고 현대적인 언어 개념들을 포함한 언어를 만들기로 했고 1999년부터 작업을 시작해 2001년 12월 8일에 첫 번째 버전를 발표한다. 처음에는 Mars 언어라고 이름붙였지만 그의 동료 중 한명이 계속 D라고 부르면서 D로 이름을 바꾸게 되었다는 사연이 있다. 버전업이 매우 느렸기 때문에 D 1.0 버전이 발표된 건 2007년 1월 2일이 되어서였다. 범용 시스템 프로그래밍 언어인 C++을 대체하는 것을 목적으로 만들어졌으므로 C++과 같이 기계어 컴파일이 되는 언어였으며 Python, Java, C# 등 현대화된 메이저 언어들의 영향을 많이 받았다. 그러면서도 최근의 현대 언어들과 같이 인터프리터나 가상머신으로 실행되는 구조가 아니었으므로 퍼포먼스 지향적이어서 처음에는 많은 기대를 받았다. D는 표준 런타임 라이브러리로서 Phobos가 존재했지만 D 커뮤니티는 Phobos 라이브러리의 느린 발전 속도에 만족하지 못했다. 언어와 개발 환경의 느린 발전 속도는 D언어가 원래 오픈소스가 아니고 Digital Mars에 카피라이트가 있고 상용 언어를 목표로 했기 때문이었다. D 사용자 커뮤니티는 Phobos와는 별도로 오픈소스로서 존재하는 런타임 라이브러리를 만들기로 했고 Tango 라이브러리가 발표되었다. Tango는 Phobos보다 다양한 기능을 제공했으며 커뮤니티가 참여해서 만들어졌기 때문에 발전 속도가 빨랐다. D언어에 관한 책은 거의 없지만 D programming with Tango라는 입문서가 출판될 정도였다. 그러나 이런 상황은 커뮤니티 자체를 분열시키는 결과를 낳았고 언어 자체의 발전속도를 저하시키고 인터넷상의 정보를 파편화시켜 D 언어를 지탱한 표준 런타임 라이브러리가 분열되고 말았다. 이 때문에 정보가 많지도 않은 상황에서 입문자들은 전혀 다른 스타일의 런타임 라이브러리에 혼란을 겪어야 했다. 비슷한 상황을 맞은 Python을 보면 구글이 창시자를 영입하고 재단을 출범해 로드맵을 조정하는 것과 대조적이었다. 결국, 월터 브라이트는 D 1.0이 실패라고 판단하고 언어 자체를 재설계하기로 결정했다. D의 행보에 실망한 커뮤니티는 대부분 흩어지고, 초반에 받았던 세간의 관심으로부터도 멀어졌다.

D 2.0

D 2.0 버전을 줄여서 D2로 알려진 것이 바로 현재의 D언어를 가리킨다. C++ 구루 중 한명이며 Modern C++ Design이라는 책에서 템플릿 메타프로그래밍에 기반한 정책기반 설계라는 개념을 정립한 것으로 널리 알려진 안드레이 알렉산드레스쿠(Andrei Alexandrescu)가 D2 프로젝트에 공동설계자로서 합류하게 된다. 그가 합류하면서 D는 메타프로그래밍 언어로서의 성향이 매우 강해졌으며 관련된 언어 상 기능들이 다수 추가되었다. 2007년 6월 17일에 정식 발표되면서 D2를 D2라고 불리지 않으며 그냥 D라고 부른다. 1.0 버전으로 발표된지 5개월밖에 안 된 기존의 D언어는 바로 버려진 것은 아니고 꾸준히 버전업되면서 버그 수정(안정화 작업) 정도로만 유지되었다가 2012년 12월 31일에 발표된 1.076 버전을 마지막으로 지원 중단되었다. 현재의 D언어인 2.0 버전은 오픈소스 프로젝트로서 GitHub에 전체 프로젝트가 공개되어 있으며 커뮤니티가 활발하게 기여를 하고 있다. 핵심 개발자인 안드레이 알렉산드레스쿠는 현재 페이스북에서 연구자로 소속되어 있으며 페이스북 내에서 D를 사용한 프로젝트를 진행하고 있다고 한다. 페이스북은 주로 HHVM을 사용하고 있는데 구글 내에서 Python이 그랬던 것처럼 메이저 IT 회사 중 하나인 페이스북 내에서 어느정도의 입지를 가지게 되느냐에 따라 향후 D의 운명이 결정될 가능성이 크다. 그러나 알렉산드레스쿠는 D 언어 재단에 더 힘을 쏟기 위해 페이스북을 그만두었다. 본인도 많은 고민 끝에 내린 결정이라고 한다.

특징

고수준 모델링 지원을 위한 기반을 제공한다. 실행 전 컴파일을 미리 해둬야하는 언어이며, 높은 성능을 보여준다. 정적 타입(static typing) 특성을 갖는다. 모든 타입은 컴파일 시점 전에 결정된다. 예를 들어, 값을 반환하는 함수 등에서 어떤 타입을 반환하는지 명확히 알 수 있다. 운영체제와 하드웨어가 제공하는 API를 직접 제어할 수 있다. 컴파일에 드는 소요시간이 짧다. 메모리 안전을 보장하는 제한된 D 언어 환경을 제공합니다.(Safe D) 프로그램 유지 및 보수에 편리하며, 이해하는데 어려움이 없는 코드를 작성할 수 있다. 갑자기 어려워지는 부분 없이, 일정한 코딩 난이도 상승 속에서 배워 갈 수 있는 언어이다.(C나 Java와 비슷한 문법 구조) C 응용 프로그램/라이브러리와의 호환성을 갖는다. C++ 응용 프로그램/라이브러리와의 제한적 호환성을 갖는다. 다양한 프로그래밍 패러다임을 포함하고 있다.(명령형, 구조형, 객체지향, 제너릭, 함수형 프로그래밍, 어셈블리) 언어에 내장된 오류 탐지 기능이 있다.(Contracts, 유닛 테스트)

현황

각주

참고자료

같이 보기


  검수요청.png검수요청.png 이 D 언어 문서는 프로그래밍에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.