「第2回エンペディア大賞」が2月いっぱい開催中です。2024年に作成された記事の中から、お気に入りの記事に投票しましょう!
プログラミング言語
プログラミング言語とは、コンピューターに指示を与えるための正確に定義された記号と規則からなるコンピュータ言語である。[1]
概要[編集]
具体的なプログラミング言語については、カテゴリ:プログラミング言語を参照。
低水準言語と高水準言語[編集]
- プログラミング言語は低水準言語及び高水準言語に分類することができる。
- 低水準言語は、アセンブリ言語のことであり、高水準言語の例としては、Perl、Visual Basic、LISP、PHP、Java、Python、C言語、C++などが挙げられる。
- プロセッサは機械語プログラムを直接読み取り実行する。しかし、人間にとってビット列は直観的に理解しづらく、機械語コーディングは困難であるため、ビット列に対応する文字列命令(ニーモニック)を利用する低水準言語として、アセンブリ言語が使われる。
- 高水準言語は、アセンブリ言語で頻出するパターンを1つの機能として言語仕様に組み込んで抽象度を上げていった言語である。現在では、一般的には、プログラミング言語として、高水準言語が使われる。
- 高水準言語で書かれたプログラムはコンパイラあるいはインタプリタなどにより、機械語に変換される。
- 低水準言語で書かれたプログラムはアセンブルを行うアセンブラにより、機械語に変換される。具体的には、アセンブラが、ニーモニックをオペコードに変換し、シンボル名をメモリ位置や他の実体に変換する。アセンブリ言語から機械語への変換をアセンブルという。
- アセンブルは比較的単純な規則からなるため、人の手でも実行でき、これは「ハンドアセンブル」と呼ばれる。
自然言語とプログラミング言語[編集]
- 人間が読み書きしやすい言語にするには、ベースとなる自然言語が必要となる。プログラミング言語の大半は、英語をベースとしている。高水準言語の場合は、日本語をベースにしているものもいくつかある。
高水準言語の数[編集]
高水準言語には非公開もしくは無名のため、存在をカウントすることができないものがある。こういったものを除いてある程度有名なものを数えても、多数の言語がある。
プログラミング黎明期を除き、高水準言語には特定の条件下でなければ決定版と呼べるものはない。
高水準言語が多数生まれ続ける理由はいくつかある。以下にいくつかの候補を示す。複数の理由には重複する部分もある。
- コンピューターの技術革新やプログラミング言語自体の研究が進んだことにより[注 1]、より効率の良い高水準言語の開発が可能になった
- 既存のプログラミング言語に気に入ったもの・使いやすいものがなく、または単に作りたくて、自ら作り出す開発者が存在する
- 既存のプログラミング言語が使われ続けていく中で何かしらの欠点が顕在化し、それの解消を目的として
- 新しいパラダイムやアーキテクチャーにおいて、既存のプログラミング言語では表現できない、もしくは著しく効率が悪い
分類[編集]
- プログラミング言語は低水準言語及び高水準言語に分類される。これについては、#低水準言語と高水準言語を参照。
高水準言語は、パラダイム(プログラミングパラダイム)、実行方式、用途などで分類され、以下のようになる。
パラダイム別[編集]
オブジェクト指向言語、関数型言語、手続き型言語、など。
実行方式別[編集]
プログラミング言語を記述したテキストファイルを、コンパイルせずに実行時にそのまま言語処理系に渡して実行するタイプのものは、スクリプト言語(Python、Ruby、JavaScriptなど)と呼ばれる。
用途別[編集]
用途には、数値解析、テキストデータ処理、Webアプリケーション開発、携帯端末アプリ開発、ゲーム開発、組み込みシステム開発、人工知能開発、などがある。OS開発のように言語が限られる分野もある。
何かしらの特定の技術に関連づけされた言語のグループがある。
Microsoftの.NET言語(VB.NET、C#、F#など)や、Java仮想マシンのJVM言語(Kotlin、Scala、Clojureなど)が該当する。
その他[編集]
高水準言語には、Brainf*ckのように意図的に難解にしているものもある。このようなプログラミング言語は、「難解プログラミング言語」と呼ばれる。
プログラミング言語とは呼ばないもの[編集]
プログラミング言語のようだがプログラミング言語とは呼ばないものがある。
プログラミング言語と呼ぶもの[編集]
プログラミング言語のようではないがプログラミング言語と呼ぶものがある。
- ビジュアルプログラミング言語 - 例えば、Scratch 3.0においては、ブロックにより構成されるグラフィカルなプログラムをJavascriptに変換して実行されるなど、実行の際には、中間言語あるいは何らかの形の中間表現を経由する。
脚注[編集]
注釈[編集]
- ↑ 計算機科学で理論的には作られていたがコンピューターの能力不足により十分な実現が困難、実用化しなかった、など。コンピューターの能力が上がったことで、高度な仮想マシンや高度な推論のように抽象的な処理が実現できるようになった。
- ↑ とはいえ、Oracle の 9i 以降では「CONNECT BY」という再帰呼出しなどが追加され、あれはあれでプログラミング言語として認めてあげたい。乗用車の製造ラインを立てるときに部品管理のために部品ツリーの比較をする必要があり、問合せ側との間でコミット関係で待ち合わせに手間取るため、「なんとかならないか?」というので三菱総研が「SQL の再帰呼出しで、DB サーバの内部で処理を閉じられないか?」というので採用した事例がある。