概要
プログラミング言語とは、コンピュータを動かすプログラムを書くための人工言語である。
ほとんどのプログラミング言語はコマンドに英語の単語を取り入れているが(日本語でコーディングできるように作られた言語もあるが普及していない)、メジャーな言語で英文を読む感覚で読めなくもないのはCOBOL程度で、他は門外漢が読もうとしても全く意味不明な程度に構文が自然言語の英語とはかけ離れている。
Pixivでは、コンピュータ言語の擬人化のイラストにこのタグが付けられることが多い。
プログラミング言語の分類
プログラミング言語は多数あり、分類の仕方もいろいろあるが、大きく分けると機械向きか問題向きかの違いによって「低級言語」と「高級言語」に分類できる。低級言語は特定の機種に特化したものであり、機械指向である。高級言語は問題解決のため抽象化したものであり、問題指向である。ハードウェア寄りのものを「低級」、人間が使いやすいように自然言語に寄せて作られたものが「高級」と言う言い方もできる。一般的に高級言語は読みやすい(可読性が高い)し他の環境に移植しやすい(汎用性が高い)が、低級言語はその逆である。このため低級言語はハードウェアに極端な制約がある環境や、よほど古い環境のメンテナンス程度でしか使われない。
「インタプリタ言語」あるいは「コンパイラ言語」といった呼称も見掛けることがあり、例えば「C言語はコンパイラ言語」「JavaScriptはインタプリタ言語」と言われたりする。しかしその言語がどちらかと言えばインタプリタ向き、あるいはコンパイラ向きの特性を備えているという違いに過ぎず、どちらとも判別しがたい言語も多く存在する。さらにコンパイラで中間表現にコンパイルしそれをインタプリタで実行するという中間コード型実行も一般化している現在、こういった分類は無意味になりつつある。
プログラミング言語の一覧
低級言語
- 機械語(マシン語とも。CPUが直接解釈できるコード。本来は2進数だが人間が読みやすい様に16進数表記される。機種の数だけ種類があると説明されることがあるが、命令セットアーキテクチャが同じであれば基本的に共通していると考えてよい)
- アセンブリ言語(機械語をこれと一対一で対応するニーモニックと言われる命令語に置き換えたもの。例えばZ80CPUの「リターン」命令である「C9(10進数で201)」は「RET」と表記される)
難解プログラミング言語
- Brainf*ck
高級言語
命令型の言語
- FORTRAN
- COBOL
- BASIC(方言が多い。レトロPC時代にROMで搭載されていた古典的なものと、構造化プログラミングに対応した1990年代以降のものは全く別物である)
- C言語 (低級言語に近い特徴を持ち、ハードウェア寄りの記述を得意とする)
- Pascal
- Perl
- Lua
- Hot Soup Processor
- Ada
- (PHP) …Ver.4よりオブジェクト指向対応したため、どちらとも言える状態
- シェルスクリプト
オブジェクト指向言語
- C++ (もともとはC言語のオブジェクト指向拡張だが、現在ではC言語との互換性は失われている)
- Objective-C(C言語にオブジェクトシステムを取り付けたもの。C言語との互換性は保たれている)
- Java
- C#
- Dart
- Delphi (Pascalの方言)
- go
- R言語
- Ruby
- Rust
- Python
- Javascript (Javaとは赤の他人で制式名称はECMAScriptである)
- Kotlin(Java仮想マシンで動く言語)
- Swift
- (PHP)
- S言語
- (Scala)
関数型の言語
- LISP
- Clojure (LISPの方言でJava仮想マシンで動く)
- OCaml (オブジェクト指向とのハイブリッド)
- Haskell
- F# (OCamlやHaskellを参考に作成した.NET用の言語)
- (Scala) (オブジェクト指向とのハイブリッドでJava仮想マシンで動く)
その他の言語
- (Nim)(トランスコンパイラ言語)
※()がある物は人によって意見が分かれる言語