Thinking Different




C++를 만든 비야네 스트롭스트룹

비야네 스트롭스트룹(덴마크어: Bjarne Stroustrup, 1950년 12월 30일)

 C++ 프로그래밍 언어를 개발한 덴마크의 컴퓨터 과학자이며, 2014년 현재 모건 스탠리에서 기술부서 전무(Managing Director)로 재직중이며, 컬럼비아 대학교 객원교수이자 텍사스 A&M 대학교 컴퓨터과학과의 연구특임교수이다.

 

 

 

 

1979년 C++ With Classes

 비야네 스트롭스트룹이 C에 클래스 기능을 포함하여 만듬

 

 

1983년

 가상 함수, 연산자 오버로딩, 참조, const, new/delete 연산자 등을 포함한 새로운 기능들이 추가되면서 언어 이름도 C with Classes에서 C++로 변경, 컴파일러 프론트엔드만 Cfront라는 이름으로 새로 개발

 

 

1989년 C++ 2.0

 다중 상속, 추상 클래스, static 멤버 함수, const 멤버 함수 및 protected 멤버 등의 새로운 기능들이 추가된 C++ 2.0이 발표, 컴파일러의 프론트엔드도 Cfront 2.0으로 업그레이드

 

 

1990년

 템플릿, 예외, 네임스페이스, new casts 및 bool 타입 등의 새로운 기능들이 추가된 '주석이 달린 C++ 레퍼런스 메뉴얼'이 발표되었고 1991년에 컴파일러 프론트엔드가 Cfront 3.0으로 업그레이드

 

 

1998년 C++98

 c언어의 대중화에 따른 중구난방 컴파일러의 등장으로 인해 코드가 호환성에 대한 문제가 제기되어 ISO에서 하나의 통일된 컴파일러로 만들기 위한 회의가 이루어진다. 그렇게 C++의 표준안이 ISO/IEC 14882:1998라는 공식 명칭으로 처음 제정되었으며, 이를 줄여 C++98이라 부른다.

 

 

2003년 C++03

 C++98 문서의 애매모호했던 부분들을 보완한 C++03이 ISO/IEC 14882:2003라는 정식 명칭으로 제정됨

 

 

2005년 C++TR1, TR2

 표준 라이브러리를 확장하는 것을 골자로 하는 C++ 테크니컬 리포트, 정식 표준안이 아니라서 사용할 사람만 사용한 버전으로 전부 std 네임스페이스에 들어가 있지 않고 대신 std::tr1 네임스페이스로 분리되어 들어간다. 여기에는 파일 시스템, 병렬 컴퓨팅, 트랜잭셔널 메모리, 컨셉트, Range, 코루틴, 네트워킹, 모듈, 리플렉션 그리고 심지어 그래픽까지 있지만, 이러한 것들이 추후 표준에 포함될 지 또는 얼마나 수정될 지는 미정

 

 

2011년 C++11

 98년 이후 정체된 c언어에 최신 컴퓨팅 환경을 지원하기 위한 새로운 표준안 C++11이 ISO/IEC 14882:2011으로 승인됨

개발당시 c++0x 으로 불렸으나 2011년도로 넘어가면서 C++11로 되었다. 대부분의 코드가 Boost 라이브러리의 항목들이 채택되었다. 우측값 참조자를 이용한 이동 연산, constexpr, std::initializer_list, 범위 기반 for 문, 람다 표현식, 스마트 포인터, 정규표현식, 멀티쓰레드 등등 중요한 신 개념과 편의 기능들이 많이 추가되었다.

 

 

2014년 C++14

C++11에 추가된 요소들을 다듬고 확장하는 데 치중한 마이너 표준안이다.

 

 

2017년 C++17

 C++14와는 다르게 C++17의 경우 새로운 기능이 추가되는 표준안이었는데, 조금의 논란이 있는 표준안이기도 하다. 문제의 요지는 구 버전에서 사용되는 기능을 일부 삭제하자는 의견이 포함되었는데 auto_ptr, 삼중자 등이 대표적이다. 이는 구 버전의 코드들에 대한 호환성을 포기하는 것으로 문제가 되었다. 추가된 기능들을 살펴보면 string_view, optional, filesystem, execution, <variant> 타입 안전한 결합체 (union), 템플릿 인자 추론, constexpr 람다 표현식 등이 있다.

 

 

 

2020년 C++20

비동기 프로그래밍을 지원하기 위한 코루틴, 컴파일 속도 향상을 위한 소스 파일 모듈화(import), 템플릿에 제약 조건을 추가하기 위한 컨셉트 등 다양한 기능들이 추가. 그 외에 추후 표준에 있는 리플렉션과 네트워크 라이브러리네트워크 라이브러리인 asio는 또 밀렸다., 2D GUI 라이브러리, 트랜잭셔널 메모리에 대한 시범 사양도 별도로 공개되어 있다.
놀라운 점은 다음 C++ 표준에 포함될 예정인 기능들이 대부분 15년 전에 만들어진 C++TR2 제안서에 있던 사양이다.

추가 된 기능들은 concepts, compare, numbers, source_location ,format, ranges 등이 있다.

 

 

2023년 C++23

새로운 기능을 추가하는 사양으로 예정이었으나 코로나 판데믹으로 인해 표준 위원회의 작업이 지연됨.(새 기능은 C++ 26에서 추가될것으로 예정이라고 함) 다른언어의 장점을 취합하고 C++20까지의 문제점을 보완하는 버전. 가장 기대되는 부분은 컴파일 속도 개선인데, import 모듈화를 통하여 #include<iostream> 보다 최대 10배까지 빨라진다고 한다.

import std;
int main() {
   std::cout<< "Hello, World!\n";
}

 

 

개인적으로 c언어 사용하면서 헤더파일 전방 선언이나 컴파일 속도 때문에 스트레스 받는게 심했다, 가장 기대되던 녀석중에 하나가 바로 모듈화인데  C++17부터 나온다 나온다 하더니 이제 나오는구나 빨리 좀 나오지...  쩝....  헤더 파일과 cpp 파일 등이 자바처럼 하나의 파일로 취합된다는것도 좋고, 컴파일 속도가 개선되면 c의 역주가 다시 시작될지도 모르겠다.

지금도 5위 안에 드는 언어이긴 하지만 말이다. 주저리 주저리 떠들어 봤다.