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