요즘은 왜 스몰토크 스타일의 클래스 브라우저를 쓰지 않는걸까요?
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 시스템이 대단하게 느껴지기도 하네요.)