멀티랭귀지 프로그래머의 귀환
자바냐 닷넷이냐 하는 논쟁을 떠나, JVM이 되었건 CLR이 되었건 이제 가상머신이 플랫폼으로서의 역할을 하는 것이 일반화된 시대가 되어버렸습니다. 물론 그렇지 않은 경우도 있긴 하겠지만 많은 경우 우리는 가상머신(VM) 자체를 소위 "기정사실"로 전제하고서는 그 위에서 프로그래밍 초식을 구사하곤 합니다. 그런데 이 가상머신 기반에서라면 모든 프로그래밍 언어가 평등하며 또한 동시에 제각각 자신만의 고유한 개인기를 자랑하기도 합니다. 즉, 어떤 언어이든 결국은 바이트코드로 변환되어 실행된다는 의미에서는 평등하다고 하겠지만, 어떤 언어로는 열두줄의 코드면 될 것을 다른 언어로는 120줄의 코드가 필요한 경우도 있고, 또 어떤 언어에서는 간단하게 동시성(concurrency)을 처리할 수 있는 것을 다른 어떤 언어에서는 에둘러 돌아가야 하는 경우가 연출되기도 한다는 의미에서는 제각각 특이하다고 할 수 있습니다.

예를 들어, 평이한 자바코드라면 요즘 유행하는 Groovy나 JRuby 같은 스크립트 언어를 사용할 경우 같은 내용을 구현하더라도 코딩 양을 상당부분 줄일 수 있습니다. 프로그램 설계상 함수형 언어가 더 어울리는 곳이라면 굳이 C#이나 자바를 쓰지 않고 그 부분만 Haskell이나 Scala 같은 함수형 언어를 사용해서 구현하는 것도 좋은 방법일 수 있습니다. 물론 프로그램의 덩치가 큰 경우에는 당연히 전체 프로그램 모두를 이런 언어들만으로 구현하는 것은 어렵겠지만, 적재적소에서 가장 적합한 특징을 보유한 프로그래밍 언어를 사용하는 것은 소프트웨어 개발의 생산성을 높이는 좋은 방법일 수 있습니다. 최근에 출간된 <The ThoughtWorks Anthology>라는 책에서는 이런 프로그래밍을 '다종언어 프로그래밍(Polyglot Programming)'이라고 부르는군요.

다종언어 프로그래밍이라고 그러니까 갑자기 떠오르는 과거가 있습니다. 제법 예전부터 프로그래밍을 해 왔던 분들은 아시겠지만, 한때는 C언어가 속도가 더딘 축에 속하는 경우가 있었습니다. 그래서 수행성능이 중요하다거나 레지스트리터를 직접 컨트롤해야 하는 부분에서는 어셈블리어를 섞어 쓰곤 했었죠. 물론 지금과 같은 의미에서의 다종언어 개념은 아니지만 적재적소에 필요한 언어를 섞어서 쓴다는 개념 자체는 동일했었던 것 같습니다. 아련한 향수를 들춰보는 의미에서 책장 한 구석에 꽂아 두었던 먼지묻은 책을 한 권 꺼내봅니다. Ray Duncan이란 사람이 쓴 <Advanced MSDOS>라는 책인데 이 책에는, 당시로 치면 "가상 머신(?)" 위에서 C언어와 어셈블리어를 섞어쓰는 방법이 잘 나와있었던 걸로 기억이 됩니다. 결국 세월이 흐르고 프로그래밍 언어는 변해도 기본적인 개념과 아이디어는 돌고 도나 봅니다.
by thinkr | 2008/05/07 01:51 | 트랙백(2) | 덧글(3)
Tracked from lethee's me2.. at 2008/05/09 15:16

제목 : 화니의 느낌
돌고 도는 세상. 다르긴 하지만 그들이 돌아온다....more

Tracked from Minthe Blog at 2008/06/06 14:07

제목 : 멀티랭귀지 프로그래밍
C에 인라인 어셈블리 코드를 추가해서 느린(?) 속도를 보장 받았던 이전의 프로그래밍 방식과VM하에서 움직이는 JAVA,C#....개발속도를 위해그 언어들 밑에서 움직이는 스크립트 언어들(JRuby...)의모습이 정말 유사하다....more

Commented at 2008/05/07 11:45
비공개 덧글입니다.
Commented by kebie at 2008/05/16 15:29
영화 매트릭스 처럼 매트릭스 위에 또 다른 매트릭스가 존재하는 설정이 비슷한 것 같네요. ^^;
Commented by Tirin at 2008/06/17 19:06
본문 가장 아래 문단에 오타 있는것 같네요. 레지스트리가 아니라 레지스터 아닐까 >_<
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.
< 이전페이지 다음페이지 >