Zed Shaw acaba de escrever um artigo para a cio.com.
[quote]
Deciding when to use any language–including Ruby–depends on the appropriateness to task and the amount of yak shaving necessary. Zed Shaw explains when Ruby’s MRI or JRuby is the best language for the job, and when it really isn’t.[/quote]
Segundo o artigo:
Ruby serve para:
Systems scripting and automation
Web programming, sometimes
Simplified APIs for nonexperts
Gluing C APIs together.
Prototyping network protocols
Web application testing.
Telephony applications.
JRuby serve para
Breathing new life into tired old Java APIs
Gluing together Java libraries.
Rapid prototyping and experimentation
Enterprise application integration
Web programming but with the Java platform
Swing or SWT GUI development.
Ruby NÃO PRESTA para:
Large data crunching
Image manipulation
Heavy math or computation
New language development
E-mail processing
Server protocols
Enterprise deployments
Eu concordo que Ruby Não é uma boa linguagem para definir linguagem as discordo do motivo. O problema de erros pode ser resolvido com tratamento decente de exceções. O prblema é que Ruby não foi eito pensando niso e muitas regras da linguagem atraalham demais a construção de outras linguagens (ver thread sobre Monkey patching).
Mas, no final do dia, Ruby é provavelmente a melhor plataforma mainstream para criar DSLs hoje em dia. Eu diria que é até melhor que Lisp em termos de liberdade de sintaxe (apesar de perder miseravelmente em todos os outros aspectos).
Alé disso, a crítica do inicio do artigo é meio estranha. Com TreeTop você cria uma DSL externa mais facilmente qe com ANTLR.
Tudo verdade, mas como ele mesmo disse, é pro caso do MRI, JRuby só não mata “image manipulation” porque as bibliotecas de manipulação de imagens em Java são horríveis.
Realmente, estudar o ANTLR foi uma das coisas mais difíceis que fiz nos últimos anos. Gostaria de converter para Java uma linguagem orientada a um programa (naquele tempo a gente chamavade POL) que escrevi o parser há muitos anos e desisti depois de ler as partes I e II (2/3) do livro do Terence Parr.
ANTLR é difícil pacas pois é o tipo de ferramenta que exige todo um conhecimento diferente do habitual para se escrever um programa. Por isso que coisas como parser combinators e PEQs são coisas muito mais práticas de serem usadas. O Bracha da uns exemplos muito legais de PC com newspeak. Outra coisa legal é ver o que fizeram no Irony, uma lib p/ C# que implementa o conceito - vale a pena ver a palestra que o autor deu no lang.net 2008