今週のインタビューで、「関数型、オブジェクト指向、手続き型プログラミングの違いは何か」と聞かれましたが、正直なところ、その質問にどう答えてよいかわかりませんでした(手続き型プログラミングについて聞くのも初めてでしたし……)。 そこで今日、少し調べて、主な違いは何かを理解することにしました。

まずはいくつかの定義から始めましょう。 関数型プログラミング(FP)は、プログラミングパラダイム(コンピュータプログラムの構造と要素を構築するスタイル)の1つで、計算を数学的関数の評価として扱い、変化する状態や変異しやすいデータを回避するものである。” – Wikipedia

” オブジェクト指向プログラミング(OOP)は、「オブジェクト」という概念に基づくプログラミングパラダイムである。オブジェクトは、属性としてよく知られるフィールドの形でデータを含み、メソッドとしてよく知られる手順の形でコードを含むことができる。” – Wikipedia

” 手続き型プログラミングは、構造化プログラミングから派生した、手続き呼び出しの概念に基づくプログラミングパラダイムである。 手続きは、ルーチン、サブルーチン、関数としても知られ、単に実行されるべき一連の計算手順を含んでいる。” – Wikipedia

さて、これが導入ですが、もう少し詳しく見ていきましょう。

まず、プログラミングパラダイムとは何でしょうか。 それはプログラミングのスタイルであり、ソフトウェア構築に関する考え方のひとつです。 プログラミングパラダイムとは、特定の言語を指すのではなく、プログラミングの方法論、方法論を指します。 言語によっては、あるパラダイムで書きやすいものもあれば、そうでないものもあります。 詳細については、Wikipedia の記事を参照してください。

それでは、今日私たちが関心を持つ 3 つのプログラミングパラダイムについて説明します。 これは、コンピュータに段階的に何をすべきかを指示するための命令のリストを書くことです。

オブジェクト指向プログラミング(OOP)は、データと動作をオブジェクトにカプセル化することです。 OOPアプリケーションは、特定のアクションを実行する方法と、アプリケーションの他の要素と相互作用する方法を知っているオブジェクトのコレクションを使用します。 例えば、オブジェクトは人かもしれません。 その人は、名前(これはオブジェクトのプロパティになります)を持ち、歩き方(これはメソッドになります)を知っているはずです。 OOPにおけるメソッドは、PPにおけるプロシージャと考えることができるが、ここでは特定のオブジェクトに属するものである。 OOPのもう一つの重要な側面はクラスである。 クラスはオブジェクトの設計図と考えることができます。

関数型プログラミング(FP)は、関数から関数へデータを渡して結果を得るというものです。 FPでは、関数はデータとして扱われます。つまり、関数をパラメータとして使ったり、返したり、他の関数から関数を作ったり、カスタム関数を作ったりすることができるのです。 FPの関数は純粋関数でなければならず、共有状態を避け、副作用とデータは不変でなければならない。 純粋関数とは、同じ種類の入力が与えられると常に同じ出力を返す関数であり、ローカルまたはグローバルな状態に依存しない。 共有状態とは、複数の関数や複数のデータ構造の間で共有される状態のことです。 つまり、共有状態の場合、ある関数の効果を理解するためには、すべての共有変数の詳細を知る必要があるのです。 これは、多くの複雑さを追加し、モジュール性を低下させます。

コメントを残す

メールアドレスが公開されることはありません。