C 와 C++ 에 대하여
2021. 5. 21. 02:39

안녕하세요. 라이트코드(Light Code) 입니다.

 

전공자, 비전공자 상관없이 많은 사람들이 C언어를 배우면서 C++을 배우는 커리큘럼은 비슷합니다.
저 조차도 학교를 다닐 때에도 C언어를 한학기에 잘 배우다가도 C++을 다음학기에 배우게 될 때 참 어려움을 겪곤 했었습니다.

 

그 이유는 비교적 간단한 문법 체계를 가지고 있는 C언어와는 달리 C++은 굉장히 다양한 패러다임(paradigm)이 있으며 거대한 스케일을 자랑하는 언어이기때문입니다.

 

그래서 일단 이런 어려움을 조금이라도 극복하기 위해서는 C 언어와 C++ 두 언어가 어떤 부분이 다른지 살펴보고 넘어가는게 중요하기에 한번 살펴보도록 하겠습니다.

 

Characteristic
C

C++
Paradigm Procedural Language
Multi-Paradigm Language
Approach Top down
Bottom up
Namespace X
O
Inheritance X
O
Overloading X
O
Template X
O
Polymorphism X
O
Reference X
O
Struct constructor X
O
Memory deallocation free()
Delete
Memory allocation malloc(), calloc(), realloc()
New

 

많은 특징들이 눈에 보이지만 중심적으로 봐야할 부분은 Multi-paradigm 인데 그 이유는 바로 다음 아래와 같습니다.

 

절차지향 프로그래밍(Procedure-Oriented Programming)을 지원하는 C 언어와 달리 C++ 은 C 언어의 절차지향 프로그래밍을 지니면서도 객체지향 프로그래밍(Object-Oriented Programming)일반화 프로그래밍(Generic Programming)을 모두 지원하는 언어입니다.

 

C언어의 문법을 그대로 가지고 왔다 할지라도 객체지향 프로그래밍에 대한 개념을 잘 모르는 상태에서 C++을 접근한다면 새로운 객체지향 문법들을 제대로 이해할 수 없습니다.

 

무엇보다 이런 상태에서 템플릿(template) 문법을 접근하게 되게 된다면 정말 다른 나라 언어처럼 배우는 것 처럼 이해하기 쉽지 않을 것 입니다.

이처럼 C++ 이라는 언어는 많은 패러다임을 지원하는 언어인 만큼 기술적으로 사용하기 위해서는 배워야 할 것이 아주 많습니다.
그렇다면 C++을 어떻게 배우는 것이 좋냐고 물어본다면 기존의 Top-down 방식에서 Botoom-up 방식의 객체지향 개념을 배우고 이해하는 것이 중요합니다.

 

객체지향의 개념에 대해서 먼저 이해를 하고 문법적인 면에서 클래스(class), 접근 제한자(access modifier), new, delete 등 문법들을 숙지해야 합니다.

기존의 C언어에서의 Memory allocation와 Memory deallocation 대신 C++의 방식을 사용하면서 생성자(constuctor), 소멸자(destuctor)가 호출되는 개념도 이해해야 합니다.

이런식으로 간단한 객체지향적인 프로그램을 설계하고 구현하는 것을 반복하다보면 이젠 Bottom-up 방식의 사고가 가능하다는 것을 터득하게 되고 C++라는 언어에도 쉽게 다가갈 수 있을 것 입니다.

BELATED ARTICLES

more