奇妙な言語
2021年8月
プログラミング言語は基本的にどれも同じだと人が言うとき、それは言語について述べているのではなく、彼らがしてきたプログラミングの種類について述べているのだ。
プログラミングの99.5%は、ライブラリ関数の呼び出しを繋ぎ合わせることで構成されている。人気のある言語はすべて、これが得意だ。だから、人気のあるプログラミング言語の共通部分でキャリア全体を過ごすことは容易だ。
しかし、残りの0.5%のプログラミングは、飛び抜けて面白い。それが何で構成されているかを学びたいなら、奇妙な言語の奇妙さが良い手がかりになる。
奇妙な言語は、偶然に奇妙なのではない。少なくとも、優れたものは。優れたものの奇妙さは通常、単なるライブラリ呼び出しの通常の繋ぎ合わせではない、何らかの形のプログラミングの存在を意味する。
具体的な例:Lispマクロ。Lispマクロは、多くのLispプログラマーにとっても奇妙に見える。それらは人気のある言語の共通部分にないだけでなく、その性質上、Lispの方言に変えずに言語で適切に実装することは難しいだろう。そして、マクロは間違いなく、グループログラミングを超えるテクニックの証拠だ。たとえば、特定の問題に対する言語を最初に作成し、次に特定のアプリケーションをその言語で記述することによって問題を解決する。また、マクロでできるのはこれだけではない。それは、プログラムを操作するテクニックの空間の一つの領域にすぎず、今でも完全には探求されていない。
だから、プログラミングとは何かという概念を広げたいなら、その一つの方法は、奇妙な言語を学ぶことだ。ほとんどのプログラマーが奇妙だと考えているが、ユーザーの中央値が賢い言語を選び、次にこの言語と人気のある言語の共通部分との違いに焦点を当てる。他の言語では不可能なくらい不便なことを、この言語で何と言うことができるだろうか?以前は言えなかったことを言う方法を学ぶ過程で、以前は考えられなかったことを考える方法を学ぶことになるだろう。
謝辞: Trevor Blackwell、Patrick Collison、Daniel Gackle、Amjad Masad、Robert Morris に草稿を読んでいただいたことに感謝します。