레이블이 리누스 토발즈인 게시물을 표시합니다. 모든 게시물 표시
레이블이 리누스 토발즈인 게시물을 표시합니다. 모든 게시물 표시

목요일, 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