プログラミング言語:概要と分類別一覧
プログラミング言語の分類、歴史、一般的な用途、パラダイムを整理し、汎用言語、特定分野向け言語、難解言語を含む代表例を紹介する。
プログラミング言語は、コンピュータに処理を実行させるために用いられる形式的な表記法である。その設計、目的、抽象化の水準は多様であり、ハードウェアに密接に対応するものもあれば、人間にとっての読みやすさや数学的表現力を重視するものもある。言語は構文(コードの書き方)と意味論(コードが何を意味するか)を定め、コンパイラ、インタプリタ、または両者を組み合わせたランタイムによって実装される。
分類と例
プログラミング言語は、厳密な分類体系よりも、用途やパラダイムによってまとめられることが多い。一般的な分類には、次のようなものがある。
- 低水準言語とシステム向け言語:アセンブリ言語、C。オペレーティングシステム、ドライバ、性能が重要なコードに用いられる。
- 高水準の汎用言語:Java、C++、Python、JavaScript、Go、Rust。アプリケーション、サービス、開発ツールで広く利用される。
- 関数型・式指向言語:Haskell、Erlang、Lisp、OCaml、F#。不変性と関数合成を重視する。
- スクリプトおよび自動化:Bash、Perl、Ruby、Python。迅速な自動化、グルーコード、管理作業に使用される。
- 特定分野向け言語:SQL(データベース)、MATLAB(数値計算)、R(統計)。特定の問題領域に合わせて設計されている。
- 難解言語と教育向け言語:Brainfuck、Malbolge。言語の概念を探究するため、または挑戦を目的として作られた。
歴史と発展
現代のプログラミング言語設計は、20世紀半ばに開発された初期の言語から発展してきた。初期の例では、算術演算と制御フローのための基本的な抽象化が導入された。その後の数十年には、構造化プログラミング、オブジェクト指向、関数型パラダイム、並行性モデルが加わった。ツール、パッケージマネージャ、コミュニティの標準が採用にも影響を与えるようになり、言語のエコシステムも成熟した。
特性と相違点
重要な区別として、コンパイル型とインタプリタ型の実行、静的型付けと動的型付け、強い型付けと弱い型付け、メモリ管理の方式(手動割り当てとガベージコレクション)がある。並行性モデルも多様であり、スレッド、イベントループ、軽量コルーチン、アクターシステムは、それぞれプログラムの拡張性や相互作用のあり方を形作る。
用途、重要性、主な事実
言語の選択は、問題領域、性能要件、開発者の生産性、エコシステムによって左右される。一部の言語は国際機関によって標準化され、あるいは正式な仕様を持つ一方、コミュニティ主導の過程で発展する言語もある。パラダイムとトレードオフを理解することは、組込みシステムからウェブサービス、データサイエンスまで、さまざまな領域でソフトウェアを構築するための適切なツール選択に役立つ。
関連項目
著者
AlegsaOnline.com プログラミング言語:概要と分類別一覧 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/124943