과연 C++이 C언어보다 쉬운가?

whs9400의 이미지

안녕하세요 제가 지금 카톡방에 저 포함해서 3분이 계신데
한분은 프로그래밍을 VB6로 살짝 맛만 보신 상태시고 저하고 다른분은 C언어를 약간이라도 했습니다.
아마 저 빼고 그 C언어 약간 하신분은 약간이 아니라 다 했을겁니다.
근데 그 분이 말씀하시길
VB6 살짝 맛만 보신 분께 C언어보단 C++이 좋다고 말씀하셨습니다.
이유는 쉽고 C언어는 컴파일러가 없고 C언어를 과장한 C++ 컴파일러라고 그러더라구요.
듣다듣다 처음 듣는 소리입니다.
과연 C언어를 지원하는 컴파일러는 없고 C언어를 과장한 C++ 컴파일러인가요?
전 말이 안된다는 생각이 드는데..
그리고 제 생각에는 C++ 언어가 쉬운 언어는 아닌것 같아요.
물론 C언어보다 먼저하는것도 이해가 안되고요..
이건 누구 말이 맞는건가요?
전 그 VB6로 살짝 맛만 보신분께 어떤 언어부터 하셔야 하는지 조언을 해드리고 싶어서
질문 남깁니다.

jick의 이미지

Microsoft Visual C++은 최신 C 표준을 지원하지 않는 것으로 알고 있습니다. (윈도우즈에서는 그냥 C 대신 C++을 쓰세요...가 MS 정책입니다.) 그 얘기가 잘못 전달된 듯.

C++은 C에서 나왔지만 서로 다른 언어이고, 권장하는 스타일도 다른 부분이 많습니다. 그러므로 C++을 배우기 위해 꼭 C를 "잘" 알아야 할 필요는 없습니다. (뭐 물론 잘 알면 나쁠 거야 없겠지요.)

mydream의 이미지

C는 객체를 지향하지 않습니다. 그래서 절차지향방식에 따라 프로그래밍을 하죠. 즉 순차적으로 프로그래밍을 짜야 합니다. 반면 C++은 객체지향방식에 따라 프로그래밍을 합니다. 절차지향방식으로 프로그래밍을 짠다면 C++을 배울 필요가 없지만, 객체지향방식으로 프로그래밍을 짜야 한다면 C++을 사용해야 합니다. 객체지향방식은 프로그램의 유지보수가 간편한 편이라 요즘 추세에서는 C보다 C++을 배우는 편이 유리할 것 같다는 것이 제 개인적인 생각입니다.

Necromancer의 이미지

제 경험상 C++이 C보다 한등급 위입니다.
C++은 C의 순차형 특성에 객체지향이 더해진거라 알아야할게 그만큼 더 많습니다.

C가 쉽다면 C++은 좀 어렵다.
C 그럭저럭 할수 있다면 C++은 매우 어렵다.
C가 어렵다면 C++은 아예 못한다.

로 보시면 됩니다.

Written By the Black Knight of Destruction

academic의 이미지

제 느낌으로는...

배우기 쉬운가? C++ 은 C보다 배우기 어렵습니다.

유지보수하기 쉬운가? C++은 객체 지향이라 유지보수하기 쉬울 수 있습니다. (반드시 그런 것은 아닙니다.)

----
academic은 제 고등학교 때 동아리 이름입니다.
academic, 아주 가끔은 저도 이랬으면 좋겠습니다.

gosuchoi의 이미지

이것은 단순한 제 개인 의견입니다.
제가 아는 한, 아직도 C를 C++보다 훨씬 많이 사용합니다. C가 C++에 비하면 performance가 낫다는 얘기가 있습니다. 따라서 아직 많은 회사들이 현업에서 C를 사용하고 있습니다.
프로그래밍 언어를 object oriented 개념으로 첨부터 배우신 분은 C++이 조금 더 익숙할 수 있습니다. 하지만 C 언어에 익숙한 사람은 C++의 개념을 잡기가 상당히 힘듭니다. 유지보수가 쉬울것 같지만 결코 그렇지 않습니다. 물론 어떻게 디자인 하느냐에 따라 다르겠지만.
특히 C++을 gdb 를 이용해서 debugging하면 member function name들이 mangling 되어서 상당히 고충이 따릅니다.

C++11/C++14에서 상당히 쉽고 간편한 기능들이 추가되었지만, 조금 어려운 개념( 제 기준입니다)도 있습니다. 람브다가 좀 쉬운 개념은 아닌것 같더라구요
C++17에서는 또 어떤 기능들이 추가되거나 불편한 기능들이 빠지기도 할 겁니다.

twinwings의 이미지

C가 대체로 빠르지만, template이 가미되면 얘기는 조금 달라집니다.

예를 들어 퀵소트의 경우 C는 비교함수를 파라미터로 넘겨줘서 비교할때마다 함수를 점프점프 해대지만,

템플릿의 경우 필요에 따라 비교함수를 인라이닝 처리를 해버려서 비교함수를 그 자리에서 직접 연산해버립니다.

(하지만 그에대한 단점으로 binary 호환성이 매우 떨어지죠.....C처럼 컴파일러에 독립적인 빌드된 라이브러리 배포가 불가능하지 않나 싶습니다.)

그리고 C++이 유지보수하기 힘들다에 한표 던집니다. 어설프게 만들면 갑절 이상으로 유지보수가 힘들어지는 것 같습니다.

그렇다고 C++로 제대로 설계하느니 python, go 등으로 깔끔하게 설게하는게 낫다고도 생각하고요.

ifree의 이미지

위의 template 는 STL을 말씀하시는가요?
template 사용해서 이진 호환성이 매우 떨어진다는 말은 뜬금이 없네요.

shint의 이미지

-------------------------
1 패스 컴파일 - 터보C
2 패스 컴파일 - 어셈블리
3 패스 컴파일 - MSVC

-------------------------
파스칼 코드를 C코드로 치환한 내용이 터보C 정복에 있습니다.

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

qwqwhsnote의 이미지

C++은 문법이 상당히 지저분 한편이라
어려운 정도로 치면 C++이 더 난해 할 것 같네요
(그리고 C는 컴파일러가 없다는 말은
그분이 윈도우 비주얼 스튜디오에서는 C 가 컴파일러 없는 거나 마찬가지다 라고 하신걸
잘못 알아들으신것 같네요)

발전하는 과정과 모습을 경험하고 보는 건 즐거운 일이야건