Вы находитесь на странице: 1из 4

17/2/2014

Uma linguagem de programao pode te tornar estupido? | /dev/Kico

/dev/Kico
Experincias em desenvolvimento de software

Uma linguagem de programao pode te tornar estupido?


23/11/2008 Uncategorized
Ambientes de desenvolvimento rpido suprimem os sintomas de impotncia ao criar a iluso de poder. Corolrio Weissmann sobre desenvolvimento Aquela infindvel discusso minha linguagem de programao melhor que a sua, que nada mais do que um reflexo de nossa infncia meu brinquedo melhor que o seu, devo confessar, sempre chamou minha ateno. Fico horas e horas me divertindo com estes tpicos. quando me pergunto: uma linguagem de programao pode emburrecer um indivduo? Cheguei a concluso de que sim. E muito.

Ludwig Wittgenstein

Quando fiz o curso de Filosofia, fiquei muito impressionado com o conceito de determinismo linguistico, ou seja, o fato de que a linguagem que usamos modela nosso pensamento. Alguns filsofos vo alm. Wittgenstein, por exemplo, chega a afirmar (e eu concordo plenamente) que os limites do mundo (pode ser entendida aqui a percepo do mesmo) de um indivduo correspondem aos limites de sua linguagem. Realmente, trata-se de um ponto vlido visto que o mundo s recebe o nosso feedback a partir da nossa linguagem e vice-versa. Transmitimos ao mundo aquilo que captamos a seu respeito e em seguida processamos a partir de nossa linguagem. E de onde vm a nossa linguagem? Bem, esta fruto do ambiente no qual estamos (ou seria algo intrnseco?). O ambiente influencia nossa linguagem. H alguns exemplos hoje considerados banais, como o esquim que consegue perceber n variaes distintas do branco, que so refletidas em sua prpria linguagem (h um nome para cada variao). Outro bom exemplo o brasileiro: ns conhecemos diversos tipos de banana. Curiosamente, para um estrangeiro, todas as bananas so iguais. E nosso vocabulrio expe esta riqueza: banana nanica, caturra, etc. O que me faz pensar na seguinte citao de Dijkstra: the college pretending that learning BASIC suffices or at least helps, whereas the teaching of BASIC should be rated as a criminal offence: it mutilates the mind beyond recovery.. No caso, esta frase foi dita na palestra The threats to Computer Science, que tratava do modo como a cincia da computao ensinada nas faculdades. Alis, atualmente h inclusive gente que usa um argumento bastante similar no que diz respeito ao Java. A pergunta que se faz portanto : pode uma linguagem de programao mutilar a mente de um desenvolvedor? Na minha opinio, sim. Em minha experincia, j vi diversos casos de desenvolvedores que criam coisas incrvelmente interessantes em Visual Basic mas no conseguem de modo algum sair desta linguagem. At tentam aprender outras, mas sempre
http://www.itexto.net/devkico/?p=172 1/13

17/2/2014

Uma linguagem de programao pode te tornar estupido? | /dev/Kico

acabam voltando ao Visual Basic, o que justifica-se pelo fato de que trabalhar com algo com o qual j se est confortvel mais seguro. Algo muito similar observo com Java. Visto a sua aplicao com sucesso em diversos ambientes distintos (mvel, desktop, web, etc.), muitas vezes o desenvolvedor fixa-se no Java e dele no sair jamais. Assim como no caso do Visual Basic, trata-se novamente da mesma justificativa: se j sei Java to bem, por que me arriscar com outras linguagens ou ambientes?. No caso do Visual Basic, a deficincia fica mais ntida pelo fato de ser uma linguagem ultrapassada. Neste sentido, quem programa em VB possui uma vantagem em relao a quem programa em Java. H menos Edsger W. Dijkstra arrogncia (por que aprender outra coisa se Java j uma linguagem de ponta?), e portanto a necessidade de se aprender algo novo se torna mais ntido. Mas em ambos os casos, ambas as linhas de raciocnio levam em considerao apenas o medo de se tornar obsoletos tecnologicamente (mais especificamente, para o mercado), ignorando um problema que ordens de magnitude mais srio: o determinismo linguistico. O que nos leva a pensar no papel do desenvolvedor: espelhar/reproduzir/criar no ambiente computacional uma soluo necessria no ambiente real. Ora, dado que, como j mencionei anteriormente, nosso mundo (percepo) resultado de nossa linguagem, e as linguagens de programao so a nossa percepo do ambiente digital em que atuamos, o fato de conhecermos apenas uma linguagem de programao contribui para que nosso raciocnio criativo torne-se tambm limitado. Pior ainda se a nica linguagem que conhecermos nos apresentar uma descrio limitada deste ambiente. Focar-se em uma nica linguagem consiste em ignorar o porqu de sua criao: resolver problemas presentes na poca de sua introduo. So linguagens de uso geral? Sim, com certeza. Neste caso, no deveriam nos dar uma viso ampla? Com certeza, porm foi criada visando tambm superar algumas das limitaes presentes em sua poca de desenvolvimento. Se no fosse assim, existiria hoje provvelmente uma (no mximo duas) linguagem de programao. Logo, o argumento de que aprender outra linguagem trivial, pois s muda a sintaxe mostra-se como falacioso. Para ilustrar o raciocnio, irei expor de modo fenomenologico o desenvolvimento de um profissional fictcio. Este profissional comear sua carreira com o Visual Basic 6, o que ilustra muito bem o comportamento que j observei com alguns profissionais. Escolhi o Visual Basic 6 s por se tratar de um ambiente de desenvolvimento rpido (outros poderiam entrar em seu lugar portanto). Num primeiro estgio, todo software composto por uma srie de formulrios a partir dos quais o usurio envia seus dados e ento, atravs de uma srie de eventos, faz o que deve fazer. No h muita preocupao com mdulos ou algo similar. Apenas com os eventos. O trabalho consiste basicamente em agrupar componentes em uma janela, incluir os eventos necessrios, compilar a aplicao, entregala ao cliente e, conforme o tempo for passando, ir dando manuteno no produto final.Com o passar do tempo, a complexidade do software aumenta. Isto fica ntido a este profissional pelo nmero de formulrios criados. So diversos, e em diversos momentos, ocorre a necessidade de se copiar cdigo de um formulrio para outro. Quando o uso do famigerado Control-C/Control-V comea a dar muito trabalho a este desenvolvedor, ele comea a perceber que programar realmente algo difcil.
http://www.itexto.net/devkico/?p=172 2/13

17/2/2014

Uma linguagem de programao pode te tornar estupido? | /dev/Kico

quando o usurio passa para o segundo estgio. Surgem os famosos mdulos. Neles possvel incluir todo aquele cdigo que at ento era copiado de um formulrio para outro. Fantstico! Agora basta referenciar estes mtodos nos formulrios e pronto. O trabalho diminuiu. O tempo passa e a aplicao continua crescendo. Desta vez, o cliente quer que o sistema se comunique com clientes externos. J tenho mdulos, o que facilita, no entanto, um novo paradigma surge. A web. Como a web funciona? O que devo fazer? Neste exato momento, o profissional trava. Gastou tanto tempo pensando no desktop que ao se deparar com a web, pelo fato de fenomenologia moderna sua linguagem favorita no lhe oferecer suporte fcil a este novo paradigma, simplesmente no sabe nem por onde comear. Engenharia de software? Coisa pra gente besta. H at alguns recursos no Visual Studio. Um tal de ASP Lembra muito o VB. Ser que eu uso ele? HTTP? Que isto? Eu poderia tambm procurar algum componente que resolva meu problema

Hegel - O germe da

Chega-se a seguinte soluo: vou disponibilizar o banco de dados para eles. Assim, eles enviam seus dados aqui pra dentro de acordo com as regras que eu venha a definir e pronto. Problema solucionado. Sou um gnio! Lgicamente, a soluo ir se mostrar um fracasso. quando este profissional expulso do segundo estgio de evoluo e aprende outra linguagem de programao. No caso, Java. Terceiro estgio: aprendendo Java. Aprender Java fcil, porque todas as linguagens so iguais. S muda a sintaxe pensa nosso pobre profissional. Ao iniciar seu trabalho com Java, a primeira coisa que procura saber como so criados os formulrios, e comea a achar a plataforma um lixo enquanto no encontrar um editor visual que lhe permita trabalhar assim como fazia no caso do Visual Basic. Quando finalmente o encontra, a sim comea a trabalhar. Cria ento algumas classes, lotadas de mtodos estticos. Estas classes utilitrias correspondero para este usurio aos mdulos com os quais estava habituado ao trabalhar com Visual Basic. Algumas aplicaes desktop so criadas, j possvel escrever no banco de dados, e tudo anda bem, at que o mesmo profissional percebe a necessidade de criar uma aplicao web. E neste ponto que d de cara com a parede de novo. Como no aprendeu orientao a objetos direito (no VB no havia isto. Haviam classes e tal, mas nunca entendeu ao certo para que serviam), no consegue entender como um servlet funciona. Consequentemente, no consegue aprender a trabalhar com outros frameworks. Diz que o Java um lixo, que o bom mesmo era o VB, aonde conseguia fazer tudo de forma fcil, sem estas frescuras. Repare na constante: como aprendeu a programar usando apenas um ambiente de desenvolvimento, sempre que ocorrer uma mudana, ir tentar trabalhar assim como fazia no ambiente inicial. Se o mesmo profissional, ao iniciar o seu trabalho, tivesse comeado com duas ou mais linguagens, vamos supor: Visual Basic e C, ou qualquer outra, o mesmo no teria ocorrido. Ao se acostumar com o ambiente visual, o programador passa a ignorar que por trs dos seus lindos
http://www.itexto.net/devkico/?p=172 3/13

17/2/2014

Uma linguagem de programao pode te tornar estupido? | /dev/Kico

formulrios, h uma estrutura complexa que preciso conhecer para que se possa progredir. Ambientes de desenvolvimento rpido como Visual Basic ou Delphi banalisam a nossa tarefa. Curiosamente, se o profissional fictcio acima tivesse comeado sua carreira aprendendo apenas C, possuiria uma viso mais abrangente? Com certeza. Isto porque linguagens como o Visual Basic ou qualquer ambiente visual apenas suprimem os sintomas de impotncia incluindo a iluso de poder. Nosso programador fictcio ao criar seus formulrios se sentia incrvelmente podroso. Afinal de contas, estava criando algo realmente til com apenas alguns cliques do mouse. No entanto, esta iluso desaparece a partir do momento em que precisa interagir com algo mais complexo. No caso de quem comeou usando C/C++ ou outra linguagem que no oferea este tipo de ambiente, as coisas so mais difceis no comeo. Este outro desenvolvedor possuir a viso de baixo pra cima, ao contrrio do primeiro. Consequentemente, ao evoluir, ficar mais simples para este compreender as camadas posteriores. Afinal de contas, so desenvolvidas com base naquela da qual est partindo, e no o contrrio. Este outro desenvolvedor v a sua percepo do ambiente digital evoluir conforme vai conhecendo estes novos frameworks ou bibliotecas. Qual seria a soluo portanto? Comear pelo assembler? Claro que no, mas pelo menos fugir dos ambientes de desenvolvimento rpido o mximo possvel e, se possvel, sempre conhecer pelo menos duas linguagens de programao distintas (melhor ainda: ao menos dois paradigmas). Isto quer dizer tambm que todos os ambientes de desenvolvimento rpido so um veneno terrvel? No! S que devemos utiliz-los apenas aps possuir uma base terica/prtica slida sobre os fundamentos da computao. (no vou chover no molhado e dizer quanto mais linguagens aprendermos, melhor, pois bvio demais) No final das contas, no a popularidade de uma linguagem que torna um profissional competente (COBOL t a pra provar isto), mas o modo como lida com o determinismo linguistico.

PS: outro bom exemplo de determinismo linguistico. Windows! Aqueles que s usam Windows, acham comum os erros que o sistema apresentam, e jamais reclamam. No entanto, no dia em que passam a usar outro sistema, como o Linux ou Mac OS, nunca mais retornam ao mesmo. Isto porque sua linguagem cresceu (ele conhece mais de um sistema operacional) e, consequentemente, possui uma viso mais ampla do mundo.

http://www.itexto.net/devkico/?p=172

4/13