AndreaSmalltalkLecture:QnA 08

From 흡혈양파의 인터넷工房
Jump to: navigation, search
질문과 답변-8
:Smaltlalk와 실행파일 배포

Smaltlalk와 실행파일 배포

좀 늦은 감은 있지만 Smalltalk로 만들어진 프로그램의 배포에 대해서 이야기를 좀할까 합니다.


Smalltalk는 Java와 비슷한 방식으로 프로그램을 실행합니다. 일터에서 입력한 글토막이나 갈래(class)의 길수(method)를 지을 때 써 주는 바탕글은 우선 번역기, 그러니까 Compiler에 의해서 바이트 명령으로 번역됩니다. 이렇게 번역된 명령을 Smalltalk 가상 기계(Virtual Machine)가 통역(interpreting)하여 결과를 실행한답니다. Java가 개발되기 전 10년이 훨씬 넘은 싯점에서 벌써 가상기계와 바이트 명령 통역기가 사용되었다는 것을 보면, Smalltalk를 만든 Xerox의 ParcPlace가 선견지명이 있다고 하겠습니다.


대부분의 Smalltalk는 이렇게 돌아갑니다. 그렇기 때문에 실행파일을 만들려면 별도의 도구가 필요합니다. 실행파일에는 바이트 명령 통역기와 사용자가 만든 Smalltalk 프로그램이 함께 들어 있습니다. 물론 Smalltalk의 모든 것은 객체이고 이 객체는 나름의 갈래에 딸려있으므로, 프로그램 또한 갈래와 객체들을 모아놓은 것일 것입니다. Smalltalk는 이들을 하나의 꾸러미(package)에 넣어두고, 필요하면 이 꾸러미 자체와 꾸러미에서 사용하는 갈래나 객체들을 실행파일에 한데 묶어놓는 방법을 취합니다.


실은 Smalltalk에서 독립실행파일을 만들 수 있게 된 것은 그리 오래되지 않았습니다. 그도그럴것이 Smalltalk 환경 자체가 다른 언어의 환경에 비해 매우 작은 크기였기 문에, Smalltalk환경 자체를 배포해도 되었었습니다. 그러나 윈도 운영체계로 넘어오면서 실행파일의 크기가 무시할 수 없을 정도가 되자 Smalltalk 환경에서 필요한 갈래와 객체들만 뽑아내어서 실행파일을 만들 수 있게 한 것이지요.


아쉽지만 Dolphin Smalltalk에서 독립형 실행파일을 만들려면 "ADK" 즉, Application Deployment Kit이란 꾸러미를 구입해야 합니다. 물론 이 꾸러미의 가격이 약 70$ 정도밖에 안 되기 때문에 다른 환경에 비해서 비교적 저렴하게 상용제품을 만들 수 있습니다.


물론 독립실행파일을 만들 수 없다고 해서 현재 공개된 Dolphin Smalltalk 의 질 자체가 떨어지는 것은 아닙니다. ADK는 단지 몇 십개가 안 되는 갈래들(주로 실행파일을 만들고 정보를 관리하고 개발 환경과 실행환경을 교체해 주는 부분)로 이루어져있기 때문이지요.


Dolphin이 아닌 다른 Smalltalk의 경우 역시 독립실행파일을 만들 수 있도록 해 놓았습니다. 그래도 널리 쓰이는 VisualWorks for Smalltalk나, Visual Ages for Smalltalk 역시 독립실행파일을 지원합니다.


Smalltalk-MT 라는 시스템은 바이트 명령을 거치지 않고 바로 기계어로 번역을 합니다. 그렇기 때문에 다른 Smalltalk들 보다는 생성된 프로그램의 실행속도가 빠릅니다. 그러나 Smalltalk-MT는 ANSI에서 정한 표준 Smalltalk의 규정에 맞지않는 것들이 많다는 단점이 있습니다. 역시 30 일간 사용할 수 있는 평가판에서는 실행파일을 만들 수 없으나, 상용판에서는 실행파일을 만들 수 있습니다. 또한 Smalltalk-MT는 다중 스레드(multi thread)로 돌아가기 때문에 DLL을 만들 수 있으며, ActiveX 컨트롤의 생성도 가능하다고 들었습니다.


Smalltalk는 내가 필요하면 얼마든지 객체의 행동을 바꾸어줄 수 있는 유연한 환경이기 때문에, ADK 없이 실행파일을 만드는 방법을 생각해보고 있습니다. 글쎄요. 그러려면 Smalltalk의 안쪽을 훤히 꿰뚫어야할터인데....


C/C++를 공부할 때에는 문법 공부가 전체의 40% 가량을 차지한다고 해도 과언이 아니지만, Smalltalk의 경우 문법 공부는 전체의 10%도 안 됩니다. 나머지 90%를 갈래다발(class library)와 객체들의 관계(framework)를 공부하는데 씁니다. 음, 앞으로 열심히 하겠습니다. 지켜봐주십시오.


Notes