「オブジェクト指向」の版間の差分

削除された内容 追加された内容
m →‎1989年頃: い抜き言葉「やってる」「してる」の使用を回避(2回目)
(同じ利用者による、間の4版が非表示)
3行目:
 
== オブジェクト指向の来歴 ==
オブジェクト指向(''object-oriented'')という言葉自体は、1972年から80年にかけてプログラミング言語「[[Smalltalk]]」を開発した[[ゼロックス|ゼロックス社]][[パロアルト研究所]]の計算機科学者[[アラン・ケイ]]がその言語設計を説明する中で初めて作り生み出されている<ref name="EarlyHistoryOfSmalltalk">{{Cite web|url=http://worrydream.com/EarlyHistoryOfSmalltalk/|title=The Early History Of Smalltalk|accessdate=2019-01|publisher=}}</ref>。本人の述懐によると、大学院時代のケイがプログラミング言語「[[Simula]]」に感化されて日夜プログラミング・アーキテクチャの思索に耽っていた1967年頃、今何をしているのかと尋ねてきた知人に対して「''object-oriented programming''だよ」と咄嗟の造語で答えたのが発端だという。なお、ケイがSmalltalkを開発する中で提唱したこのオブジェクト指向と、1980が知名度を得るようになったのは1981年頃からSimulaであり、当時のマイコン専門誌[[バイト (雑誌)|BYTE]]結び付けられるるSmalltalkの誌上紹介が契機になったタームとしいる。オブジェクト指向の性格中でケイ自身全く異なるものであったが、結果的に[[オブメッセーェクト (プログラミング)|オブジェクト]]というプログラム設計概念が注目集め重視してい事で世間ルーツである技術的関心は[[クラス (コンピュータ)|クラス]]と[[インスタンス]]の仕組みの方に集まり、オブジェクト指向の解釈はケイの考えとは異なる方向性で推移していった。[[クラス (プログラミピュータ)|オブジェラス]]の設計備え初めて導入し言語はSimulaの1967年版だったので、こちら後付けでオブジェクト指向の草分源流に位置付と見なさていようになった<ref>[http://kristennygaard.org/FORSKNINGSDOK_MAPPE/F_OO_start.html How Object-Oriented Programming Started]</ref>。データとコードの複合体であるSimulaに結び付けられたオブジェクト(''object'')指向いう用語を確立し、Smalltalkで提唱されオブジェクト指向性格Simulaであ全く異なるものだったので双方設計は[[手続き型プログラミング]]の機能拡張解釈近いも数々であり齟齬を生じさせている<ref>{{Cite web|url=https://www.cs.cmu.edu/~charlie/courses/15-214/2014-fall/slides/25-history-oo.pdf|title=OO History: Simula and Smalltalk|accessdate=2019-02|publisher=}}</ref>、Smalltalkの方では[[関数型プログラミング]]の先例と見なされている「[[LISP]]」の影響の方が強調されていた<ref name="EarlyHistoryOfSmalltalk" />。その後、1983年に計算機科学者[[ビャーネ・ストロヴストルップ]]が1983年Simulaのオブジェクト指向をモデル公開した言語「[[C++]]」を公開し、このC++契機になって人気を博した事でオブジェクト指向に関連する様々は本来のSmalltalkでは考えく、後付けのSimulaスタイルのが再定義で認識されてい。C++はSimulaの方をモデルようしていなった。
 
1986年から[[Association for Computing Machinery|ACM]]が[[OOPSLA]](オブジェクト指向会議)を年度開催するようになり、オブジェクト指向は[[コンピュータサイエンス]]の一つのムーブメントになった。[[OOPSLA]]初期のチェアパーソンは、[[Smalltalk]]が生まれた[[ゼロックス|ゼロックス社]][[パロアルト研究所]]のフェローが務めることが多かった。Smalltalkは正確にはプログラミング言語と[[グラフィカルユーザインタフェース|GUI]]運用環境を合わせた[[フレームワーク]]であり、[[Alto|ゼロックスAlto]]機上の[[オペレーティングシステム|OS]]または[[ミドルウェア]]として開発されていた。Smalltalkは70年代の[[アラン・ケイ]]が構想していた[[ダイナブック]]のための[[グラフィカルユーザインタフェース|GUI]]環境でもあった。[[ダイナブック]]はパーソナルコンピュータの原型に位置付けられているものである。[[Alto]]は[[GUI]]を初めて汎用的にサポートしたコンピュータと[[オペレーティングシステム|OS]]であり、かの[[スティーブ・ジョブズ|スティーブ・ジョブス]]を啓発して[[Macintosh]]のモデルになったことはよく知られている。こうした背景からオブジェクト指向は、上述のプログラミング云々よりも、[[グラフィカルユーザインタフェース|GUI]](グラフィカル・ユーザー・インターフェース)を始めにした当時の先進的な[[ソフトウェア設計|ソフトウェアデザイン]]と[[ソフトウェアアーキテクチャ]]のための開拓的なモデル理論として受け止められる方が好まれた。[[デザインパターン (ソフトウェア)|デザインパターン]]、[[リファクタリング (プログラミング)|リファクタリング]]、[[モデル駆動工学]]、[[ドメインモデル]]、[[ドメイン固有言語]]、[[アジャイルソフトウェア開発]]といった数々のトピックが[[OOPSLA]]から生まれている。具体的に応用された最初の例は[[データベース]]開発と[[NEXTSTEP|NeXTSTEP]]などの[[オペレーティングシステム]]開発であった。
 
1989年には[[IBM|IBM社]]、[[アップル (企業)|アップル社]]、[[ヒューレット・パッカード|ヒューレットパッカード社]]、[[サンマイクロシステムズ|サンマイクロシステムズ社]]、[[アメリカン航空]]などの11社がコンピュータ産業共同事業団体[[Object Management Group|OMG]](Object Management Group)を設立した。OMGの目的は、企業システムネットワークの基盤になる[[分散コンピューティング]]を構築するための基礎要素になる分散オブジェクト設計の標準化を図ることであった。ここでのオブジェクトもデータとメソッド(=コード)の組み合わせと定義されていたので、この業務用システムないしネットワークの構築を目的にした技術アーキテクチャも人々の共通認識としてオブジェクト指向にそのまま包括された。1991年に分散オブジェクトの規格パラダイムとなる[[CORBA]]が公開された。また1997年に[[Object Management Group|OMG]]が策定した[[統一モデリング言語|UML]]は[[オブジェクト指向ソフトウェア工学]]に準拠したものとして発表されている。
30行目:
 
==== 1989年頃 ====
1989年に上梓されたUser Interface A Personal Viewという記事の中でアラン・ケイは、Smalltalkのオブジェクト指向性は大変示唆的であると前置きした上でこう述べている<ref>{{Cite web|url=http://worrydream.com/refs/Kay%20-%20User%20Interface,%20a%20Personal%20View.pdf|title=User Interface A Personal View|accessdate=2020-1|publisher=}}</ref>。{{Quotation|''object-oriented means that the object knows what it can do.''<br/>(オブジェクト指向とは、オブジェクトが出来るなにかをできるのかを知っているいう意味なんだ)|Alan Kay}}オブジェクトを指向重視することの意味について、ケイは抽象的シンボル視点のプロセスと、具体的ユーザーインターフェース視点のプロセスを対照させながら説明している。前者では我々はまずオブジェクトの名前を示し、次にそのオブジェクトが行なうなにかを理解させるメッセージを続かせることになる。後者では我々はまず対象を選択し、次にその対象が提供するなにかの一覧を表示させることになる。この双方を踏まえた上でケイはこう結論している。{{Quotation|''In both case we have the object first and the desire second. this unifies the concrete with the abstract in highly satisfying way.''<br/>(双方具象と抽象視点において僕たちはオブジェクト(対象)を第一とし、欲求を第二とする。これは高い満足度で具象と抽象を一体化する)|Alan Kay}}オブジェクト(対象)の重視と並行して、ケイはあらゆる物事からモード(''mode'')を取り除くべきだとするモードレス(''modeless'')の考え方も提唱している。ここでのモードとは決められた方法や作業手順や形態を指しており、モーダルはタスクの指向重視を意味することになる。モードレスは作業手順が特に決められていないことを意味している。オブジェクトとモードレスを融合させたユーザーインターフェースのデザインについて、ケイはテキストエディタの操作を例にした興味深い説明を加えている。テキストエディタの「挿入」「削除」「置換」といった操作はモーダルに当たる。それらは余りに基本的であるがゆえに対象と欲求に分解してのモードレスに再解釈できる余地がないように見える。ケイはこの命題から''Thus, there could be a zero-width selection, and thus every operation could be a replace.(もしゼロ幅選択枠というものがあるならば、全ての操作は置換になるだろう)といった解答を示している。「''ゼロ幅選択枠」という抽象的対象を導入することで「挿入」は始めに任意の文字間にあるゼロ幅選択枠を指定し次に置換→任意の文字列という欲求を伝えるいう対象第一の操作変えられる。「削除」は始めに任意の選択文字列を指定して次に置換→ゼロ幅選択枠という欲求を伝えるいう対象第一の操作変えられる。「置換」は選択文字列→置換→文字列である。文字実体のない抽象的なオブジェクトであるゼロ幅選択枠が、具体的なモーダル操作をモードレスに再解釈する役目を果たしている。始めに対象を選択しても自由に他の対象または他の表示中の操作にも移れることがモードレスと言われる所以である。これが具象と抽象の一体化であると説明されている。
 
==== 1993年頃 ====