[quote=Thiagosc]Eu duvido que todos esses “membros da comunidade” que dão palestras ou palpites sobre linguagens e estão ouriçados por causa desse novo filão chamado DSL realmente saibam sobre o que falam. Vi uma palestra no TheServerSide de um pessoal da ThoughtWorks onde, obviamente, falavam sobre DSLs e Ruby e a patética explicação sobre o porquê Lisp é pioneiro em tudo é por causa da “sintaxe horrível, e isso faz as pessoas pensarem em que tipo de DSL ficaria melhor”. Haha. São esses os “especialistas”? Eles não são especialistas, são apenas deslumbrados pelo que não sabiam há pouco tempo atrás que ao invés de procurar investigar mais além, se deram por contentes e agora esperam capitalizar este “next big thing”.
Você, inevitalmente, pela flexibilidade-sem-complexidade do Lisp acaba criando formas de gerar código automaticamente ou criando uma forma de descrever um domínio mais facilmente. Nada novo aqui.[/quote]
E você viu algum dos especialistas dizer que não é assim? Que LISP não dá condições de fazer isso?
O interesse inicial da criação da linguagem era exatamente esse, que outras pessoas pudessem extender a linguagem criando novas micro-linguagens através das bases que ele provia. É óbvio que não há nada de novo aqui o problema é que não é simples nem trivial fazer esse tipo de coisa. Lisp nasceu a frente do seu tempo, a orientação a objetos nasceu a frente do seu tempo, programação paralela utilizando o modelo de atores também surgiu a frente do seu tempo, as pessoas simplesmente não entendiam ou, mais comumente, não viam uso prático pra isso quando surgiu.
Um dos grandes responsáveis pelo disseminação da orientação a objetos (para o bem e para o mal, quanto mais gente, mais gente sem competência) foi o surgimento e o crescimento do Java como linguagem mainstream, eu duvido muito que se não fosse o Java nós tivéssemos tanta gente por aí enchendo a boca pra dizer que “programa orientado a objetos”. A mesma coisa é Erlang e outras linguagens orientadas a concorrência, até pouco tempo atrás se preocupar com concorrência era uma coisa de louco ou quando você tinha que escrever aplicações como servidores web, hoje com máquinas com tralalá processadores e você quer se aproveitar deles, precisa se procupar com concorrncia ou usar linguagens que facilitem isso.
Até então as pessoas não tinham visto muita vantagem ou até uso prático pra DSLs, até porque até pouco tempo atrás o nível de abstração era relativamente baixo, encontrar linguagens com bibliotecas de estruturas de dados, IO e threads todas prontas e funcionais não era fácil, especialmente se você estava escrevendo aplicações pra rodar em diversas plataformas, além do mais, as aplicações que se escreviam ontem não são as mesmas que se escrevem hoje. A complexidade que nós temos nas aplicações de hoje exigem linguagens mais expressivas e domínios mais complexos.
Lisp já fazia isso? Claro!
Mas quem aqui programa em Lisp? Quem aqui conhece bibliotecas pra threads em Lisp? Onde é que você vai achar mão de obra pra dar suporte numa coisa dessas?
O mundo e os problemas são bem maiores do que parecem ser. Sempre.