まつもと ゆきひろです

In message "[ruby-list:3205] Re: about GNUStep (Whitch library Do I have to link?)"
    on 97/06/30, SHIROYAMA Takayuki <psi / fortune.nest.or.jp> writes:
|ども、白山 / fortune.nest.or.jpです。

|私は Smalltalkを知らないので、何とも言えないのですが、Mac
|WorldExpo Tokyoで NeXTの開発環境のデモンストレーションを
|行ない、お客様の一人に Objective-Cのソースを見せた所、
|「わ、Javaそっくり」と感嘆されてましたので、 Javaに似てる
|のかも知れません(^^;)

似てない,似てない.

|慣れると、とても便利で扱いやすい言語だと思います。

Objective-Cは昔々Coxの本で入門したのですが,NeXTもGNU Obj-C
もない時代でしたので,実際の処理形には触れませんでした.でも,
なかなか感動したので,CでObjective-C(とXView)に似たオブジェ
クト指向システム(兼Xツールキット)を自作しました.

メッセージセンドは

        cx_send(recv, MESSAGE, args)

のような感じでしたが,作った本人がいうのもなんですが,なかな
か使いやすかったです.ただクラス定義がちょっと面倒だったので
(マクロの嵐と呼ばれた),社内でもあまり広まりませんでしたが.
いや,オブジェクト指向が十分広まっていなかったせいに違いない ^^;;;

実はこのライブラリのソースの一部はrubyのeval.cの中に生きてい
ます(メソッドキャッシュの部分).

# そーいえばObjective-CもXViewも廃れてきてるなあ.

|また、混在した漢字という特徴を利用して、 NeXTには
| Objective-C++というものもあります(^^;) C++で class
|してもいいし、ObjC で@interface hoge: Object しても
|いいというわけです。

これを聞いた時には「あんまりだよなあ」と思いました.

|前々から 少し気になってたのですが、 rubyでは superは何故
|メソッドなのでしょうか?
|
|Objective-Cでは superは特殊なインスタンス変数なんです。

この辺はSmalltalk流ですね.

|っといった感じで、メソッドfooから、親クラスに存在する
|メソッドhogeでもhoehoeでも、どのメソッドも直接呼べる
|というわけです。  私の気がついてない、superをメソッド
|にする利点というのがあるのでしょうか?

文化の違いでしょう.rubyのsuperはCLOSのcall-next-methodやCOB
のsuperの流れを受けています.実際にSmalltalk流superがあって
も呼ぶのはスーパークラスの自メソッド以外のものを呼ぶとわけが
分からなくなることが多いので,こっちの方がよいと信じています.

# COBなんて誰も知らないか….
                                まつもと ゆきひろ /:|)