Strict Standards: Non-static method Soojung::addReferer() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/settings.php on line 79

Warning: Cannot modify header information - headers already sent by (output started at /home/lifthrasiir/sites/sapzil.info/soojung/settings.php:79) in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Counter.class.php on line 63

Strict Standards: Non-static method Entry::getEntry() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/entry.php on line 51

Strict Standards: Non-static method Soojung::entryIdToFilename() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Entry.class.php on line 182

Strict Standards: Non-static method Soojung::queryFilenameMatch() should not be called statically in /home/lifthrasiir/sites/sapzil.info/soojung/classes/Soojung.class.php on line 55
TokigunStudio3 | 블로그: C/C++가 더 좋아요?

내용으로 바로 넘어 가기


TokigunStudio3

228 / 3282   


더 이상 이 블로그는 운영되지 않습니다. 새 블로그로 가 주세요.

C/C++가 더 좋아요?

2004/08/24 PM 05:33 | [옛글] 컴퓨터 삽질 기록 | 0 comments | 0 trackbacks | AllBlog: vote, to pocket

일러두기: 이 글은 옛날에 사용하던 엔비 블로그에서 가져 온 것으로, 원문은 여기에서 볼 수 있습니다.

* C 개발자의 프라이드...에 트랙백을 보낸 글입니다.

C/C++가 더 좋다, 자바가 더 좋다 따위의 논쟁은, 마치 C/C++에서 indentation 논쟁 수준만큼이나 골치아프고 쓸 데 없는 논쟁이다. (사실 indentation은 자기 편한 대로 쓰고, 공동 프로젝트라면 적당한 표준을 하나 정해서 그걸 따르면 그만이지 뭐) 이런 류의 논쟁은 마치 어느 나라 문화가 더 좋냐는 식으로 상대적인 것을 무시한 논쟁이라고 할 수 있다. (물론 적당한 범위를 벗어난 거라면 나쁘다라는 말을 할 수 있을 지도 모르겠다. 하지만 프로그래밍 언어의 경우 이런 적당한 범위를 벗어 나는 게 esoteric programming language 정도 뿐이지 않는가?)

게다가 제닉스 님 블로그에 올라온 글을 보니까 그래도 좀 말이 되는 근거를 대고 논쟁을 하는 게 아니라, 정말 어처구니 없는 근거를 대 가면서 다른 언어를 비방하고 있다. 여기부터 인용 시작:


주 논쟁거리가.. 자바가 단가가 더 비싸다느니.. 뭐 자바는 업그래이드가 있는데
C 는 업그래이드가 없다느니(헐..;;) 또 뭐 코드파일 저장시 클래스 이름과는
다른 이름으로도 저장할수 있으니 더 좋다느니.. 순 생 헛소리들만 하고 있더군요.

여기까지 인용 끝. 말도 안 되는 근거 아닌가. -_-; 언어의 업그레이드 여부는 뭐 말할 것도 없고 (C도 물론 C89, C99 식으로 표준이 계속 변화하고 있는 건 사실이다. 그리고 이런 스타일로 표준이 몇 년 단위로 바뀌는 FORTRAN은 아직도 특정 분야에선 잘만 써 먹고 있지 않는가-_-) 그 외의 얘기도 할 말이 없는 근거이다. 뭔 저런 인간들이 다 있는 지 -_- 게다가 그 뒤에 이어지는 글을 보면 더 한심하다. COM에 대한 간단한 설명을 단 어떤 사람의 글에 십여개의 칭찬 덧글이 붙었다는 제닉스 님의 글을 보면, (저쪽 글과 마찬가지로) "VC++ 초보 개발자 일수록 프라이드가 강하다."라는 결론을 내릴 수 있다.

뭐 나야 C/C++는 얼치기로 대충 대충 알고 (MFC는 모르므로 쌩까자.) 그 외 VB, Delphi, PHP, Python 등등 다른 언어들도 아주 대충 대충 하는 편인데, 지금까지 접한 언어들에서 느낀 점이 있다면 "절대적으로 좋은 언어는 없다"라는 것이다. 뭐 VB가 생산성이 좋다거나, VC++가 빠르다거나 하는 것은 어떤 언어가 좋다는 것을 입증하는 근거가 아닌, 그 언어의 특성일 뿐이다. 요즘은 세상이 좋아져서 필요할 경우 다른 언어를 섞어 쓸 방법도 여러 가지 있지 않는가. 자기가 원하는 것에 초점을 맞춰서 언어를 선택한 후, 속도 문제나 그런 게 걸리면 그런 쪽에 강한 언어를 섞어 쓰면 되는 것이다.

파이썬의 철학이 그렇다. 파이썬은 C/C++보다야 물론 느리지만, 생산성과 편의 등등 여러 부분에서 C/C++보다 뛰어 나다. 그러므로 파이썬을 주 언어로 사용하고 C/C++로 만든 모듈을 부착해서 쓰면 생산성과 속도라는 두 마리 토끼를 동시에 잡을 수 있는 것이다. (파이썬의 프로파일러 기능을 활용하면 어느 부분에서 속도가 저하되는 지 쉽게 알 수 있고, 그 부분만 C/C++로 고치면 되는 거지 뭐.)

또 하나. 사실 많이 언급되는, VB, VC++, Delphi, Java, Perl, PHP, Python 등의 언어들의 속도 차이는 극복할 수 없을 정도로 큰 게 아니다. 이 언어들로 만든 프로그램의 속도는 사실 언어보다 프로그램 로직에 더 큰 영향을 받는다. 간단한 예로 다음과 같은 코드를 생각해 보라. (물론 이렇게 짤 사람은 없다만)

C++: int sumNtoM(int n, int m) { int sum = 0; for(int i=n; i<=m; i++) sum += i; return sum; }
Python: def sumNtoM(n, m): return ((m+1)*m - n*(n-1)) / 2

sumNtoM(1, 100000)을 넣었을 때 어느 게 더 빠를 지는 말할 필요도 없을 것이다. 프로그램 로직, 다시 말해서 사용되는 알고리즘에 따라서, (정확히는 그 알고리즘의 time complexity에 따라서) 속도는 죽어라 저하될 수도 있고 죽어라 향상될 수도 있다. 정말로 C/C++가 꼭 필요한 때는, 게임처럼 time-critical한 것들(조금만 시간이 더 걸려도 졸라 골때리는)이다. 이런 게 아니라면 꼭 C/C++를 쓸 이유도 없다.

뭐 당연한 말 아닌가. 프로그램에서 중요한 건 알고리즘이지 코딩이 아니라는 것. 코딩이라면 레퍼런스 뒤적이면 어떻게든 할 수 있다. (물론 필요할 때 잘 쓰려면 얼마정도는 익혀야 겠지만... 나 같은 경우 php를 익힐 때 레퍼런스를 완독해서 익혔는데, 그 이후로 내가 쓰려는 함수가 대충 뭐다라는 게 나온다. -_-; 하지만 꼭 완독할 필요는 없다. Python이라면 Python tutorial만 읽어 두어도 나중에 쓰는 데 큰 문제 없겠지.) 레퍼런스가 없다고? 그런 언어가 어디 있다고. -_-;


대충 허접한 생각 정리해 봤다. C/C++든 자바든, 자기가 하고자 하는 일에 알맞는 언어를 선택해서 좋은 로직으로 프로그램을 짠다면 무에 못 할 게 있겠는가. 쓸 데 없는 플레임성 논쟁은 그만 두자.

덧. C로 웹 프로그래밍 하는 데 CGI만 쓸 수 있는 건 아니다. 그 유명한 Donald Knuth(랑 또 누구였나...)의 CWEB도 있다. (개뻥)

TrackBack URL: http://sapzil.info/soojung/trackback.php?blogid=430

Copyright (c) 1995-2005, Kang Seonghoon (Tokigun).