이것은 문서의 이전 버전입니다!


C++

Bjarne StroustrupCSIMULA 스타일의 객체지향 기능을 추가한다고 삽질하다가 흑막이 되어 버린 프로그래밍 언어. ISO/IEC 14883으로 표준화되어 있다.

C++를 객체지향 프로그래밍 언어라고 부를 수 없는 가장 큰 이유는 C++의 객체지향은 다른 객체지향 언어들에 비해서 그렇게 좋은 편이 아니기 때문(…)인데 이는 C랑 소스 레벨에서 호환되겠다는 당치도 않은 목표 때문에 동적인 구현이 필요한 많은 기능을 빼먹은 탓이다. 대신 C++는 컴파일시간에 최대한 많은 걸 하기 위해서 제네릭프로그래밍템플릿 메타프로그래밍을 강력하게 지원하기 때문에 결과적으로 언어 설계가 특이하게 나와 버렸다.

루비를 만든 마츠모토 유키히로최소 놀람의 법칙을 설명하면서 "옛날에 C++ 프로그래밍을 2년 내내 했는데 여전히 언어가 사람 놀래키더라"라고 C++를 깐 적이 있다.1)

버전들

현재 널리 쓰이는 C++는 1998년에 표준화되어 ISO/IEC 14883:1998(흔히 C++98)이 되었다. (이전의 C++ 구현은 벤더에 따라 천차만별이었고 STL은 커녕 심지어 iostream 라이브러리가 없기도 했다.) 여기에 수정판으로 ISO/IEC 14883:2003(흔히 C++03)이 있긴 하지만 보통 구분은 별로 안 한다.

C++98 및 C++03의 다음 버전은 ISO/IEC 14883:2011(흔히 C++0x 또는 C++11)으로, 2011년 10월에 표준화가 완료되었다. 표준과는 별개로 현재 구현체의 지원은 가지각색인데(당연히 나온지 몇 년 안 되었으니…), 가장 쉽고 눈에 띄는 익명함수 문법은 이미 많은 최신 구현체(대표적으로 GCCMSVC)에서 지원하여 별 문제 없이 쓸 수 있다. 다른 것들은 좀 더 기다려야 할 듯.


도쿠위키DokuWiki-custom(rev 9085d92e02)을 씁니다.
마지막 수정 2011-10-11 09:16 | 작성자 lifthrasiir