2026年7月22日(水)掲載 2,870本日 27
HN8535

Clojureを1ヶ月ガッツリ使ってみた本音レビュー:Lispの沼にハマるか、それとも?

My thoughts after using Clojure for about a month

speckx約2か月前

議論

9
0speckxスレ主85約2か月前

Clojureを実務で約1ヶ月間使い倒してみました。関数型言語特有の柔軟性やイミュータブルな設計の心地よさは格別ですが、一方で独特の構文やエコシステムに慣れるまでの学習コストなど、実際に触れてみて見えてきたリアルなメリット・デメリットを共有します。

1gertlabs約2か月前

関数型パラダイムは最初は少し違和感があるけど、問題解決の感覚が……ガラッと変わるね。個人的には大規模なシステム設計にはOOPが一番直感的だと思うけど、これは好みの問題かな。

ほとんどのモデルはClojureだとあまりパフォーマンスが出ないんだけど、OpenAIのモデルは言語のパワーをフルに活用できてる。主観だけど、言語の性格とマッチしてる気がするよ。データは https://gertlabs.com/rankings?provider=openai にあるよ。

2HiPhish約2か月前

このサイトをClojureで生成するようにしたんだ

みんな知ってる通り、自作の静的サイトジェネレーター(SSG)を書くまでは真のLisperとは言えないからな。

マクロをフル活用して独自の「テンプレートエンジン」をサクッと追加できた時は最高にハイになれたよ。でも、その後の反動がきつかった。出力の最適化、スコープ付きCSSのサポート、SPAフレームワークコンポーネントのサーバーサイドレンダリング、そしてもちろんNodeエコシステムとの統合(良くも悪くも便利なものが多すぎる)など、優れたSSGには考えるべきことが山ほどあるんだ。それ以来、Astroに乗り換えたよ。とはいえ、自分一人でSSGをあそこまで作り込めたのは今でも面白い経験だったと思う。

3meken約2か月前

ブロックの終わりの ]}]})))}-ness を乗り越えるのにもっと簡単な方法があればいいんだけど。

これどういう意味なんだろう?普通のカッコだらけの言語と何が違う、あるいは何が悪いのか……?

ちなみに自分はpareditを使っていて、)を押すだけでカッコやブラケットの向こう側に移動できるよ。それに頼らなくても、左右の矢印キーを押すだけでいいのでは……?

4pdimitar約2か月前

失礼ながら、このトピックはもう散々議論され尽くしているよ。

自分も数年前に試した時はClojureを気に入ったよ(合成可能性とデータ構造は両方とも最高だね)。でも、真の付加価値は構文じゃなくてランタイムにあるんだ。Javaのランタイムは堅実だけど、Erlangほど優れているわけではないし、もしかしたらGolangの基準にすら届いていないかもしれない。ここで言っているのはコンカレンシーと並列処理の話ね(メモリ管理についてはJavaがかなり優秀なのは間違いない)。「グリーン・スレッドがあるじゃないか」と言われそうだけど、ErlangやGolangができることを全部こなせるようになったら呼んでくれ。そうしたら真剣に再検討するよ。

プログラミング言語の構文なんてほとんど重要じゃないんだ。ある程度は影響するけど、僕らプログラマーは構文をロマン化しすぎなんだよ。最適化するなら、ランタイムとその特性こそがはるかに重要さ。

5BoingBoomTschak約2か月前

例えばseqの抽象化のおかげで、どんな種類のシーケンスを扱っているか気にしなくて済むことが多い

えっ?それ完全にCL(Common Lisp)からそのまま持ってきたものだろ(https://www.lispworks.com/documentation/HyperSpec/Body/t_seq... )。AREF/NTHも同じで、ELTもあるしね。

それ以外は同意するよ。CLはバロック様式というか、あちこち補完が必要な部分はあるね。

Lisp:すべてはリストである

いや、それは間違いだよ。全くもって違う。LISP 1.5の話をしているなら別だけど……。

構文が多すぎる

面白いことに、自分は新しいベクター/セット/ハッシュテーブルのリテラルは割と許容できている。僕や他の何人かが問題視しているのは、マクロや特殊演算子でリストの代わりにベクターを使っていることなんだ。(let [a b] ...)(let (a b) ...) と書けないのはちょっと納得いかないな。

6NetMageSCW約2か月前

投稿者はSmalltalkを知っているんだろうか。あれは構文がすごくシンプルだよ。Lispも別の意味でシンプルだけど、演算子と関数のどちらを重視するかによって、他のどんな言語よりも構文が多く見えることもあるよね。

7smitty1e約2か月前

「Lua:すべてはテーブル

Tcl:すべては文字列

Lisp:すべてはリスト」

Python:「すべては辞書」

8temporallobe約2か月前

もう10年近くClojureを使っているけど、未だに外国語を話しているような気分だよ。僕はこれを「カッコの地獄(parenthetical hell)」と呼んでる。