C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[6749] Re:Re: 아닙니다!
김백일.cedar [cedar] 1787 읽음    2003-02-06 20:42
박지훈.임프 님이 쓰신 글 :
: 글쎄요.. 긁적긁적...
: 다중상속은 C++ 개발자들조차 거의 쓰지 않는 죽은 기능이나 마찬가지입니다.

글쎄요, C++ 개발자들은 대부분의 프로그램에서 다중상속의 혜택을 보고있습니다.
대표적인 예가 std::iostream이죠.

다중 상속이 필요성에 관련된 글을 civilian님의 답글로 올렸습니다.
http://www.borlandforum.com/impboard/impboard.dll?action=read&db=free&no=6745

: 물론 일단 있는 기능이라면 어떤 식으로든 활용하는 사람도 아주 없지는 않겠지만, 

C++의 철학은 "C++이 제공하는 모든 기능을 프로그래머가 잘 사용해서 완벽한 C++ 프로그램을 만들어라."가 아니라, "이런 기능이 있으니까 필요하면 갖다 쓰세요."라는 겁니다. 필요없으면 쓰지 않으면 그 뿐입니다.

: 개발 뿐 아니라 유지보수까지 힘들어지기 때문에 다중상속은 안쓰는 것이 오래전에 대세로 굳어졌죠.

다중 상속은 생명체의 탄생처럼 자연스러운 개념이고, 이것이 없으면 모델링하기 힘든 문제
(일부 디자인 패턴과 같은)가 실세계에는 분명히 존재합니다.
다중 상속이 없어도 모든 프로그램을 만들 수 있다고 고집하는 것은, C가 있으므로 C++이 필요없고, 어셈블리가 있으므로 고급언어가 필요없다고 보는 것과 마찬가지입니다.

: 자바나 C#이 다중상속을 지원하지 않는 것은 기능을 추가하기 힘들어서가 아니라, 다중상속이
: 그다지 많이 필요하지 않고 문제를 많이 일으키기 때문이지요.

아닙니다. 자바 등의 언어가 다중 상속을 지원하지 않는 가장 큰 이유는
컴파일러 차원에서 다중 상속을 구현하기가 힘들다는 점입니다.
프로그래밍 언어 중 가장 복잡한 구조를 가진 컴파일러는 바로 C++입니다.
아직도 1998년에 나온 ANSI C++ 규약을 100% 정확하게 지키는 컴파일러는 존재하지 않습니다.
C++의 또다른 철학은 "컴파일러를 엄청 나게 고생시켜서 프로그래머를 편하게 해보자."는 데 있습니다. 요새 한창 뜨고 있는 template metaprogramming의 경우는 정말 엄청나더군요. 컴파일 타임에 타입을 어떻게 주느냐에 따라 완전히 다른 코드가 만들어지는 대단한 기법이죠(이에 대해서는
http://osl.iu.edu/~tveldhui/papers/Template-Metaprograms/meta-art.html 를 참고하세요.
프로그래머 입장에서는 신기할 따름이지만, 컴파일러의 오버헤드는 엄청나겠죠.)
다음달에 한글판이 출간 예정인 Andrei Alexandrescu의 "Modern C++ Design : Generic Programming and Design Patterns Applied"도 템플릿 메타프로그래밍의 일종인 partial template specialization
등의 기법을 설명한 책입니다.
http://www.wowbook.com/computer/book/info/book_detail.asp?isbn=ISBN0-201-70431-5&review=15673#start

자바의 경우는 완전히 반대의 철학을 갖고 있습니다. 자바가 처음에 가전제품에서 사용되는 것을 목적으로 했듯, 컴파일러와 JVM 구현을 가능한 쉽게 해서 어떤 시스템이든 JVM을 이식하는데 목적을 두고 있죠. 그래서 웬만한 임베디드 시스템에는 JVM이 대부분 이식될 수가 있는 것이죠. 그래서 다중상속과 같은 까다로운 구현은 배제시킨겁니다.

: 아마 볼랜드에 요구한다고 해도... 콧방귀도 안뀔 겁니다. ^^;;

빠른 컴파일 속도로 빠른 개발을 가능하게 하는 것을 목적으로 하는 델파이도 같은 이유로 다중 상속을 배제한 걸 겁니다. 아마 다중상속이 가능하다면 지금보다 컴파일 속도가 두배 이상 느려지겠죠. -_-

: 어떤 이유로 다중상속이 필요한지 모르겠습니다만, 어린왕자님이 말씀하셨듯이 인터페이스를
: 이용해서 다중상속을 구현해보는 것도 좋을 것 같습니다. 인터페이스 다중상속의 예는 VCL의
: 소스코드를 보시면 줄줄이 나오죠. 클래스와 인터페이스를 상속받아 하나의 새 클래스를 정의하는
: 겁니다.
:
: 그럼...
:
:
: 박정모 님이 쓰신 글 :
: :
: :
: : 왜 델파이는 다중 상속을 지원안하는 겁니까?
: : 컴파일속도 좀 느려져도 괜찮은데, 문법이 까다로워져도 상관없는데,
: : Pascal언어 확장팩으로 라도 좋으니까 제발 다중 상속좀 지원해줬으면...
: :
: : 정말 미치겠네요. 깊이 있는 클래스 설계할 때마다 부딪히는게 다중
: : 상속입니다. 다중상속 지원안해서 해야하는 이 노가다의 버거움이여... ㅠ.ㅠ
: : 서로 다른 클래스에 같은성질의 멤버함수 만들고 또 만들고~
: :
: : 박지훈씨... 박지훈씨 힘 있으니까 볼랜드에다가 제안좀 해주십시요.
: : 언어 확장팩으로라도 다중상속 지원하게 해달라고.
: :
: : 다중상속을 위한 Pascal언어 확장팩이 나오면 100만원 한다고 해도
: : 사서 쓰겠습니다.
: :
: : 그러지말고 C++ Builder 쓰라고요? 저도 C++ Builder쓰고 싶습니다. 그런데
: : C++ Builder로 만들어 놓으면 아무래도 범용성이 떨어지니까... ㅠ.ㅠ
: :
: :

+ -

관련 글 리스트
6730 으아아아... 미치겠다. 델파이는 왜 ??!!?? 박정모 2196 2003/02/05
6765     인터페이스의 다중상속에 대해서.. 어린왕자A 3522 2003/02/08
6742     Re:으아아아... 미치겠다. 델파이는 왜 ??!!?? 박지훈.임프 2440 2003/02/06
6749         Re:Re: 아닙니다! 김백일.cedar 1787 2003/02/06
6756             Re:Re:Re: 두분의 말이 모두 맞는 말씀입니다. 그러나... 남병철.레조 1663 2003/02/07
6752             C++... 박지훈.임프 1887 2003/02/07
6754                 박정모의 의견 & 태클 입니다. 박정모 2637 2003/02/07
6763                     Re:다중상속.. ?? 김윤동.제라툴 2138 2003/02/08
6758                     Re: 우선은 ... ㅡㅡa h1800.영화 1368 2003/02/07
6755                     웬 태클입니까 박지훈.임프 1636 2003/02/07
6744         그렇습니까? ... ㅠ.ㅠa 박정모 1620 2003/02/06
6747             PS1,2에 대한 답변입니다. 김백일.cedar 1697 2003/02/06
6748                 class implementation 은 인터페이스의 구현을 지적한 말이었습니다. (냉무) 박정모 2124 2003/02/06
6750                     그러니까 인터페이스 상속이란, 인터페이스만 동일하고 구현은 별도로 해야 한다는 뜻이죠.(냉무) 김백일.cedar 3302 2003/02/06
6751                         interface상속은 구현이 반드시 제공되야 하며, interface는 객체의 메모리 매핑이기도 합니다.(냉무) 박정모 2208 2003/02/06
6739     Re:으아아아... 미치겠다. 델파이는 왜 ??!!?? 정재필 1855 2003/02/06
6732     다중상속이 안되어서 불편한게 어떤 것인가요 ? civilian 1882 2003/02/05
6745         Re:다중상속이 안되어서 불편한게 어떤 것인가요 ? 김백일.cedar 1566 2003/02/06
6746             Re:Re:다중상속이 안되어서 불편한게 어떤 것인가요 ? civilian 1872 2003/02/06
6737         예를 들어 드리려고 이것저것 찾아봤지만... ㅠ.ㅠ 박정모 1612 2003/02/05
6731     이럴땐 정말 C++ builder 쓰고 싶은 마음이 굴뚝 같습니다. 박정모 1729 2003/02/05
6734         궁금한게 있는데요 왜 C++ 빌더로 하면 범용성이 떨어지는지.. 박주현 1597 2003/02/05
6735             음~ 제가 말한 "범용성"이란... 박정모 2159 2003/02/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.