作者: 機械伯爵
日時: 2002/4/2(10:54)
 思惑通りに進んでうれしい機械です☆

> HSP になれると、『次のきちんとした言語』に移る際が問題になると思わ
> れます (^^;

 深焙り・・・じゃなかった深入りしなければOKだと思います。

 特に、HSPで関数(もどき)とか書きたくなったら(初心者としては)一旦
卒業をお勧めします。

 そして、他の言語を習得したら、いつでもまた戻ってくればいいんじゃない
かな?

※いつまでもHSPに浸ってるのは「現在の時流」としてはあまり誉められた傾向
 ではないと、私も思います。

> # HSP -> VisualBasic としても可。もちろん、そうならない習得法もある
> # とは思いますけど。

 Visual Basicは、VBSやVBAでないものに関してはちと保留したいです。

 私の知ってる時点では、結構進化途中だったので、現在どうなってるか分かって
から考えたいと思います。
 
> >  ただ困ったことに、Rubyをただの手続き型言語として教えてくれる人もいないし本も
> > 無いので、Ruby作者のまつもとさんの神経を逆なでにしても「入門、手続き型
> > スクリプト言語Ruby」という本を、誰か書いてくれることを望みます(笑)
> 
> 実は既に、そういう内容で某所で進行中だったりします。
> # 私はあまり好意的に考えてませんけど。
> # 『オブジェクト指向』ってそんなに難しいかなぁ。
> # 逆に、「じゃあ、これお願いね」って楽するためのパラダイムだと思う
> # んだけど。

 オブジェクト指向(←日本語式、独立表現?)は確かに難しくないと思います。

 ただし「Rubyでオブジェクト指向を学ぶ」のは、どう贔屓目に見ても「無謀」
です。

 私が間違っていたら指摘して欲しいのですが、オブジェクト指向言語に於ける
文法というのは、「レシーバにメッセージ(と、あれば引数)を送る」という形式
が大前提ですよね。

 ところがRubyでは、しょっぱなから「常用する」ものが、プライベートメソッド
という畸形児になっているのはなぜでしょう?

 たとえば出力メソッドのprint。

 JavaでもSmalltalkでも、「出力する先」をレシーバとして設定してますよね。

 それが「Self」だということ自体、私の理解の範疇を超えていますが、さらに
いきなり「レシーバを省略しなければならない」となると、わけわかんないです。

 関数の簡便性を取り入れていて、そのへんは純粋なオブジェクト指向とは言えない、
と、素直に認めればいいのに(Javaでもそう言ってます)、なまじ「完全なオブジェクト
指向だ」なんていうから、無茶な言い訳がましく聞こえるんです。

※内部でどういう処理をしているかは、ここでは関係ありません。そもそも、
 オブジェクト指向というのは、実際の処理のためではなく、記述のための
 パラダイムだと、私は考えています。

 はっきり言えば、Rubyは「完全な」オブジェクト指向言語では「ありえません」

 無論これは、Rubyという素晴らしい言語の存在を否定するものではなく、むしろ
オブジェクトの考え方を気楽に便利に使おう、という面のみを主張すれば問題ないと
思います。

 その意味では「ばりばりな実用言語」ですし、非常に強力ですので、それ以上の
看板は不要だと私は思います。

 Rubyの使い方としては、ある程度プログラムの考え方や構成の仕方などを理解した
上で、というのが理想的なのではないでしょうか?

 私は、万能主義的な考えは信用しません。

 たとえば、ある程度考えの固まった人が、自分自身が使うコードとしてRubyと
Pythonを使うなら、多分Rubyの方がクール(スマート)で軽快にコーディングで
きるでしょう。

 言語には長所短所があります。

 初心者の方には、是非「自分の考えをプログラムにして実現する」ための方法を、
しっかり身に付けてほしいと思っています。

 その点では、ルールの全貌がわかりづらいRubyは(特殊なアプローチが無いかぎり)
向かない、と主張したいと思います。

   機械伯爵