私は今でも、オブジェクト指向は本質的に不可欠な概念であると固く信じています。ただし、 最近の質問により、プログラミングパラダイム全般についてもう少し考えさせられたので、より包括的な回答をまとめました。これはややトピックから外れていますが、偶然にもあなたの質問にも答えています。
2 つの主要なプログラミング パラダイムは、プログラマーが抽象的な関係を書き留める (コンパイラーに必要なものを伝える)宣言型パラダイムと、プログラマーがアルゴリズムを書き留める (コンピューターに必要なものを取得する方法を伝える)命令型パラダイムです。 .
パラダイムはアプリオリに言語にとらわれないものです。それは、プログラムについてどのように考え、構造化するかについての方法です。ただし、パラダイムを簡単に使用できるようにする言語には違いがあります。言語のセマンティクスと構文により、慣用的なコードの記述方法が生まれます。
宣言型言語の例は Prolog であり、命令型言語の例は Fortran です (そして、本物のプログラマーは FORTRAN プログラムを任意の言語で記述できます)。
命令型であると同時に宣言型でもあるコードの例として、Perl6 でのフィボナッチ数列の次の実装を考えてみましょう。
my @fibonacci-sequence := 0, 1, * + * ... *;
これは明らかにシーケンスの宣言的な記述です。ただし、*
と...
は有効な Perl6 演算子であるため (whatever-star はラムダ式を作成するために使用でき、sequence 演算子は遅延リストを作成するために使用できます)、これはランタイム組み込みコードを呼び出す命令ステートメントでもあります。
他のプログラミング パラダイム、特に関数型プログラミングとオブジェクト指向プログラミングについて考えてみましょう。
機能パラダイムは、セット間の関係として計算をモデル化するため、本質的に宣言的です。
オブジェクト指向パラダイムは、メッセージ パッシングと呼ばれるステートフル オブジェクト間の通信として計算をモデル化するため、本質的に必須です。
一部の言語は純粋です。つまり、すべての計算がパラダイムに準拠しています。たとえば、Haskell は純粋な関数型言語であり、Smalltalk は純粋なオブジェクト指向言語です。
ただし、これは関数型言語がそれぞれ異なるという意味ではありません。オブジェクト指向言語は命令型の resp を防ぎます。宣言型プログラミング。実際には、関数を命令的に使用することがよくあります。つまり、入力値を入力して出力値を取得します。オブジェクト指向プログラミングでは、逆のことが当てはまります。オブジェクトが受け入れるメッセージのセットは、そのインターフェイスを宣言します。