목요일, 9월 13, 2007

[일상다반사] 리누스 토발즈가 화가 난 이유: C와 C++

C와 C++ 언어에 대한 논쟁은 두 언어 중 하나가 사라질 때까지 끊임없이 계속되겠지만, 이번에 발생한 논쟁은 조금 특이했다. 이유는? 리누스 토발즈가 소매 걷어붙이고 자신의 생각을 여과없이(!) 보여주었기 때문이다.



사건의 발단은 리누스 토발즈가 리눅스 커널 개발을 위해 bitkeeper를 대신해 손수 만든 형상 관리 시스템인 git에 대한 논쟁에서 비롯되었다. 확장성과 오픈소스 공동체 참여를 이끌어내기 위해 C가 아니라 C++을 사용해야 한다는 말에 그만 토발즈 작은 형님께서 두껑이 열린 모양이다. 직접 들어보자.



>
> When I first looked at Git source code two things struck me as odd:
> 1. Pure C as opposed to C++. No idea why. Please don't talk about portability,
> it's BS.

*YOU* are full of bullshit.

C++ is a horrible language. It's made more horrible by the fact that a lot
of substandard programmers use it, to the point where it's much much
easier to generate total and utter crap with it. Quite frankly, even if
the choice of C were to do *nothing* but keep the C++ programmers out,
that in itself would be a huge reason to use C.


우와, 엄청 세게 나온다. 여기서 YOU는 Dmitry Kakurin라는 재미있는 친구이고, I는 리누스 토발즈이다. 토발즈 강연도 직접 들어봤지만(가장 앞줄에서. ㅎㅎ) 토발즈가 이렇게 강하게 다른 사람을 두들겨 패는 모습이 상상이 잘 안갔다.



문제의 발단은 "it's BS"라고 생각한다. 'BS'가 C++ 창시자 이름인 'Bjarne Stroustrup'일리는 만무하고, 4글자 짜리 단어(four letter words)인데, 흥미롭게도 이 블로그 주인장도 C와 C++ 언어와 관련해서 똑같은 소리를 들어봤다.




jrogue: XX하고 YY해서 _성능_ 문제도 있고 해서 이 프로그램 제작에는 C언어를 써야 합니다.

BOSS: 아니 C++가 C보다 성능이 떨어진다고? 그런 _BS_같은 주장은 집어치워!



여기서 대화 상대가 내 BOSS만 아니었으면 아마 무척 흥미로운 사태가 벌어졌을텐데, 참을 인(忍)자 세 번 썼다. ㅎㅎㅎ



개인적으로 C++을 사용하지 않고 C를 사용하는 이유를 딱 한가지만 들어라고 하면, 머리가 나빠서(혼자만의 엉뚱한 상상: 토발즈도 머리가 나쁜 모양이다. ㅎㅎ)이다. 며칠 전에 비동기 I/O를 활용하려고 자료를 수집하는 도중에 ACE(이름 한번 그럴싸하지?)를 살펴보았는데, 원시 코드 풀고 난 다음에 얽히고 섥혀서 도저히 끝나지 않은 실타래를 보고서 바로 rm -rf로 다 지웠다. 아무리 봐도 내가 찾는 부분을 어떻게 찾아야 할지 실마리가 잡히지 않았기 때문이다. 구조적 프로그래밍 사고 방식에 너무나도 푹 빠진 나머지 객체지향 프로그램을 이해 못한다고 댓글 달려는 분이 계신데... 가볍게 반사해드린다. 추상화, 고수준, 설계, UML, 확장성, 유지보수성... 이런 머리 아픈 용어로 불쌍한 어린 양(?)을 계도하려고 하지 마시라.



오늘의 결론: 뭐 인생 별거 있겠어? 그냥 마음 편하게 C를 써서 단순하게 살자.



뱀다리: 논쟁 가운데 리누스 토발즈가 적은 다음 문장에 크게 공감한다. C 프로그램을 척 보고 이해못한다면, 동일한 일을 하는 C++ 프로그램을 봐도 이해 못한다. 하지만 대부분의 경우 반대는 성립하지 않는다.



One of the great
strengths of C is that it doesn't make you think of your program as
anything high-level.


EOB

댓글 4개:

  1. 토발즈가 C++에 의한 그의 의견을 피력한 것은 하루 이틀 일이 아니지요.

    C++이 필요이상으로 복잡하다는 것은 사실이지만, 어차피 언어란 선형적으로 비교할 수 있는 것도 아니고 '슬쩍 보기' 논증은 별로 의미가 없어요. 'ACE' 논증은 말할 것도 없구요.

    답글삭제
  2. joseph님, 이 글은 그냥 어디까지나 _제_ 넋두리입니다. 다른 사람들에게 C가 C++보다 우월하다고 강력하게 주장하거나 논리 정연하게 증명하고 싶은 생각은 별로 없습니다.

    뭐 다시 한번 요약을 하지만 제가 C++를 _제대로_ 사용할 정도로 똑똑한 두뇌의 소유자가 아니라는 사실이 문제일 뿐입니다. 제대로 쓸 수 있는 똑똑한 사람들에게는 쓸데없는 제 푸념이 전혀 해당 사항이 없을 겁니다.

    - jrogue

    답글삭제
  3. four word가 아니라 four-letter words겠죠.
    그리고 토발즈가 화 낸 이유랑 포스팅 내용이랑은 별 상관 없는 듯 한데요? 갑자기 '머리가 나빠서' 씨쁠러스쁠러스가 싫다니요? 머리가 나빠도 이해할 수 있는 씨가 더 좋지 않느냐라고 말하고 싶은 모양인데, 토발즈가 씨쁠러스쁠러스에 대해 한마디 해줬다고 그걸 등에 업고 비꼬는 듯한 포스팅이라고 생각합니다.

    답글삭제
  4. 사님, 지적하신 본문 오탈자 수정 완료했습니다. 날카로운 피드백 감사드립니다.

    - jrogue 올림

    답글삭제