Não existe canivete suíço em computação !
Publicado por Marcos Tapajós há mais de 2 anos.

Acho que não é novidade para ninguém que a Improve it está apostando em Ruby, mas especificamente no Ruby on Rails, e que eu abracei essa aposta e cada dia estou mais feliz de trabalhar nessa linguagem e com esse framework. Cada vez que comento sobre o Rails com meus amigos, ou qualquer outra pessoa, sempre escuto a mesma pergunta, "É tão poderosa quanto o Java?". Engraçado que depois que eu discuto por alguns minutos sobre essa pergunta sempre vem a mesma pergunta, "dá para usar para tudo ?".
Eu sempre explico que não acredito que em computação exista um canivete suíço e que faz parte de um bom profissional saber diferenciar onde se aplicar uma linguagem (ou uma tecnologia) em detrimento a outra. Posso estar enganado, mas o que eu vejo pelo mercado é que as pessoas procuram se enraizar em alguma linguagem achando que todos os seus problemas estão resolvidos e se esquecem que as vezes podem estar resolvendo um problema mas passando por vários outros, ou gastando demais com excesso de complexidade.
Hoje eu li um post do Thiago Arrais e pelo visto não sou o único que acha que cada linguagem tem um objetivo e uma aplicabilidade. Gostei muito desse post pois além dele tratar essa forma de pensar ele discute sobre Design Patterns com uma abordagem super interessante mostrando o quê realmente são os padrões de projeto e como eles acabam se incorporando as novas linguagens.
A forma como a maioria das pessoas encaram os Design Patterns é uma coisa que me incomoda profundamente. Frequentemente eu vejo as pessoas escreverem códigos para usar os Design Patterns ao invés de identificarem no seu código semelhanças com os padrões conhecidos e então aplica-los. Pela minha experiência essa pratica, na maioria dos casos, introduz uma complexidade desnecessária ao software e tenho certeza que toda complexidade desnecessária além de ser um desperdício é mais código e que mais código implica em mais chances de bugs.
Não estou querendo dizer que os padrões são ruins, apenas que devemos usa-los da forma correta e quando forem necessários. Participo de várias listas e sempre que vejo alguém perguntar sobre material para aprender uma linguagem várias pessoas indicam livros, artigos e sites sobre Design Patterns e me questiono se a pessoa precisa saber padrões para poder usar uma linguagem. Será que não seria mais proveitoso ela descobrir um problema, entender as limitações da linguagem e só então começar a aplicar essas gambiarras ?
Sim, padrões são gambiarras ! Gambiarras com nomes bonitos !
Comecei a tentar explicar essas minhas afirmações e vi que não consegui falar nada diferente do que o Thiago Arrais falou em seu post e por isso mesmo vou citar um paragrafo desse post dele.
"Um padrão não é nada mais que uma gambiarra para contornar fraquezas de algumas linguagens. Estas fraquezas são completamente naturais. Não se espera que toda linguagem consiga dar suporte a todo tipo de construção, mas que seja boa naquilo a que se propõe. Já que não há como ter suporte direto a tudo que se possa pensar, as pessoas começam a criar construções padronizadas para cada tipo de trabalho. Estas construções são os padrões."
O que eu quero explicar para todos que se questionam sobre qual linguagem é melhor do que a outra é que isso não existe e que cada linguagem tem seu objetivo e provavelmente surgiu dentro de um contexto diferente das outras. Indo um pouco além, que não existe linguagem perfeita, isto é, um canivete suíço.





O que você achou? Coloque seus comentários e sugestões abaixo!
Acompanhe o RSS dessa página.
Comentários (4 até o momento)
Walter Cruz disse 4 dias depois:
Marcelo Alvim disse 4 dias depois:
Eleudson Queiroz disse aproximadamente 1 ano depois:
Walter Cruz disse aproximadamente 1 ano depois: