プログラミング言語は、機械(多くの場合コンピュータ)の動作を制御するために使用されます。自然言語と同様に、プログラミング言語も構文と意味に関する規則に従います。
プログラミング言語は数千種類あり[ 1 ]、毎年新しい言語が生まれています。ごく少数の言語だけが十分に普及し、少数の人にしか使われなくなりますが、プロのプログラマーはキャリアの中で数十種類の言語を使うことがあります。
ほとんどのプログラミング言語は、 PerlやStandard ML (名前とは裏腹に)のように広く使われているものでさえ、国際規格(または国内規格)によって標準化されていません。標準化されている代表的なプログラミング言語には、ALGOL、C、C++ 、JavaScript( ECMAScriptという名称)、Smalltalk、Prolog、Common Lisp、Scheme(IEEE規格)、ISLISP、Ada、Fortran、COBOL、SQL、XQueryなどがあります。
以下の表は、よく使われるプログラミング言語の中からいくつかを選び、それらに関する一般情報と技術情報を比較したものです。詳細については、各言語の記事をご覧ください。
ほとんどのプログラミング言語は、入出力操作やその他のシステムコール(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 (オプションのシグナル on ... トラップ処理付き)、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 iostreams は失敗時に例外をスローしますが、stdioやPOSIXのような C API はスローしません) [ 53 ]およびObject Pascalでは、一部の I/O チェックが組み込まれていますが、Bash [ 55 ]ではオプションです。
プログラミング言語に関する文献には、それらの相対的な表現力に関する非公式な主張が数多く含まれているが、そのような記述を形式化したり、興味深い結果を導き出したりするための枠組みは存在しない。[ 58 ]この表は、2つの異なる情報源からの2つの表現力の尺度を示している。GZipバイト単位の表現力の別の尺度は、Computer Language Benchmarks Gameで見つけることができる。[ 59 ]

ベンチマークは、コンポーネントまたはシステム上の特定の種類のワークロードを模倣するように設計されています。このセクションのベンチマーク データの一部を作成するために使用されたコンピュータ プログラムが完全に最適化されていない可能性があり、データの妥当性には議論の余地があります。最も正確なベンチマークは、特定の状況に合わせてカスタマイズされたものです。他の人のベンチマーク データは他の人にとってある程度の価値があるかもしれませんが、適切な解釈には多くの課題が伴います。Computer Language Benchmarks Gameサイトは、ベンチマーク データから過度に一般化しないように警告していますが、読者から提供されたコード スニペットの多数のマイクロ ベンチマークが含まれており、特定のプログラミング言語とテストの種類を比較するさまざまなチャートと表を生成するインターフェースを備えています。[ 62 ]
言語は、第一級関数、高階関数、ユーザー定義関数型、関数リテラル、クロージャ、および複数の戻り値をサポートしています。この豊富な機能セットにより、厳密な型付け言語で関数型プログラミングスタイルを実現できます。
では、指向プログラミングは主要な焦点ではなく、より一般的な概念である多重ディスパッチが重視されます。しかしながら、複合型とメソッドを使用することで、JuliaでもOOPを実現できます。
はオブジェクト指向プログラミング (OOP) を部分的にしかサポートしていません。
の将来の反射機能の最初のプレビューとして、Kotlinでプロパティを第一級オブジェクトとしてアクセスできるようになりました。
set -eのいずれかがゼロ以外の場合に終了を有効にします。{{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク)