プログラミングパラダイム
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "プログラミングパラダイム" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2015年12月)

プログラミングパラダイム(: programming paradigm)とは、プログラミングにおける模範である。
概要

プログラミングパラダイムは、プログラマにプログラムの見方を与えるものと言える。例えばオブジェクト指向プログラミングでは、プログラムとはオブジェクトを作りそれを管理するもの。関数型言語では、状態を持たない関数評価の連続。

プログラミング言語が違えば、対応できるパラダイムも違ってくる。SmalltalkJavaは、手続き型やオブジェクト指向、Haskellは、関数プログラミング、というように、比較的少数のパラダイムに対応している。一方、多数のパラダイムに対応した言語(マルチパラダイムプログラミング言語)もある。

多くのプログラミングパラダイムには禁じ手がある。純粋な関数型プログラミングでは、副作用があってはならない。構造化プログラミングでは、gotoの無制限な利用が戒められる。特にこの理由により、古いスタイルに慣れた者からは、よく非現実的または過剰に厳密なものと見なされる。しかし、こうした特定のテクニックを避けることで、プログラミング言語の一般の法則に制約されず、プログラムの正確さ(または単にその動作の理解)についての法則を証明しやすくする。

マルチパラダイムプログラミング言語が登場してから、プログラミングパラダイムとプログラミング言語との関連は複雑になっている。たとえば、C++手続き型プログラミングジェネリックプログラミングオブジェクト指向プログラミングに対応するよう設計されているが、設計時には個々の部分毎にどのパラダイムを使うか選ぶ必要に迫られる。あるプログラムは全て手続き型プログラミングで作り、またあるプログラムは全てオブジェクト指向で作り、また別のプログラムは両方を混在して作るという具合である。

この節には独自研究が含まれているおそれがあります。問題箇所を検証出典を追加して、記事の改善にご協力ください。議論はノートを参照してください。(2017年1月)

比較されるものは横に並べてある。括弧内はそれを用いている例である。

構造化プログラミング - 非構造化プログラミング

命令型プログラミング - 宣言型プログラミング

メッセージ送信プログラミング(アクターモデル

手続き型プログラミング - 非手続き型言語

イベント駆動型プログラミング

シグナルプログラミング

スタック指向プログラミング

クラスベースプログラミング - プロトタイプベースプログラミングオブジェクト指向プログラミングの中での分類

並行論理プログラミング

制約プログラミング

論理プログラミング

解集合プログラミング(en:Answer Set Programming)

制約論理プログラミング

並行プログラミング

並行制約プログラミング

関数型プログラミング

コンポーネント指向プログラミング (OLE)

アスペクト指向プログラミング (AspectJ)

契約プログラミング

リフレクティブプログラミング

データフロープログラミング

リアクティブプログラミング(英語版) (スプレッドシート)

関連項目

抽象化 (計算機科学)

Expression problem










コンピュータ・プログラミング言語
低水準言語

機械語

アセンブリ言語

高水準言語

1950年代

FORTRAN

ALGOL

RPG

COBOL

1960年代

LISP

CPL

BASIC

PL/I

APL

BCPL

Simula

LOGO

B

1970年代

Forth

Pascal

C

Prolog

Smalltalk

Scheme

ML

AWK

Ada

1980年代

C++

Objective-C

Common Lisp

Eiffel

Erlang

Perl

Mathematica

J


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:40 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef