
항목 01 C++를 언어들의 연합체로 바라보는 안목은 필수
1.1 C++는 다중 패러다임 프로그래밍 언어
오늘날의 C++는 다중 패러다임 프로그래밍 언어(multiparadigm programming language)라고 불린다. 절차적 프로그래밍을 기본으로 하여 객체 지향, 함수식, 일반화 프로그래밍을 포함하며 메타 프로그래밍 개념까지 지원하고 있다. 이런 엄청난 표현력과 유연석 덕분에 C++는 소프트웨어 개발에 있어 대체할 만한 것이 없는 도구가 되었지만, 혹자에게 어느 정도 혼동을 줄 여지가 있는 것도 사실이다.
가장 쉬우면서 정확한 방법은 C++를 상관 관계가 있는 여러 언어들의 연합체(federation)로 보는 것이다. C++를 제대로 따라잡으려면 이 언어가 여러 개의 하위 언어(sublanguages)를 제공한다는 점을 새기고 있어야 한다.
① C
C++는 여전히 C를 기본으로 하고 있다. 블록, 문장, 선행 처리자, 기본 제공 데이터 타입, 배열, 포인터 등 모든 것이 C에서 왔다.
② 객체 지향 개념의 C++
이 부분은 클래스를 쓰는 C에 관한 것이 모두 해당된다. 그러니까 클래스, 캡슐화, 상속, 다형성, 가상 함수 등으로 우리가 학교에서 배웠던 객체 지향 설계의 대부분의 규칙들이 그대로 들어맞는 곳이라고 보면 된다.
③ 템플릿 C++
C++의 일반화 프로그래밍 부분으로 오늘날 이 템플릿이 C++에 끼치는 영향은 가희 전방위적이다. 그뿐 아니라 템플릿의 주체 못 할 강력함이 너무나도 크고 훌륭하여 템플릿 메타 프로그래밍(template metaprogramming, TMP)이라는 완전히 새로운 프로그래밍 패러다임이 파생되었다.
④ STL
STL은 이름에서 알 수 있듯이 특별한 템플릿 라이브러리이다. STL은 컨테이너, 반복자, 알고리즘과 함수 객체가 얽혀 돌아가는 것을 규약으로 삼고 있다.
C++는 한 가지 프로그래밍 규칙 아래 똘똘 뭉친 통합 언어가 아니라 네 가지 하위 언어들의 연합체이다. 각각의 하위 언어는 자신만의 규칙을 갖고 있으므로 효과적인 프로그램 개발을 위해 한 하위 언어에서 다른 하위 언어로 대응 전략을 바꾸어야 하는 상황이 오더라도 당황하지 말아야 한다.
NOTE
① C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란 바로 C++의 어떤 부분을 사용하느냐이다.
'Object Oriented Programming(C++) > Effective C++' 카테고리의 다른 글
Effective C++ | 항목 06 컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해버리자 (0) | 2021.08.26 |
---|---|
Effective C++ | 항목 05 C++가 은근슬쩍 만들어 호출해버리는 함수들에 촉각을 세우자 (0) | 2021.08.26 |
Effective C++ | 항목 04 객체를 사용하기 전에 반드시 그 객체를 초기화하자 (0) | 2021.08.26 |
Effective C++ | 항목 03 낌새만 보이면 const를 들이대보자 (0) | 2021.08.26 |
Effective C++ | 항목 02 #define을 쓰려거든 const, enum, inline을 떠올리자 (0) | 2021.08.21 |
댓글