프로그래밍 언어는 평등하지 않다

Posted by 大山 Fri, 14 Jul 2006 15:29:00 GMT

가끔 모든 프로그래밍 언어는 다 똑같다고 줄기차게 주장하는 사람들이 있다. 이 사람들의 공통점은? 바로 사용할 줄 아는 프로그래밍 언어가 하나 밖에는 없다는 사실이다.

분명히 말하지만 프로그래밍 언어는 절대로 평등하지 않다. 그럼 왜 위와 같은 주장이 나오게 되었을까? '모든 컴퓨터 알고리듬은 어떠한 프로그래밍 언어로도 구현이 가능하다'는 이론을 잘못 이해해서 그렇다. 이 이론은 '모든 아이는 피카소가 될 잠재력이 있다' 정도의 수준에서 이해하는게 옳다. 같은 알고리듬을 구현하는데 1시간이 걸리는 언어와 1달이 걸리는 언어가 있다면 당신은 어떤 언어를 선택하겠는가?

실제로는 수백개의 프로그래밍 언어들이 매우 넓은 스펙트럼에 분포되어 있다. 이 스펙트럼의 한쪽 끝을 차지하고 있는 언어는 바로 어셈블리어다. 어셈블리어는 컴퓨터의 작동 원리를 배우게 된다는 측면에서 공부해볼만한 언어이긴 하다. 하지만 어셈블리어로 웹사이트를 구축하려는 사람은 아마 정신병원에도 없을듯.

스펙트럼의 보다 흥미로운 쪽은 Lisp이 위치하고 있는 반대쪽이다. 여기서 이 스펙트럼의 분포 기준은 무엇일까? Paul Graham은 이를 응축성(succinctness)이라고 설명한다. 복잡한 개념을 얼마나 작은 유닛에 응축시켜 담을 수 있는지가 기준이라는 것이다. 바로 이 응축성 때문에 Lisp으로 한시간이면 작성할 수 있는 프로그램을 어셈블리어로 짜면 1달이 넘게 걸리게 되는 것이다.

프로그래밍 언어는 평등하지 않지만 한 언어가 언제나 다른 언어보다 우월하다는 것은 아니다. 언어의 선택은 필요에 달라지는게 맞다. 보통은 실행속도가 중요할수록 어셈블리어 근처의 언어를 사용하게 되고 개발 생산성이 중요할수록 Lisp 근처의 언어를 사용하게 된다. 하지만 이미 컴퓨터의 성능이 무어의 법칙을 따라 기하급수적으로 발전해 버렸기 때문에 성능 중심의 언어가 점점 메리트를 잃어가고 있는게 사실이다.

주류 언어만 놓고 보면 프로그래밍 언어는 "어셈블리어 => C => C++ => 자바 => ?", 이렇게 발전해 오고 있다. 당연히 ?에는 Lisp과 유사한 언어가 들어갈 것이다. 많은 사람들이 ?가 루비일 것이라고 생각한다. 나도 물론 같은 생각이다.

Posted in  | Tags , , , ,  | 2 comments | 1 trackback

Comments

  1. 1.
    소내기 said about 2 hours later:

    물론 언어는 다 똑같다는 말은, 너무 한가지언어만 고집하게되니까, 좀더 유연하게 대처하기를 바래서 생긴말이겠죠. 어셈블하고 립스하고 자바하고 어찌같겠습니까. 그래서 생긴문제가 모든 언어를 한가지 스타일로 짜게된다는것, 자바도 C같고 php도 C같고, C도 C같고 기타등등. 그렇게 되면 뭐 프로젝트 단가맞추기 편하게 되는건가요????


  2. 2.
    大山 said about 21 hours later:

    그런 말이 있죠. 새 언어를 배우는 것은 새로운 사고의 패러다임을 익히는 거라고. 처음엔 몰라도 계속 쓰다보면 점차 나아지지 않을까요?


Trackbacks

Use the following link to trackback from your own site:
http://beyond.daesan.com/articles/trackback/113

  1. From
    용도에 따라 다르다? 그럴까?
    흔히 사람들은 논쟁을 회피 하기 위해서 용도에 따라 사용해야 할 도구가 다르다고 이야기한다. 특히 에디터, 프로그래밍 언어 등의 프레임 워를 종식시키는 마법으로 통한다. 누구든 용

Comments are disabled