プログラミング言語は、それが登場してから今日まで高級化を続け、そして今なおそれは続いている。
高級言語が持つ高級な機能には、機械出身のものと人間出身のものがある。
人間に由来するものは、たとえばオブジェクト指向だ。
人間が世界を認識したり、世界と関わったりするメカニズムをプログラムに持ち込んでいる。
機械に由来する高級機能というのも、なかなか興味深い。
もともとは低級な概念だったものを昇華し一般化させ、言語の特徴となりうるまでに高めたものもある。
例えば例外処理。
もとはCPUが何らかの異常やイベントを通知するためにあった機構であろうが、現在は高水準化されて、ソフトウェアの内部だけに閉じて使われることも多い。
他にも、スレッドを抽象化したコルーチンや、関数コールを抽象化した継続(Continuation)などもある。
実に興味深い。