なぜ今さらLisp?プログラマの思考を拡張する究極の言語の魅力
A road to Lisp: Why Lisp
A road to Lisp: Why Lisp
Lispの世界へ足を踏み入れるべき理由とは?Lispは単なる古風な言語ではありません。強力なマクロ機能、コードとデータの同質性、そしてREPLによる圧倒的な開発体験は、現代のプログラマにとっても強力な武器になります。なぜ多くのハッカーたちが最終的にLispに回帰するのか、その深淵を覗いてみましょう。
ウェブサイトのシンタックスハイライトにバグがあるみたい。投稿テキスト内のコード部分が真っ黒になってる。マウスで選択すれば文字は見れるんだけどね。Chromeのデスクトップ版とiPadのSafari両方で同じバグが起きてる。
正直に言うと、マクロがいまだによく分からない。コンパイル時に生成されるコードっていうのは理解してる。でも、他の関数を評価する関数と何が違うのかがピンとこないんだよね。後者だと実行時に評価されるってことかな?概念的には分かってるつもりだけど、実際に使いこなすまでの感覚が掴めてない気がする。ここでマクロを使って「なるほど!」ってなった瞬間を経験した人いる?
すべての道はLispに通ず
Lispには本当に強力でユニークな点があるけど、こういう記事でREPLやホットリロードを取り上げるのはもうやめてほしい。REPLなんて何年も前からインタプリタ言語(と一部のコンパイル言語!)にとって当たり前の機能だし、ホットリロードは特にユニークでも広く使われているわけでもない(ホットリロードは状態管理やパッチ適用との戦いになるから、推論を簡単にするためにリセットして最初からやり直すのがベストプラクティスとされるのには理由があるんだよ)。
これって https://web.archive.org/web/20120106121645/http://wiki.alu.org/The_Road_To_Lisp_Survey のことかと思った。comp.lang.lispを追いかけてた頃を思い出すよ。あれはまるで昼ドラみたいで、個性的なキャラやドラマ、それにプログラミングの魔法に満ちてたなあ。
プログラミングには「ライトサイド」と「ダークサイド」の葛藤がある。
ライトサイドはプログラマのミスを防ぐのが目的:Go-toを排除しろ!静的型付けを導入せよ!バグが入り込む余地をなくせ!
ダークサイドはプログラマに力を与えるのが目的:マクロ?当然だ。演算子オーバーロード?自己書き換えコード?複数行の正規表現?好きなだけやろうぜ!
ライトサイドはプログラマの不完全さを知っているから制限を課す。ダークサイドはプログラマの力を信じている。どちらか一方が常に正しいわけじゃないし、優れたプログラマは両方を学ぶものだ。
Lispが面白いのは、明らかにダークサイド的なプログラミング(プログラマは何でもできる)でありながら、ライトサイドのプログラマからも敬愛されている点だね。言語のシンプルさが、プラトン的というか、ほとんど腐敗不可能な何かを感じさせるからかもしれない。あるいは、Lispがあまりに純粋すぎて、プログラミングの世界を生み出した神のように、ライトサイドとダークサイドの両方を体現しているのかも。
ずっと気になってるんだけど、Lisp(Common Lisp, Clojure, Scheme)ってLLMを使った反復的な作業をするのに向いてるのかな?
Lispの素晴らしさを称える記事は山ほどあるけど、Lispの理念や言語エコシステムにおける立ち位置について、冷静に批判したり検証したりする記事がもっと見たいな。
この記事や、この記事で言及されているPGの記事は、「分かってる人には分かってるよね」という類のものに終始している。魅力は理解できるし、筆者が言いたいことも分かってる。
プログラミングは過去60年でかなり成熟したんだから、もっと考察に基づいた記事が増えてほしい。
自分はLispを長くやりすぎて、もうその良さを当たり前のように感じてた。他の人気がある、あるいは経済的にリスクの低い言語で、みんながどうやって自分自身の足を引っ張っているかという惨状を目の当たりにして、ようやくLispの良さを再確認するんだよね。
いつも思うんだけど、趣味でやるなら、あるいは仕事で使うなら、どのLispの方言(実装)を学ぶのが一番価値があるんだろう?