コードはリファレンスである世界

GNU Smalltalk GTK ですが、Smalltalk 側からだけ触るのでは理解が深まらないような気がするので(というか全部 c_call に飛ばされちゃって、クラスブラウザで眺めてもよくわからない)、生の GTK+ でプログラミング にちょっとだけ手を出しています。

というわけで、GTK/GNOMEによる GUIプログラミングで公開されている「入門GTK+」のPDF参考にプログラミング。公開されている章を読んだだけだけれど、チュートリアル大好きっ子のわたし的にはこちら入門書としてとてもよく出来ていると思います*1

その「入門GTK+」の最初のチュートリアル(第2章 GTK+ で画像ビューワを作ってみよう)におりまぜて 「devhelp による関数検索」という項があって、APIが解らんと気はこういう風にリファレンスを参照するんですよ〜、みたいな手取り足取りをしてくれるのですが(入門書としてとてもGJ な気配りです)、それを見て 改めて Smalltalk 環境の良さというか変態さを実感しました。

というのもSmalltalk の場合、こういう時はクラスブラウザでコードを見るものでなんです。

「リファレンスはコード」という感覚になじんでしまって「devhelpをみよう!」という説明をとっても新鮮に感じてしまった一方で、いあいあ、どう考えても普通はリファレンス見ろ!の方でしょう....orz、と、すっかり汚染されてる自分を自覚したり。


Smalltalker は、本当に(このシチュエーションでの)devhelp のような感覚でクラスブラウザを使います。説明文は Smalltalkコードや コメントで書かれています。

最適化により実際にはそのメソッドが走らないケースでも、同等の Smalltalk コードが書かれています。なんと サンプルコードですら クラスメソッドとして実装されているんですよ!――クラスに example1 みたいなクラスメソッドがあって、その中にサンプルコードが書いてあります。それどころかそのコードを選択して doit(式を評価)するとサンプルを動かせてしまう・・みたいな作り。すごいでしょ!

だから Smalltalk の場合 ソースコードはプログラムとしてだけではなく、普通の利用者がリファレンスとして見るために書かれるもの・・という文化があって、その為のツール、Smalltalk コードを眺めるための「ブラウザ(クラスブラウザ)」が標準装備。これがすごく探しやすいのです。


* * *


Smalltalk は 子供が理解できるわかりやすさと、その子供が大人になっても使い筒蹴られる本格さを併せ持つことを目標としています。Smalltalk 環境にとってコンピューティングのユーザは皆プログラマで、だから普通のユーザが システムを理解するためにコードを読むのが普通の世界です。

「コード兼リファレンス」と「リファレンス専用文章が別立て」のどちらが良いかはいろいろですが、メリットとしては、プログラミングへの壁のなさが素敵です。デメリットとしては、リファレンスの多言語化が難しい(コードと独立してないから)と言うところでしょうか。

英語を頑張って読む以外の選択肢がない(誰かが翻訳してくれるのを待つがNG)のは、敷居が高いよね。

*1:わたしはGTK+ の素人なので、「良くできている」という評価は「わかりやすい」なのですが..(2009-04-26)。ちゃんとした書評はこちらとかこちらとかが参考になります