[Effective C++] item 01
C++를 언어들의 연합체로 바라보는 안목은 필수
C++은 멀티 패러다임 프로그래밍 언어
-
처음에는 객체지향 기능이 추가된 C에서 시작
-
현재 절차형, 객체 지향형, 함수형, 제네릭, 메타 프로그래밍까지 지원
제네릭 프로그래밍: 데이터 형식에 구애받지 않도록, 하나의 값이 다양한 데이터 타입을 가질 수 있는 방향으로 재사용성을 극대화하는 프로그래밍 패러다임
메타 프로그래밍: 자기 자신 혹은 다른 프로그램을 데이터로 취급하며 프로그램을 작성, 수정하는 것, 런타임에 수행해야 하는 작업의 일부를 컴파일 타임 동안 수행하는 방식을 말하기도 함
-
C++을 단일 언어가 아닌 언어의 연합으로 볼 필요가 있으며 각각의 룰에 맞춰줄 필요가 있다.
-
C: 다양한 것들이 C에서 유래했으나 C++에서 더 좋은 접근방식을 제공하는 경우가 많아 좀 더 제한적이고 안전한 범위로 사용할 수 있음
-
객체지향 C++: 클래스가 존재하는 C++의 핵심, 객체 지향 설계가 가장 직접적으로 작용하는 부분
-
Template C++: 자주 경험하는 부분은 아니며, 주류 C++ 과 거의 상호작용하지 않는다. TMP라는 강력한 패러다임을 탄생시킨 바가 있다.
-
STL: Template 라이브러리이지만 매우 특별한 케이스, STL을 사용할 때는 특정한 방식이 존재하며 반드시 그 규칙을 따라야만 한다.
-
-
위 하위 언어들 간의 전환이 발생한다면 전략을 변경하는 상황을 직면할 수 있다.
-
단일 규칙이 아닌 각기 고유 규칙을 보유한 하위 언어의 집합체라는 것을 이해한다면 C++이 더욱 알기 쉬울 것
댓글 작성
게시글에 대한 의견을 남겨 주세요.