プログラミング言語の完全な分類法は存在しない(前述のCOBOLが事務計算用途向け、FORTRANが科学技術計算用途向けといった設計思想はあるが)。あるプログラミング言語には大抵複数の起源(影響を与えた言語)がある。言語は一般に複数の既存言語の要素と新たなアイデアを組み合わせて生み出される。ある言語を起源とするアイデアはその系統の言語群に広まっていき、あるときギャップを飛び越えて全く別の系統の言語で使われるようになる。
さらに事を複雑にするのは、言語は様々な観点から分類可能という点である。例えば、Javaはオブジェクト指向言語であると同時に、並行性言語でもある(言語仕様としてスレッドを複数並行して生成可能であるため)。Python はオブジェクト指向言語であると同時に、スクリプト言語でもある。
プログラミング言語の大まかな分類として、プログラミングパラダイムによる分類と想定している利用分野や用途による分類がある。パラダイムには、手続き型プログラミング、オブジェクト指向プログラミング、関数型プログラミング、論理プログラミングなどがある。言語によっては2つのパラダイムの性格を併せ持つこともあるし、マルチパラダイムの場合もある。アセンブリ言語は、マシンのアーキテクチャを直接モデル化したものであるため、パラダイムとは言わない。用途による分類では、汎用、システムプログラミング言語、スクリプト言語、ドメイン固有言語、並行/分散言語(あるいはこれらの混合)などがある[29]。汎用言語の一部は教育目的で設計されている[30]。
プログラミングパラダイムとは無関係なパラメータで分類されることもある。例えば、多くのプログラミング言語は英語のキーワードを使っているが、ごく一部の言語はそうではない。また、難解かそうでないかという分類もある。
機械語やアセンブラ言語は、よりハードウェアに近い言語であり、このようなプログラミング言語を低級言語あるいは低水準言語という。また、それ以外の言語は、機械語と一対一で対応せず、より人間に近い言語であり、高級言語あるいは高水準言語という。最近ではプログラムの開発効率向上のために、沢山の高級言語が生まれてきている。その中でもプログラムを作るためのプログラミング言語というものも有る。簡単なパラメーターを入れて行ったり、選択肢を選んでいくだけでプログラムが出来てしまう高級言語もある。しかし、こういった高級言語は、ハードウェアに大変遠いため、コンピューターに大きな負荷が掛かり、ハードウェア、ソフトウェア(主にOSなど)ともに、高度な能力が必要とされる。
脚注・出典^ ⇒ISO 5127?Information and documentation?Vocabulary, clause 01.05.10 では、プログラミング言語を「プログラムを記述するための人工言語」と定義している。
^ 数学的には、これはプログラミング言語がチューリング完全であることを意味する。 MacLennan, Bruce J. (1987年). Principles of Programming Languages. Oxford University Press. ISBN 0-19-511306-3.
^ 2008年2月現在、 ⇒The Encyclopedia of Computer Languages (Murdoch University、オーストラリア)には8152のコンピュータ言語がリストアップされている。
^ ACM SIGPLAN (2003年). " ⇒Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery". 2006年6月19日 閲覧。, The scope of SIGPLAN is the theory, design, implementation, description, and application of computer programming languages - languages that permit the specification of a variety of different computations, thereby providing the user with significant control (immediate or delayed) over the computer's operation.
^ Dean, Tom (2002年). " ⇒Programming Robots". Building Intelligent Robots. Brown University Department of Computer Science. 2006年9月23日 閲覧。
^ Digital Equipment Corporation. " ⇒Information Technology - Database Language SQL (Proposed revised text of DIS 9075)". ISO/IEC 9075:1992, Database Language SQL. 2006年6月29日 閲覧。
^ IBMは PL/I をリリースしたとき、やや野心的にマニュアルを The universal programming language PL/I (IBM Library; 1966) と名づけている。このタイトルはIBMが目標としていた無制限のサブセット化機能を反映している「PL/I は特定の応用に必要な部分を抜き出し、サブセットを分離可能なように設計されている」 (" ⇒Encyclopaedia of Mathematics ≫ P ≫ PL/I". SpringerLink. 2006年6月29日 閲覧。). AdaとUNCOLも同様の初期目標を持っていた。
^ Frederick P. Brooks, Jr.: The Mythical Man-Month, Addison-Wesley, 1982, pp. 93-94
^ Dijkstra, Edsger W. ⇒On the foolishness of "natural language programming." EWD667.
^ Perlis, Alan, ⇒Epigrams on Programming. SIGPLAN Notices Vol. 17, No. 9, September 1982, pp. 7-13
^ Michael Sipser (1997年). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Section 2.2: Pushdown Automata, pp.101?114.