C++의 창시자가 보는 프로그래밍의 문제점

권순선의 이미지

C++의 창시자인 Bjarne Stroustrup의 최근 한 매체와 인터뷰를 했습니다. 첫번째 질문이 "Why is most software so bad?" 인데 이에 대한 대답이 재미있군요.

"어떤 소프트웨어(예: Mars Rovers, Google, 인간 게놈 프로젝트)는 어떤 기준으로 견주어 보아도 뛰어나고, 그런 소프트웨어들은 십수년 전에는 불가능했을 것이다... 그런데 '평균적인' 소프트웨어들을 보면 나는 울고 싶다... 소프트웨어 개발자들은 그동안 불안정한 요소들을 짜맞추어서 안정적인 시스템을 만드는데 너무나 익숙해져 버렸는데 문제는 어떤 과정을 거쳐 그런 결과가 나왔는지 아는 사람은 별로 없다는 것이다..."

전체 기사는 http://www.techreview.com/InfoTech/17831/ 를 참고하세요.

doldori의 이미지

제목과는 달리 내용은 C++ 자랑하는 것이로군요. ^^;
이 양반 보면 뭐랄까... 고집 세고 자기 확신이 강한 성격이라는 느낌이 드는데,
그것이 다른 사람 눈에는 오만함으로 보일 수도 있다고 생각합니다.
저라면 공식적인 인터뷰에서 이런 얘기는 못할 것 같습니다. ^^;

Quote:

And then, of course, you don't expect proponents of languages that lost out
in competition with C++ to be polite about it. Software development doesn't have
that degree of professionalism--though I hope it eventually will.

IsExist의 이미지

유교적인 관습에 익숙한 우리네의 생각으로는 뽑내거나 자랑하는게 미덕처럼 보이지 않지만 저쪽은 저렇게 표현하는게 일상적입니다.
그런점에서 RMS도 마찬가자리고 생각합니다. 저런류의 답변을 무례하다고 생각하면 안됩니다. 문화적인 차이로 인지할 수
있어야 합니다.

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

---------
간디가 말한 우리를 파괴시키는 7가지 요소

첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스

이익추구를 위해서라면..

다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치

magingax의 이미지

한국에서 성공한 인생을 말하는 거군요~!!
회사 공금을 유용해 부동산투자 수백억대 수익올려~...
뭐 이런거면 7 가지 다들어가지않나 ㅋㅋㅋ

LISP 사용자모임
http://cafe.naver.com/lisper
방송기술 개발업체
http://playhouseinc.co.kr

dormael의 이미지

날카로우시군요.
^^

-- Signature --
青い空大好き。
蒼井ソラもっと好き。
파란 하늘 너무 좋아.
아오이 소라 더좋아.

익명사용자의 이미지

그렇게 돈 벌 수 있는 인재를 겨우 몇천 주고, 재무 관리 따위나 시켰으니.....

kalstein의 이미지

사실...;;

C++은...현존 모든 언어중에서 (함수형 언어는 제외...패러다임이 조금 다르죠^^;) 가장 강력합니다. 충분히 자신감있어해도 될꺼 같네요.
문제는...너무 강력해서 배워야되는게 많다...일까나요;;;

수년 후, C++의 몰락이 오려면...JAVA, C#에서 좀더 generic programming 에 접근해야 될텐데...

문제는 그렇게 되면 JAVA, C#이 아닌게 될지도...(이미 generic programming 기법 도입은 시작되었죠.)


------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/

kyagrd의 이미지

언어에 꼭 필요한 기능을 안 넣을 수 없죠. C++ 표준라이브러리를 맛본 사람들은 Java 나 C# 엔 이런 거 못만드나 하는 불평을 하지 않을 수 없으니까요.

C++ 은 자동 메모리 관리가 안되는 곳이나 필요없는 곳에서 여전히 유용하게 쓰일 겁니다.아직도 C가 엄청 많이 쓰이고 있는 걸 생각하면 Java 나 C# 과 공존하지 몰락이란 건 힘들죠. (금융권에서 COBOL 도 아직 많이 쓰이고 있고, 공대나 자연대 중에 아직 포트란 라이브러리 사용하는 데 많이 남아 있고) C++ 컴파일러가 C 컴파일러만큼 버전이 안정되는 때에는 C가 쓰이던 곳에서 더 많이 C++ 가 쓰일 수도 있고요. 아직 template 구현이 미흡한 컴파일러 버전을 쓰는 기계들이 많은지라 여러 플랫폼의 다양한 컴파일러로 (상당히 낮은 버전까지) 포팅을 고려할 때는 C++ 표준라이브러리나 boost 등 템플릿 기반 라이브러리들을 자유자재로 활용할 수 없는 게 안타깝죠.

--
There's nothing so practical as a good theory.
- Kurt Lewin

--
There's nothing so practical as a good theory. - Kurt Lewin
"하스켈로 배우는 프로그래밍" http://pl.pusan.ac.kr/~haskell/

죠커의 이미지

generics과 templates는 다릅니다. C++에 generics를 도입하자고 주장하는 사람들이 있고 그들이 표준화와 MS에서 일하고 있습니다.

- CN의 낙서장 / HanIRC:#CN

aero의 이미지

http://www.techreview.com/InfoTech/17868/page1/
AO, Ruled base,Generic같은것과 Java,C#등에 대해 얘기합니다.

어떻게 보면 약간 오만해 보일 수 도 있는 말투는 여전한것같네요 :)

죠커의 이미지

저는 C++ 언어의 가장 큰 단점은 교육이라고 생각합니다. 상당 수준의 프로그래머들도 템플릿에 대한 이해가 매우 미흡합니다. 저도 미비하고 저보다 미비한 사람이 매우 많습니다. CTAssert 코드 조차 이해하지 못하는 사람들이 너무 많습니다. C++은 새로운 영역을 추구하는 것보다 교육에 더 치중을 해야한다고 생각합니다. 일부 사람들이 template의 정적 다형성 이외에 generic의 동적 다형성도 확보하길 원해서 표준의 개편을 원하던데 전 이런 시도는 실패할 것이라 봅니다.

- CN의 낙서장 / HanIRC:#CN

magingax의 이미지

프로그램을 많이 짜본분들도 사실 C++ 기능들을 다이해하기 어렵죠..
그렇다면 C++ 가 너무 어려운겁니다..전문가들도 이해하기어려우면 초심자들한테는..ㅎㅎ

LISP 사용자모임
http://cafe.naver.com/lisper
방송기술 개발업체
http://playhouseinc.co.kr

winner의 이미지

사용하는 입장에서는 정말 깔끔하면서도 강력합니다만 문제가 생길 때
library 를 바라보면 정말 난감해집니다.

Library 개발자 입장에서도 쉽지는 않을 것 같구요.

너무 tricky 한 느낌이 많아서...
개발자들도 trick 이라는 용어를 많이 쓰고 있다는 것은 이러한 점을 보여준다고 생각합니다.
(예: enum trick -- 그나마 이것은 가장 덜 tricky 한 요소라고 보이니 원...)

저도 C++ 는 계속 공부하고 있습니다만 하면 할수록 새로운 programming language 를
갈망하게 되더군요. 뭐 나름대로 trick 들이 재미는 있습니다만...

Generic 의 동적다형성이라는 말은 처음 듣네요. 관련 글의 link 를 알 수 있을까요?

lovewar의 이미지

문서화가 교육과 관련이 많은 것 같습니다.
스스로 익히는(비용이 문제라서) 저에게는 문서가 쉽게 되었으면 좋겠다는 바램을 합니다.
난해한것이 문서때문인지 아니면 C++ 언어 자체 때문인지는 모르지만,
단계별 또는 API에 대한 읽는 방법을 몰라서인지 충분한 문서(못 찾았을지도 모릅니다)가 있으면 좋겠다는 생각을 합니다.

xyhan의 이미지

요즘은 자바 밖에 안하는데..
다시 공부할 용기가.. 날려나 모르겠네요?
============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

============================================================

선한 인간이냐 악한 인간이냐는 그사람의 의지에 달렸다. -에픽테토스-
의지 노력 기다림은 성공의 주춧돌이다. -파스퇴르-

============================================================

익명사용자의 이미지

CN님 같은분도 C++의 강력함을 인정하고 , 단지 교육의 부실에서 C++에 안타까움을 표시할정도면

예전에 C만 알던 KLDP가 아니군요...

어려워서 나쁘다는 C++에서 .... 인식이 많이 발전한거 같습니다

익명사용자의 이미지

태어나서 C++로 진짜 애플리케이션을 한번도 짜본 적이 없는 사람들이 C++ 가지고 뭐라고 떠들든지간에 귀담아들을 필요는 없습니다. 보통은 학교에서 내주는 숙제 몇개 깔짝거려서 만들어본 다음 자기가 C++ 전문가가 된양 착각에 빠지는 사람이 대부분입니다.

winner의 이미지

(-_-!)

죠커의 이미지

그냥 익명 사용자들에겐 신경쓰지 마세요. :-)

- CN의 낙서장 / HanIRC:#CN

익명사용자의 이미지

노력부족입니다.

동방불패도 궁극의 무술이 적힌 규화보전을 보고 배우기위해 거사를 치뤘는데...

언제나 노력부족인 오리...

p.s. 임양(?)이 남자였다는 소문이 사실인가요?

ydhoney의 이미지

청하씨가 ㄱㅊ를 가지고 있어 보이진 않던데요.
 
 
====================여기부터 식은어치====================
안녕하세요. 저는 야동 초등학교 2학년 6반 11번입니다!! 제 컴퓨터에 리눅스를 깔아보고 싶습니다. 리눅스라는건 어제 처음 들어 보았습니다.
리눅스에서도 카트라이더는 되겠지요? 설마 안되나요? 안되면 왜 쓰나요? =3=33 리눅스에서는 카트라이더 캐릭터 머리가 너무 커서 못받아들이나요?

M.W.Park의 이미지

거사(x)
거세(o)

-----
오늘 나의 취미는 끝없는, 끝없는 인내다. 1973 法頂

-----
오늘 의 취미는 끝없는, 끝없는 인내다. 1973 法頂

kalstein의 이미지

뭐 사실...톡까놓고 얘기하면...;;

Java를 잘 아시는 분도 흔하지않겠죠... 어찌보면 자바는 플랫폼 자체라서...C++은 언어만을 가지는데 비하여 자바는 정말 여러분야를 다 통합하는 건데... 대다수의 '내가 자바 좀 알지' 하는 사람들 보면...걍 웹쪽에서 OOP개념없는 대충쓰는 자바를 좀 써보고는 그런말씀 하시는 분들 있지요...

그분들이 특히나 'C++은 어렵기만 한 구린 언어야!' 라고들 하는데...음;; C++도 대충쓰면 쉽습니다

;;;ㅡ _-;


------------------------------------------
Let`s Smart Move!!
http://kalstein.tistory.com/

gamdora의 이미지

궁금해서 그러는데 자바*는 자바* 플랫폼이 있는데,

C++은 어떤 플랫폼이 있나요?

zaemin의 이미지

Java가 기계어가 아니기 때문에 이를 수행하는 플랫폼이 필요합니다. 그리고 그 플랫폼에 대해서도 언어와 같은 Java라는 이름이 붙었습니다. 이것을 Jiva라고 했든 Javi라고 했든 상관없습니다. 아무튼 그들은 플랫폼의 이름과 언어의 이름을 혼란스럽게도 똑같은 이름으로 했더군요.

C++이나 C는 컴파일되어 나온 언어가 기계어가 나오기 때문에 글쓴분이 말씀하시는 것과 같은 플랫폼이란 것이 필요하지는 않습니다. C++, C의 결과물은 바로 기계가 읽습니다(Java 플랫폼과 비교하여). 그냥 CPU를 비롯한 하드웨어와 OS로 이루어진 플랫폼만 있으면 됩니다. 그리고 그 CPU로 기계어를 낼 수 있는 C++, C 컴파일러하고요.

gamdora의 이미지

에······

그럼 굳이 비교를 하자면 자바*에게 자바* 플랫폼이 있다면

C++에게는 시스템 호출이나 win32 API 등이 있다는 거라고도

할 수 있나요······?

익명사용자의 이미지

C++의 플랫폼은 "OS & CPU"이고, Java의 플랫폼은 "Java"입니다.

gamdora의 이미지

그렇군요,

감사합니다. :)

hys545의 이미지

즐린
이걸 gas나 nasm같은 어셈블러에서 기계어로 바꾸어주는겁니다.
대부분의 컴파일러에서 자동으로 해주긴하지만
실제로 gcc 실행파일에서 하는 일은 전처리기 호출+ 어셈블리어로 바꾸어주는 컴파일러 호출+어셈블러 호출입니다.

즐린

drinkme의 이미지

제가 배운바로는
compile이라는 과정은 소스코드를 object file로 만드는 과정입니다.

그리고, 대부분의 compiler들은 이 기능을 온전히 제공합니다.
gcc나 일부 compiler들이 asm 코드를 생성한다지만,
이건 그들만의 방법론입니다.

violino의 이미지

이런 종류의 이슈엔 답글 달기가 좀 조심스러워지네요.
하지만, 인터뷰 기사를 읽어보니깐 아무리 미국사람이라고 해도
좀 잘난척하는건 심한것 같아요.
뭐 잘난 사람이 잘난척하는거야 뭐라 할말도 없지만.. 쩝.

기사 내용을 보니깐, 이 사람은 C++을 특정 목적이나 플랫폼만 지향한게 아닌
일반적으로 두루 두루 쓰일 수 있는 언어로 만들었다고 하네요.
그러면서 반면에 많은 프로그래머들의 오류 중 하나가
적절한 라이브러리를 채용해서 쓰지 못하는데에서 온다고 합니다.
일반적으로 그러한 라이브러리들은 예산도 많이 들지요.
또한 C++이 꼭 우수한 프로그래머만 위한건 아니지만,
그때 당시 Bell 연구소 연구원들은 평범한 프로그래머들보단 뛰어난 사람이었단걸
이야기하면서, 당근 C++이 똑똑한 사람들을 위한 언어란걸 암시하지요.
그리고, C++을 싫어하는 많은 사람들이 C++을 제대로 써보질 않았다고 하구요.

구지 하나 하나 반박할 필요성을 못느끼겠고 귀찮기도 하네요.
근데, 똑똑한 머리로 항상 좋은 환경에서 일했던 저자가
열악한 환경에서 일하는 수많은 프로그래머들을 이해할 수 있을지.
그들이 모두 멍청하고 C++을 잘 몰라서, 아니, 제대로 안써봐서
그 고생들을 한다고 생각하는건지 한번 물어보고 싶네요.
그러다가도, 이런 종류의 사람들이 어떤식으로 대답할지가 뻔해서
그런 질문들을 물어볼 의욕마저도 사라지는군요.
마치 제 모교의 전공 교수들처럼..

전 훌륭한 개발자들을 존경합니다. 특히나 뛰어난 사람들 많이 봤지요.
그런데, 자기만이 절대 진리라고 생각하는 Bjarne 같은 사람은 정이 안갑니다.
Scientist는 자기 자신도 항상 의심하고, 그에 반하는 다른 사람들의
이론에도 가능성을 인정하고 주의를 기울여야 한다고 배웠기 때문이죠.

idrukawa의 이미지

인용:
그러다가도, 이런 종류의 사람들이 어떤식으로 대답할지가 뻔해서
그런 질문들을 물어볼 의욕마저도 사라지는군요.
마치 제 모교의 전공 교수들처럼..
(중략)
Scientist는 자기 자신도 항상 의심하고, 그에 반하는 다른 사람들의
이론에도 가능성을 인정하고 주의를 기울여야 한다고 배웠기 때문이죠.

마지막말을 전공 교수들에게 배운것 같지는 않네요ㅎㅎ