プログラミングパラダイム
- العربية
- Asturianu
- Azərbaycanca
- Беларуская (тарашкевіца)
- Български
- বাংলা
- Bosanski
- Català
- Čeština
- Dansk
- Deutsch
- Ελληνικά
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- Galego
- עברית
- Magyar
- Bahasa Indonesia
- Italiano
- Qaraqalpaqsha
- 한국어
- Latina
- Latviešu
- Македонски
- മലയാളം
- Bahasa Melayu
- Mirandés
- Nederlands
- Norsk bokmål
- Polski
- Português
- Română
- Русский
- Srpskohrvatski / српскохрватски
- Simple English
- Shqip
- Српски / srpski
- Svenska
- Kiswahili
- ไทย
- Türkçe
- Українська
- اردو
- Tiếng Việt
- 中文
- 粵語
- 英語版記事を日本語へ機械翻訳したバージョン(Google翻訳)。
- 万が一翻訳の手がかりとして機械翻訳を用いた場合、翻訳者は必ず翻訳元原文を参照して機械翻訳の誤りを訂正し、正確な翻訳にしなければなりません。これが成されていない場合、記事は削除の方針G-3に基づき、削除される可能性があります。
- 信頼性が低いまたは低品質な文章を翻訳しないでください。もし可能ならば、文章を他言語版記事に示された文献で正しいかどうかを確認してください。
- 履歴継承を行うため、要約欄に翻訳元となった記事のページ名・版について記述する必要があります。記述方法については、Wikipedia:翻訳のガイドライン#要約欄への記入を参照ください。
- 翻訳後、
{{翻訳告知|en|Programming paradigm|...}}
をノートに追加することもできます。 - Wikipedia:翻訳のガイドラインに、より詳細な翻訳の手順・指針についての説明があります。
プログラミングパラダイム(英: programming paradigm)とは、プログラミングにおける模範である。
概要
[編集 ]プログラミングパラダイムは、プログラマにプログラムの見方を与えるものと言える。例えばオブジェクト指向プログラミングでは、プログラムとはオブジェクトを作りそれを管理するもの。関数型言語では、状態を持たない関数の評価の連続。
プログラミング言語が違えば、対応できるパラダイムも違ってくる。SmalltalkやJavaは、手続き型やオブジェクト指向、Haskellは、関数プログラミング、というように、比較的少数のパラダイムに対応している。一方、多数のパラダイムに対応した言語(マルチパラダイムプログラミング言語)もある。
多くのプログラミングパラダイムには禁じ手がある。純粋な関数型プログラミングでは、副作用があってはならない。構造化プログラミングでは、gotoの無制限な利用が戒められる。特にこの理由により、古いスタイルに慣れた者からは、よく非現実的または過剰に厳密なものと見なされる。しかし、こうした特定のテクニックを避けることで、プログラミング言語の一般の法則に制約されず、プログラムの正確さ(または単にその動作の理解)についての法則を証明しやすくする。
マルチパラダイムプログラミング言語が登場してから、プログラミングパラダイムとプログラミング言語との関連は複雑になっている。たとえば、C++は手続き型プログラミング、ジェネリックプログラミング、オブジェクト指向プログラミングに対応するよう設計されているが、設計時には個々の部分毎にどのパラダイムを使うか選ぶ必要に迫られる。あるプログラムは全て手続き型プログラミングで作り、またあるプログラムは全てオブジェクト指向で作り、また別のプログラムは両方を混在して作るという具合である。
例
[編集 ]比較されるものは横に並べてある。括弧内はそれを用いている例である。
- 構造化プログラミング - 非構造化プログラミング
- 命令型プログラミング - 宣言型プログラミング
- メッセージ送信プログラミング(アクターモデル)
- 手続き型プログラミング - 非手続き型言語
- イベント駆動型プログラミング
- シグナルプログラミング
- スタック指向プログラミング
- クラスベースプログラミング - プロトタイプベースプログラミング ※(注記)オブジェクト指向プログラミングの中での分類
- 並行論理プログラミング
- 制約プログラミング
- 論理プログラミング
- 解集合プログラミング(en: Answer Set Programming)
- 制約論理プログラミング
- 並行プログラミング
- 並行制約プログラミング
- 関数型プログラミング
- コンポーネント指向プログラミング (OLE)
- アスペクト指向プログラミング (AspectJ)
- 契約プログラミング
- リフレクティブプログラミング
- データフロープログラミング
- リアクティブプログラミング (英語版) (スプレッドシート)
関連項目
[編集 ]コンピュータ・プログラミング言語の関連項目 | |
---|---|
言語水準 | |
言語処理系 | |
言語分類 | |
その他 | |
関連項目 |
ハードウェア | |
---|---|
コンピュータシステムの構造 | |
ネットワーク | |
ソフトウェアの構造 | |
ソフトウェア記法 (英語版) とツール | |
ソフトウェア開発 | |
計算理論 | |
アルゴリズム | |
コンピューティングの数学 | |
情報システム | |
セキュリティ | |
ヒューマンコンピュータ インタラクション | |
並行性 | |
人工知能 | |
機械学習 | |
グラフィックス | |
応用コンピューティング | |
この項目は、コンピュータに関連した書きかけの項目 です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。