作者: 機械伯爵
日時: 2002/4/2(19:55)
>  ひだかです。TSruby にふってみます。

 ううう、ライバルブースの発言数、増やしたくないよぉ〜(泣)
 
> >  意識しなかったら、何のためのオブジェクト指向ですか?
> > 
> >  そもそもアラン・ケイたちは、「オブジェクトに対してメッセージを送る」というわ
> > かりやすい「考え方」をもとにして「人間に近い指向で」プログラムできるように
> > Smalltalkを開発したのだと思っていましたが。
> 
>  どうでもいいですが、オブジェクト指向はふつうSimulaから始まった
> とかいいません?歴史はよくしらないんですが。。

 Simulaのクラスをとりいれて、SmalltalkとC++の2大オブジェクト指向言語が
できた、といわれますね。

 Simulaのコードを、古い「情報科学辞典(だったかな?)」で見て「理解でけん」
と投げた覚えがあります(爆)

 ただし、Simulaのコードはどっちかというと手続き思考言語的な感じでしたから
(断言はできませんが)C++の祖先の片割れというならともかく、Smalltalkとは
あまり似て見えませんでした。

 SimuraがSmalltalkに大きな影響を与えたのは事実でしょうが、それは継承などの
機能的なものであって、「オブジェクト指向」という思想は、Smalltalkからはっき
りしてきたのではないか、と私は理解してます。

 ・・・間違ってたら、誰か指摘して(汗)
 
> >  つまりひだかさんの論だと、「オブジェクトは難しい」「手続き式のほうが簡単」
> > という前提が必要だと思います。
> 
>  違います。意識するべきときだけ意識すればいいんです。

  「プログラミングとは理解することだ」(Kristen Nygaard)

※プログラミング言語C++第3版の序文より、引用の又引き(爆)

 それって、ある程度のプログラムなら無意識に組めるようになってる必要が
あると思うんですけど。

 私は今でも忘れませんが、BASICを始めた当初にどうしても「配列」が
理解できなくて、とんでもなく長い時間悩んだ覚えがあります。

 つまり、プログラムは「自然にできるようになるもの」ではなく、「意識して
使って、そのうち無意識に使えるようになるもの」だと思います。

 ・・・う〜ん、そうじゃない人、いるのだったら、私の考えも偏ってるという
ことですので、訂正したいと思います。

>  そういう意味では変に自由度が高いから、Ruby が合わないひとも
> いるでしょうし、手続き指向プログラミングに慣れた人でも使えるように
> しようという意図は明確なので、初心者向けに設計した言語だとも
> 思っていません。

 「教育用にも使えるものは、教育用以外には使えない」というマーフィーの
法則がありますが、実際、教育用にも実用にも使えるもののハードルは、非常
識に高いです。

>  ですが、ミクロ的に見た場合に、「やりたいことを順番に書く」という
> 手続き的プログラミングの本質は、わかりやすいですよね。

 やりたいことを順番に書くのは、オブジェクト指向でも手続き型でも同じです
(順次・選択・繰り返し・・・がプログラムの基本3構造だったっけ・・・情処
の本、全部人にあげちゃったからわすれちゃった・・・)ので、それが「両者を
比較するための本質」という考え方には、ちと首をかしげたいです。

 手続き型の本質とは、データを外から扱うことであり、オブジェクト指向の本質
とは、データをオブジェクトとして自発的に振舞わせることだと思います(う〜ん
教科書的・・・)

 数学的にデータを扱うなら、圧倒的に手続き-関数型のほうが分かりやすいわけ
ですが、フレームワークなど、扱うデータ構造体が複雑になるにつれて、外から
扱うのが限界となり、データ自体がどのように扱われるかを自ら「知っている」
オブジェクト指向の考え方が生まれた、と私は理解しています。

 WindowsとかMacintoshとか、UnixのX WindowSystemとか無ければ、急いで
オブジェクトに走る必要もなかったかもしれませんけどね(あと、ネットワーク
か・・・)

>  いずれにしても、オブジェクト指向設計と、オブジェクト指向言語とは
> わけて考えて欲しい気がします。

 オブジェクト指向って、設計のためですもんねぇ(にやり)

 ところで、Ruby-Object=Perlですから、Perlで入門、慣れたらRubyっての
どうですか?(けけけ)

>  なぜ、そこまでオブジェクト指向が優れていると思っていますか?:)

 アメリカ人って、かっこいーよね(byデジタル所さん)

 冗談はさておき、オブジェクト指向は、英語の文法(SVOCとかそーゆーの)
にのっとった形ですので、「英語な方々」には話すように書けて、理解しやす
いでしょうね。

※同じく、日本人にはForthが向いてる・・・という考えがあるようですが、
 日本人には根本的に言語的プログラミングが向いていないようで、日本語
 文法をとりいれたプログラミング言語は、ことごとくぱっとしないような
 気がするのは、私の気のせいなのだろうか・・・

 ところで、オブジェクト指向優位なら、私はPythonerでなく、Smalltalker
になってると思いませんか?(にっこり)

   機械伯爵