在り方
abdev 3月 2nd, 2006オブジェクト指向。
この言葉が意味するものって、実はかなり曖昧だと思ってしまう今日この頃。「JavaやC#のオブジェクト指向は〜」と言ってもらえれば、おおよそ検討がつくのですが、Visual C++のオブジェクト指向、そしてActiveBasicのオブジェクト指向というと、何か中途半端な、オブジェクト指向になりきれない部分がどうしても存在してしまうような感じを受けちゃうんです。
Visual C++なんかは、MFCでそれらのグレーゾーンを限りなく白に近づけたわけですが、それでも、何か物足りないような印象が残ります。COMに関しても、一つのオブジェクトが定義され、それが複数のメンバを持ち、複数のメソッドによって行動するという単純な指向とは少し異なるものです。
オブジェクト指向の最大の利点は、オブジェクト同士が一つの環境化に無くても(ネットワーク上に分散していても)、このことを気にせずに互いが参照しあえるところにあります(賛否両論がありそうですが、おいらはこのように理解しております)。まぁ、それってJavaじゃん!となるのですが、おいらはどうしても、ネイティブ化した上でJavaの構造を作れるのではないかと思っているのです。
というのも、パソコンに限ったシステムであれば、数種類のネイティブコードへの対応を考慮するだけだし、速度の面でも、CPUアーキテクチャやグラフィックボードをバリバリ使うものを除けば、別に問題はありません。むしろ、仮想マシン系の言語システムは、後数年間はネイティブコードを超えることは有り得ないですし、超えたとしてもその差は微々たるものでしょう。
いちいちコンパイルしないとならないってのも、なんらかの方法で自動化すればカバーできる問題ですし、あとはガベコレの実装やライブラリの実装に左右されてくるんだと思います。
サーバーサイドで動き、クライアントPCで動き、ケータイで動き、あとは家電製品で動く。ここらへんまでネイティブでカバーできそうな感じはするのですが、、、どんなもんなんでしょう??
本当の意味でオブジェクト化されたシステム、一度体感してみたい・・・
と、かなり知っているような文章を書いてしまいましたが、あまり深い意味はないっす。最近のごちゃごちゃしていた頭の中を文章化しただけですんで・・・
3月 3rd, 2006 at 17時19分03秒
そこでやっぱりCOM(DCOM)ではないですか?リモートサーバなんかネットワーク越しにオブジェクトを作って通信できるようですし。#DCOMがなんなのかよくわかっていないくせに書いています。
3月 4th, 2006 at 10時29分52秒
自分は、オブジェクト指向はプログラミング方法論の一つだと考えています。つまり、環境だの分散だの…etc という outside factor は包含されないものだと。わかりにくいと思いますので、歴史を遡って説明しますね・・・史上初のプログラミング手法は、おそらく機械語直接入力でしょう。(歯車式自動計算機のプログラムとかは除外します。ノイマン式アーキテクチャの話です。)アセンブリ言語の登場により若干の抽象化が試みられます。そして「プログラムは上から下へと順に処理されるものだ」のスタイルを維持したままさらに高級な言語が考案されます。(ex. BASIC言語)C言語ぐらいになると、処理の固まりを一括りにした関数の概念により、処理をソース中の任意の場所に配置出来るようになります。・・・たった4行しかない大まかな流れの中で、プログラムが徐々に抽象化され洗練されてきたことがわかりますよね。オブジェクト指向は、抽象化をさらに進めた産物ではないのでしょうか。これまでは、処理とデータは別々に分けられていました。そこで、互いに密接に関わり合うメソッドとデータを「オブジェクト」という概念により一括りに束ねてみましょう、と。このオブジェクトを扱うプログラミング方法を、オブジェクト指向と称するのだと考えています。この(僕の中の)定義では、オブジェクトの存在する場所や環境については『一切』言及しません。あくまで方法論だけを定めています。しかしながら、近年の流れを観察すると、個々の環境の差異は何らかの巧妙なからくりによって吸収される傾向にあります。Web アプリケーションはブラウザ上で実行されるので、ブラウザさえ対応していれば動作するプラットフォームを問いません。javac が生成するバイトコードは JavaVM という単一の環境で実行されるので(以下略Microsoft が推進している .NET(以下略もはやオブジェクト指向は「環境」すらも内包し「方法論」の域を飛び出してしまったのでしょうか。はたまた「環境」の意味するところが outside factor ではなくなり「方法論」の範疇に収まったのでしょうか。どちらにせよ、そのどちらも受け入れることが出来ない自分は頭の固い人間だということになりますかね orz「方法論と環境とは区別するべきである」我がプログラミング哲学崩壊の危機…
3月 4th, 2006 at 18時41分17秒
簡単に言うと環境の差異が吸収されるのも一種の抽象化であり、同じ「抽象化」ということで都合よく両者がマッチしたと言う感じではないでしょうか。
3月 4th, 2006 at 20時53分32秒
色々とご意見ありがとうございます。最近、忙しくて、なかなかメールのお返事ができませんでした。ほんっと、すみませんm(__)m > takさんさてさて、オブジェクト指向ってなんぞや!?の議論ですが、未だ答えはみつかりそうにありませんね。仮に「正解」があったとしても、実装され、社会的に役に立たなければそれは「正解」とは言わないのかもしれません。AB5の構成はある程度頭の中にあるのでよいのですが、さらにその先(すぐにVer6.0とは言いませんが…)、私が学習すべき項目、開発すべき項目がな〜んとなく見えてまいりました。その話はまた後日、整理してからお話します。P.S.〜真っ向から対抗しなくとも、世渡り上手な言語を目指したい〜