언어에 관한 논쟁은 예나 지금이나 피곤합니다. 그(it) 얘기

관련글: STL을 위한 간단한 변호...(?)


원래는 간단히 변호만 하고 묻혀질 글이었을 텐데, 이게 2MB화가 되어버려서인지 예상치 못한 데서 태클이 걸리는군요. C++에 대해서 조금 엿같다고 쓴 든한 늬앙스 때문인지, '닥치고 STL 만세' 라는 느낌이 나서인지, 어떤지 모르겠습니다만... (덧글에서도 순간 제가 발끈해서 조금 공격적이 되어버린 탓도 있겠군요)

C++은 그 역사와 함께 아직까지도 널리 쓰이고 있을 만큼 훌륭한 언어입니다, 분명. 하지만 잘 들여다 보면 군데군데에 뭔가 패치된 흔적같은 것이 엿보이기도 하죠. 그만큼 C++도 세월이 흐르면서 시대의 요구들이 반영되고 언어 자체가 버전업을 해오면서 꾸준히 발전해온 언어라 할 수 있겠습니다. (물론 C도 마찬가지지만요)

하지만 그래도 C++에도 약점이 없을 순 없습니다. 사실 어느 하나의 언어를 가지고 모든 요구를 다 충족시킬 수 있는 만능언어란 존재하기 어려울 겁니다. 아마도 불가능에 가깝겠죠. 그런 약점을 느껴보고 싶다면 한번쯤 다른 패러다임을 가진 언어를 공부해 볼 것을 권합니다. 함수형 언어도 좋고, Smalltalk같은 좀더 고차원의 객체지향 언어도 좋은 소재입니다. 그리고 C++에서 표현하던 것을 이들 언어에서는 어떤 식으로 처리하는지 봐두는 것도 좋습니다. 가능하면 C++이 아닌 다른 언어로도 개발에 적용해 볼 수 있으면 좋고(Lua 같이 바인딩 해서 쓰일 수 있는 언어도 있으니까요), C++에서 비슷하게 흉내를 내어 보는 것도 좋겠습니다. C++은 매크로와 템플릿 덕분에 어느정도 메타 프로그래밍도 가능해서 라이브러리 차원에서 언어를 확장시키는 것도 왠만큼 가능합니다.

STL에 대해 말하자면 C++을 제법 쓰기 편하게 만들어 주는 라이브러리입니다. STL 보다도 더 좋은 라이브러리가 있을 수도 있겠지만, STL은 어쨌거나 표준이라는 점에서 좋은 면이 있죠. 그리고 STL 자체도 제법 공부할 만한 요소가 있는 라이브러리입니다.

저는 굳이 C++이 엿같다라고 말하려는 건 아닙니다. (설령 엿이라고 해도, 엿도 엿 나름대로 쓰임이 있는 법이죠) 프로그래밍에서 언어라는 건 종합적으로 따져봤을 때 각기 장단점이 있을 수 밖에 없습니다. (그리고 저도 C++ 덕분에 먹고 살고 있으니까요...) 그래서 언어에 대한 논쟁은 정말 쓸대없는 짓이라고 생각합니다. 하지만, 한가지 언어의 패러다임에만 갇혀있는 것 보단 좀 더 넓게 바라보는 것도 중요하다고 생각합니다. 그리고 그런 경험들이 C++을 좀 더 잘 이해하고, 좀 더 편리하게 다룰 수 있게도 해줄 겁니다.

에... 이래저래 정리는 잘 안되었습니만, 사실 제가 하고 싶은 말은 '실용주의 프로그래머'란 책에 거의 다 들어있습니다. 아직 안읽어 보셨다면 일독을 권합니다.

트랙백

이 글과 관련된 글 쓰기 (트랙백 보내기)
TrackbackURL : http://Sizuha.egloos.com/tb/4127997 [도움말]
  • C++ 신봉자에 대한 답변 2009/04/30 12:13 #

    흠..Bjarne Stroustrup 도 얘기 했엇는데요..C++ 언어 자체를 확장하는 것 보다는 C++에 표준 라이브러리를 추가하여 언어를 확장하는 형태로 간다고.. 이 말을 들었던 링크는 못찾앗는데..비슷한 말을 한 링크를 첨부합니다.http://msdn.microsoft.com/ko-kr/magazine/cc163484.aspx"우리가 필요한 거의 모든 개념은 기본 속에서 찾을 수 있습니다. 라이브러리를 사용하는 방식이 정말로 실현 불가능...... more

덧글

  • 櫻くん 2009/04/30 11:11 # 답글

    저도 같은 생각입니다. 저 '실용주의 프로그래머'란 책은 정말 읽을 거리가 많은 책이죠...

    그리고 C/C++/Java 같은 것만 보다가 Standard ML같은 걸 배워보니 재밌기도 하고... 정말 시야가 확 넓어지는 느낌이 들더군요...
  • 무혼마 2009/04/30 12:44 # 답글

    밸리서 찾아왔습니다.
    "우월한 프로그래밍 언어는 없다. 다만 프로젝트에 적합한 언어는 있을 뿐이다"는 말이 떠오르네요.
    C++이 가진 한계를 모르겠다고 하면 C++로 RIA 어플리케이션을 한번 만들어보라고 하지요 (…)
  • object 2009/04/30 13:37 # 답글

    C++이 한계가 있어 C++로 RIA를 못 만드는 것 보다는 C++이 주로 노는 '플랫폼'의 문제로 봐야합니다. 아직 실험적인 단계이기는 하지만 구글의 NaCl 그리고 마이크로소프트 리서치의 Xax 같은 새로운 기술로 C/C++로도 RIA 프로그램을 만들 수도 있죠.
덧글 입력 영역