オブジェクト指向プログラミングが開発されたのはいつ
Passage 1: Simula 1962年 オブジェクトとクラスを導入した最初の言語。また、C++が再定義したオブジェクト指向プログラミング言語の要件を満たすことから、最初のオブジェクト指向プログラミング言語とされることもある。クラスベース。当初はシミュレーション記述用に開発されたものであったが、後に汎用化された。 Smalltalk 1972年 オブジェクト間の相互作用に<b data-parsoid='{"dsr":[7033,7044,3,3]}'>メッセージ</b>という機構を導入した最初の言語。オブジェクト指向と言う言葉は、Smalltalkのプログラミングスタイルを説明するために作られた。動的な型付けにより高い柔軟性を持つ。 C++ 1979年 C言語のオブジェクト指向拡張。Simula言語風にクラスを定義でき、C言語の型システムを強化している。当初はC言語に対して上位互換であった。また、強い型付けによりC言語譲りの実行効率の高いコードが生成できる。 Objective-C 1983年 C言語のオブジェクト指向拡張。C言語のコードとSmalltalk型のオブジェクトシステムを混在させたもの。オブジェクトシステム自体はCで書かれたランタイム。 Eiffel 1986年 強い型付けを行う型システムや表明など堅牢性を強く意識して設計されたオブジェクト指向プログラミング言語。C++にテンプレートが導入される前に総称型を導入していた。 Self 1987年 最初のインスタンスベースのオブジェクト指向プログラミング言語。 CLOS 1988年 関数型言語Common Lispのオブジェクト指向仕様。 Modula-3 1988年 モジュールを実現していたModula-2言語のオブジェクト指向拡張。 Python 1990年 最初のオブジェクト指向スクリプト言語。 Sather 1990年 Eiffelを拡張したもの。実行効率面での工夫が見られる。 NewtonScript 1993年 PDA環境用に修正されたSelf言語。PDAの性質を生かすため永続オブジェクトをサポートしている。 Ruby 1993年 オブジェクト指向スクリプト言語。クラスのMix-inなどのユニークな機能を持つほか、正規表現に渡るまで全てがクラスとして実装されていることが特徴。 Perl 1994年 Perl 5.0にてオブジェクト指向に対応。既存のPerl言語に後付けで拡張されたため記法は特殊だが、機能面では他のオブジェクト指向言語に引けを取らない。 Adaのオブジェクト指向拡張 1995年 恐らく最も仕様が複雑なオブジェクト指向プログラミング言語。 Java 1995年 仮想マシン（Java仮想マシン）上で動作することによる高い可搬性、リフレクションやスレッドの標準サポートと充実したライブラリ群で知られているオブジェクト指向プログラミング言語。 Object Pascal (Delphi) 1995年 Pascal言語のオブジェクト指向拡張。 JavaScript 1996年 ウェブページ上で実行することを主目的に開発されたスクリプト言語。プロトタイプベースの言語である。 OCaml 1996年 関数型言語MLのオブジェクト指向拡張。クラスが型推論機構に組み込まれているという特徴がある。 PHP 2000年 動的にWebページを生成することを主目的としたスクリプト言語。バージョン4からオブジェクト指向に対応し、バージョン5でアクセス権やインターフェースなど、オブジェクト指向の強化が行われている。 C# 2000年 Javaとよく似た作りでJavaと同じく仮想マシン上で動作するが様々な部分で拡張されている。.NET Framework上で動く。 Visual Basic.NET 2002年 既存のVisual Basic（6.0以前）を大きく改訂してオブジェクト指向に対応。C＃同様.NET Framework上で動く。 COBOL 2002年 2002年に制定された国際規格に、オブジェクト指向機能が採用された。1994年には、国際規格案を先取りした商用コンパイラ上で利用可能になった。オブジェクト指向構文を使わないCOBOLプログラムと混在できる。 Ceylon 2011年 Java をもとにつくられ、Java のもつ長所と短所を考慮しつつ、商用言語として再設計された言語。 Swift 2014年 Objective-Cのオブジェクトを引き継ぎながらも、ベースのC言語を取り除いて新しく再設計された言語。 
Passage 2: 一方で、オブジェクト指向プログラミングにオブジェクト指向分析設計が有効か否かは、さだかではない。オブジェクト指向分析設計ではしばしば前述のようにプログラミングが分析設計の「次の工程」であるとウォーターフォール開発的に信じられていることもあるようだが、そのような考え方はオブジェクト指向プログラミングの流行によって生まれてきた、オブジェクト指向分析設計以外の多くの手法、特にアジャイルソフトウェア開発では完全に否定されている。また本来は、オブジェクト指向分析設計はクラスベースオブジェクト指向への拘泥は無いはずであるが、現実には多くのオブジェクト指向分析設計の解説においてクラスベースオブジェクト指向が大前提となっており、JavaScriptなどプロトタイプベースの観点は見られない。 
Passage 3: クラスは非常に多くのオブジェクト指向プログラミング言語で提供されている機能ではあるが、オブジェクト指向プログラミング言語に必須の機能というわけではない。実際にオブジェクトの管理や、データ・メンバやメソッドの記述、継承に際してクラスという仕組みに依存せずに、もしくはクラスという仕組み自体を持たずに別の手段でこれらを実現している言語も存在する。このような言語をインスタンスベース (instance-based)、オブジェクトベース (object-based) あるいは<b data-parsoid='{"dsr":[16391,16406,3,3]}'>プロトタイプベース (prototype-based) のオブジェクト指向プログラミング言語と呼ぶ。インスタンスベースまたはそれに類するのオブジェクト指向プログラミング言語には以下のようなものがある：