1. C++ 이란 무엇인가?
많은 사람들이 C언어와 C++을 혼동한다.
언뜻 보기에는 문법도 비슷하고 모양새도 비슷하여 파일명을 .cpp로 만들어놓고 마치 C처럼 구현하는 경우가 많다.
하지만 C와 C++은 엄연히 다른 언어이다. C++은 C의 문법에 객체 지향 프로그래밍(Object-Oriented Programming ) 개념을 추가하고 일반화 프로그래밍(Generic Programming)의 요소가 되는 템플릿 개념을 붙여 만든 멀티 패러다임 언어이다. 쉽게 설명하면 1) C의 문법을 가지고 있고 2) 클래스가 대표하는 객체지향도 지원하는 프로그래밍 3) STL(Standard Templete Library)로 일반화 프로그래밍의 언어이다. 따라서 C++ 언어를 배우고자 마음먹었다면 C언어의 연결노선이라는 생각보다는 초심으로 새로운 언어를 배운다고 생각하는 것이 더욱 편하다.
2. c++ 객체지향 프로그래밍(Object Oriented Programming)
C++의 객체지향 프로그래밍 특징에 대해서 살펴보겠다. 기본적으로 다른 객체지향 프로그래밍 언어와 성격이 다르다. 대부분의 객체지향 언어에서 많은 부분을 런타임에 처리하며 메모리를 자동 관리하는 반면, C++에서는 최대한 많은 것을 컴파일 타임에 처리하는 것을 지향하며 메모리 등을 프로그래머가 직접 관리하기 때문에 전반적인 클래스 디자인 자체가 상당한 차이를 보이게 된다.(참조 나무위키) C언어와 호환성을 고려한 결과이기도 하지만 기본적으로 C++에서 프로그램 성능을 희생시키지 않아서이다.
3. C++ 일반화 프로그래밍(Generic Programming)
C++에서는 템플릿을 이용하는 방식이 유용하게 사용된다. C++ 표준 라이브러리 STL(Standard Templete Library) 가 있따. 필자는 STL이야 말로 C++과 C의 가장 큰 차이라고 말하고 싶다. 따라서 STL을 사용하지 않은 C++은 C++이라고 말할 수 없다. STL에 대해서는 나중에 더 다루도록 하겠다.
4. 사용 분야
그럼 C++은 어떤 현업 분야에서 사용될까?
Java가 나오면서 C++의 종말을 예측해왔다. 하지만 메모리 관리 제어, 포인터, 전처리기 같은 기능을 컨트롤하는 C++은 복잡함을 빠르게 처리하는 데 있어 능가하는 언어가 없다고 한다. 임베디드, 이미지 프로세싱, 통신 애플리케이션, 금융 에플리케이션, 데스크탑 게임 분야 등 C++언어가 지배적으로 사용된다. App 분야에서는 많이 사용되지 않지만 구글, 아마존, 검색 엔진등 성능이 무엇보다 필요한 영역에서 많이 사용되고 있다.
5. 공부 방법
C++ 을 공부하기 위해서는 C언어와는 다른 문법을 이해해야 한다.
또 네임스페이스, 클래스, 일반화 프로그래밍(Generic Programming), 최적화, STL을 공부하는 것이 좋다.
자료구조를 어느정도 이해하고 있다면 STL을 활용한 C++ 자료구조 또한 C++를 이해하는데 많은 도움이 된다.
'C++' 카테고리의 다른 글
[C++] 02. STL - 함수 템플릿(function template) (1) | 2019.11.12 |
---|
댓글