참고자료 :
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 |