私がScalaで作業するとき、開発のフェーズ(特にfor
理解力)がよくあります。そこでは、すべてのタイプを正しく機能させる必要があります。これは、大きなプロジェクトでは大きなプラスですが、小さなプロジェクトでは明確なネガティブです。型を忘れて、PerlやAwkで漠然と覚えている方法でClojureの「仕事を終わらせる」ことに集中できると思っていましたが、これまでのところ、その方法はうまくいきませんでした。私の経験では、コード/コンパイルフェーズで「型を機能させる」のではなく、コードを実行しようとすると例外が発生します。これは単純化ではありません。問題は解消されていません。問題は開発サイクルのより危険で高価な部分に移されています。
そこでのLispっぽい構文の楽しいシンプルさ。Emacsの大きな強みの1つは、任意のバッファーでいつでもコードブロックの閉じかっこで特別なキーシーケンスを押すことにより、任意のlispコードを実行できることです。括弧で区切られたlisp構文の単純な性質により、他のほとんどの言語では扱いにくい(中かっこを導入する必要がある)方法で、エレガントになります。また、の規則性(function arg, arg...)
とは、(operator arg, arg...)
Scalaのような他の言語の中置演算子にはないような方法で、第一級市民としての機能と演算子についての考え方や無名関数についての考え方は非常に自然になります。
私のScalaの限られた経験により、構文がより単純で読みやすいとは言えません。確かに、Clojureにはマクロを使用した非洗練された構文がありますが、私の認識では、これらのマクロは、それ以外の場合は非常に機能的な構文で命令型思考の小さな窓を開くだけです。言語で関数構文または命令構文を優先することで、物事を簡素化できます。これについては、Clojure、Java、Haskellにポイントを挙げなければなりません。
私のScalaに対する懸念は、C ++またはPerlに対する懸念と同じです(程度は低いですが)。言語の構文は、いくつかの異なる思考スタイル(HaskellおよびJava)に対応しています。これは書くことを楽しくしますが、読みやすさのために問題があるかもしれません。私がそれを書いているときでも、Clojureはドメイン固有言語をサポートしていることを覚えています。
あなたの質問は非常に興味深いものです。結局のところ、比較は複雑なものです。しかし、私の現在の知識に基づいて、Clojureの構文はScalaよりも単純ですが、1桁も単純ではないことに同意する必要があります。