これは、Paul Graham:Weird Languages を、原著者の許可を得て翻訳・公開するものです。
<版権表示>
本和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。
(「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。
Copyright 2021 by Paul Graham
原文: http://www.paulgraham.com/weird.html
日本語訳:Shiro Kawai (shiro @ acm.org)
<版権表示終り>
Paul Graham氏のエッセイをまとめた『ハッカーと画家』の
邦訳版が出版されました。
出版社の案内ページ
Amazon.co.jp
サポートページ
2021/08/29 翻訳公開
「自分の経験からすれば、 どんなプログラミング言語も基本的には同じだね」、 そんなふうに言う人は、プログラミング言語についてではなく、 自分がどんなプログラミングをしてきたかについて語っているのだ。
プログラミングのうち99.5%は、ライブラリ関数の呼び出しを貼り合わせるような仕事だ。 その点では、人気の言語はどれも遜色ない。 プログラマとしてのキャリアを、人気の言語の共通部分だけを使って過ごすことは難しくないだろう。
でも、残りの0.5%のプログラミングこそが、飛び抜けておもしろいんだ。 それが一体何か知りたければ、ヘンな言語のヘンな部分を追いかけてみるといい。
ヘンな言語は、たまたまヘンになったわけではない。少なくとも良い言語はそうだ。 良い言語のヘンな部分は、ライブラリ関数呼び出しを貼り合わせるだけじゃない プログラミングがあることを示している。
具体的な例を挙げよう。Lispのマクロだ。Lispのマクロは、Lispプログラマの多くにとってさえ、 ヘンに見える。人気の言語の共通部分にはないし、Lispマクロの本質からして、 他の言語をLispの方言に変えることなしにマクロを入れるのは難しい。 そして、マクロは貼り合わせプログラミングを越えるテクニックがあることの確かな証拠だ。 例えば問題を解決するために、まずその種の問題のための言語を作って、 それを使って特定のアプリケーションを書くといったテクニックだ。 これはマクロにできることの単なる一例だ。 プログラム自身を操作するというテクニックはまだまだ開拓の余地がある領域のひとつにすぎない。
だから、プログラミングでできることの概念を広げたいなら、 ヘンな言語を学んでみるのが一つの手だ。 多くのプログラマにヘンだと思われていて、 でもユーザの中央値が賢い人々であるような言語を選んでみよう。 そして、普通の言語の共通部分との差異に注目するんだ。 他の言語では不可能なくらい面倒なことを、この言語で書けるだろうか。 以前はうまく言えなかったことを言えるようになるように学んでゆけば、 以前は考えられもしなかったことを考えられるようになるだろう。
草稿に目を通してくれたTrevor Blackwell, Patrick Collison, Daniel Gackle, Amjad Masad, Robert Morrisに感謝します