Dynamic Languages e LoC /ou: Quero ver quebrar...

Posted: 27 de dez de 2007 | . David Lojudice Sobrinho | tags: ,

Ontem me deparei com um ótimo post do LLBLGen Man, Frans Bouma, discutindo as Dynamic Languages (DL) e a redução de linhas de código (LoC).

Ele contra-argumenta que a simples redução de LoC trazida pelas DL não é sinal de melhoria.

Mas o melhor argumento dá uma paulada (talvez sem querer) nas DL. Ele diz que as DL, trazendo códigos parecidos com linguagem natural, não resolvem o principal problema que é o entendimento ou intenção macro. Por exemplo: entender o que um método faz não quer dizer que você vai entender a intenção da existência daquela classe ali, daquele jeito.

Como dizia um antigo professor meu de matemática, "basta extrapolar para ver se quebra". Extrapolando o exemplo acima, pegue um projeto grande, com suas 300 e poucas classes. Devo eu, mero desenvolvedor, ler linha a linha para entender a intenção de cada método e montar um modelo na minha cabeça da intenção daquelas classes? Sejam essas classes desenvolvidas em C#, com 500 mil LoC ou Ruby, com 100 mil LoC, é inviável e "quebra".

O post é quase um manifesto anti-dynamic-languages... ou pelo menos ajuda no anti-hype/buzz das DLs. Ao ler os comentários pode-se ouvir em alto brado o grito de angustia e indignação dos que já programaram em ASP e VB3, antigas "DL" ou até já tem experiências nas novas DL.

As DLs não resolvem os problemas que temos hoje no desenvolvimento de software. E, pior: podem trazer problemas que já tivemos. Como não uso DL, sou suspeito. Mas como já deixei o "run-time" fazer muita coisa por mim (e fez errado), também sei que não quero ir por esse caminho tão cedo.

Frans' Blog:
http://weblogs.asp.net/fbouma/archive/2007/12/24/codebase-size-isn-t-the-enemy.aspx

Ah! Pra finalizar, um contra-contra-argumento:
http://ayende.com/Blog/archive/2007/12/25/Code-base-size-complexity-and-language-choice.aspx ...
... e a frase matadoura "Separation of concerns is the only way to create maintainable software".

0 comentários: