プログラミングパラダイム

プログラミングパラダイムとは、プログラミング言語を何をするかによってグループ化する方法です。言語は複数のパラダイムに属することができます。

いくつかのパラダイムは、副作用を許可したり、特定の順序で物事を行わなければならないなど、コードの実行方法に注目しています。他のパラダイムでは、コードを 1 つか 2 つのピース (またはその代わりに多くの小さなピース) にまとめるなど、コードがグループ化される方法に注目しています。他のいくつかのパラダイムは、プログラムをあるべき姿にする順序とピースを見ています。

パラダイムには、命令的パラダイムと宣言的パラダイムの2つの主要なグループがあります。言語は同時に両方のパラダイムを持つことができます。

内容

·         1 インパーティブプログラミング

·         2 宣言的プログラミング

·         3 その他のパラダイム

·         4 概要

·         5 パラダイムの問題点

·         6 歴史

o    6.1 マシンコード

o    6.2 手続き型言語

o    6.3 オブジェクト指向プログラミング

o    6.4 宣言的パラダイム

·         7 関連ページ

·         8 参考文献

·         9 その他のサイト

インパーティブプログラミング

命令的なプログラムでは、プログラマーは、何かを行うために実行する必要がある順序付けられたステップのセットをコンピュータに与えます。誰かがコンピュータに猫の顔を描かせたいと思ったら、「ここに円を描いて、そこに二つの小さな円を描いて、上に二つの三角形を描いて」などの指示を与えるかもしれません。強制的なプログラムは時に副作用が多い。

主に2つの命令的パラダイムがあり、多くの場合、言語は両方のパラダイムを持っています。

  • 構造化されている - コンピュータには、常に一定の順序で指示が与えられています。go back to step 3」のようなステップ(goto文として知られています)は許されません。
    • 手続き型 - プログラムはプログラマーに命令のリストに名前を与え、それらの命令を後で使用できる「手続き」に変えます。ほとんどの構造化言語も手続き型です。
  • オブジェクト指向 - アイデアは、オブジェクトを使用してコンピュータに説明され、それらが与えられることができる順序のセットとそれらについてのいくつかの情報を持っているコードの部分。

宣言型プログラミング

宣言的パラダイムでは、プログラマーはコンピュータに、どのようにするかではなく、何をするかを指示します。もしコンピュータに猫の顔を描かせたいとしたら、「顔を描いて、2つの目、2つの耳、口を描いて」というような指示を出すかもしれません。

最もよく知られている宣言的パラダイムは以下の通りです。

  • 機能 - 副作用のない機能がほとんどです
  • 論理 - 一連の事実が述べられ、その後、1つまたは複数の「質問」が投げかけられる。
  • イベント駆動型 - コードの一部は、特定のことが起こったときに実行されるように設定されています (コンピュータの電源が入るなど)。

その他のパラダイム

いくつかのパラダイムは、命令型言語宣言型言語の両方に見られる。これらのパラダイムは、単独で行くのではなく、上記のパラダイムのいずれかと一緒に見つかるのが普通です。

概要

プログラミング言語は、機械が何に使われるかによってグループ化されるのと同じように、パラダイムによってグループ化されています。

いくつかの言語は、例えば、1つの主要なパラダイムだけに適合します。

  • スモールトーク
  • アセンブリ (命令的だが、構造化やオブジェクト指向ではない)
  • ハスケル
  • プロログ

しかし、ほとんどの言語は複数のパラダイムを持っています。複数のパラダイムを持っていることで目立っているものには、以下のようなものがあります。

  • Scala (オブジェクト指向、関数型、並列)
  • Visual Basic (イベントドリブン、オブジェクト指向)
  • Common Lisp (手続き型、関数型、オブジェクト指向、メタ)
  • スキーム(機能的、手続き的、メタ
  • Perl (関数型、手続き型、メタ、オブジェクト指向、イベント駆動型)
  • Python (関数型、オブジェクト指向、手続き型)
  • Ruby (関数型、オブジェクト指向、手続き型)
  • Wolfram言語(関数型,手続き型,一般的な宣言型
  • オズ
  • F# (関数型、命令型、オブジェクト指向、メタ)

パラダイムを多く持つことは必ずしも良いことではありません。パラダイムを少なくすることが良いことの一つとして、機能のみの言語がある場合があります。このような言語の関数は、その言語が手続き的なものであった場合に必要となるかもしれない作業(実際に必要なもののグループの一部だけを調べるなど)を少なくしてしまうことがあります。

多くのプログラミングパラダイムは、人にさせないことと人にさせることでよく知られています。これが当てはまるのは、関数型言語です。関数型言語が機能的なものだけ、あるいは大部分が機能的なものである場合、通常は副作用を許容することはありません。構造化プログラミングは、通常の命令型言語とは異なり、プログラマーに「ゴト文」(プログラムが以前のステップに進むことを指示する文)を使わせないからです。このような理由や他の理由から、人々は新しいパラダイムでは十分なことができないと考えることがあります。しかし、コンピュータが人に何かをさせないことは、時々は大丈夫です: それは、人々が自分のコードの問題を回避するのに役立ちますし、コンピュータに推測をさせて、コードをより速く実行したり、コードが実行される前に問題がないかどうかをチェックしたりすることができます!

ピーター・ヴァン・ロイによる様々なプログラミングパラダイムの概要Zoom
ピーター・ヴァン・ロイによる様々なプログラミングパラダイムの概要

パラダイムの問題点

プログラミング言語を研究している人の中には、HarperやKrishnamurthiのように、プログラミング言語をグループ化するためにパラダイムが使われることを好まない人もいます。そのような人たちは、多くのプログラミング言語は多くのパラダイムから物事やアイデアを借りているので、パラダイムにまとめることはできないと言います。

歴史

時を経て新しいパラダイムが生まれ、当時の人から指摘されたり、振り返った時に指摘されたりしました。新しいプログラミングの方法として最初に認識されたパラダイムの一つが、1960年代の構造化プログラミングである。プログラミング・パラダイム」という考え方は、それ以前ではないにしても1978年頃のもので、ロバート・W・フロイドが教鞭をとりながら使っていました。ロバートが意味する「パラダイム」という言葉は、トーマス・クーンが彼の著書『科学的革命の構造』(1962年)の中で最初に使ったものです。

マシンコード

最も低レベルで(コンピュータが物事を理解する方法に最も近い)最も古いプログラミングパラダイムは、マシンコードであり、命令的パラダイムである。マシンコードの中の指示は、ある順番の数字の集合に過ぎません。アセンブリ言語は、もう少し低レベルではありません(そして少し古いです)。アセンブリ言語では、コンピュータの指示にはニーモニック(覚えやすい名前)が与えられ、メモリアドレス(コンピュータ内の情報の一部を見つけるための指示)には名前を与えることができます。これらを第一世代言語、第二世代言語と呼ぶこともある。

1960年代には、アセンブリ言語は、ライブラリCOPY、マクロ(プログラムが実行される前に通常のコードに変換される「特別な」コードのビット)、実行プロシージャ(名前が与えられて後で保存される指示のセット)、変数(名前が与えられて後で保存される項目)のような新しいものをプログラムの外から追加することによって、より良いものになりました。これにより、複数のプロジェクトでいくつかのコードを使うことができるようになり、READ/WRITE/GET/PUTのようなコマンド(指示の名前)のおかげで、ハードウェア固有の問題(コンピュータの一種類にしか起こらない問題)を心配する必要がなくなりました。

アセンブリは、コードが高速であることが重要なシステムで使用されており、ユーザーがマシンが何をするかを正確に制御することができるので、組み込みシステムでも多く使用されています。

手続き型言語

1960年代後半、人々は手続き型言語を発明し始めました。これらの第三世代の言語(現在では高レベル言語と呼ばれているものの最初のいくつか)は、解決しようとしていることに関連した単語を持っていました。例えば、以下のようなものです。

  • COmmon Business Oriented Language (COBOL) - ファイル、移動、コピーなどの単語を使用します。
  • FORmula TRANslation (FORTRAN) - 数学的な単語や記号(文字を書いたりタイプしたりする際に使用する図形)を使用します。これは、主に科学と工学のために開発されました。
  • ALGOrithmic Language (ALGOL) - アルゴリズム (コンピュータに何をすべきかを伝える一連のステップ) を書くために作られた言語。FORTRAN のように数学的な単語や記号を使用します。
  • Programming Language One (PL/I) - みんなの役に立つはずだった。
  • 初心者のために作られた初心者のための万能記号命令コード(BASIC) - プログラミング。
  • C - 多くのことを行うためのプログラミング言語。デニス・リッチーは1969年から1973年までAT&Tベル研究所で働いていました。

オブジェクト指向プログラミング

多くの人が手続き型言語を使うようになってから、オブジェクト指向プログラミング言語を発明しました。これらの言語では、データとその「メソッド」(データを操作する方法)が一つの「オブジェクト」にまとめられています。リチャード・ストールマンのようなプログラマーの中には、手続き型言語よりもオブジェクト指向言語の方がコンピュータにアイデアを説明するのに適しているということに同意しない人もいます。

オブジェクト指向プログラミングは言語ではなくパラダイムであるため、人々はHLA(High Level Assembly)のようなオブジェクト指向アセンブリ言語を作ってきました。

宣言的パラダイム

同時に、宣言型のプログラミング言語を作っている人もいました。宣言的であることで有名な言語としては、SQL(テーブルに物を追加したり削除したりするための言語)があります。

関連ページ

  • マインドセット
  • タイプ別システム
  • チューリング完全性

質問と回答

Q:プログラミングパラダイムとは何ですか?


A:プログラミングパラダイムとは、プログラミング言語をその動作に基づいてグループ化する方法です。

Q:パラダイムの2つの主要なグループとは何ですか?


A: 命令型と宣言型の2つのグループがあります。

Q:命令型パラダイムと宣言型パラダイムはどのように違うのですか?


A: 命令型パラダイムは、副作用を許容したり、特定の順序で物事を実行しなければならないなど、コードの実行方法を見ます。一方、宣言型パラダイムは、コードを1つか2つにまとめる(あるいは多くの小さな断片にする)など、コードのグループ化方法を見ます。

Q:ある言語が命令型パラダイムと宣言型パラダイムの両方になることは可能ですか?


A:はい、言語は命令型パラダイムと宣言型パラダイムを同時に持つことができます。

Q:プログラミングパラダイムは、どのように言語をグループ化するのですか?


A:プログラミングパラダイムは、言語を「何をするか」によってグループ化します。コードがどのように実行され、どのようにグループ化され、どのような順序と断片でプログラムが構成されているかを見ます。

Q:プログラミングパラダイムには、命令型と宣言型以外にも種類があるのでしょうか?


A:はい、命令型と宣言型以外にもプログラミングパラダイムはあります。例えば、コードの実行方法を見るもの(副作用を認めるなど)もあれば、コードのまとめ方を見るもの(コードを1つまたは2つにまとめるなど)もあります。

Q:どの言語も1種類のプログラミングパラダイムにしか属さないのですか?


A:いいえ、すべての言語が1種類のプログラミングパラダイムだけに属しているわけではありません。いくつかの言語は複数の種類のパラダイムに属することができます。

AlegsaOnline.com - 2020 / 2023 - License CC3