Smalltalk 의 class browser 는 왜 일반적으로 쓰이지 못하는 것일까?

요즘은 왜 스몰토크 스타일의 클래스 브라우저를 쓰지 않는걸까요?

 

kldp 에 올라온글 (link 필요)을 보다보니 갑자기 본인도 제목과 같은 생각이 들기 시작했습니다. 사실 이런 방식이 직접 써보면 꽤나 편하고.. 이전에 OPENSTEP(NeXTSTEP)-Mac OS X 에서는 이미 파일 브라우저에서 같은 depth 스타일을 사용하고 있기도 했었고….. 프로그래밍에서 쓰면 꽤 편할건데 쓰이지 않는 이유가 무엇일까? 혹시 라이센스의 문제가 있는것일까?..

이런저런 생각을 해본끝에…. 저는 클래스 브라우저의 스타일은 Smalltalk 환경이 아니면 쓰기 힘들다는 결론을 내렸습니다. 본인이 내린 결론의 추론과정은 다음과 같다.

1. 현재 모든 Smalltalk 클래스 브라우저의 가장 아래단계는 class 의 카테고리이다.
2. 다른 언어(또는 환경)에서는 클래스를 카테고리로 구분하지 않는다(애초부터)
3. 언어 내에 존재하는 모든 클래스의 정보를 가지고 있는 무엇인가가 다른언어에는 존재하는가?
4. Smalltalk 는 시스템내의 모든 클래스에 대한 정보를 관리하는 별도의 Dictionary(Collection)가 있다.
5. Smalltalk 는 Virtual Machine 내에서 이런정보를 실시간(클래스의 정보가 수정되어 저장되는 시점)으로 인터프리팅되며 늘 최신의 정보로 갱신된다.
6. Smalltalk 의 클래스 브라우저는 이런 정보를 읽어서 사용자에게 제공하며 코드에 대한 수정을 돕는 도구이다.
7. 다른 언어에서는 이런 정보를 현재 소스코드를 모두 분석해가며 화면해 표시해주어야 하는데 그것이 과연 어떤 효율을 가지고 동작할지는 생각해봐야할 일이다. 대부분의 언어는 스스로가 import(include)하고있는 관계만을 따질뿐 해당언어에서 제공하는 모든것을 표시할 수 있는 구조 자체가 되지 않는다.

대략 이정도의 과정으로 다른 언어에서는 사용 자체가 부적합하다는 결론에 도달하기는 했습니다. Smalltalk 는 OS 에서 제공하는 모든 resource 를 프로그램 내에서 사용하는것을 권장하는 구조이며 Smalltalk VM 자체가 OS처럼 동작하는 개념을 가지고 있기에 클래스 브라우저 방식을 사용했을때 꽤 사용할만한 물건이 되었지만.. 다른 언어 환경에서는 제공되는 기반의 개념이 틀리기 때문에 브라우저를 적용하는것 자체가 무리라고 생각되는군요.

다만 이미 OPENSTEP 등에서 사용되었듯이 굳이 프로그래밍 환경이 아니라 파일 브라우저 등으로 사용될 수 있는 여지는 충분하다고 생각합니다. 어떤 idea 를 가지고 적용해야할지는… 아무래도 개발자의 몫이 아닌가 하네요. 다만 개인적으로는 지금의 함수/class/method 자동완성도 충분히 쓸모는 있다고 생각하고 있습니다.(그러고보니 새삼 delphi 의 help 시스템이 대단하게 느껴지기도 하네요.)

오늘부로 대략 7개의 xetex-smalltalk 문서가 완성되었습니다.

오늘 새벽부로 대략 다음과 같은 문서들이 나왔습니다. (물론 초벌한글판이죠)

  • ComputerProgrammingwithGNUSmalltalk_1.0b3_xetex.pdf
  • DesignPatternSmalltalkCompanion_1.1b_xetex.pdf
  • SquaekByExample_1.0b2_xetex.pdf
  • firstVersion_xetex_DeepIntoPharo.pdf
  • firstVersion_xetex_SmalltalkBestPracticePatterns.pdf
  • firstVersion_xetex_SmalltalkObjectsAndDesign.pdf
  • firstVersion_xetex_TheArtandScienceofSmalltalk.pdf

 

아직 해야할건 몇가지 더 있지만 일단은 여기까지. 지금 해놓은것만으로도 당분간 놀기에는 충분할듯 합니다.

(특히 wiki2latex 의 변환과정에서 발생한 특수 character 들이 소스코드 영역 내에 들어가있는건 다 잡아야하겠죠)

 

xetex(LaTeX) 작업에 사용된 tip(?)들은 아래의 주소를 참고해주세요

LaTeX 작업용 메모

 

보너스로… 공개되어도 문제없는 License 인 Deep Into Pharo (ESUG2013)의 xetex-pdf 문서를 공개합니다.

firstVersion_xetex_DeepIntoPharo

 

아.. 길고 빡셨습니다.. 남은길은 아마도 혼자 가는 길이 될거같기는 하지만요 😀

Smalltalk 에서 database 연결을 하고 싶을때?

DBXTalk 이라는 프로젝트가 있습니다.

이걸 활용하는 방법은 아래의 URL을 참고하시면 되겠고…

http://dbxtalk.smallworks.com.ar/DBXTalkDrivers/

 

사실 이 프로젝트는… OpenDBX 라는 프로젝트를 backend 로 사용해서 FFI 를 이용하는 프로젝트입니다.

http://www.linuxnetworks.de/doc/index.php/OpenDBX

 

OpenDBX 는 현재 IBM db2 를 제외한 대부분의 대형 DB 를 지원하는 유용한 프로젝트입니다.

(사실 저는 db2가 지원되기를 바라고 있습니다만…)

 

나중에 시간이 된다면….. pharo 상에서 구현되는 Grid 를 찾아보고 데이터를 loading 하는걸 테스트해보고 싶기는 하네요 😀