プログラミング言語の開発の大きな流れに共通する傾向として、より高いレベルの抽象化によってより高い問題解決能力を得ようとしてきた、ということが指摘されることがある。初期のプログラミング言語はコンピュータのハードウェアのレベルと極めて近かった。新たなプログラミング言語が開発される度に機能が追加され、プログラマはハードウェアの命令からより遠い形でアイデアを表現できるようになっていった。プログラミングをハードウェアから分離することで、プログラマの生産性は向上する。
過去のプログラミング言語のなかの欠点と見なされた部分を解消するために、新たなプログラミング言語が構想され、作られてきた歴史がある。また多様なプログラミング言語が生み出される背景には、さまざまな事情があり、ハードウェアが時代とともに変化してきたことや、プログラミング言語というテクノロジーやコンピュータサイエンスの発展も影響しており、下のような諸事情もある。
ウィキペディアに記事が掲載されているプログラミング言語を知りたい場合はプログラミング言語一覧を参照のこと。
分類・種類.
プログラミング言語の分類法は多数ある。
他の分類法としては、実行方法によってプログラミング言語を分類する方法もあり、インタープリタ方式言語 / コンパイラ方式言語（コンパイル方式言語）と分類する方法である。
オブジェクト指向プログラミングに適したしくみを備えているか否かで、オブジェクト指向言語 / 非オブジェクト指向言語 と分類されることもある。
構造化プログラミングに適した仕様になっているか否かで判断して、適したものだけを構造化プログラミング言語と分類する方法もある。
スレッドを複数個生成・管理できるか否か、で並行言語 / 非並行言語 と分類する方法もある。
（他の分野でもありがちなことなのだが）プログラミング言語も分類法があまりに多数あるので、混乱しがちな分類法を整理整頓しようと「分類法の分類」をする人も出てくる。たとえば高級言語の分類方法について「プログラミングパラダイムによる分類法 / そうでない分類法」という分類ができる、などと言う人も出てくる。
それ以外に、コンピュータがプリンター（やモニタ）などを制御するために使うプログラミング言語を分類するための「ページ記述言語」という分類法もある。