クエリ: オブジェクト指向プログラミングが開発されたのはいつ
文章: オーレ=ヨハン・ダール ノルウェーのマンダールで生まれた。ノルウェーでは最も有名な計算機科学者である。クリステン・ニガールと共に1960年代にオブジェクト指向プログラミングのアイデアを生み出し、 (NR) で Simula I(1961年1965年)と Simula 67(1965年1968年)をシミュレーションのためのプログラミング言語として開発した。ダールとニゴールはここで世界初のクラス、(明示的カプセル化を可能とした)サブクラス、継承、動的オブジェクト生成などオブジェクト指向パラダイムに重要な観点の数々を生み出した。「オブジェクト」はソフトウェアシステムにおける自己完結型の部品であり、その中にデータ構造とメソッドを持つ。オブジェクト群を統合して完全なシステムを形成する。オブジェクト指向は現在ではソフトウェア開発手法として広く普及しており、JavaやC++といった言語がある。
文章: Java 一方で、サンの別のエンジニア、ビル・ジョイは、ゼロックスのパロアルト研究所でAltoというワークステーション試作機のために開発されたプログラミング言語・MesaとCの良いとこどりをした新しいプログラミング言語を構想していた。ジョイは "Further" という名前で呼ばれる論文を書き、自社でC++に基づいたオブジェクト指向環境を開発するべきであることを進言した。まずジェームズ・ゴスリンがC++を改変し拡張することを試みた。ゴスリンはこの拡張版C++を、"C++ ++ --"と名付けた。しかしゴスリンは、すぐにこの拡張版C++の開発を中止して、全く新しいプログラミング言語を開発する方針を採ることにした。ゴスリンはこの新しい言語にOakという名前をつけた。この名前の由来は、ゴスリンのオフィスのすぐそばにオークの木が立っていたことによる。 文章: バートランド・メイヤー 著書 "Object-Oriented Software Construction" (日本語訳『オブジェクト指向入門』) では、オブジェクト指向プログラミング (OOP) の事例を優れた形で提示した。 文章: ソフトウェア開発方法論 プログラミング言語は何らかのプログラミングパラダイムをサポートすることができる。例えばC++や Object Pascal でのプログラムは、純粋に手続き的に書くこともできるし、純粋にオブジェクト指向的に書くこともでき、両方のパラダイムの要素を含むプログラムとして書くこともできる。オブジェクト指向プログラミングでは、プログラマはプログラムを相互作用するオブジェクトの集まりと考えることができ、関数型プログラミングでは状態を持たない関数評価の並びと考えることができる。多数のプロセッサを有するコンピュータやシステムでのプログラミングでは、を採用することで、データ構造を論理的に共有し並行動作するプロセス群と考えてプログラミングすることができる。 文章: オブジェクトデータベース ODBMSの実装のいくつかは、Smalltalk、C++、Java、C#、Visual Basic .NET などのオブジェクト指向プログラミングと連携して良好に動作するよう設計されている。別のODBMSの実装のいくつかは、その ODBMS 独自のプログラミング言語をもつ。ODBMSはデータモデルとしてオブジェクト指向プログラミング言語と厳密に同じモデルを採用している。 文章: リファクタリング (プログラミング) リファクタリングは、オブジェクト指向設計と深く関係している。ほとんどのリファクタリングは、オブジェクト指向の性質に沿ったものであり、オブジェクト指向のコードの再利用性を最大限に引き出すことができる。また、オブジェクト指向プログラミングを行える言語であれば、プログラミング言語の種類に関わらず、リファクタリングを適用できる。 文章: オブジェクト指向プログラミング このような流れの中で、プログラムを構成するコードとデータのうちコードについては手続きや関数といった仕組みを基礎に整理され、その構成単位をブラックボックスとすることで再利用性を向上し、部品化を推進する仕組みが提唱され構造化プログラミング () として1967年にエドガー・ダイクストラ () らによってまとめあげられた(プログラミング言語の例としてはPascal 1971年)。なお、それに続けて「しかしデータについては相変わらず主記憶上の記憶場所に置かれている限られた種類の基本データ型の値という比較的低レベルの抽象化から抜け出せなかった。これはコードはそれ自身で意味的なまとまりを持つがデータはそれを処理するコードと組み合わせないと十分に意味が表現できないという性質があるためであった。」といったように、ほぼ間違いなく説明されている。 文章: オブジェクト関係マッピング オブジェクト指向プログラミングでは、データ管理タスクは一般に単純なスカラーではない値を持つオブジェクトを操作するよう実装される。例として、1人の人物に0個以上の電話番号と0個以上の住所が対応している住所録での住所検索を考えてみよう。オブジェクト指向的な実装では、「人物オブジェクト」に住所録の内容を格納する「スロット」が備わっているような形態でモデル化される。スロットとしては、氏名、電話番号のリスト(または配列)、住所のリストが考えられる。電話番号リストは「電話番号オブジェクト」で構成され、他も同様に対応するオブジェクトで表される。プログラミング言語からは、ある人物の住所録がひとつの値として扱われる(例えば、1つの変数で参照される)。このオブジェクトに対して、推奨電話番号を返すメソッド、自宅電話番号を返すメソッド、などの各種メソッドが関連付けられる。 文章: オブジェクト関係データベース 初期の ORDBMS を開発する努力から生み出された概念の多くは、データベース言語標準 SQL:1999 に大規模に追加された。実際には、SQL:1999 のオブジェクト指向機能を何らかの水準で備えるどのような製品も、ORDBMS製品であるということはできるかもしれない。例えば、IBM DB2 、Oracle Database 、Microsoft SQL Server は、それぞれ、ORDBMS技術に準拠していると主張しているが、ORDBMS技術準拠の達成水準は製品によりさまざまである。 文章: ジェームズ・ゴスリン 1990年代前半に同社でのオブジェクト指向プログラミング言語Javaの開発において同僚のビル・ジョイらとともに大きな役割を果たした。ゴスリンはサンのフェローであり Sun labs で研究活動を行っていた。 文章: オブジェクト指向 Smalltalkが主体とする「メッセージング」は、それ自体が高度に柔軟なカプセル化とポリモーフィズムの機能を自然に表現できる仕組みだった。それに対して、C++やJavaに見られる「クラス構造」と継承をベースにした同様の機能の実現はトリッキーと言えた。しかし、現実的に「クラス構造」重視の、言わば亜流のほうがオブジェクト指向の主流となってしまった以上、。オブジェクト指向言語の進化に伴い、オブジェクトとクラス構造の側面ばかりが強調される現状の中で、アラン・ケイは「自分自身もSmalltalkの大ファンではない。今日のたいていのプログラミングシステムに比べれば好ましいものだが。」とも述べて、当時目指したオブジェクト指向本来の支柱は「メッセージ・パッシング」であることを暗に示唆している。 文章: オブジェクト指向プログラミング 上述の三つの仕様と異なり、メッセージパッシングはオブジェクト指向そのものと肩を並べるパラダイムであり、オブジェクト指向が示す機能の大半を結果的に実現出来る「メタ」的な土台となった。これは従来のサブルーチンコールの形態を変えたもので、基本はバイトデータ(メッセージ)の送受信でメソッド名とパラメータ値およびリターン値をやり取りする仕組みだった。オブジェクトのレシーバー関数が引数として渡されたメッセージを読み込み、オブジェクト内部でそれに準じた処理を行い、結果をリターンした。レシーバーの仕組みは結果的に「内部隠蔽」を実現出来た。オブジェクト内部での自由自在な処理実装によるリターンはこれも結果的に「多態性」を実現出来た。メッセージパッシングがもたらす変幻自在なメソッドの選択実行は、通信網を介して他サーバー上で実行されてるサービスプロセスを自身のソフトウェアの一部として扱う様な事も可能にした。あらゆる手法に応用出来るメッセージパッシングは、その適用範囲を広げるほど開発工数と実行負荷も増大するので、決してオールマイティに用いられるものではないが、ソフトウェアのモジュール化およびコンポーネント化をよりダイナミックに、そしてグローバルに発展させる潜在力を秘めており、OOPがもたらす実装の拡張性を大きく広げた。 文章: Microsoft Visual Basic 言語仕様は、旧来のBASIC言語に比べ、構造化プログラミングの機能が加えられるなど大きく拡張されており、加えてオブジェクト指向に近い概念も取り入れられている。ただしバージョン6.0まではオブジェクト指向の要素が十分には実装されておらず、特に継承にあたる機能が皆無だった。なお、後継のVB.NETでは完全なクラスベースのオブジェクト指向の機能や、Visual C#と遜色のないソリューション・プロジェクト管理機能も実装されている。 文章: オブジェクトデータベース ODBMSの技術は、1970年代半ばの、DBMS (データベース管理システム) で、グラフ構造をなすオブジェクト群を扱うための本格的な機能の研究開発から発展してきた。「オブジェクト指向データベースシステム」という用語が最初に現れたのは1985年頃である。特筆すべき研究プロジェクトとしては次のようなものがある。ORIONプロジェクトに関しては、他のどのプロジェクトよりも多くの論文が書かれた。MCCに在籍していたウォン・キムは、優れた一連の論文を一冊の本にまとめてMIT Pressから出版した。 文章: オブジェクトモデル化技法 オブジェクトモデル化技法 (オブジェクトモデルかぎほう、OMT; ) は、オブジェクト指向ソフトウェア開発方法論であり、1990年頃にジェームズ・ランボー、マイケル・ブラハ、ウィリアム・プレメラニ、フレデリック・エディ、ウィリアム・ローレンセンなどの人々によって開発された。ジェームズ・ランボーたちは著書『オブジェクト指向方法論OMT モデル化と設計』 (原著は1990年刊、日本語訳は1992年刊) で OMT を説明している。現在では OMT は、UMLの策定と Unified Process の開発においては、Rational Software に在籍していたジェームズ・ランボー、グラディ・ブーチ、イヴァー・ヤコブソン (この3人はスリーアミーゴスと呼ばれる) などの人々が、大きな役割を果たした。Rational Software は、Unified Process (UP) をもとにしてラショナル統一プロセス (RUP; Rational Unified Process) を開発した。Unified Process とラショナル統一プロセスでは、モデル図の記法 (モデリング言語) として UML を採用している。 文章: BlueJ BlueJはJavaやオブジェクト指向プログラミングの教育用途に開発された統合開発環境である。小規模なソフトウェア開発にも向いており、一般的に教育機関での開発ツールとして有用性が認められている。デザインが他の開発環境とは異なっており、画面には主に開発中アプリケーションのクラス構造が図式(統一モデリング言語に似たダイアグラム)され、他にもオブジェクトを容易に作成し検証できる。オブジェクト指向の各概念(クラス (コンピュータ)、オブジェクト (プログラミング)、メソッド (計算機科学)通信)をインターフェース上で視覚的に表現している。オブジェクト指向プログラミング概念の学習だけでなく、プログラム開発自体への支援も重視され設計された結果、他の統合開発環境に普遍的な機能が実装されない一方で独自機能が搭載されている。