Quando trabalho na Scala, geralmente há uma fase do meu desenvolvimento (especialmente com for
compreensão) em que tenho que fazer todos os tipos funcionarem corretamente, o que é uma grande vantagem para grandes projetos, mas um negativo definitivo para os pequenos. Eu esperava que pudesse esquecer tipos e me concentrar em "fazer o trabalho" no Clojure da maneira que me lembro vagamente de fazer no Perl ou no Awk, mas até agora não funcionou dessa maneira para mim. Minha experiência é que, em vez de "fazer os tipos funcionarem" na fase de código / compilação, estou recebendo exceções quando tento executar meu código. Isso não é uma simplificação; o problema não desapareceu, foi transferido para uma parte mais perigosa / cara do ciclo de desenvolvimento.
Não é uma simplicidade encantadora à sintaxe Lisp-ish. Um dos grandes pontos fortes do Emacs é poder executar o código lisp arbitrário pressionando uma sequência de teclas especial no ponto final de um bloco de código a qualquer momento em qualquer buffer. A natureza simples e delimitada por parênteses da sintaxe lisp torna isso elegante de uma maneira que seria estranha (ter que introduzir chaves)? Na maioria dos outros idiomas. Além disso, a regularidade (function arg, arg...)
e o (operator arg, arg...)
pensamento sobre funções e operadores como cidadãos de primeira classe e o pensamento sobre funções anônimas são muito naturais, de uma maneira que os operadores infix de outras línguas como Scala não.
Minha experiência limitada com Scala me impede de dizer que a sintaxe é mais simples ou mais legível. Claro, existe alguma sintaxe não lispish no Clojure usando macros, mas minha percepção é que essas macros apenas abrem uma pequena janela para o pensamento imperativo em uma sintaxe que, de outra forma, é muito funcional. Impor uma preferência por sintaxe funcional ou imperativa na linguagem pode simplificar as coisas. Eu precisaria mencionar Clojure, Java e Haskell para isso.
Minha preocupação com Scala é a mesma que tive com C ++ ou Perl (embora em menor grau); a sintaxe da linguagem acomoda vários estilos de pensamento diferentes (Haskell e Java). Isso torna divertido escrever, mas pode ser problemático para facilitar a leitura. Enquanto escrevo isso, lembro que o Clojure suporta idiomas específicos do domínio e me pergunto até que ponto isso prejudica meu argumento.
Sua pergunta é muito interessante. Por fim, a comparação é complexa. Mas, com base no meu conhecimento atual, eu teria que concordar que a sintaxe de Clojure é mais simples que Scala, mas talvez não seja toda uma ordem de magnitude mais simples.