web-dev-qa-db-ja.com

オブジェクト指向プログラミングが主要なプログラミングパラダイムになった歴史的な条件は何でしたか?

オブジェクト指向プログラミング言語が影響力を持つようになった経済的(およびその他の歴史的)要因のいくつかは何でしたか? Simulaは物事を開始したことを知っていますが、OOP言語の採用により、または、採用は、OOP言語で実行できる新しいことによるものでしたか?

編集私は本当に、言語の外で起こっているいくつかの要因がそれらを維持することを可能にしたかどうかに最も興味があります。

14
ihtkwot

短い答え

OO days。OOの前のソフトウェアプロジェクトのチャーンだったと思います。 現実の世界をモデル化


最初のオブジェクト指向プログラミング言語は Simula 1967年にさかのぼります。しかし、当時のソフトウェア開発はまだ研究室にあり、ほとんどのパラダイムはハードウェアに近いですケース。

エンタープライズアプリケーション用のソフトウェアのさらに10年以上にわたる開発により、他の商用アプリケーションが成長し、1970年代全体に渡ってソフトウェア開発全体が採用されました。それらの時代(1980年以前)の今日でも存続する言語は、C、Cobol、Fortranなどです。これらの言語のほとんどは手続き型です。 LISPもその日から存在していましたが、それが商業開発のための顕著な汎用言語であったかどうかはわかりません。有名な用語 Waterfallモデル も1970年代初頭に造語されました。

ほとんどの商用環境では、ソフトウェア開発で浮かび上がる最も重要な要素はプロジェクト管理でした。プロジェクトがフィニッシュラインに確実に到達するように凍結するために、タイトで少なくとも予測可能な予算と管理要件の緊急の必要性がありました。この期間は、1975年に遡る 神話のマン月 の1つでもありました。

70年代の終わりまでに、手続き型言語がこれらの約束を守らなかったため、人々は燃え尽きてしまったと思います。そして、それ以来存在していた新しいパラダイムオブジェクト指向がそれを大きくしました。人々は反対するかもしれませんが、C++の親しみやすさと実証済みの経験を支援するC++と、1983年のオブジェクト指向の約束(元々はクラスの名前がCでした)は、オブジェクト指向プログラミングの成功への礎石だったと思います。

より多くの視点のためのいくつかの参照- http://journal.thedacs.com/issue/43/88

では、なぜOOなのか

私はその頃(プロジェクトの成功の観点から見ると)と思います-理解できることが管理しやすくなることは理にかなっています。約束のあるオブジェクト指向の方法論 "..人生のすべてがオブジェクトである"は、意味があることが証明される前から、常識のように見えました。この要因の実際的な成功は、銃をジャンプする前に、現実世界と手元にある問題を十分にモデルするという非常に概念でした。これは、OO提供されましたが、その日まで他のパラダイムでは提供できませんでした。そして、このパラダイムでは、コーディングする前に考える手続き型言語よりも多くのことを強いられていることは明らかであり、採用したソフトウェアプロジェクトとそれ以降、彼らは人気を博しました!

[〜#〜]編集[〜#〜]
また、プログラミング言語は、このような基本的な概念(OOパラダイム、アスペクト、仮想マシン)と同時に並行して進化したことも付け加えておきます。新しい概念と新鮮な考え方は、新しい新しいプログラミング言語が習得したときにのみ現れます。しかし、コアからファンダメンタルズを変更してください!同時に、これらの新しいコンセプトと新しい言語は、新しいビジネス上の問題のために生まれました。 1980年代-OO大規模ソフトウェア向け、1990 Java=インターネット時代、PHP/ASPおよびその他多くのWeb向け。プログラミング言語の革新は、主に不連続な市場ニーズ。

要約すると、80年代初頭は大規模な商用ソフトウェアが普及した時代でした。手続き型言語を使用したプロジェクトには問題がありましたが、OOはより良い光を示し、プロジェクトをより成功させました。

10
Dipan Mehta

最大の理由は、XやWindowsのようなグラフィカルユーザーインターフェイスの成功だったと思います。 GUIは、独自の動作を持ついくつかのオブジェクトで構成され、OOは密接に表すことができます。

一方、テキストベースのユーザーインターフェイス(GUIに似たものではない)は、多くの場合、コマンド応答パターンに従うだけであり、手続き型言語で簡単に実装できます。ビジネスルールなどは、何十年も手続き言語で実装されており、あまり問題はありませんでしたが、今日でも多くのOOビジネスアプリケーションのプログラムは、手続き型であり、データとステートレスを保持する愚かなオブジェクトを備えていますビジネスルールを含むオブジェクト。最初のオブジェクトは手続き型言語のレコードで、もう1つは手続きです。

6
user281377

最初は命令型プログラミングがありました(それを呼び出すことができる場合)。メインフレームに何をどのように計算すべきかを伝える簡単な指示。これらのプログラミング言語は、無条件ジャンプやその他の「非構造化」命令を使用しましたが、それらのほとんどは今日の標準ではエキゾチックです。

それから誰かがプログラミングのための構造を思いついた。 for、while、do while、foreachは今日知っています。比較的複雑なフローを持つアプリケーションを簡単に記述して理解できるようになったため、これは大きな革新でした。このようにして構造化プログラミングが生まれました。

それから、あちこちでたくさんのコードを繰り返す必要があると言って、コードを再利用する方法を発明する必要があるので、それを維持するのは悪夢であると言った他の何人かの人々が来ました。人々は、コードの再利用可能なビットを区切るための手続きと関数を思いつきました。これにより、カプセル化と単一責任の原則も生まれました。

その後、一部の学者は、機能性は、機能しているデータと密接に結合する必要があると述べました。次に、コードの再利用とポリモーフィズムの継承の概念を追加して、実際の分類が機能する論理的な方法と一致させました。したがって、第3世代のプログラミング言語とOOP=が誕生しました。

2
linkerro