C++ 기초
C++이란?
C++은 기존의 C언어에 여러 가지 기능을 추가하여 만든 프로그래밍 언어입니다.
C++은 C언어에서 절차 지향적 언어의 특징을 가져왔습니다.
또한, Simula에서 클래스를 사용하는 객체 지향적 언어의 특징을 가져왔습니다.
그와 동시에 템플릿으로 대변되는 일반화 프로그래밍 방식의 언어이기도 합니다.
C++은 C언어를 기초로 삼아 만든 언어이므로, 기존의 C 표준 라이브러리를 그대로 사용할 수 있습니다.
이러한 C++은 타입, 연산자, 제어문, 포인터 등의 주요 문법을 C언어에서 가져왔기 때문에 C언어에 대한 기초를 알고 있으면 좋습니다.
하지만 C++을 배우기 위해서는 기존의 C언어만의 절차 지향적 프로그래밍 습관에서 벗어날 필요가 있습니다.
따라서 반드시 C언어부터 배울 필요는 없으며, C++ 수업만으로도 충분히 학습할 수 있습니다.
C++의 역사
C++은 C언어가 개발된 벨 연구소의 비야네 스트롭스트룹(Bjarne Stroustrup)에 의해 개발됩니다.
1979년에 비야네 스트롭스트룹은 객체지향적 언어인 Simula의 개념을 C언어에 추가하여 "C with Classes"라는 이름으로 새로운 언어를 발표합니다.
이후 증가 연산자(++)의 도입으로부터 C언어의 확장판이라는 의미를 담아 C++이라는 이름으로 1984년에 개정합니다.
C++의 탄생 배경
1970년대 개발된 C언어와 파스칼 등은 모두 1980년대에 이르러서는 절차 지향적이고 구조적 프로그래밍 언어로써 여러 방면에서 사용됩니다.
이러는 와중에 새로운 프로그래밍 방식인 객체 지향 프로그래밍(OOP, Object-Oriented Programming)의 개념이 스몰토크(Smalltalk)나 에이다(Ada) 등의 언어를 통해 대중에게 알려지게 됩니다.
이때 벨 연구소의 비야네 스트롭스트룹은 프로그래머들이 더욱 쉽고 즐겁게 유용한 프로그램을 만들 수 있는 프로그래밍 언어를 만들고자 합니다.
그래서 기존의 C언어에 객체 지향 프로그래밍의 클래스 개념만을 추가하여 만든 언어가 바로 초기의 C++입니다.
C++의 특징
C++이 프로그래밍 언어로써 가지는 특징은 다음과 같습니다.
1. C++은 절차 지향적이며 구조적 프로그래밍 언어입니다.
2. C++은 객체 지향 프로그래밍 언어입니다.
3. C++은 일반화 프로그래밍 언어입니다.
이처럼 C++은 세 가지 프로그래밍 방식을 모두 지원하는 언어이며, 따라서 다양한 방식으로 프로그램을 작성할 수 있습니다.
또한, 다양한 시스템에서의 프로그래밍을 지원하는 유용하고도 강력한 클래스 라이브러리들이 아주 많이 제공됩니다.
하지만 C++은 이렇게 언어로서 다양한 방식을 지원하며 강력하게 거듭났지만, 프로그래머의 측면에서 보면 이러한 다양한 기능을 모두 배워야 하는 부담으로 작용하기도 합니다.
C++ 표준
C++에 대한 표준은 ANSI(American National Standards Institute)와 ISO(International Organization for Standardization)가 표준화 작업을 진행하게 됩니다.
1998년에 첫 C++ 국제 표준인 ISO/IEC 14882:1998이 제정되며, 이 표준을 C++98이라고 부르게 됩니다.
이후 C++98에서 단순한 기술적 개정만을 진행한 ISO/IEC 14882:2003(C++03)이 2003년에 공개됩니다.
2011년에는 많은 언어적 특성이 추가된 ISO/IEC 14882:2011이 발표되며, 이 표준을 C++11이라고 부르게 됩니다.
이후 C++11의 사소한 버그 수정 및 약간의 기술적 개선을 진행한 ISO/IEC 14882:2014(C++14)가 2014년에 공개됩니다.
현재에는 2017년 제정을 목표로 하는 C++17이 기능 목록 정의를 완료하는 등 제정 작업이 순조롭게 진행 중입니다.
C++ 최신 표준에 대한 더 자세한 사항은 다음 문서를 참고하면 됩니다.
C++14 : Working Draft, Standard for Programming Language C++ N4296 (2014-11-19) =>