본문 바로가기
Object Oriented Programming(C++)/Effective C++

Effective C++ | 항목 01 C++를 언어들의 연합체로 바라보는 안목은 필수

by continue96 2021. 8. 20.

항목 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++의 어떤 부분을 사용하느냐이다.

댓글