박정모님께 쓴 글에 김백일님이, 김백일님께 쓴 글에 박정모님이...
도대체 어쩌란 말입니까.
그리고 저더러 글을 지우라 말라는 얘기는 또 뭡니까?
뭘 어쩌자고 그런 말을 쓰시는지요.
박정모님께 한 말이 아니라 김백일님에게 쓴 글입니다.
박정모님이 지우라어쩌라 할 계제가 아니라고 보는데요.
다시 한번 말하지만, 박정모님께 쓴 글이 아닙니다.
박정모님께 리플을 썼다면 박정모님의 글에 리플을 달았을 겁니다.
박정모님은 "C++은 C++ 스타일로 코딩해야 한다"라고 믿는 모양이신데.
뭐라고 말씀하시든 제 생각은 아니올시다입니다.
C없이는 C++도 없습니다. 누가 뭐라고 하든 C++은 C의 기반 위에 만들어진 것입니다.
단순히 기반으로만 삼은 것이 아니라 철저히 C가 닦아놓은 길을 이용했습니다.
스트로스트럽 스스로가 "C를 개선한 데다가 OOP를 추가했다"고 말합니다.
C++은 OOP 지상구현을 위해 설계한 것이 아니라는 말입니다.
다시 말해서, C++을 클래스같은 것은 전혀 쓰지 않고 단순히 C로만 이용하더라도 그것이 C++이
아니라고 말할 수는 없다는 겁니다. 그렇게 말한다면 그사람이 스스로 C++을 모른다고 말하는 것과
같으며, C를 철저히 지원하느라 OOP 이론의 측면에서 일부 덜떨어지는 C++을 왜 쓰느냐고 되묻고
싶습니다.
다중상속을 지원하는 유일한 언어가 C++이든 템플릿이 어쨌든, C++에서 그런 모든 것보다 훨씬 더
중요한 것이 C라는 뿌리라는 사실을 개발자들은 종종 간과합니다.
아닐 거 같은가요? C다운 강력한 포인터와 때로는 지저분해보이기까지 하는 C스러운 축약형 표현들이
삭제된다면, 템플릿과 다중상속에도 불구하고 C++을 쓰는 사람은 대폭 줄어들 것이 뻔합니다.
대부분의 개발자들에게 C++의 매력의 근본은 템플릿이나 다중상속이 아니기 때문입니다.
거꾸로 말해볼까요?
이 포럼에서, 템플릿과 다중상속 없이는 C++ 포기하겠다는 사람이 많을까요, 아니면
포인터와 C의 지저분한 축약형 표현이 없이는 C++ 포기하겠다는 사람이 많을까요?
다시 예를 들어봅시다.
초창기부터 지금까지 C++이 성공한 것은 템플릿과 다중상속때문입니까 아니면 C언어를 충실하게
지원했기 때문입니까? 템플릿의 경우, 재작년이었던가 표준안이 나온 이후로 최근 들어 급속히
인기를 끌고 있는 것은 사실이지만, 적어도 지금까지 C++이 한세대를 풍미했던 비결은 템플릿은
아니었습니다. 그럼 다중상속입니까? 더더욱 아닙니다.
다중상속, 왜 만들었는지 모르겠다고 하지 않았습니다. 쓸모없다고 하지 않았습니다.
간단히 요약하면, 다중상속에는 개발에 적용하는 데 있어 전반적인 오버헤드가 있다고 한 것입니다.
박정모님이 다중상속이 꼭 필요하다고 생각하시든 아니시든 그건 박정모님의 자유입니다.
하지만 다중상속이 처음 C++에 추가되던 89년이었던가부터 이미 필요하냐 아니냐가 논란의 핵심이었습니다.
그 논란이 있었던 사실 자체가, 설혹 다중상속이 필요하다고 하더라도 박정모님이 말씀하시는 것처럼
꼭 필요한 정도는 아니라는 것을 반증하는 것이라고 생각하지 않으십니까?
다중상속과 템플릿 같은 기능들은 C++언어의 초기 설계부터 있던 것이 아니라 한참 진행되고 난 후에
추가된 기능들입니다. 물론 스트로스트럽도 이것들이 없으면 C++은 완전하지 않다고 말합니다.
하지만 그 스스로가 C++의 C 호환성이 설계의 핵심이었다고 말하고 있습니다. 그리고 다중상속과
템플릿이 제대로 형태도 잡히기 전에 이미 C++은 눈부시게 성장하고 있었습니다.
그는 C 호환성 부분을 싫어한다고 말하지만, 그것이 C++의 성공에 결정적이었다는 것을 인정합니다.
(그리고 그런 호환성을 전혀 가지지 못하는 C#이 C++의 후계자가 될 수 없는 것도 당연합니다.)
다중상속의 복잡한 오버헤드를 고려하면, 거의 대부분의 경우 단일상속이 더 좋은 대안입니다.
클래스 상속 구조에 목숨 걸고 집착하지 않는다면 말입니다.
처음 쓰셨던 글을 보면 다중상속을 안해서 멤버함수를 다시 만들고 하는 것이 노가다라고 하셨는데,
단지 그 때문이라면 다중상속의 오버헤드는 훨씬 더 큽니다. Effective C++에서 다중상속에 대해
찾아보십시오.
다중상속에 대한 논란은 아직도 계속되고 있습니다. 하지만 지금까지 박정모님을 제외한 누구도
다중상속이 불가피하게 꼭 필요한 것이라고 주장한 것을 들어보지는 못했으며, 다중상속을 피할 방법은 얼마든지 있습니다.
C++을 OOP의 현실적인 결정체로 보시는 분들이 많다는 거 잘 알고 있습니다.
그렇게 생각하시든 말든 그또한 C++다운 자유의 범주에 속할 문제니까 맘대로 생각하시면 됩니다.
그리고 제 생각은 또 다릅니다.
제 생각에는 C++은 OOP의 결정체가 아니라 코딩에서의 선택의 자유의 결정체입니다.
제게 지우라 고치라 하면서 박정모님의 생각을 강요하지 마십시오.
박정모 님이 쓰신 글 :
:
:
: 다중상속이 c++언어의 핵심입니까? 아닙니다. c++ 만이 유일하게 지원하는 막강한
: 기능입니다.
:
: "delph에서 다중상속을 지원하지 않아서 너무 코딩하기 어렵다. c++ 빤히 아는사람이
: c로 oop아닌 코딩해야할 때, oop가 제공하는 사고의 편리함과 간결함이 정말 그리운
: 것과 비슷하게 - 그것보다는 못하지만 - 불편하다. 이건 정말 노가다다."
:
: 라고 말하고 있는 겁니다. 있어야 할 기능이 없어서 아니, 이게 있음 얼마나 편하게
: 작업할 수 있는데 왜 지원을 안해주나 혼자 중얼중얼 하는겁니다.
:
: 대부분의 c++ 개발자가 다중상속을 이용 않는다구요? 제가 c++ 프로그래밍 한참 하던때
: 다른 c++ 프로그래머들이
:
: "대부분의 c++프로그래머는 c 스타일로 코딩한다. c++ 왜 만들었는지 모르겠다."
:
: 라고 말하는 것과 비슷한 경우라고 생각합니다.
:
: 다중상속은 꼭 필요합니다.
:
: 임프님과 마찬가지로 저 역시 97년 델파이로 넘어오고 나서 새로운 c++ 문법을 공부하거나
: 시대의 흐름을 따라갈 기회가 없었습니다. 그래서 최근의 c++ 다중상속이 제가 알고 있던
: 모습과 어떻게 다른지 모르고 있습니다.
:
: -------------------------------------------------------------------------------------
: : 제가 이전 글에서나 지금 말하는 것은, 다중상속이 전혀 쓸모가 없다든지 쓰지 말자는 얘기가 아닙니다.
: : '죽은 기능이나 마찬가지'라고 한 말은 C++ 개발자에게 쓰지 말라고 한 것이 아니라 다중상속을 부러워하는
: : 델파이 개발자에게 한 말이지요. (역시.. 좀 과장스러웠다는 점은 인정합니다.)
: -------------------------------------------------------------------------------------
:
: 이 부분은 굉장히 거슬립니다. 수정하거나 지워 주셨으면 감사하겠습니다.
:
:
|