4 de jan. de 2010

You Can Write FORTRAN in any Language

Aproveitando o tempo ocioso na espera do build no hml, resolvi publicar um assunto guardado. Costumo ler alguns blog's, um deles o Coding Horror [http://www.codinghorror.com] de onde li um artigo que achei muito interessante. Fala de uma idéia que compartilho e os que me lêem podem formar sua opinião.

O título já diz um pouco: "Você pode escrever Fortran em qualquer linguagem" e trata de escrever bom código, e entender a cultura de cada linguagem.

Vemos programadores usando novas linguagens trazendo consigo a bagagem de experiências anteriores, e o artigo trata disso baseando-se em outro artigo, acerca de programadores que migram de VB.net para C#, e como a cultura adquirida programando em uma linguagem é levada para a outra.

Claro para entender melhor é bom ler o artigo na íntegra: http://www.codinghorror.com/blog/archives/000272.html

Como programador aspirante a desenvolvedor, sou estudante de padrões de projeto (design patterns), boas práticas OO, refatorações e por ai vai (tô quase perdendo a mulher de tanto estudar hahahaha), acabei extraindo algumas partes interessantes, pontos chave, e os traduzi, como a seguir:

"So in Visual Basic, the decision to include in the syntax and semantics the ability to assign numbers directly to strings and vice versa was a result of the designers' desire to attract a broad base of developers who would probably not understand the notions of strongly typed variables."

Vou traduzir livremente dada a minha limitação (meu ingrês é péééééésssimo amigo). Se alguém conseguir uma tradução melhor, por favor, corrija.

"Em VB, a decisão de incluir na sintaxe e semântica a possibilidade de atribuir numeros diretamente a strings e vice-e-versa foi um resultado do desejo dos projetistas para atrair uma grande base de desenvolvedores que provavelmente não entendem as noções de variáveis fortemente tipadas"

Sabe, vejo um pouco disso, na nomenclatura, tamanho dos métodos, divisão de classes, de projetos realizados em Java mas de programadores vindos do VB. Classes e métodos longos, classes de negócios, métodos estáticos, etc.
Em linguagens OO os programadores encapsulam as regras em classes e interfaces, em especial as que são mais propensas a mudar, logo "SE", se não é possível criar classes e interfaces, não se está programando OO.

Aqui fala bem:
Power Use of Value Objects in DDD
http://www.infoq.com/presentations/Value-Objects-Dan-Bergh-Johnsson

E aqui também:
Protected Variation: The Importance of Being Closed
http://im.ufba.br/pub/MATA63/Documentos/ProtectedVariation%5B1%5D.pdf

"There are characteristics of good coding that transcend all general-purpose programming languages. You can implement good design and transparent style in almost any code, if you apply yourself to it."

"Há características de boa codificação que transcendem todas linguagens de programação de propósito geral. Você pode implementar um bom design e um estilo transparente em quase qualquer código, desde que você se esmeire para isso"

Um dia, numa conversa rápida com o Rodrigo Botelho (a.k.a. Bergamota), disse o Rodrigo que estava fazendoum sistema para a faculdade em PHP.

E por que (nunca decorei a regra dos porquês) não Java?

PHP tem a fama de ser uma linguagem desorganizada e com programas espaguetes (devido a liberdade permitida), e não é. Os programadores que a usam o são (desorganizados) e "espagueteiam" o código. Existem alguns aplicativos muito melhores desenhados e implementados em PHP do que Java, por mérito do analista/arquiteto/programador/, então se o Rodrigo é um bom programador, e eu sei que ele é, está por vir um ótimo trabalho.

Ver anti-pattern "Big Ball of Mud": http://en.wikipedia.org/wiki/Big_ball_of_mud

"I cannot agree that code quality is predestined by choice of language, environment, or IDE-- it's almost entirely determined by the skill of the developer. Ergo, you can write FORTRAN in any language..."

"Eu não concordo que a qualidade do código é predestinada pela escolha da linguagem, ambiente ou IDE, ela (qualidade) é quase sempre inteiramente determinada pela habilidade do desenvolvedor.  Logo, você pode escrever FORTRAN em qualquer linguagem..."

Em outras palavras, que faz bom código tende a programar bem em qualquer linguagem - e quem faz mau código também tende a fazer em qualquer uma -;

Aqui neste blog tem uma opinião: http://www.nomedojogo.com/2009/04/16/a-melhor-linguagem-de-programacao-e-o-programador/

"Just because a programming language allows you to write bad code doesn't mean that you have to do it."

"Só por que a linguagem de programação permite que você escreva código ruim, isto não significa que você tenha que fazê-lo..."

"You can drown in a bathtub with an inch of water in it, and you can easily write a completely unreadable and unmaintainable program in a language with no gotos or line numbers, with exception handling and generic types and garbage collection."

"Você pode se afogar em uma banheira com uma polegada d'água, e você pode facilmente escrever um programa completamente ilegível e inmanutenível (nem sei se existe essa palavra, me ajudem! hahaha) em uma linguagem que não tenha GOTO's, números de linha, e que tenha manipulação de exceções e coletor de lixo."

"I agree that cultural factors are significant, however, individual developer skill is a far more accurate predictor of success than whether or not you chose the "cool" language."

"Eu concordo que os fatores culturais são significantes, contudo, habilidades individuais do desenvolvedor são indícios muito mais precisos do que escolher ou não a 'linguagem do momento'".

Muitos trechos falam por si, não deixem que ler o artigo inteiro, é muito bom.

Nenhum comentário: