[Effective C++] Item 01: C++를 언어들의 연합체로 바라보는 안목은 필수
Item 1: C++를 언어들의 연합체로 바라보는 안목은 필수
초창기의 C++
은 단순히 C언어에 객체 지향 기능 몇 가지를 결합한 형태였으나 현재는 다중패러다임 프로그래밍 언어로 자리잡았다. 절차적 프로그래밍, 객체 지향, 함수식, 일반화 프로그래밍을 포함하여 메타프로그래밍개념까지 지원하고 있다.
엄청난 표현력과 유연성이 있지만 그만큼 복잡도가 높다. C++
를 잘 사용하기 위해선 단일 언어로 보는 눈을 넓히고 상관 관계가 있는 여러 언어들의 연합체(federation)으로 봐야한다. 그러고 나서 언어에 관한 규칙을 각개 격파하는 것이다. 이런 순서로 진행하면 시각이 단순해지고 명확해지며, 기억하기도 쉽다.
따라서 C++을 제대로 따라잡으려면 이 언어의 4가지 하위 언어를 이해해야 한다.
- C
- C++은 C언어를 기본으로 하고 있는 사실은 변하지 않는다. C++만의 여러것들이 있지만 C언어의 기본적인 특성은 그대로 가지고 있다.
- 객체 지향 개념의 C++
- ‘클래스를 쓰는 C`에 관한 것이 모두 해당된다. 클래스, 캡슐화, 상속, 다형성, 가상 함수(동적 바인딩) 등
- 템플릿 C++
- C++의 일반화 프로그래밍 부분으로 이미 STL을 쓸 때 사용하고 있는 기능이다. 매우 강력한 기능을 제공하며 새로운 프로그래밍 패러다임인 템플릿 메타프로그래밍으로 파생된다.
- STL
- STL은 표준 라이브러리로 컨테이너, 반복자, 알고리즘과 함수 객체로 구성되어 있다.
이렇게 C++은 4가지 하위 언어들로 이루어져 있다. 효과적인 프로그램 개발을 위해 한 하위 언어에서 다른 하위 언어로 옮겨 가면서 대응 전략을 바꾸어야 하는 상황이 자주 발생하니 앞서 말한 전략을 잘 사용하여 익숙해져야 한다.
C++를 사용한 효과적인 프로그래밍 규칙은 경우에 따라 달라진다. 그 경우란, C++의 어떤 부분을 사용하느냐에 따라 달라진다.
느낀점
책에서 나오는 전략을 계속 생각해야 하는 그 레벨이 조금 어렵게 느껴지기도 하면서 C++의 장점처럼 보이기도 한다. C++에 대해 공부를 시작한 이유도 결국 게임개발을 지속하기 위해선 그 근본이 되는 언어에 대한 이해가 필요하다고 생각이 들었기 때문이다.
4가지 하위 언어를 각개격파?하면서 그 감을 익히는게 중요할 것 같다. 항상 명심해야 하는 것은 읽기만 하면 아무 도움이 되지 않는다는 것 실제로 확인하며 읽어야겠다.
댓글남기기