Computer >> 컴퓨터 >  >> 프로그래밍 >> C++

C++ 언어의 역사: C with Classes에서 C++11까지

C++의 탄생: 'C with Classes'에서 시작되다

C++ 프로그래밍 언어의 역사는 1979년, 덴마크 출신 컴퓨터 과학자 비야네 스트롭스트룹(Bjarne Stroustrup)이 박사 학위 논문을 준비하던 시절로 거슬러 올라갑니다. 그는 당시 "C with Classes"라는 이름의 새로운 언어 개발을 시작했는데, 이름 그대로 C 언어의 상위 집합(superset)을 지향하는 프로젝트였습니다.

그의 목표는 뛰어난 이식성 덕분에 지금까지도 존경받고 있으면서도, 속도 저하나 저수준 기능의 손실 없이 C 언어의 장점을 그대로 유지한 채 객체 지향 프로그래밍 패러다임을 더하는 것이었습니다. 이렇게 탄생한 언어에는 C의 모든 기능에 더해 클래스, 기본적인 상속, 인라인 함수, 기본 인자(default function arguments), 강력한 타입 검사 등이 포함되었습니다.

최초의 C with Classes 컴파일러는 Cfront라 불렸으며, CPre라는 C 컴파일러에서 파생된 것입니다. Cfront는 C with Classes 코드를 일반 C 코드로 변환해 주는 프로그램이었습니다.

'C++'라는 이름과 새로운 기능들의 추가

1983년, 언어의 이름은 'C with Classes'에서 'C++'로 공식 변경되었습니다. C 언어에서 ++ 연산자는 변수의 값을 1 증가시키는 연산자인데, 이는 스트롭스트룹이 C보다 한 단계 더 발전한 언어라는 의미를 담았음을 보여줍니다. 이 시기에 많은 새로운 기능들이 추가되었으며, 대표적인 것들은 다음과 같습니다.

  • 가상 함수(virtual functions)
  • 함수 오버로딩(function overloading)
  • & 기호를 사용한 참조(reference)
  • const 키워드
  • // 두 개의 슬래시를 사용한 한 줄 주석

상용화와 국제 표준의 등장

1985년, C++는 드디어 상용 제품으로 구현되었습니다. 다만 이 시점에서는 아직 공식적인 표준이 확정되지 않은 상태였습니다. 1989년에는 언어가 다시 개정되어 protected 멤버와 static 멤버가 추가되었고, 여러 클래스로부터 동시에 상속받는 다중 상속(multiple inheritance) 기능도 지원하게 되었습니다.

1990년에는 Turbo C++가 상용 제품으로 출시되었습니다. Turbo C++는 수많은 추가 라이브러리를 제공했으며, 이 라이브러리들은 이후 C++ 언어의 발전에 상당한 영향을 미쳤습니다.

1998년, C++ 표준 위원회는 C++ 역사상 첫 번째 국제 표준인 ISO/IEC 14882:1998을 발표했습니다. 흔히 C++98이라 불리는 이 표준에는 1979년부터 개념적 개발이 시작된 STL(Standard Template Library, 표준 템플릿 라이브러리)도 포함되었습니다. 이후 2003년, 위원회는 1998년 표준에서 보고된 여러 문제점들을 반영하여 표준을 개정했고, 개정된 언어는 C++03이라 명명되었습니다.

C++11: 모던 C++의 문을 열다

2011년 중반, 새로운 C++ 표준인 C++11이 완성되었습니다. C++98 이후 처음으로 이루어진 대대적인 업그레이드였으며, 현대적인 기능들을 대거 도입했다는 점에서 '모던 C++' 시대의 시작을 알린 버전으로 평가받습니다. 주요 신규 기능은 다음과 같습니다.

  • 정규 표현식(Regex) 지원
  • 난수 생성 라이브러리
  • 새로운 C++ 시간(time) 라이브러리
  • 원자적 연산(atomics) 지원
  • 표준 스레딩(threading) 라이브러리
  • 다른 언어의 for-each 루프와 유사한 범위 기반(range-based) for 루프 문법
  • auto 키워드를 통한 타입 추론
  • 새로운 컨테이너 클래스
  • 유니온(union) 및 배열 초기화 리스트 지원 개선
  • 가변 인자 템플릿(variadic templates)

이후 C++는 2014년의 C++14, 2017년의 C++17, 2020년의 C++20을 거치며 꾸준히 진화해 왔으며, 오늘날에도 게임 엔진, 임베디드 시스템, 고성능 서버처럼 성능이 중요한 분야에서 가장 널리 사용되는 언어 중 하나로 자리매김하고 있습니다.