サイト内用語検索です
必要に応じ、ウインドウ巾を調整して閲覧下さい
「オブジェクト指向」と言う言葉を良く聞きます。
又それに関連して「グラフィカル・ユーザ・インターフェイス(GUI-グイ)」と言う言葉も聞きます。
今我々、専門知識を持たないものにも、比較的戸惑い無くパソコンが使えるのは、この二つの要素が多いに貢献しています。 パソコンの歴史とも絡みながら、この辺の事情を垣間見ておきましょう。
現在のコンピュータシステムは、殆ど全て「ノイマン型」と呼ばれる基本構造を持っています。
それ以前の、或いはそれ以外のコンピュータは「非ノイマン型」と呼ばれています。
世界最初の電子計算機は何か、と言ったとき、ENIACとか、ABCとか言われていますが、今ここではどちらでも構いません。
ただどちらにしても、 今のコンピュータシステムとは決定的な違いが有ります。
ENIACにしても、ABCにしても、当時のコンピュータは真空管の配列や配線が、計算内容をそのまま反映したものになっており、別の計算を行なうためには配線をすべてやり直す必要が有りました。つまり汎用性が著しく乏しかったのです。
これに対しノイマン型計算機は 、演算装置、主記憶装置、入出力装置、制御装置の4部分から構成され、プログラムを、主記憶装置にデータとして格納し、逐次演算装置に呼び出して処理をする、と言う基本構造を持った計算機です。
つまり、ハードとソフトを分離させ、ハードそのものをいじることなく、プログラムを代えることによって、様々な処理を可能にしたのです。
このことにより、汎用性が著しく高まりました。
ハードウエア、ソフトウエアなどの概念もこれ以降のことです。
この方式は「コンピュータの父」とも呼ばれるアメリカの数学者、ジョン・フォン・ノイマン(John von Neumann)氏によって1946年に提案された方式で、その為この方式を持った計算機を、「ノイマン方式」「ノイマン型計算機」などと呼びます。
ただノイマン自身の構想と言うより、チーム内の構想をまとめて発表したのがノイマンだった、と言う説もあります。それもここではどちらでも良いことです。
ノイマン自身の構想に基づいて構築された最初の計算機は、EDVACですが、その開発はチーム内のいざこざでが原因で遅れてしまい、世界初のノイマン型コンピュータの座は、実はイギリスのケンブリッジ大学でモーリス・ウィルクス(Maulice Wilkes)らが開発した「EDSAC」に奪われてしまいました(1949年)。
それ以降50年あまり、ハードは早く、小さく、安価になってきました。
しかし基本的な仕組みは全く変わっていません。
パソコンも、スーパーコンピュータなどの並列マシンの大半も同じ仕組みです。
つまり、この間の情報処理の進歩は、基本的にソフトウエアの発達によって可能となったのです。
コンピュータ自体を制御するプログラムが、OS(オペレーティングシステム)として別れ、どのコンピュータでも標準的に使われるプログラム言語が成立したのは1960年前後です。
今パソコンのシステム、アプリケーションは「オブジェクト指向主義」と呼ばれるアーキテクチャ(設計仕様)です。「オブジェクト指向アーキテクチャ」「オブジェクト指向言語」「オブジェクト指向プログラム」など、皆同じ考え方です。
オブジェクト指向でないシステムを、「手続き型」或いは「命令型」などと呼びます。
オブジェクト指向の考え方は、比較的新しいことで、1960年代後半から1970年代にかけてです。代表的なところを一人上げれば、パーソナルコンピュータDynabookの提唱者、アラン・ケイがいます。
代表的なオブジェクト指向言語としては、C++、SmallTalk(アラン・ケイ構想、開発)、Eiffel、Objective-Cなどがあります。
手続き型言語を定義すれば「手続きを基本要素としてアルゴリズムを記述するプログラミング言語の総称」と言うことになります。「命令型言語」とも言います。
それによって記述されたプログラムは「手続き型プログラム」「命令型プログラム」と言います。
要するにパソコンでの操作手続きに着目し、それを順番に記述する考え方です。
これはどのように処理するかと言う「手続き」を、一字一句誤り無く、記述する必要が有ります。その為専門家で無いと、とても扱える代物では有りませんでした。
これに対し、 どのような結果が欲しいのか、目標を示すと或る程度その手続きを生成してくれる言語がオブジェクト指向言語、それによって記述されたプログラムが、オブジェクト指向プログラムです。
目標を達成する為のデータや手続きを、一体のもの(カプセル)として扱う考え方です。
例えばファイルアイコンをプリンタアイコンにドラッグして重ねると、プリントアウトしてくれる、と言うのはその例です。
我々は日常的にはオブジェクト指向的に思考、生活しています。
例えば、毎日会社に出勤するとき、一々その経路や、右足で踏み出そうか左足で踏み出そうか、などと言う手続きを意識はしません。
「会社に行く」と言うオブジェクトの中にそれらの手続きは含まれているのです。
手続きを意識するのは、電車が遅れて「さて、どうするか」と言うようなときだけです。
オブジェクトの発想と、コンピュータの手続きを関連付け、分りやすい操作を実現する上で、ウインドウ・システムも大切です。
歴史的に見れば次の二つに大別できるでしょう。
何も表示されていない画面に、コマンドを入力し、パソコンに操作をさせる方式のインターフェイスがCUI(キャラクタ・ユーザ・インターフェイス)です。
これは先ず、コマンドを、その機能とともに知っていなくてはなりません。 そして文法どおり、一字一句間違わずに記述する必要が有ります。
従って、CUIでのコンピュータ操作は、有る程度専門的な知識と訓練が必要でした。
現在のウインドウ・システムは、画面上に既に表示されているアイコンや、メニューを選択することで操作できます。
「アイコン」は、オブジェクトを視覚表現化したものです。「図意」などと訳されます。 機能が、デザインに反映されているので、事前知識が無くても、アイコンを見ればある程度何を表しているか、直感で分ります。
又、表示されているものを選択すれば良いので、CUIのように、コマンドを正確に覚えている必要が有りません。
この為、初心者でも比較的容易に扱うことが出来ます。
Macは、当初からGUI環境が実現されていました。
Windowsは、当初CUIでしたが、Windows95からGUIとなり、それまで殆どパソコンとも縁の無かった層も含め、爆発的にユーザを広げたのはご承知のとおりです。
どんなオブジェクト指向言語であっても、最終的にはマシン後に変換され実行されます。Windows、Mac-OS等、GUI環境で動いているPCは、その能力の大部分を、本来の仕事である演算処理の為に使うのでなく、GUIの為の機械語処理と、翻訳、ネットワークでの通信に使われています。
つまりコンピュータとは言っても、現在は実際のところ、GUI機、通信機、ソースコードとマシン語の間での翻訳機 だとも言える訳です。