オブジェクト指向のパラダイムが主流になるのに長い時間がかかったのはなぜですか?


12

この質問を読んでかなり最近のことについて考えさせられました。オブジェクト指向言語。最初のものがいつ作成されたのかわかりませんが、なぜ彼らが主流になるまでにそれほど時間がかかったのですか?

  • Cは非常に人気を博しましたが、後にオブジェクト指向C ++になりませんでした(数十年後)。
  • 90年代以前の主流言語はオブジェクト指向ではありませんでした
  • オブジェクト指向は、ほぼ同時期にJavaとC ++を使用するようになりました

さて、私の質問、なぜこれにそれほど時間がかかったのですか?Cが元々オブジェクト指向言語として考えられていなかったのはなぜですか?C ++の非常に小さなサブセットを使用しても、コア言語に大きな影響は及ばなかったのに、なぜこのアイデアは90年代まで普及しなかったのでしょうか?


1
ハ!誰かが最終的にこれを尋ねると確信していました;)しかし、あなたはもう少し研究を行う必要があります、Smalltalkはあまり人気がなかったかもしれませんが、少なくとも70年代初期の用語の定義では、それが主流としてカウントされると思いますSimulaを忘れないでください。また、クラスベースのオブジェクト指向について具体的に話していますか?
ヤンニス

6
興味深い質問。私は最近、Simula 67に仮想メソッドがあることを発見しました(60年代にはすでに!)。CSの最も重要な概念の多くは、その歴史の最初の20年、30年(1950-1970)の間に発見されたようです。今日私たちが目にする多くの新しいものは、実際には非常に古い概念が混在しています。
ジョルジオ

3
@Giorgio:発見は、あなたの成長を最新かつ最高のものに夢中になってから、流行を見て実際に有用なものを区別できる経験豊富な開発者になるまでの通過儀礼と考えています。
マイケルボルグワード

@Michael Borgwardt:私はあなたに完全に同意します(そして最新の技術に簡単に夢中になりません:-))。経験豊富な開発者は、問題をどの程度効果的に解決できるかによって技術を判断すべきだと思います。初心者は新しいものに感銘を受け、それが新しい(誇大宣伝)という理由だけでそれをよりよく考えるかもしれません。OOPについて:これらの概念が長年にわたって開発されていることは知っていましたが、Simulaを見て、今日一般的に使用されている多くの概念をすでに発明しているのを見て、本当に驚きました。
ジョルジオ

回答:


25

まず、タイムラインを確立してみましょう。

  • 1963-Ivan Sutherlandのスケッチパッドは、オブジェクト指向とGUIの両方で先駆的な作品と見なされています。
  • 1967 Simulaが登場し、SmalltakとSmalltakのどちらを最初のオブジェクト指向言語と見なすべきかはまだ議論の余地があります。
  • 1969-デニスリッチーがCの開発を開始。
  • 1972- Simulaの影響を強く受ける言語であるSmalltalkが登場。「オブジェクト指向」という用語の発明者であると一般に考えられているのは、アランケイの発案です(アランケイはトロンの名を冠したキャラクター刺激しました ;)。
  • 1979-Bjarne Stroustrupは、C ++の前身であるClassesを使用したCの作業を開始しました。
  • 1983- Objective Cが登場し、基本的にSmalltalkのオブジェクト指向のフレーバーをCに追加しようとしています。
  • 1985- Object Pascalが登場し、Turbo Pascal 5.5ですぐに普及しました。
  • 1986- オブジェクト指向をCommon Lispにもたらす取り組み、CLOSの作業が開始されます。
  • 1991- Visual Basicがリリースされました。
  • 1995- Javaがリリースされました。
  • 1995- Delphiがリリースされました。

リッチーの主な影響はBCPLALGOL(両方とも命令型言語)であり、Cはオブジェクト指向に対するSimulaとSmalltalkのアプローチがまだよく知られていなかったときに作成されました。1972年頃に完成し、クラスを持つCはわずか7年後に登場し、デニスリッチーとブライアンカーニハンの両方がその創始に関与しました

当時、私はCを利用可能な最高のシステムプログラミング言語だと考えていました。それはその後(1979年)ほど明白ではありませんでしたが、デニスリッチー、スティーブジョンソン、サンディフレイザー、グレッグチェソン、ダグマキロイ、ブライアンカーニガンなどの専門家がいて、そこから学び、フィードバックを得ることができました。彼らの助けと助言がなければ、Cがなければ、C ++は死産だったでしょう。

繰り返される噂に反して、Cを使用しなければならないと言われたことはありませんでした。また、Cを使用しないように言われたこともありませんでした。実際、最初のC ++マニュアルは、デニスが私にくれたCマニュアルのtroffソースから発展しました。ベル研究所では多くの新しい言語が設計されました。少なくとも「研究」では、言語の偏見を強制するルールはありませんでした。

11年後にObjective Cが登場し、Cとオブジェクト指向をもたらすための主要な成功した取り組みはCとC ++の両方でした。 World Wide Webの前の時代について。1993年にMosaic(最初のブラウザー)が登場したのは、業界のターニングポイントでした。数年後にリリースされたJavaとDelphiは、少なくとも人気の点で、前任者に比べて大きな利点がありました。Webは、SunがWORAの約束でターゲットにしたプラットフォームの1つであり、おそらく当時より重要なものであり、Javaは当時生まれたプラットフォームの言語として大いに販売されいました。

もう1つの重要な要因は、1980年代後半から1990年代初頭に、特にホームコンピューティングでGUIが普及し始めた時期であり、同時にハードウェアがどんどん安くなっていることです。オブジェクト指向は、GUIおよびグラフィック指向アプリケーション全般を開発する際に非常に便利なパラダイムです。TurboPascal、Delphi、Visual Basic、および(おそらくは少し拡張された)Javaは、GUI開発を簡素化したことで(当時は)賞賛されました。

SunのJavaの積極的なマーケティングも明らかに役割を果たしましたが、Javaとの最初のやり取りを今でも鮮明に覚えているため、感銘を受けませんでした。Javaに対する私の最初の反応は、「ええと、C ++を解釈するリソースに飢えているだけです。TurboPascalに固執します。ありがとうございました」(ちょっと、私は当時17歳でした;)。当時、他の誰かがJavaにどのように反応したかはわかりませんが、私にとってはただの流行であり、すぐにDelphi(およびVisual Basic、ため息)に移り、数年後に大学でJavaを使い始めました、そしてそれは必修科目だったからです。

Javaとそのオブジェクト指向のフレーバーが非常に急速に普及するのは事実ですが、1990年代半ばまではパラダイムがそれほど普及していないとは本当に思いません。Webの導入によって人気の定義が変わりました。いずれにせよ、1990年代半ばは、ソフトウェア開発が一般的に盛んに行われた時期であり、Web、GUIの急増、および安価なハードウェアが重要な要素となりました。Javaは適切なタイミングで適切な場所に配置されていました。

参考文献:

関連する質問:


最近の発見:A HLGORY OF ALGOL 68-オブジェクトの方向性とはあまり関係ありませんが、プログラミングの歴史愛好家にとって魅力的な読み物です。
ヤンニス


2
@gerrit私は知っていますが、90年代前半と半ばにリリースされた他のいくつかの言語(意図的にスキップしました)(Perl、PHP、Ruby、JavaScriptなど)があります。当初からオブジェクト指向を実際にサポートしていませんでした。Pythonは...本当に、その最初の年の間に影響力のある言語ではありませんでした
ヤニス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.