Loading article…
プログラミング言語は、サポートされるパラダイムの数と種類によってグループ化できます。
パラダイムの要約
この記事に記載されているプログラミング パラダイムの簡潔なリファレンス。
- 並行プログラミング- 並行性のための言語構造を持ち、これにはマルチスレッド、分散コンピューティングのサポート、メッセージパッシング、共有リソース(共有メモリを含む)、またはフューチャーが含まれる場合があります。
- アクタープログラミング-環境に応じてローカルな決定を下すアクターによる同時計算(利己的または競争的な行動が可能)
- 制約プログラミング- 変数間の関係は制約(または制約ネットワーク)として表現され、許容される解決策を指示します(制約充足または単体アルゴリズムを使用)
- データフロープログラミング- データ値が変更された場合の数式の強制再計算(例:スプレッドシート)
- 宣言型プログラミング- 詳細な状態変化を指定せずに、計算が実行すべきことを記述します。命令型プログラミングと比較してください (関数型プログラミングと論理型プログラミングは、宣言型プログラミングの主要なサブグループです)
- 分散プログラミング- コンピュータネットワークを介して通信する複数の自律コンピュータをサポートする
- 関数型プログラミング- 数学関数の評価を使用し、状態と可変データを回避する
- ジェネリックプログラミング- 後で指定する型で記述されたアルゴリズムを使用し、パラメータとして提供される特定の型に応じて必要に応じてインスタンス化します。
- 命令型プログラミング– プログラムの状態を変更する明示的なステートメント
- 論理プログラミング– プログラミングに明示的な数学的論理を使用する
- メタプログラミング– 他のプログラム(または自分自身)をデータとして書き込んだり操作したりするプログラム、または実行時に行われる作業の一部をコンパイル時に行うプログラムの作成
- テンプレートメタプログラミング– コンパイラがテンプレートを使用して一時的なソースコードを生成し、コンパイラによって残りのソースコードとマージされてコンパイルされるメタプログラミング手法。
- リフレクティブプログラミング– プログラムが自らを変更または拡張するメタプログラミング手法
- オブジェクト指向プログラミング- データフィールドとメソッドで構成されるデータ構造とそれらの相互作用(オブジェクト)を使用してプログラムを設計します。
- パイプラインプログラミング– 元々何も設計されていなかった言語に、関数呼び出しをネストする構文を追加する単純な構文変更。
- ルールベースプログラミング- 知識ベースを構成し、エキスパートシステムや問題の推論と解決に使用できる経験則のネットワーク
- ビジュアルプログラミング– プログラム要素をテキストで指定するのではなく、グラフィカルに操作する(例:Simulink)。ダイアグラムプログラミングとも呼ばれる[1]
言語の概要
参照
注記
- ^ ランデブーとモニターのようなベース
- ^ abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai クラス ベース
- ^ abcde テンプレートのメタプログラミング
- ^ TPL データフローを使用したabc
- ^ ラムダのみのサポート(遅延関数型プログラミング)
- ^ abc Reactive Extensions (Rx) を使用する
- ^ 複数のディスパッチ、メソッドの組み合わせ
- ^ abcde アクタープログラミング
- ^ プロミス、ネイティブ拡張
- ^ Node.jsの cluster モジュールや child_process.fork メソッド、ブラウザ内の Web ワーカーなどを使用します。
- ^ abcd プロトタイプベース
- ^ Reactive Extensions (RxJS) の使用
- ^ Node.jsのイベントモジュール経由
- ^ ブラウザのネイティブEventTarget API経由
- ^ abc 純粋に機能的
- ^ パラメータ化されたクラス
- ^ 不変
- ^ 従来の単一ディスパッチではなく、複数のディスパッチ
- ^ Akka 2013-01-19 にWayback Machineでアーカイブ
引用
- ^ Bragg, SD; Driskill, CG (1994 年 9 月 20 ~ 22 日)。「ダイアグラム グラフィカル プログラミング言語と DoD-STD-2167A」。AUTOTESTCON '94 の議事録 (IEEEXplore)。米国電気電子技術者協会(IEEE) 。pp . 211 ~ 220。doi :10.1109/ AUTEST.1994.381508。ISBN 978-0-7803-1910-3. S2CID 62509261。
- ^ Ada リファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3、セクション 9: タスクと同期
- ^ Ada リファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3 付録 E: 分散システム
- ^ Ada リファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3、セクション 12: 汎用単位
- ^ Ada リファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3、セクション 6: サブプログラム
- ^ Ada リファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3、3.9 タグ付き型と型拡張
- ^ スレッドサポート
- ^ アトミックサポート
- ^ メモリモデル
- ^ ジオコード
- ^ システムC
- ^ ブースト.Iostreams
- ^ ブーリンク
- ^ 「AraRat」(PDF) 。 2019年8月19日時点のオリジナル(PDF)よりアーカイブ。2019年9月15日閲覧。
- ^ オープンMPI
- ^ ブースト.MPI
- ^ ブースト.MPL
- ^ LC++
- ^ Castor 2013-01-25 にWayback Machineでアーカイブ
- ^ リフレクトライブラリ
- ^ N3534
- ^ ブーストスピリット
- ^ Clojure - 並行プログラミング
- ^ Clojure - core.async
- ^ Clojure - 関数型プログラミング
- ^ Clojure - マクロ
- ^ Clojure - core.logic
- ^ Clojure - スレッドマクロガイド
- ^ 「ライトテーブル」. 2019-04-08.
- ^ マルチメソッドと階層
- ^ エージェントと非同期アクション
- ^ 「並行性」。CLiki。
- ^ [1] CLの拡張機能による制約プログラミング
- ^ [2] データフロー拡張
- ^ [3] 組み込みのメタプログラミングを使用してDSLを作成することにより、宣言型言語の一部である関数型、制約型、論理型パラダイムに関する注記も参照してください。
- ^ [4] 言語拡張によるMPIなど
- ^ マクロを使用したテンプレートメタプログラミング (C++ を参照)
- ^ [5] [6] [7]言語拡張として実装されたProlog
- ^ Common Lisp オブジェクト システムについては、CLOS (Common Lisp オブジェクト システム) に関する Wikipedia の記事を参照してください。
- ^ ユーザーが短いマクロで実装した実装例
- ^ - Common Lisp をベースにしたビジュアルプログラミングツール
- ^ [8] ルールベースプログラミング拡張
- ^ [9] 2018年4月26日にMeta Object Protocolを通じてWayback Machineにアーカイブされました
- ^ D 言語機能表
- ^ Phobos 標準アルゴリズム
- ^ D言語の文字列ミックスイン
- ^ Little JavaScripter は、関数型言語である Scheme との基本的な共通性を示しています。
- ^ JavaScript におけるオブジェクト指向プログラミング (2019 年 2 月 10 日アーカイブ、Wayback Machineより) では、JavaScript におけるオブジェクト指向プログラミング手法の概要が説明されています。
- ^ 「React – ユーザーインターフェースを構築するための JavaScript ライブラリ」 2019-04-08。
- ^ 「TNG-Hooks」。GitHub。2019-04-08。
- ^ 「Lodash ドキュメント」 2019-04-08.
- ^ “mori”. 2019年4月8日.
- ^ 「ライトテーブル」. 2019-04-08.
- ^ 「TNG-Hooks」。GitHub。2019-04-08。
- ^ 「Prolog埋め込み」Haskell.org。
- ^ 「関数型リアクティブプログラミング」。HaskellWiki。
- ^ クラウドハスケル
- ^ 「Template Haskell」。HaskellWiki 。
- ^ 「Logict: バックトラッキング論理プログラミングモナド」Haskell.org。
- ^ Kollmansberger, Steve; Erwig, Martin (2006 年 5 月 30 日). 「Haskell ルール: Haskell へのルール システムの埋め込み」(PDF) .オレゴン州立大学.
- ^ https://jcp.org/en/jsr/detail?id=331 JSR 331: 制約プログラミング API
- ^ https://github.com/GoogleCloudPlatform/DataflowJavaSDK Google Cloud Platform データフロー SDK
- ^ “JuliaOpt/JuMP.jl”. GitHub . JuliaOpt. 2020年2月11日. 2020年2月12日閲覧。
- ^ 「GitHub - MikeInnes/DataFlow.jl」。GitHub。2019年1月15日。
- ^ 「GitHub - JuliaGizmos/Reactive.jl: Julia のリアクティブ プログラミング プリミティブ」。GitHub。2018年12 月 28 日。
- ^ https://github.com/davidanthoff/Query.jl Julia でほぼ何でもクエリする
- ^ https://github.com/lilinjn/LilKanren.jl Julia での Kanren 実装のコレクション
- ^ 「GitHub - abeschneider/PEGParser.jl: Julia 用 PEG パーサー」。GitHub。2018年12 月 3 日。
- ^ 「GitHub - gitfoxi/Parsimonious.jl: Julia 用の PEG パーサー ジェネレーター」。GitHub。2017年8 月 3 日。
- ^ レイジー https://github.com/MikeInnes/Lazy.jl
- ^ 「ループ反復を並列で実行」。mathworks.com。2016年10 月 21 日閲覧。
- ^ 「制約の記述」。mathworks.com。2016年10 月 21 日閲覧。
- ^ 「SimEvents を使い始める」。mathworks.com。2016年10 月 21 日閲覧。
- ^ 「ループ反復を並列で実行」。mathworks.com。2016年10 月 21 日閲覧。
- ^ 「テキスト内の MATLAB 式の実行 - MATLAB eval」。mathworks.com。2016年10 月 21 日閲覧。
- ^ 「オブジェクトのクラスの判別」。mathworks.com。2016年10 月 21 日閲覧。
- ^ 「クラスメタデータ」。mathworks.com 。2016年10月21日閲覧。
- ^ 「オブジェクト指向プログラミング」。mathworks.com 。2016年10月21日閲覧。
- ^ 「Simulink」. mathworks.com . 2016年10月21日閲覧。
- ^ インタプリタベースのスレッド
- ^ 高階 Perl
- ^ PHPマニュアル、第17章 関数
- ^ PHP マニュアル、第 19 章 クラスとオブジェクト (PHP 5)
- ^ PHP マニュアル、無名関数
- ^ 「Python における並列処理とマルチプロセッシング」。Python Wiki。2016年10 月 21 日閲覧。
- ^ 「threading — 高レベルスレッドインターフェース」。docs.python.org 。 2016年10月21日閲覧。
- ^ "python-constraint". pypi.python.org . 2016年10月21日閲覧。
- ^ 「DistributedProgramming」。Python Wiki 。 2016年10月21日閲覧。
- ^ 「第9章 メタプログラミング」chimera.labs.oreilly.com。2016年10月23日時点のオリジナルよりアーカイブ。2016年10月22日閲覧。
- ^ 「メタプログラミング」。readthedocs.io 。 2016年10月22日閲覧。
- ^ 「PEP 443 – シングルディスパッチジェネリック関数」. python.org . 2016年10月22日閲覧。
- ^ 「PEP 484 – 型ヒント」。python.org 。 2016年10月22日閲覧。
- ^ "PyDatalog" . 2016年10月22日閲覧。
- ^ 「ライトテーブル」. 2019-04-08.
- ^ 「フューチャーバース」.
- ^ 「将来のバッチツール」。
- ^ 「Magrittr: R 用の前方パイプ演算子」。cran.r-project.org\access-date=2017 年 7 月 13 日。2020 年 11 月 17 日。
- ^ ラケットガイド: 並行性と同期
- ^ ロゼットガイド
- ^ FrTime: リアクティブプログラムのための言語
- ^ ラケットガイド:配布場所
- ^ レイジーラケット
- ^ チャネルとその他のメカニズム
- ^ 「問題解決モジュール」。
- ^ フィードオペレーター
- ^ https://github.com/perl6/doc/issues/1744#issuecomment-360565196 Cro モジュール
- ^ 「メタプログラミング: 何、なぜ、どのように」 2011-12-14.
- ^ https://perl6advent.wordpress.com/2009/12/18/day-18-roles/ パラメータ化されたロール
- ^ 「メタオブジェクトプロトコル(MOP)」。
- ^ https://docs.perl6.org/language/classtut クラスとロール
- ^ 「Rust マクロガイド」。Rust。2015年1 月 19 日閲覧。
- ^ 「Rust コンパイラ プラグイン ガイド」。Rust。2015年1月 19 日閲覧。
- ^ Rustリファレンス §6.1.3.1
- ^ Scalaプログラミング言語の概要
- ^ Scala言語仕様
- ^ 「Tclプログラミング/入門」。en.wikibooks.org 。 2016年10月22日閲覧。
- ^ 「TCLLIB - Tcl 標準ライブラリ: snitfaq」。sourceforge.net。2016年10 月 22 日閲覧。
- ^ プログラミング言語の専門家のためのメモ、Wolfram 言語ドキュメント。
- ^ 外部プログラム、Wolfram言語ドキュメント。
参考文献
- Jim Coplien著『C++ 向けマルチパラダイム設計』、Addison-Wesley Professional、1998 年。
