segunda-feira, 13 de novembro de 2006

Ultimate Programming Language

Há já alguns anos que programo e tenho notado que há uma discussão que é sempre actual.

Qual a linguagem de programação definitiva. A melhor que as outras todas? Aquela que toda a gente deve de aprender, porque é sem sombra de dúvida melhor.

Será o Java? Será o .Net? O Perl? O Ruby? O C/C++? o Cobol? o Smaltalk? o LISP? o PHP? o ASP? o J2EE? ETC ...

Encontro um paralelo na discussão de qual melhor a Arte Marcial de todas. Será o Karaté, o Judo, o Jiu Jitsu, o Kempo, o Kung Fu o Taekwondo, o Tai chi Chuan, etc.

Penso que a resposta acaba por ser idêntica! Nos vários Campeonatos organizados para avaliar qual das artes é melhor, numas vezes ganhava uma, noutras ganhava outra. É impossível alguém assegurar que a arte A é sem dúvida melhor que a arte B. Até porque de vez em quando aparece alguém excepcional numa arte que é capaz de surpreender tudo e todos. Mais tarde aparece outro que ganha destaque noutra arte, etc. O que conta é a eficácia que cada um tem na arte que domina. Sempre levei em consideração a máxima do meu Sensei:
"A estrada tem duas bermas. Estar numa é seguro, estar noutra é seguro, estar no meio é perigoso, podes ser atropelado."

Será que quando uma empresa contrata seguranças está preocupada com as artes marciais que os seus seguranças dominam? Ou apenas exige que sejam eficazes a garantir a segurança contratada?

Transpondo isso para as tecnologias de informação. Das imensas tecnologias(linguagens) disponíveis, há algumas que são mais iguais, isto é, que disponibilizam as mesmas potencialidades. Entre Actualização de bases de dados, páginas html dinâmicas, webservices, ligação a sockets, multiprocessamento, processamento de lotes (batch), etc. Entre essas não posso dizer que uma é melhor do que outra. Talvez para mim, tendo em conta a minha experiência, uma seja mais fácil, do que outra. Mas outro terá uma opinião diferente. Será que isso faz com que eu seja melhor do que o outro? Será que o devo convencer a seguir o meu caminho de aprendizagem? O melhor que lhe posso dizer é:

"Sai debaixo das pedras
E vai
Vai

Vai mais longe mais fundo
Não mudes de assunto
Só porque é mais fácil

Vai
Vai mais longe vai
Vai ao fundo do fundo
Não mudes de assunto
Há sempre um perigo"

Esta pérola da cultura portuguesa, ilustra o meu pensamento.

Muitas vezes no percurso do nosso caminho somos confrontados com pretensas facilidades que nos afastam do nosso caminho inicialmente traçado. No entanto o problema é que logo a seguir aparece outra novidade qualquer que também ela é mais fácil, melhor, mais eficiente. Tentam sempre nos fazer passar por tolos por não estarmos na berra da tecnologia. Se seguirmos o impulso de saltar de novidade em novidade, corremos o perigo de não conhecermos uma tecnologia o suficiente para fazermos algo de útil com ela. O que compromete a realização de um processo de fio a pavio. Normalmente no fim ficamos sempre com a sensação que afinal o que aparentemente era difícil é na realidade muito fácil.

Se queres realmente fazer a diferença como programador, escolhe a tecnologia que é mais simpática para ti e para a industria em que queres trabalhar e procura aprender o máximo que puderes, para seres eficáz na realização de qualquer projecto que te proponham. Porque o que avaliam realmente é a tua eficácia no processamento da informação e não a tecnologia por ti escolhida.

A prova disso é questionas-te acerca de qual a linguagem de programação usada no Google? Ou basta-te saber que as tuas pesquisas são praticamente instantâneas? Ao utilizador final, o que conta é a eficácia com que acede à informação e não a tecnologia que a veícula.

Já agora valia pensar nisso!