본문 바로가기
PL (Programming Language)/C++

[C++] C++이란? 포인터 제어, 객체지향, 제네릭 프로그래밍의 복합체

by jangThang 2022. 1. 18.
반응형

 

[ Contents ]

     

     

     

    1. C++언어의 기원

     C++언어는 C언어를 계승한 프로그래밍 언어입니다. 과거 C언어로 짜여진 라이브러리와 프로그램와 호환하기 위해서, C언어 문법도 그대로 사용가능합니다. C언어에 객체지향과 Generic Programming 패러다임을 추가한 버전으로, 1983년에 만들어져 지금까지 업데이트 되고 있습니다.

     

     

     

    2. C++언어의 특징: 범용성, 높은 성능, 낮은 개발효율성

     C++만 잘해도 뭐든지 할 수 있다고 할 정도로, 범용성이 높은 프로그래밍 언어입니다. C++로 하드웨어 시스템, OS, 프로그램, 서버도 만들 수 있습니다. 스타크래프트를 예로 들면, 피쉬서버도 C++기반이였고 W런쳐도 C++로 만든 프로그램이었습니다 다른 고급 언어들보다 속도가 빠르기 때문에, Unity 엔진의 내부도 C++로 설계되었고 Tensorflow도 C++로 만들어졌습니다. 

     

     

    여기서 Low, High는 개발 효율성, 개발자 친화도의 정도를 뜻합니다. C언어 역시 고급언어입니다.

     하지만, 지금은 개발 효율성이 중요하며 각 분야에 특화된 언어들이 주둔해 있습니다. 굳이 C++로 어렵게 짤 필요가 없습니다. 분명 C++은 다양한 기능을 지원하면서도 좋은 성능을 갖추었지만, 애매한 위치 때문에 사용처가 점점 줄어들고 있습니다. 성능은 중요하지만 C를 쓰기에는 애매한 분야에 주로 사용됩니다.

     

     분명 C++은 빠른 속도를 갖췄으면서, 객체지향과 제너릭 프로그래밍 등 고급 기능을 모두 지원하는 장점을 갖고 있습니다. 특히 C와 마찬가지로 포인터를 사용하여 저수준 제어도 가능합니다. 하지만 그만큼 난잡하고 어려운 언어입니다. 다른 언어에서 포인터를 지원하지 않는 이유는 굳이 개발자가 건드리지 않아도 알아서 제어해주기 때문입니다. 개발자가 세심히 조정하는 것보다는 성능이 떨어지겠지만, 그만큼 빠르고 쉽게 개발할 수 있죠. 현재는 bit단위로 최적화 가능한 어셈블리 코딩을 하지 않는 이유와 같은 맥락입니다.

     

     

     

    3. 공부 방법

     C++은 하드웨어 제어부터 객체지향, 제너릭 프로그래밍, 함수형 프로그래밍 등 최신 기법을 포함하는 유일무이한 프로그래밍 언어입니다. C++만 제대로 알아도 모든 프로그래밍 언어를 섭렴할 수 있을 정도로, 깊은 이해와 많은 공부량을 필요로 합니다. 

     

     하지만, C++를 주 언어로 사용하는 분야는 별로 없죠. 대부분 웹은 Java, JS, AI/데이터 분야는 Python를 많이 사용합니다. 자신이 가고 싶은 분야에서 C++를 사용하지 않는다면 깊게 공부하실 필요는 없습니다. 다만 C++의 3가지 특성은 알아두시는 게 좋습니다. 

     

     

    포인터 제어 / 객체 지향 / 제너릭 프로그래밍

     CS(Computer Science)분야에서 중요한 개념이므로 C++를 통해 알아가시길 바랍니다. C++을 배워두시면 알고리즘을 공부하는 데에도 많은 도움이 되실 겁니다.

     저희 강의에서는 위 3가지 특성과 C++문법을 주로 배워보겠습니다.

     

     

     

     

    반응형

    댓글