본문 바로가기
c, c++/구름 알고리즘 [문제풀이]

0.1 c언어와 c++의 큰 범주에서의 차이점

by 피스타0204 2022. 3. 15.

참고자료 :

1.

이것이 c++이다, 서현우

2.

https://m.blog.naver.com/atalanta16/220249264429

 

 

 c++은 c언어와는 "다른" 좀 더 "효율적인" 언어입니다.

c++는 c언어에서 시작해 좀 더 배우기 쉽고 인간의 시야에서 좀 더 직관적으로 볼 수 있게 발전한 언어이기 때문에 c++을 배우기 전에 c언어를 배우는 경우가 많습니다. 그러다 보니 c++을 설명하는 글의 시작은 c언어와 c++의 다른 점을 비교하는 데서부터 시작하는 경우가 많은데요. 이 글 또한 큰 범주에서 c언어와 c++의 차이점을 설명하며 글의 첫마디를 떼겠습니다.

 

<1> c++은 객체지향적인 언어이다

1. 절차지향과 객체지향을 구분해야 할까?

 

 누군가에게 c언어와 c++의 차이점을 설명하라고 했을 때 가장 먼저, 그리고 자주 나오는 대답이 "c언어는 절차지향 언어이고 c++은 객체지향 언어입니다!"입니다. 정확히 말하면, "c언어는 보다 절차지향적이고 c++은 보다 객체지향적이다!"가 더 맞는 말입니다. 두 말의 차이점이 무엇일까요? 전자의 말을 프로그래밍을 처음 배우는 사람에게 이야기했을 때. 그 사람은 은연중에 절차지향 언어와 객체지향 언어가 따로 있구나, 둘은 완전히 다른 것이구나 하고 착각할 수 있습니다. 하지만 전자에서는 그럴 일이 없겠죠.

즉, 절차지향(Procedural Programming)과 객체지향(Object-oriented Programming)은 대비되는 개념이 아닙니다. 그러므로 c++과 같은 객체지향 프로그래밍 언어도 어느 정도 절차지향적인 측면을 가지고 있습니다.

 

알아두면 쓸모없는 Q . 절차지향이라는 표현이 꼭 필요할까?

어떤 면에서는 불필요하다고 볼 수 있습니다. 그가 있음으로 앞서 말한 절차지향 언어와 객체지향 언어의 구분이 생긴 것이니까요. 하지만 전에 있었던 프로세스에 대해 이야기하지 않으면 객체지향에 대해 이야기 하기 어렵기 때문에 이 용어가 만들어진 것은 어쩔 수 없다고 생각합니다. 대신 다른 표현을 사용하면 더 좋았겠죠. 순차적인 방식의 프로그래밍 언어, "순차지향" 이런 식으로 표현했다면 어땠을까라는 생각도 듭니다.

 

 2. <개념> Procedural Programming 과 Object-oriented Programming

앞서 했던 이야기들은 사실 개념을 이해하기 쉽게 흐름을 알려주는 심화 내용이었습니다. 여기서부터는 절차지향이 어떤 것이고 객체지향이 어떤 것인지 그 개념에 대해 알아보겠습니다.

절차지향(procedural programming)은 순차적인 흐름대로 프로그래밍하는 것을 말합니다. 과거에는 (c언어의 특성을 봤을때) 순차 방식의 프로그래밍만 존재했습니다. 하지만 프로그램이 복잡해지면서 한번에 죽 이어서 프로그래밍하는 것에 한계가 드러났고 그의 단점을 보완한 객체지향(Object-oriented Programming)이 등장했습니다. 

객체 지향에 대해서는 아래의 그림을 보면서 알아봅시다. (알아서 적당히 그림보고 알아들었으면 좋겠다)

 

이론

 

순서도에서의 객체지향
객체와 순차방식의 차이가 들어난 그림

객체지향은 대충 말하자면 함수같은 하나의 덩어리, 객체로 묶어서 여기저기 끼워넣는 방식으로도 볼 수 있다.

 

<2> c++과 c는 프로그래밍 방식(논리)에서부터 차이가 난다

둘 모두 형식상으로는 비슷해보인다. 하지만 둘은 확실히 다르다! 자세한 내용은 이야기하며 진행하겠다.

c언어와 c++, 두 문법 중 어떤 것을 사용해야 할지 모르겠을 때는 무조건 c++방식을 따른다! 이것만 알고 가자!

 

'c, c++ > 구름 알고리즘 [문제풀이]' 카테고리의 다른 글

2. 사은품 교환하기  (0) 2022.06.30
1. 근묵자흑  (0) 2022.06.30
1.1 c와 c++의 차이_ 학습목표  (0) 2022.03.16