オブジェクト指向プログラミングの歴史
OOPの歴史
↓微妙にOOPに関係ないところや時系列が謎なところがあるので修正しようmrsekut.icon
「オブジェクト」の概念が生まれたのはSimula言語が最初
ノルウェー計算センターのKristen Nygaardが1957年からコンピュータシミュレーションの開発を始める
既存の言語(ALGOLやFORTRAN)は科学技術計算向けの言語であり、シミュレーションをプログラムするのには不向きであった
これらは人間の思考に沿って、というよりはコンピュータの内部処理向けにプログラムを記述するもの
この言語で観察目的のシミュレーションをしたい場合、全ての動きをプログラムする必要がありかなり厄介になる
Wikiに載っているオブジェクトの概念の動機がわかりやすくて面白いmrsekut.icon
気体のシミュレーションを考える際に、分子の集合全体の動きをプログラムするのは難しい
そうではなくて一つ一つの分子をプログラムすることを考える
一つの分子の構造や、分子同士の互いの影響の及ぼしあいをプログラムする
そうした上で、全体の動きを観察する
こういう概念がpropertyやmethodの元となる
1962/1にOle Johan Dahl,がKristen Nygaardの業務に参加
1962/3までにはシミュレーション向けの言語のコンセプトは決まっていた
1962/4頃にALGOL 60の拡張としてSimulaの元となるSimula IとSimula67が開発された
Simulaの誕生は1967年
Alan Keyが「オブジェクト指向プログラミング」という言葉を発明する
Ivan Edward SutherlandはSketchpadを作っていた
Sketchpadは細かい部品を定義し、そのコピーを集めて全体を描くコンピュータグラフィックスシステムだった
この構造にAlan Keyが出会い、後にオブジェクト指向プログラミングの概念に通づる
Alan Keyはユタ大学で大学院時代にIvan Edward Sutherlandの元で研究を行う
FLEX Machineというグラフィカルコンピュータの開発をしていた
大学院を卒業しXEROX社に入りSmalltalkの開発を行う
良いUIすなわち「使いやすいシステム」の追求が動機
LOGOのような使いやすい言語を参考にした
UIパーツ(ex. プルダウンメニュー)を作ることになるので、各コンポーネントに状態を持たせるようなオブジェクト指向が向いている、となったのかなmrsekut.icon
Smalltalkのターゲットは子どもだったので簡素で直感的な言語構造、記述形式に出会いんされた
開発チームもエンジニアだけでなく、心理学者、哲学者、医学者もいた
Bjarne StroustrupがC++を開発
Bjarne StroustrupはSimulaやSmalltalkのクラスや継承の概念に注目しC with Classesを開発
これは「オブジェクト」に注目したわけではない
C++はオブジェクト指向プログラミングを発展させてはいない
参考
全般
「オブジェクト指向プログラミング」その起源からの検証
Simula関連
Simula - Wikipedia
Smalltalk関連
アラン・ケイの誕生日【日記 2014/05/17】
アルトとスモールトーク
まだ読んでないが参考になりそうな資料
『Masterminds of Programming』のC++の章
『オブジェクト指向コンピューティング』
Smalltalk#5ea04ade19827000003bf1e6
Simula#5ea04b1b198270000001745a
https://ja.wikipedia.org/wiki/オブジェクト指向プログラミング#歴史
https://qiita.com/hirokidaichi/items/591ad96ab12938878fe1