Linguagens Dinâmicas
Ontem eu cruzei com uma longa crítica aos “adoradores” de linguagens dinâmicas no Hacknot. Gostei. Bastante agressivo e provocador. Isso é bom, ser provocador. Por isso é leitura recomendada. Mas é bom ter bom senso e não se deixar levar pela provocação, claro.
Como um “DL weenie” — assumo que gosto e muito de linguagens dinâmicas, em particular as que ele pegou para cristo: Ruby e Python — eu fiquei, de imediato, meio irritado (aparentemente, eu não sigo os meus próprios conselhos, normal). Como diabos ele fala mal das linguagens que eu gosto? Poxa!
Mas a maneira como ele conduz o raciocínio me agrada profundamente. Atiça o lado engenheiro e o cético. O artigo discorre sobre o ponto de que, hoje em dia, existe uma “adoração” as linguagens dinâmicas que não é suficientemente fundamentada. Muitas afirmações sobre os ganhos de produtividade provenientes do uso de Python e Ruby (entre outras) em projetos não são baseados em fatos e métricas, mas sim no sentimento dos desenvolvedores que evangelizam essas linguagens.
Eu não acredito que seja válido desmerecer essa sensibilidade do desenvolvedor. Principalmente aqueles que não são desenvolvedores alpha, i.e., os que ditam os modismos e estão na crista a onda. A sensação de que uma linguagem — qualquer que seja — aumente a produtividade de um desenvolvedor pode muito bem funcionar como um placebo e, embora não afete a produtividade, em termos de linhas de código e horas/homem, pode mudar significativamente a relação entre o desenvolvedor e o seu trabalho, o que é bom não importa a circunstância.
Por outro lado, acho que o ponto é extremamente importante e significativo. Em um mundo que está cada vez mais fácil expressar opinião ao vento, poder contar com fatos para demonstrar a validade de qualquer alegação é fundamental. Ainda mais para algo que é reconhecido como ciência. Mesmo porque, fatos são necessários para permitir (e fomentar) o debate e estudos sobre o assunto.
Dados coletados em projetos de desenvolvimento utilizando linguagens dinâmicas — e não só isso, frameworks modernos e outros conceitos, como ORM, abstrações — são de grande valia. Em meus 3 anos de IBM sempre ouvi dizer, por exemplo, que a presença de um middleware corporativo, um EAI, trás grandes ganhos a um projeto. E me pergunto, quanto? Em produtividade? Em horas/desenvolvedor? Redução do esforco de desenvolvimento ou só de especificação? A presença desse tipo de informação é excelente para poder levar qualquer nova tecnologia para fora do mundo dos hobbistas e acadêmicos e levar até, se for o caso, para o mercado.
Alguns argumentos que o autor usa, entretanto, não são válidos e o preciosismo (para não dizer birra) cega em alguns pontos. Ao questionar o fato de que se escreve um código em Python com bem menos linhas do que em Java, o autor acerta em deixar claro que não é por ser uma DL que Python permite isso, e sim por ter uma enorme quantidade de bibliotecas de terceiros, o que não é exclusivo de linguagens dinâmicas nem de Python sobre Java.
Mas peca por não discutir (sequer considerar) que o motivo pelo qual Python tem uma extensa biblioteca externa é pq se trata de uma linguagem com uma barreira de entrada bem menor do que Java, e um dos prováveis motivos para isso é justamente por ser uma linguagem dinâmica.
Em suas conclusões, o autor primeiro aponta o óbvio, que os evangelistas de linguagens dinâmicas favorecem os pontos fortes em suas defesas e ignoram os fracos. Sim, é por isso que são chamados de “evangelistas”. Esse é o propósito e não sei até que ponto isso é ruim. Um evangelista pode muito bem conquistar a atenção de um desenvolvedor alpha e esse sim, produzir alguma coisa significativa.
O melhor exemplo é o Rails para o Ruby. Qualquer um que gaste algum tempo com Ruby vai ver que a linguagem tem méritos próprios, mas só ganhou uma maior visibilidade com o Rails.
E segundo, cita uma passagem do artigo que impulsionou o dele, e ele parece concordar, aonde se decreta que linguagens dinâmicas um dia irão morrer, por serem fruto de modismo e fashion sense e não resultado de engenharia. Eu duvido. E muito.
Linguagens de programação são, antes de qualquer coisa, linguagens. Ninguém mais fala latim, mas não há dúvidas de que muitas das línguas faladas hoje derivaram de lá. O mesmo acontece com linguagens de programação e isso é absolutamente inevitável. Elas podem mudar, evoluir, sair de moda por um tempo ou até deixar de existir da maneira como elas existem hoje. Morrer, morrer mesmo? Difícil.
De qualquer forma, esses são os meus comentários, sobre o que eu pensei após digerir um pouco o artigo. Sinta-se livre para discordar.
Por fim, aos que se interessaram/interessam pelo assunto e querem conteúdo mais substancial do que apenas elocubrações em cima de um artigo, eu recomendo a leitura do blog do Guaracy.
Feed com os comentários desse post.
