C++은 처음 도입된 이후 다양한 개념들을 흡수하며 발전한 결과 처음과는 다른 새로운 언어로 재탄생. 그러나 서로 다른 개념들을 통합하는 과정에서 수많은 예외 상황이 발생했고, 그 결과 C++ 에서 모든 상황에 적용되는 통일된 규칙을 찾는 것이 점점 어려워지고 있음. 이런 문제를 해결하기 위해 C++의 언어적 특성을 살펴볼 필요가 있음. C++은 크게 다음 4가지의 주된 언어적 특성을 가지고 있음.
- C
- Object-Oriented C++
- Template C++
- The STL
Blocks, statements, preprocessor, built-in data types, arrays, pointers 등. 그러나 대부분의 경우 C++에서는 각 경우에 대응되는 더 나은 방법을 제공하고 있음.
encapsulation, inheritance, polymorphism 등
C++의 generic programming 부분에 해당. Template은 TMP(Template Metaprogramming)이라는 새로운 패러다임을 만든 강력한 도구지만, 이를 잘 사용하지 않는다해도 C++에서 큰 문제는 없음.
STL(Standard Template Library)는 특별한 template library로, 이를 사용할 때는 STL의 특정한 conventions을 따라야 함.
이 각각의 언어적 특성들은 때때로 서로 갈등을 빗고, 그 결과 다양한 예외 규칙을 만들어 C++에 혼란을 초래함. 따라서 효율적인 프로그래밍을 위해서는, 이러한 sublanguage의 특성을 기억해두고 특정 상황에 따라 그에 맞는 sublanguage를 선택하여 유연하게 전략을 바꿀 수 있어야 함.
Summary
- Rules for effective C++ programming vary, depending on the part of C++ you are using.
댓글 없음:
댓글 쓰기