Loading...

奇妙な言語

Original

2021年8月

人々が自分の経験ではすべてのプログラミング言語は基本的に同等であると言うとき、彼らは言語についてではなく、自分がしてきたプログラミングの種類について発言しているのです。

プログラミングの99.5%は、ライブラリ関数の呼び出しを繋ぎ合わせることで構成されています。すべての一般的な言語は、この点で同等に優れています。そのため、人は簡単に、一般的なプログラミング言語の交差部分で、生涯を過ごすことができます。

しかし、残りの0.5%のプログラミングは、不釣り合いなほど興味深いものです。それが何であるかを知りたいのであれば、奇妙な言語の奇妙さは、それに従うべき良い手がかりです。

奇妙な言語は、偶然奇妙なのではありません。少なくとも、良いものはそうではありません。良い言語の奇妙さは、通常、ライブラリ呼び出しを繋ぎ合わせるだけではない、何らかの形のプログラミングが存在することを意味しています。

具体的な例として、Lispのマクロがあります。Lispのマクロは、多くのLispプログラマーにとっても奇妙に思えます。それらは、一般的な言語の交差部分に存在するだけでなく、本質的に、Lispの方言に変えることなく、他の言語で適切に実装することは困難です。そして、マクロは、接着プログラミングを超えた技術の証拠です。例えば、まずそのタイプの問題のための言語を書き、次にその言語で特定のアプリケーションを書くことで、問題を解決します。これは、マクロでできることのすべてではありません。これは、現在でも十分に探求されていない、プログラム操作技術の空間における単なる1つの領域です。

ですから、プログラミングの可能性を拡大したいのであれば、奇妙な言語を学ぶのが1つの方法です。ほとんどのプログラマーが奇妙だと考える言語で、その平均的なユーザーが賢い言語を選び、その言語と一般的な言語の交差部分の違いに焦点を当てます。その言語で、他の言語では不可能なほど不便な言い方を、どのように表現できるでしょうか?これまでできなかったことを表現する方法を学ぶ過程で、これまでできなかったことを考える方法を学ぶことになるでしょう。

謝辞 Trevor Blackwell、Patrick Collison、Daniel Gackle、Amjad Masad、Robert Morrisに、この原稿を読んでいただきありがとうございます。