C++ (C 플러스 플러스)
C++ 개발자 비야네 스트롭스트룹(Bjarne Stroustrup)
1983년 AT&T 벨 연구소의 비야네 스트롭스트룹이 C언어를 기반으로 객체지향프로그래밍(Object Oriented Programming)과 STL(Standard Templete Library)를 추가하여 만들어진 언어이다.
C언어를 기반으로 했기때문에 C++ 컴파일러에 C언어를 컴파일 할수있다. 초기에는 C 언어에 객체지향을 위한 기능을 추가한 언어라고 취급 되었다.
예로, 초기에 C++를 컴파일 하기 위해서는 작성된 C++에서 C로, C에서 기계여로 번역되는 순서를 보였다.
그러나 표준 규격이 바뀜에 따라 C언어와의 호환성은 깨지게 되었고, 현재는 완전히 별개의 언어로 보는것이 맞다고 본다. 보통 국내에서는 씨플플이라고 발음한다.
비야네 저서, The C++ Programming Language
C와의 비슷한 구조 덕분에 C를 선행하고 C++를 배우는 학생들은 객체 지향의 특수성을 제대로 살리지 못하고 절차적인 특성으로 코드를 짜기도 한다. 반대의 커리큘럼으로 배운 학생도 마찬가지이다. C++에서 쉽게 제공되는 기능들이 C로 넘어갈 경우 직접 작성해야 하거나 복잡한 절차들을 거쳐야한다.
주요 특징은 다음과 같다.
- 다중상속
- 템플릿
- 연산자 오버로드
- 예외처리
- 실행시 형 식별
초기 모델은 1979년 객체지향 언어인 simula를 C에 접목 시키는 것으로, 처음에는 C with classes였으나 개발을 거듭하며 C++으로 이름이 바뀌게 된다. 이 후 C++가 안정적으로 정착함에 따라 표준화에 대한 요구가 이어졌다.
그렇게 최초로 표준안으로 채택된것이 1998년 C++98이다. 이후 C++03, C++11을 거쳐 현재 C++14까지 표준안이 변경되었다. 이렇게 표준안이 변경될때마다 내부의 크고 작은 기능들이 함께 변경된다.
backjoon 알고리즘 사이트에 표시된 C++11등이 이러한 표준안에 따른 언어를 표현한다고 볼수 있다. 이후 C++17, C++20이 채택될 예정이다.
알렉산더 스테파노프(Alexander Stepanov)
STL은 C++에 포함된 표준 라이브러리 중에 하나이다. 그러나 가끔 STL자체를 C++에 대한 전체 표준라이브러리로 칭하는 경우가있다.
알렉산더 스테파노프라는 프로그래머가 만든 라이브러리가 시초이다. 개발 년도는 1979년인데, 년도에서 알수있는 것처럼 특정언어를 타겟으로 한게 아니라 독립적으로 제작 되었다가 이후 C++으로 흡수 되었다.
STL은 크게 컨테이너, 반복자, 알고리즘의 3가지로 나뉜다.
컨테이너 | 반복자 | 알고리즘 | |||
vector/deque | forward_iterator | for_each | |||
list/forward_list | reverse_iterator | transform | |||
set/multiset | insert_iterator | gnerate | |||
map/multimap | input_iterator_tag | find | |||
stack/queue | output_iterator_tag | sort | |||
... | ... | ... |
'개발' 카테고리의 다른 글
[네트워크] HTTP의 기초 - 2 (0) | 2017.04.18 |
---|---|
[네트워크] HTTP의 기초 - 1 (0) | 2017.04.18 |
[기술의역사] C언어 (0) | 2017.04.18 |
[기술의역사] 리눅스 Linux (0) | 2017.04.18 |
[기술의역사] 유닉스 UNIX (0) | 2017.04.18 |
댓글