2014年10月24日金曜日

オブジェクト指向について その4

データを構築するオブジェクト指向は簡単

「アルゴリズムとデータ構造」によると基本的なデータ構造は、配列、連結リスト、木構造がある。このデータ構造を操作することを、アルゴリズムと言っている。オブジェクト指向が一般化する以前は、データ構造をプログラマーが好きなアルゴリズムを使用し、操作していた。でも、これでは、冗長処理いたるところに発生し、この冗長にバグが多数組み込まれ、苦労していた。
しかし、オブジェクト指向では、このアルゴリズムをテンプレート(Javaはフレームワークコレクション)として前もって準備してある。だから、データ構造の基本的な操作は誰でも行える。逆にアルゴリズムが、言語の奥底に隠れたため、言語が変わるとアルゴリズムが使えなくなる恐れがある。だから、アルゴリズムを示した図書を手元に置いておくと便利だ。

VMを操作するオブジェクト指向は難しい

'80年代終わりころから'90年代始めに、通信制御プログラムを引き継ぎ、中途半端だったプログラムを完成させた経験がる。通信制御プログラムは、割り込みコンテキストから成り立っている。だが、引き継いだプログラムは、逐次処理感覚で作ってありびっくりした。
VMを操作するオブジェクト指向の難しいところは、この割り込みコンテキストだ。コンテキストにはテンプレートは存在しない。だから、シーケンス図などで、相互関係を明確にし、ロック制御、排他制御を行う。もし、メモリー共用などが発生すると、問題解決まで多くの時間を費やすことになる。経験上、相互関係を全て読みきることは不可能だ。少しでも、不安があれば、安全サイドでプログラムを書いた方がいい。
又、VMはJava以外にも存在し、WANの世界では、一つのVMだけで成り経たなくなっている。したがって、現在は複数のVMを習得しておくのは必須だ。

VM 使用できる言語 備考
JVM Java(SE,EE,ME) Appletはブラウザーではあまり使われなくなった。現在サーバーサイドで多く使用されている。現在Oracle社が提供。
Flash Player ActionScript 現在ブラウザーで一番使われているAdobe社が提供するプラグインプログラム。videoが有名。なお、単独で動かせるAIR環境がある。
.NET Framework VB,C# マイクロソフトが開発したアプリケーション開発、実行環境。
HTML5 HTML,CSS,JavaScript HTML5はVMと呼んでも遜色のない環境だ。ブラウザーは複数存在する。
  

慣れるしかない

さすがのアムロも最初はエバンゲリオンを使いこさせないだろう。VMも同じだ。使って使って慣れるしかない。

2014年10月22日水曜日

オブジェクト指向について その3

オブジェクト指向(VM)登場以前

オブジェクト指向(VM)登場以前のアプリケションプログラム作りは以下のようになっていた。

  1. コーデング
  2. コンパイル
  3. リンク
  4. RUN

上記手順で気になるのはリンクだ。要は、ハードウェアーなどへのアクセスはプラットホームが準備しているライブラリィを使用することになる。概念的には、桃太郎が、猿、犬、きじを引き連れて鬼が島に鬼退治に行くようなものだ。
現実問題として、猿、犬、きじは、あまり技を持ち合わしていないので、桃太郎が勇敢でも、百戦錬磨とは行かないだろう。

オブジェクト指向(VM)登場後

オブジェクト指向(VM)登場後のアプリケションプログラム作りにはリンクは不要だ。前もって、VMが準備しているオブジェクトを使えばいいし、もしオブジェクトに機能が足りないでのあれば、ポリモーフィズムにて、プロパティやメソッドを変更もしくは追加すればいい。
概念的に言えば、VMであるガンダムに、アムロが乗り、ジオンと戦うことに等しい。その結果、アムロは、シャーが嫉妬するくらい成果を上げた。
もしかすると、桃太郎も、猿、犬、きじ、に頼るのではなく、VMというロボットに乗り込み、鬼退治をおこなったら、百戦錬磨だったかもしれない。

2014年10月21日火曜日

オブジェクト指向について その2

'90年初頭まで

90年初頭までのソフトウェアの作りは何処も同じだった。アプリケーションはCOBOLを筆頭に、逐次処理の世界だった。逐次処理は、理解するのも早いからだれでもプログラマーになれた。反面、OSやデータベースなどのシステムプログラムは、このアプリケーションの逐次処理を支えるため、複雑になっていた。
でも、当時、日本のコンピュータは世界に通用していた。そして、自分自身、自分が製造に携わったメインフレームに引け目を感じたことはなかった。

ゼロ戦

ゼロ戦は、設計も優れているが、それに加え、この戦闘機を製造した大勢の優秀な工員がいたから、欧米に負けない戦闘機ができた。当時のメインフレームも、大勢の優秀なプログラマに支えられていたから、日本製のコンピュータは欧米に負けていなかった。

グラマン・ヘルキャット

対戦当初、ゼロ戦に負けていた米国海軍は、グラマンに対して、「ゼロ戦より早く、持続力があり、旋回能力があり、多くの爆弾が搭載できるような戦闘機」を要求した。その要求に対して、グラマンの技術者が出した回答がターボチャージャーだった。
私はこのターボチャージャーがソフトウェアーにおけるオブジェクト指向だと思っている。

 

仕組みよりメリット

車を運転する人がターボチャージャーの詳細な仕組みを知っているだろうか?でも、ターボチャージャー付の車のメリットは誰でも答えられるはずだ。オブジェクト指向も同じだ。まず、オブジェクト指向を使って、なれて、メリットを知るべきだ。
昨今、オブジェクト指向がなくなるような記事を専門誌で読んだことがあるが、私の主観としてありえない話だ。cやLISPのような関数型言語と、JavaScriptの関数は違う、なぜなら、JavaScriptの関数はオブジェクト(私はこの概念を使いこなす為に多くの時間を費やした)だからだ。今のコンピュータの世界は、オブジェクト指向は深く浸透し、いまさらオブジェクト指向を語る必要ながくなっている。

2014年10月20日月曜日

オブジェクト指向について その1

AI

私が初めてオブジェクト指向に出会ったのは'80年代だった。

当時データベース診断エキスパートシステムを研究所で研究員(工学博士)と二人で構築した。エキスパートシステム構築ツールは同じ研究所で構築したLISPベースのツールを使用した。ちなみにこの構築ツールの仕様書がなかったので、研究室の応接室に席を準備してもらい、ツールの使い方が判らないと、研究員を呼び出し直接聞くという方法で構築した。構築ツールは、静的知識ベース、動的知識ベースで構成されていた。動的知識ベースはif文の羅列のルールベースで、静的知識ベースがオブジェクト指向だった

私にとって、オブジェクト指向は難しい概念ではなかった。なぜなら、CODASYL仕様のデータベース、特に論理スキーマは、クラス・インスタンスの概念で作られていたので、オブジェクト指向はすぐに理解できた。「UML 2.0クイックリファレンス」クラス図の関係に説明させれている「依存」「関連」「集約」「コンポジション」「汎化」は当時から変わっていない。

AIが普及しなかった理由

オブジェクト指向は簡単にデータ構造が構築でき、データとともにアクセスメソッドも設定できたので、使い勝手は良かった。でも、 オブジェクト指向には大きな欠点があった。それはオブジェクトを二次媒体に格納できないから、管理できるオブジェクトの容量は自ずと制限ができるということだ。私は当時この欠点を気づいていたので、AIは普及しないと思っていた。

あれから30年、この欠点はクラウドシステムにより解消された。まさか、私が生きているとき、クラウドシステムに出会うとは思いもよらなかった。また、このクラウドシステムはスーパーコンピュータとは違い、誰でも使用することができる。ちなみに、このブログもクラウドシステムがなければ存在しない。人類の貪欲な欲求には驚きを隠せない。   

OOP

現代のオブジェクト指向は、オブジェクト指向の汎化の機能の一部だったポリモルフィズムコンピュータ・アーキテクチャに組み込んだシステム(VM)になったことだ。これはJAVAが確立した技術だ。

現代のオブジェクト指向という概念を私なりに説明したいと思います。

2014年10月17日金曜日

老いぼれプログラマー

>
老いぼれプログラマー
私が初めてコンピュータに出会ったのは今から約40年前の’75年です。それから、約20年メインフレームの基本ソフト製造に関わってきました。
そして、例の如く、上司から肩叩きされ会社を辞めました。コンピュータに未練がありました。当時は、メーカ系の企業しか コンピュータに関われなかったので、
もう二度とプログラムを作ることはないだろうと思い、実家に帰りました。
会社を辞めて約20年、時代は変わりました。パソコンの機能が飛躍的に発展し、だれでも、最新の技術を自由に使える夢のような時代になりました。
コンピュータに未練があった私は、当時勤めていた会社を辞め、Webの世界にどっぷり入り込んでしまいました。
「Java,HTML+CSS+JavaScript,ActionScript3.0,OPENGL」高度な技術を自分の物にしたいと思い、現在、世捨て人のような生活を送っています

このプログはそんな私が作成したプログラムの紹介と、現在気になる技術に対する私なりの意見を述べたいと思います。
私の履歴
期間 内容 プラットホーム 使用言語
'75~'79 TSS系OSの総合試験 メインフレーム* COBOL,BASIC,PL/I
'79~'82 TSS系OS セション メインフレーム* システム言語
'82~'86 データベース診断システム
AI
メインフレーム*
DEC
MS-DOS
COBOL,システム言語
LISP
C
'86~'90 OSI トランスポート層
クラス0,2
メインフレーム* システム言語
'95~'07 CAD,Exel
工事費数千万~数億規模の土木設計
Windos Exel VBA
'07~ 閲覧者0人のWebサイト
設計、製造、メンテナンス
ブラウザー,
Windos,Linux,GAE
Java,PHP
HTML4,5 ActionScript3.0
C/C++

WebGL
待ちに待った技術が登場しました。私の予想では、まず、FlashでGPUをサポートするだろうと思っていましたが、まさかブラウザーそのものがGPUをサポートするとは思ってもいませんでした。
なぜなら、IEはマイクロソフトの大人の事情があるからです。でもIE11でとうとうWebGLをサポートしました。(私の実感として、IE11は安定性にかけてるようだ。)
ここ数年WebGLと格闘してきました。まだ、自由に使い込むレベルまで経っていない私ですが、WebGLでゲームを作成してみました。
もし、お暇があればサイトを覗いていただければ幸いです。
http://hankuro.sakura.ne.jp/game/

Mail

コンピュター暦約40年です。
ある程度、コンピュータを熟知しています。
最新の技術も理解し使えます。
こんな私ですが、何かご協力できることがあれば、ご連絡ください。

お名前
メール
コメント