Uma das coisas que faz Ruby brilhar é a capacidade de criar melhor idiomas específicos de domínio, como
Embora se possa duplicar essas bibliotecas no LISP por meio de macro, acho que a implementação do Ruby é mais elegante. No entanto, acho que há casos em que a macro do LISP pode ser melhor que a do Ruby, embora eu não pudesse pensar em um.
Então, em que área a macro do LISP é melhor do que a "capacidade" de Ruby de criar DSL, se houver?
atualizar
Eu perguntei isso porque as linguagens de programação modernas estão se aproximando da singularidade do LISP , como
- C obteve pré-processador de expansão macro , embora muito primitivo e propenso a erros
- C # tem atributos, embora seja somente leitura, exposto por reflexão
- O Python adicionou o decorador, que pode modificar o comportamento da função (e classe para a v 3.0), embora pareça bastante limitado.
- Ruby TMTOWTDI que cria DSL elegante, se o cuidado for aplicado, mas de maneira Ruby.
Fiquei pensando se a macro do LISP é aplicável apenas a casos especiais e se os outros recursos da linguagem de programação são poderosos o suficiente para aumentar a abstração para enfrentar os desafios atuais do desenvolvimento de software.