まつもと ゆきひろです
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なんて誰も知らないか….
まつもと ゆきひろ /:|)