| プログラミング言語の比較 |
|---|
プログラミング言語は、機械(多くの場合、コンピュータ)の動作を制御するために使用されます。自然言語と同様に、プログラミング言語は構文と意味の規則に従います。
プログラミング言語は数千種類[ 1 ]あり、毎年新しい言語が生まれています。少数の人々に使われるほど普及する言語はほとんどありませんが、プロのプログラマーはキャリアの中で数十もの言語を使用することもあります。
PerlやStandard ML(その名称にもかかわらず)のように広く使用されているプログラミング言語でさえ、ほとんどのプログラミング言語は国際標準(または国家標準)によって標準化されていません。著名な標準化されたプログラミング言語には、 ALGOL、C、C++ 、JavaScript( ECMAScriptという名称)、Smalltalk、Prolog、Common Lisp、Scheme(IEEE標準)、ISLISP、Ada、Fortran、COBOL、SQL、XQueryなどがあります。
一般的な比較
以下の表は、一般的に使用されているプログラミング言語の一般情報と技術情報を比較したものです。詳細については、各言語の記事をご覧ください。
| 言語 | 本来の目的 | 命令形 | オブジェクト指向 | 機能的 | 手続き型 | ジェネリック | 反射的な | 他のパラダイム | 標準化された |
|---|---|---|---|---|---|---|---|---|---|
| 1C:エンタープライズプログラミング言語 | アプリケーション、RAD、ビジネス、一般、Web、モバイル | はい | いいえ | はい | はい | はい | はい | オブジェクトベース、プロトタイプベースプログラミング | いいえ |
| アクションスクリプト | アプリケーション、クライアント側、Web | はい | はい | はい | はい | いいえ | いいえ | プロトタイプベース | はい1999-2003、ActionScript 1.0 と ES3、ActionScript 2.0 と ES3 および部分的な ES4 ドラフト、ActionScript 3.0 と ES4 ドラフト、ActionScript 3.0 と E4X |
| エイダ | アプリケーション、組み込み、リアルタイム、システム | はい | はい[ 2 ] | いいえ | はい[ 3 ] | はい[ 4 ] | いいえ | 並行、[ 5 ]分散[ 6 ] | はい1983年、2005年、2012年、ANSI、ISO、GOST 27831-88 [ 7 ] |
| アルドール | 高度にドメイン固有のシンボリックコンピューティング | はい | はい | はい | いいえ | いいえ | いいえ | いいえ | |
| アルゴル58 | 応用 | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| アルゴル60 | 応用 | はい | いいえ | いいえ | はい | はい | いいえ | はい1960年、IFIP WG 2.1、ISO [ 8 ] | |
| アルゴル68 | 応用 | はい | いいえ | はい | はい | はい | いいえ | 同時 | はい1968年、IFIP WG 2.1、GOST 27974-88、[ 9 ] |
| アテジPX | 並列アプリケーション | いいえ | はい | いいえ | いいえ | いいえ | いいえ | 円周計算 | いいえ |
| APL | アプリケーション、データ処理 | はい | はい | はい | はい | はい | はい | 配列指向、暗黙の | はい1989、ISO |
| アセンブリ言語 | 一般的な | はい | いいえ | いいえ | いいえ | いいえ | いいえ | 任意の構文は通常、ターゲットプロセッサに関連する非常に具体的なものです | はい1985 IEEE 694-1985 [ 10 ] |
| オートホットキー | GUI自動化(マクロ)、高度にドメイン特化 | はい | はい[ 11 ] | いいえ | はい | いいえ | いいえ | いいえ | |
| オートイット | GUI自動化(マクロ)、高度にドメイン特化 | はい | いいえ | いいえ | はい | いいえ | いいえ | いいえ | |
| バレリーナ | 統合、アジャイル、サーバーサイド、一般 | はい | はい | はい | はい | いいえ | いいえ | 並行性、トランザクション性、静的かつ強い型付け、図式的・視覚的 | Ballerina言語仕様による事実上の標準[ 12 ] |
| バッシュ | シェル、スクリプト | はい | いいえ | いいえ | はい | いいえ | いいえ | オプションでPOSIX.2 [ 13 ] | |
| ベーシック | アプリケーション、教育 | はい | いいえ | いいえ | はい | いいえ | いいえ | はい1983、ANSI、ISO、ECMA | |
| ビーンシェル | アプリケーション、スクリプト | はい | はい | はい | いいえ | いいえ | はい | いいえ進行中、JCP [ 14 ] | |
| 至福 | システム | いいえ | いいえ | いいえ | はい | いいえ | いいえ | いいえ | |
| ブリッツマックス | アプリケーション、ゲーム | はい | はい | いいえ | はい | いいえ | はい | いいえ | |
| ブー | アプリケーション、ゲームスクリプト | いいえ | はい | いいえ | いいえ | いいえ | いいえ | いいえ | |
| C | アプリケーション、システム、[ 15 ]汎用、低レベル操作 | はい | いいえ | いいえ | はい | いいえ | いいえ | はい1989、ANSI C89、ISO/IEC C90、ISO/IEC C95、ISO/IEC C99、ISO/IEC C11、ISO/IEC C17、ISO/IEC C2x [ 16 ] | |
| C++ | アプリケーション、システム | はい | はい | はい | はい | はい | はい | 同時 | はい1998、ISO/IEC C++98、ISO/IEC C++03、ISO/IEC C++11、ISO/IEC C++14、ISO/IEC C++17、ISO/IEC C++20、ISO/IEC C++23、ISO/IEC C++26 [ 17 ] |
| C# | アプリケーション、RAD、ビジネス、クライアントサイド、一般、サーバーサイド、Web、ゲームプログラミング | はい | はい | はい[ 18 ] | はい | はい | はい | 同時進行、構造化 | はい2000、ECMA、ISO [ 19 ] |
| 炭素 | Google がパフォーマンス重視のソフトウェア向けに設計した C++の後継実験言語 | はい | はい | はい | はい | はい | いいえ | マルチパラダイム | いいえ |
| クラリオン | 一般、ビジネス、ウェブ | はい | はい | はい[ 20 ] | いいえ | いいえ | いいえ | 未知 | |
| クリーン | 一般的な | いいえ | いいえ | はい | いいえ | はい | いいえ | いいえ | |
| クロージュア | 一般的な | いいえ | いいえ | はい | いいえ | いいえ | いいえ | 同時 | いいえ |
| CLU | 一般的な | はい | はい | いいえ | はい | はい | いいえ | いいえ | |
| コボル | アプリケーション、ビジネス | はい | はい | いいえ | はい | いいえ | いいえ | はい1968 ANSI X3.23、1974、1985。 ISO/IEC 1989:1985、2002、2014、2023 | |
| コブラ | アプリケーション、ビジネス、一般、ウェブ | はい | はい | はい | いいえ | はい | はい | いいえ | |
| コールドフュージョン(CFML) | ウェブ | いいえ | はい | いいえ | はい | いいえ | いいえ | いいえ | |
| コモンリスプ | 一般的な | はい | はい | はい | はい | はい | はい | 拡張可能な構文、配列指向、構文マクロ、多重ディスパッチ、並行 | はい1994、ANSI |
| コマル80 | 教育 | はい | いいえ | いいえ | はい | いいえ | いいえ | いいえ | |
| 結晶 | 汎用 | はい | はい[ 21 ] | はい | はい | はい[ 22 ] | いいえ | 同時発生[ 23 ] | いいえ |
| カレー | 応用 | いいえ | いいえ | はい | いいえ | はい | いいえ | 遅延評価、非決定性 | Curry Language Reportによる 事実上の標準 |
| シトン | アプリケーション、一般、数値計算 | はい | はい | はい | いいえ | いいえ | はい | アスペクト指向 | いいえ |
| D | アプリケーション、システム | はい | はい | はい | はい | はい | はい | 生成的、同時的 | いいえ |
| ダーツ | アプリケーション、ウェブ、サーバーサイド、モバイル、IoT | はい | はい | はい | はい | はい | いいえ | 構造化された | はいECMA-408規格 |
| Delphi、Object Pascal | 汎用 | はい | はい | はい | はい | はい | はい | 未知 | |
| ディラン | 応用 | いいえ | はい | はい | いいえ | いいえ | いいえ | いいえ | |
| エッフェル | 一般、アプリケーション、ビジネス、クライアント側、サーバー側、Web (EWF) | はい | はい | はい[ 24 ] [ 25 ] | いいえ | はい | はい、エルル-G | 分散SCOOP、ボイドセーフ | はい2005、ECMA、ISO [ 26 ] |
| エラン | 教育 | はい | いいえ | いいえ | はい | いいえ | いいえ | 構造化された段階的な改良 | いいえ |
| エリクサー | アプリケーション、分散 | いいえ | いいえ | はい | いいえ | いいえ | はい | 同時実行、分散 | いいえ |
| アーラン | アプリケーション、分散 | いいえ | いいえ | はい | いいえ | いいえ | はい | 同時実行、分散 | いいえ |
| ユーフォリア | 応用 | いいえ | いいえ | いいえ | はい | いいえ | はい | いいえ | |
| 要素 | 一般的な | はい | いいえ | 次のように見ることができる | いいえ | はい | はい | スタック指向 | いいえ |
| FP | いいえ | いいえ | はい | いいえ | いいえ | いいえ | いいえ | ||
| F# | 応用 | はい | はい | はい | はい | はい | はい | いいえ | |
| フォース | 一般的な | はい | いいえ | いいえ | はい | いいえ | はい | スタック指向 | はい1994、ANSI |
| フォートラン | アプリケーション、数値計算 | はい | はい | はい | はい | はい | いいえ | 配列ベース、ベクトル化、並行、ネイティブ分散/共有メモリ並列処理 | はい1966、ANSI 66、ANSI 77、MIL-STD-1753、ISO 90、ISO 95、ISO 2003、ISO/IEC 1539-1:2010 (2008)、ISO/IEC JTC1/SC22/WG5 N2145 (2018) |
| フリーベーシック | アプリケーション、数値計算 | はい | はい | いいえ | はい | はい | いいえ | いいえ | |
| ガンバス | 応用 | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | |
| ゲームメーカー言語 | アプリケーション、ゲームプログラミング | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | |
| GLベーシック | アプリケーション、ゲーム | はい | はい | いいえ | はい | いいえ | いいえ | シンプルなオブジェクト指向 | いいえ |
| 行く | アプリケーション、ウェブ、サーバーサイド | はい | [ 27 ]と見ることができる | [ 28 ]と見ることができる | はい | はい | はい | 同時 | Go言語仕様による事実上の標準 |
| ゴス | アプリケーション、一般、スクリプト、Web | はい | はい | いいえ | いいえ | はい | はい | いいえ | |
| グラフトーク | 応用 | いいえ | はい | いいえ | いいえ | いいえ | いいえ | 論理 | いいえ |
| グルーヴィー | アプリケーション、一般、スクリプト、Web | はい | はい | はい | はい | はい | はい | メタプログラミング | いいえ進行中、JCP [ 29 ] |
| 港 | アプリケーション、ビジネス、データ処理、一般、ウェブ | はい | はい | はい | はい | はい | はい | 宣言的 | いいえ |
| ハスケル | 応用 | いいえ | いいえ | はい | いいえ | はい | いいえ | 遅延評価 | Yes 2010、Haskell 2010 [ 30 ] |
| ハックス | アプリケーション、一般、ウェブ | はい | はい | はい | いいえ | はい | はい | いいえ | |
| ハイパートーク | アプリケーション、RAD、一般 | はい | いいえ | いいえ | はい | いいえ | はい | 弱い型付け | 未知 |
| イオ | アプリケーション、ホスト駆動型スクリプト | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | |
| IPL | 一般的な | いいえ | いいえ | はい | いいえ | いいえ | いいえ | 未知 | |
| ISLISP | 一般的な | はい | はい | はい | いいえ | はい | いいえ | はい1997、2007、ISO | |
| J | アプリケーション、データ処理 | はい | はい | はい | はい | はい | はい | 配列指向、関数レベル、暗黙的、並行 | いいえ |
| ジェイド | アプリケーション、分散 | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | |
| ジャワ | アプリケーション、ビジネス、クライアントサイド、一般、モバイル開発、サーバーサイド、ウェブ | はい | はい | はい | はい | はい | はい | 同時 | Java言語仕様による事実上の標準 |
| JavaScript | クライアント側、サーバー側、ウェブ | はい | はい | はい | はい | いいえ | はい | プロトタイプベース | はいECMA-262標準 |
| 喜び | 研究 | いいえ | いいえ | はい | いいえ | いいえ | いいえ | スタック指向 | いいえ |
| jq | 「JSON用のawk」 | いいえ | いいえ | はい | いいえ | いいえ | いいえ | 暗黙的、バックトラッキング、ストリーミング、PEG | いいえ |
| ジュリア | 一般的な技術コンピューティング | はい | [ 31 ] [ 32 ]と見ることができる | はい | はい | はい | はい | 多重ディスパッチ、メタ、スカラーおよび配列指向、並列、同時実行、分散(「クラウド」) | Julia ドキュメントによる事実上の標準[ 33 ] |
| K | データ処理、ビジネス | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | 配列指向、暗黙の | 未知 |
| コトリン | アプリケーション、一般、モバイル開発、サーバーサイド、クライアントサイド、ウェブ、スクリプト、[ 34 ]ドメイン固有[ 35 ] | はい | はい | はい | はい | はい | はい[ 36 ] | 同時発生[ 37 ] | Kotlin言語仕様による事実上の標準 |
| Ksh | シェル、スクリプト | はい | はい | いいえ | はい | いいえ | いいえ | 複数のバリエーション、カスタムプログラム可能、動的ロード可能なモジュール | オプションでPOSIX.2 [ 13 ] |
| LabVIEW(G) | アプリケーション、産業計測オートメーション | はい | はい | はい | いいえ | いいえ | いいえ | データフロー、ビジュアル | いいえ |
| Lisp | 一般的な | いいえ | いいえ | はい | いいえ | いいえ | いいえ | 未知 | |
| ライブコード | アプリケーション、RAD、一般 | はい | はい | いいえ | はい | いいえ | はい | 弱い型付け | いいえ |
| ログトーク | 人工知能の応用 | いいえ | はい | いいえ | いいえ | いいえ | はい | 論理 | いいえ |
| リンデンスクリプト言語(LSL) | 仮想世界コンテンツのスクリプトとアニメーション | はい | いいえ | いいえ | はい | いいえ | いいえ | スクリプトはワールド内のオブジェクトに存在する | 事実上のリファレンスはLSLのSecond Life実装である。[ 38 ] |
| ルア | アプリケーション、埋め込みスクリプト | はい | はい[ 39 ] | はい | はい | いいえ | はい | アスペクト指向、プロトタイプベース | いいえ[ 40 ] |
| メープル | 記号計算、数値計算 | はい | はい | はい | はい | いいえ | いいえ | 分散型 | いいえ |
| マセマティカ | 象徴言語 | はい | はい | はい | はい | はい | はい | ロジック、分散 | いいえ |
| MATLAB | 高度にドメイン特化した数値計算 | はい | はい | いいえ | はい | いいえ | いいえ | いいえ | |
| モジュラ2 | アプリケーション、システム | はい | いいえ | いいえ | いいえ | はい | いいえ | はい1996年、ISO [ 41 ] | |
| モジュラ3 | 応用 | はい | はい | いいえ | いいえ | はい | いいえ | いいえ | |
| おたふく風邪(M) | 一般、アプリケーション、データベース | はい | 次期規格に承認 | いいえ | はい | 部分的間接参照とXecute | はい | 同時実行、マルチユーザー、NoSQL、トランザクション処理 | はい1977 ANSI、1995、ISO 2020 |
| ニム | アプリケーション、一般、ウェブ、スクリプト、システム | はい | はい | はい | はい | はい | はい | 多重ディスパッチ、並行、メタ | いいえ |
| オベロン | アプリケーション、システム | はい | はい | いいえ | いいえ | いいえ | いいえ | いいえ | |
| オブジェクトパスカル | アプリケーション、一般、モバイルアプリ、ウェブ | はい | はい | いいえ | はい | はい | はい | 構造化された | いいえ |
| オブジェクティブC | アプリケーション、一般 | はい | はい | いいえ | はい | いいえ | はい | 同時 | いいえ |
| OCaml | アプリケーション、一般 | はい | はい | はい | はい | はい | いいえ | いいえ | |
| オッカム | 一般的な | はい | いいえ | いいえ | はい | いいえ | いいえ | 同時実行型、プロセス指向 | いいえ |
| オパ | ウェブアプリケーション | はい | いいえ | はい | いいえ | はい | いいえ | 分散型 | いいえ |
| オープンリスプ | 汎用組み込みLispエンジン | はい | はい | はい | いいえ | はい | いいえ | オプションで ISLISP | |
| オキシゲン | 応用 | はい | はい | いいえ | いいえ | はい | いいえ | いいえ | |
| オズ・モーツァルト | アプリケーション、配布、教育 | はい | はい | はい | いいえ | いいえ | いいえ | 並行、ロジック | いいえ |
| パスカル | アプリケーション、教育 | はい | いいえ | いいえ | はい | いいえ | いいえ | はい1983年、ISO [ 42 ] | |
| パール | アプリケーション、スクリプト、テキスト処理、Web | はい | はい | はい | はい | はい | はい | いいえ | |
| PHP | サーバーサイド、ウェブアプリケーション、ウェブ | はい | はい[ 43 ] | はい[ 44 ] | はい | いいえ | はい | 言語仕様とコメント要求(RFC)による 事実上の標準 | |
| PL/I | 応用 | はい | はい | いいえ | はい | いいえ | いいえ | はい1969、ECMA-50 (1976) | |
| プラス | アプリケーション、システム開発 | はい | いいえ | いいえ | はい | いいえ | いいえ | いいえ | |
| ポストスクリプト | グラフィック、ページの説明 | はい | いいえ | いいえ | はい | いいえ | いいえ | 連結型、スタック指向 | PostScriptリファレンスマニュアルによる事実上の標準[ 45 ] |
| パワーシェル | 管理、アプリケーション、一般、スクリプト | はい | はい | はい | はい | いいえ | はい | パイプライン | いいえ |
| プロローグ | アプリケーション、人工知能 | いいえ | いいえ | はい | はい | いいえ | はい | 論理、宣言的 | はい1995、ISO/IEC 13211-1:1995、TC1 2007、TC2 2012、TC3 2017 |
| ピュアベーシック | 応用 | はい | いいえ | いいえ | はい | いいえ | いいえ | いいえ | |
| パイソン | アプリケーション、一般、ウェブ、スクリプト、人工知能、科学計算 | はい | はい | はい | はい | はい | はい | アスペクト指向 | Python Enhancement Proposals (PEP) による 事実上の標準 |
| R | アプリケーション、統計 | はい | はい | はい | はい | いいえ | はい | いいえ | |
| ラケット | 教育、一般、スクリプト | はい | はい | はい | はい | いいえ | はい | モジュラー、ロジック、メタ | いいえ |
| 楽 | スクリプト、テキスト処理、グルー | はい | はい | はい | はい | はい | はい | アスペクト指向、配列、遅延評価、多重ディスパッチ、メタプログラミング | いいえ |
| リアルベーシック | 応用 | いいえ | いいえ | いいえ | はい | いいえ | いいえ | 未知 | |
| レボル | 分散型 | はい | はい | はい | はい | いいえ | はい | 方言 | いいえ |
| レックス | スクリプト | はい | はい(NetRexxおよびObject REXX方言) | いいえ | はい | いいえ | いいえ | はい1996 (ANSI X3.274-1996) | |
| ロールプレイング | アプリケーション、システム | はい | いいえ | いいえ | はい | いいえ | いいえ | いいえ | |
| 指輪 | 応用 | はい | はい | はい | はい | はい | はい | メタプログラミング、宣言型、自然言語 | いいえ |
| ルビー | アプリケーション、スクリプト、Web | はい | はい | はい | いいえ | いいえ | はい | アスペクト指向 | はい2011(JIS X 3017)、2012(ISO/IEC 30170) |
| さび | アプリケーション、サーバーサイド、システム、ウェブ | はい | [ 46 ]と見ることができる | はい | はい | はい | いいえ[ 47 ] | 同時 | 公式Rustリリースによる事実上の標準 |
| S | アプリケーション、統計 | はい | はい | はい | はい | いいえ | いいえ | いいえ | |
| S-ラング | アプリケーション、数値、スクリプト | はい | いいえ | いいえ | はい | いいえ | いいえ | いいえ | |
| スカラ | アプリケーション、一般、並列、分散、Web | はい | はい | はい | いいえ | はい | はい | データ指向プログラミング、メタプログラミング | Scala言語仕様(SLS)による 事実上の標準 |
| スキーム | 教育、一般 | はい | いいえ | はい | いいえ | いいえ | いいえ | メタ、拡張可能な構文 | デファクト1975-2013、R 0 RS、R 1 RS、R 2 RS、R 3 RS、R 4 RS、R 5 RS、R 6 RS、R 7 RS スモールエディション[ 48 ] [ 49 ] |
| シード7 | アプリケーション、一般、スクリプト、Web | はい | はい | いいえ | いいえ | はい | はい | マルチパラダイム、拡張可能、構造化 | いいえ |
| シミュラ | 教育、一般 | はい | はい | いいえ | いいえ | いいえ | いいえ | 離散イベントシミュレーション、マルチスレッド(準並列)プログラム実行 | はい1968 |
| スモールベーシック | アプリケーション、教育、ゲーム | はい | いいえ | いいえ | いいえ | いいえ | いいえ | コンポーネント指向 | いいえ |
| 雑談 | アプリケーション、一般、ビジネス、人工知能、教育、ウェブ | はい | はい | はい | はい | いいえ | はい | 同時的、宣言的 | はい1998、ANSI |
| スノボル | テキスト処理 | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | 未知 | |
| 標準ML | 応用 | はい | いいえ | はい | いいえ | はい | いいえ | はい1997年、SML '97 [ 50 ] | |
| 迅速 | アプリケーション、一般 | はい | はい | はい | はい | はい | はい | 並行性、宣言性、プロトコル指向 | いいえ |
| Tcl | アプリケーション、スクリプト、Web | はい | はい | はい | はい | いいえ | はい | いいえ | |
| V(Vlang) | アプリケーション、一般、システム、ゲーム、ウェブ、サーバーサイド | はい | 次のように見ることができる | 次のように見ることができる | はい | はい | はい | 同時 | いいえ |
| ビジュアルベーシック | アプリケーション、RAD、教育、ビジネス、一般、(VBAを含む)、オフィスオートメーション | はい | はい | いいえ | はい | はい | いいえ | コンポーネント指向 | いいえ |
| ビジュアルベーシック.NET | アプリケーション、RAD、教育、ウェブ、ビジネス、一般 | はい | はい | はい | はい | はい | はい | 構造化された同時進行 | いいえ |
| ビジュアルフォックスプロ | 応用 | はい | はい | いいえ | はい | いいえ | いいえ | データ中心、ロジック | いいえ |
| ビジュアルプロローグ | 応用 | はい | はい | はい | いいえ | いいえ | いいえ | 宣言的、論理的 | いいえ |
| ウルフラム言語 | 象徴言語 | はい | いいえ | はい | はい | はい | はい | ロジック、分散 | いいえ |
| XL | はい | はい | いいえ | いいえ | いいえ | いいえ | コンセプトプログラミング | いいえ | |
| ゾジョ | アプリケーション、RAD、一般、Web | はい | はい | いいえ | はい | いいえ | はい | いいえ | |
| XPath / XQuery | データベース、データ処理、スクリプト | いいえ | いいえ | はい | いいえ | いいえ | いいえ | ツリー指向 | はい1999 W3C XPath 1、2010 W3C XQuery 1、2014 W3C XPath/XQuery 3.0 |
| ジーク | ドメイン固有、アプリケーション | はい | いいえ | いいえ | いいえ | いいえ | いいえ | いいえ | |
| ジグ | アプリケーション、一般、システム | はい | いいえ | はい | はい | はい | はい | 同時 | いいえ |
| ズッシュ | シェル、スクリプト | はい | いいえ | いいえ | はい | いいえ | いいえ | ロード可能なモジュール | オプションでPOSIX.2 [ 13 ] |
型システム
フェイルセーフI/Oとシステムコール
ほとんどのプログラミング言語は、入出力操作やその他のシステムコール(例:chmod、kill )が失敗した場合、プログラマが明示的にこれらのイベントの処理方法を指定しない限り、エラーメッセージを出力するか例外をスローします。したがって、これらの言語はこの点において 安全側で動作します。
一部の言語(主に古い言語)では、プログラマーがこの種のエラーに対するチェックを明示的に追加する必要があります。心理学的には、様々な認知バイアス(例えば、楽観バイアス)が初心者にも熟練者にも影響を与え、これらのチェックを省略してしまう可能性があります。これは誤った動作につながる可能性があります。
フェイルセーフI/Oは、1C:Enterprise、Ada(例外)、ALGOL(関数に応じて例外または戻り値)、Ballerina、C#、Common Lisp(「条件と再起動」システム)、Curry、D(失敗時にスロー)、[ 51 ] Erlang、Fortran、Go(結果が明示的に無視されない限り)、Gosu、Harbour、Haskell、ISLISP、Java、Julia、Kotlin、LabVIEW、Mathematica、Objective-C(例外)、OCaml(例外)、OpenLisp、PHP、Python、Raku、Rebol、Rexx(オプションのシグナルオントラップ処理付き)、Ring、Ruby、Rust(結果が明示的に無視されない限り)、Scala、[ 52 ] Smalltalk、Standard ML、Swift ≥ 2.0(例外)、Tcl、Visual Basic、Visual Basic .NET、Visual Prolog、Wolfram Language、Xojo、XPath / XQuery (例外)、Zeek。
フェイルセーフI/Oなし: AutoHotkey (グローバルErrorLevelを明示的にチェックする必要がある)、C、[ 53 ] COBOL、Eiffel (実際にはライブラリに依存しており、言語では定義されていない)、GLBasic (一般的にプログラムがクラッシュする)、RPG、Lua (一部の関数は警告を出さず、例外をスローする)、およびPerl。[ 54 ]
C++(STL iostreamは失敗時に例外をスローしますが、stdioやPOSIXなどのC APIはスローしません)[ 53 ]とObject PascalにはいくつかのI/Oチェックが組み込まれていますが、Bash [ 55 ]ではオプションです。
表現力
| 言語 | 発言比率[ 56 ] | 線比[ 57 ] |
|---|---|---|
| C | 1 | 1 |
| C++ | 2.5 | 1 |
| フォートラン | 2 | 0.8 |
| ジャワ | 2.5 | 1.5 |
| パール | 6 | 6 |
| 雑談 | 6 | 6.25 |
| パイソン | 6 | 6.5 |
プログラミング言語に関する文献には、言語の相対的な表現力に関する非公式な主張が数多く記載されていますが、そのような主張を形式化したり、興味深い帰結を導き出したりするための枠組みは存在しません。[ 58 ]この表は、2つの異なる情報源から得られた表現力の指標を示しています。GZipバイト単位で表された表現力の指標は、Computer Language Benchmarks Gameで見つけることができます。[ 59 ]
ベンチマーク

ベンチマークは、コンポーネントまたはシステム上の特定の種類のワークロードを模倣するように設計されています。このセクションのベンチマークデータの一部を作成するために使用されたコンピュータプログラムは、完全に最適化されていない可能性があり、データの関連性には異論があります。最も正確なベンチマークは、特定の状況に合わせてカスタマイズされたものです。他の人のベンチマークデータは他の人にとっては価値があるかもしれませんが、適切な解釈には多くの課題が伴います。Computer Language Benchmarks Gameサイトは、ベンチマークデータから過度に一般化することに対して警告していますが、読者が投稿したコードスニペットのマイクロベンチマークが多数掲載されており、特定のプログラミング言語やテストの種類を比較するさまざまなグラフや表を生成するインターフェースを備えています。[ 62 ]
特定の言語の比較のタイムライン
- 1974年 – Algol 68とPL/Iの比較ノート[ 63 ] – SH Valentine – 1974年11月
- 1976 – ALGOL 68、JOVIAL J3B、Pascal、Simula 67、TACPOLとTINMAN の比較評価 – 共通高階プログラミング言語の要件。
- 1977 – PASCALとALGOL 68の比較[ 64 ] – Andrew S. Tanenbaum – 1977年6月。
- 1993 – 5 つの小さな言語とその成長 – BLISS、Pascal、ALGOL 68、BCPL & C – Dennis M. Ritchie – 1993 年 4 月。
- 2009年 – Goについて – ああ、続けよう – GoogleのGoはブランドXのプログラミング言語にどれだけ対抗できるだろうか? – David Given – 2009年11月
参照
| すべてのページ、サブカテゴリ、画像を表示するには、「►」をクリックします。 |
|---|
参考文献
- ^ 2006年5月現在、オーストラリアのマードック大学でホストされているWayback MachineにアーカイブされたDiarmuid PigottのEncyclopedia of Computer Languages には、8512種類のコンピュータ言語が記載されている。
- ^ Adaリファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3、3.9タグ付き型と型拡張
- ^ Adaリファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3、セクション6:サブプログラム
- ^ Adaリファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3、セクション12:汎用単位
- ^ Adaリファレンスマニュアル、ISO/IEC 8652:2005(E) Ed. 3、セクション9:タスクと同期
- ^ 「分散システム」www.adaic.org .
- ^ "Vak.ru" (PDF) . 2017年3月30日時点のオリジナル(PDF)からアーカイブ。 2008年8月9日閲覧。
- ^ “ISO/IEC JTC1/SC22/WG6 - アルゴル” . www.open-std.org。
- ^ "Vak.ru" (PDF) . 2017年3月24日時点のオリジナル(PDF)からアーカイブ。 2008年8月9日閲覧。
- ^ 「IEEE規格協会」 . IEEE規格協会.
- ^ 「オブジェクト - 定義と使用法」。
- ^ 「Ballerina言語仕様」(PDF) . WSO2. 2018年5月1日.オリジナル(PDF)から2018年5月4日にアーカイブ。 2018年5月3日閲覧。
- ^ a b c POSIX.2、シェルとユーティリティ、コマンドインタープリタ(IEEE Std 1003.2-1992.)
- ^ 「Java Community Process(SM) プログラム - JSR: Java 仕様リクエスト - 詳細 JSR# 274 」。jcp.org 。
- ^ 「歴史」 . www.bell-labs.com。
- ^ 「ISO/IEC JTC1/SC22/WG14 - C」。www.open -std.org。
- ^ 「ISO/IEC JTC1/SC22/WG21 - C++標準化委員会 - ISOCPP」。www.open -std.org。
- ^ 「Codeproject.com: ラムダ式を使用した C# 3.0 での関数型プログラミング」。
- ^ ECMA-334; ISO/IEC 23270:2006
- ^ 「Clarion - ホーム」 . www.softvelocity.com .
- ^ “Crystal” . GitHub . 2021年11月2日.
- ^ 「Crystal Generics」 . crystal-lang.org . 2024年4月13日.
- ^ 「並行性 - Crystal」 . crystal-lang.org . 2024年4月2日閲覧。
- ^「Bertrand Meyer: Eiffel言語の基本的なメカニズム」 . se.inf.ethz.ch.
- ^クロージャ(コンピュータプログラミング)
- ^ ECMA-367; ISO/IEC 25436:2006
- ^ 「よくある質問 (FAQ) - Go プログラミング言語」 . go.dev .
- ^ 「Codewalk: Goのファーストクラス関数」。Go
は、ファーストクラス関数、高階関数、ユーザー定義関数型、関数リテラル、クロージャ、複数の戻り値をサポートしています。この豊富な機能セットは、強い型付け言語における関数型プログラミングスタイルをサポートします。
- ^ 「Java Community Process(SM) プログラム - JSR: Java 仕様リクエスト - 詳細 JSR# 241 」。jcp.org 。
- ^ 「Haskell 2010 言語レポート」 。 2011年12月7日閲覧。ほとんどの Haskell 実装は Haskell 2010 標準を拡張します。
- ^ 「Juliaにおけるオブジェクト指向プログラミング」。2023年6月4日。Julia
では、指向プログラミングは主要な焦点ではなく、より一般的な概念である多重ディスパッチに重点が置かれています。しかしながら、複合型と複合メソッドを用いることで、Juliaでもオブジェクト指向プログラミングを実現できます。
- ^ 「Julia オブジェクト指向プログラミング」。2021年5月29日。Julia
はオブジェクト指向プログラミング(OOP)を部分的にしかサポートしていません。
- ^ 「Julia ドキュメント · Julia 言語」 . docs.julialang.org .
- ^ "kotlin-script-examples/jvm/main-kts/MainKts.md at master · Kotlin/kotlin-script-examples" . GitHub .
- ^ 「型安全なビルダー | Kotlin」。Kotlinヘルプ。
- ^ 「M8がリリースされました!」 2014年7月2日。Kotlin
の将来のリフレクション機能の第一弾として、Kotlinでプロパティにファーストクラスオブジェクトとしてアクセスできるようになりました。
- ^ 「コルーチン | Kotlin」。Kotlinヘルプ。
- ^ Halcyon (Inworldz) と Open Sims は、追加機能を備えた互換性のある実装を提案しています。
- ^ Luaには明示的な「オブジェクト」型はありません(より一般的な「テーブル」型がオブジェクト定義に使用されます)が、オブジェクトメソッド呼び出しのための明示的な構文があります。
- ^バージョンリリースには、完全な構文とセマンティクス、リファレンス実装、テストスイートを記載したLuaリファレンスマニュアルが付属します。これらは、KahluaやLLVM-Luaなどの他のLua VM実装やコンパイラを生成するために使用されます。
- ^ ISO/IEC 10514-1:1996
- ^ ISO 7185
- ^ PHPマニュアル、第19章 クラスとオブジェクト(PHP 5)
- ^ PHPマニュアル、第17章 関数
- ^ 「PostScript言語リファレンスマニュアル」(PDF) 。 2017年2月18日時点のオリジナル(PDF)からアーカイブ。 2017年2月18日閲覧。
- ^ 「オブジェクト指向プログラミング機能」 . doc.rust-lang.org .
- ^ Klabnik, Steve; Nichols, Carol. 「マクロ」 . Rustプログラミング言語.
- ^ 「Scheme標準」。standards.scheme.org 。
- ^ 「Scheme標準」。standards.scheme.org 。
- ^ 「SML '97」 . www.smlnj.org .
- ^ 「std.stdio - Dプログラミング言語」 . dlang.org .
- ^ Scala は Java 仮想マシン上で実行され、そこからランタイム例外処理を継承します。
- ^ a b gcc は未チェックのerrnoに対して警告を発することがあります。Visual Studioの新しいバージョンでは、 stdio使用時に失敗した I/O に対して通常例外がスローされます。
- ^オプションでかなりのエラーチェックを有効にすることができますが、デフォルトでは Perl はフェイルセーフではありません。
- ^ は、チェックされていない終了ステータス
set -eがゼロ以外の場合に終了を有効にします。 - ^ McConnell, Steve (2009年11月30日) のデータ。Code Complete。Microsoft Press。p . 100。ISBN 9780735636972。ステートメント比率の列には、いくつかの高級言語のソース ステートメントと C の同等のコードの一般的な比率が表示されます。比率が高いということは、リストされている言語の各コード行が C の各コード行よりも多くのことを実行していることを意味します。
- ^ McLoone, Jon (2012年11月14日)における、 Compare to機能使用時に各言語が勝った行数テストの勝率とC言語が勝った行数テストの勝率。 「14言語でコード長を測定」 。2012年11月19日時点のオリジナルよりアーカイブ。C には C gcc、C++ には C++ g++、FORTRAN には FORTRAN G95、Java には Java JDK Server、Smalltalk には Smalltalk GST が使用されました。
- ^ Felleisen, Matthias.プログラミング言語の表現力について. ESOP '90 第3回ヨーロッパプログラミングシンポジウム. CiteSeerX 10.1.1.51.4656 .
- ^ 「プログラムの測定方法」 .コンピュータ言語ベンチマークゲーム. 2018年5月29日閲覧。
- ^マンデルブロ, ベノア・B. (1982). 『自然のフラクタル幾何学』(改訂版)サンフランシスコ. ISBN 0-7167-1186-9. OCLC 7876824 .
{{cite book}}: CS1 メンテナンス: 場所の発行元が見つかりません (リンク) - ^ "Mandelbrot" .コンピュータ言語ベンチマークゲーム. 2021年7月9日閲覧。
- ^ 「究極のベンチマーク」。コンピュータ言語ベンチマークゲーム。2018年5月29日閲覧。
- ^ Valentine, SH (1974年11月). 「Algol 68とPL/Iの比較ノート」 .コンピュータジャーナル. 17 (4): 325– 331. doi : 10.1093/comjnl/17.4.325 .
- ^ 「アムステルダム自由大学」(PDF) .
さらに読む
- Cezzar, Ruknet (1995). 『プログラミング言語ガイド:概要と比較』 Artech House. ISBN 978-0-89006-812-0。