May/07
03
“Não aguento mais Java”
Bom, antes que derramem em cima de mim toda a fúria religiosa pró-Java, vou me explicando: este post é apenas um resumo de algumas mensagens na lista Python-Brasil, que podem ser vistas em sua totalidade aqui. Mas a minha opinião está bem próxima da média vista abaixo.
decopzp: " A galera nas faculdades no meio de programação so fala em Java. Queria saber como começar a aprender Python, gostei muito só que estou com algumas duvidas em relação a classes methodos e etc...Na verdade que saber tudo como fazer o que fazer...Não aguento mais java"
Luciano Ramalho: "Em Java, existe uma aberração sintática chamada "inner classes" que foi parida para suprir a grotesca falta de um jeito de se passar funções como parâmetros. Apenas uma das diversas falhas gritantes de projeto da linguagem Java. Mas é uma ótima linguagem para quem está em busca de um emprego chato.
Agora sério: Java é um excelente substituto para C++. Empresas e instittuições que antes desenvolviam em C++ agora têm uma alternativa mais segura e confiável para seus projetos. Faz todo o sentido a Apache Foundation e a IBM usarem Java, por exemplo.
O grande erro que muitas empresas no mercado estão cometendo é substituir linguagens de mais alto nível por Java, e achando que a queda de produtividade é apenas passageira, enquanto a equipe não ganha fluência na linguagem."
Rodrigo Senra: " No contexto particular de ensino *introdutório* de programação, eu diria que Java como primeira linguagem é no mínimo nocivo.
> Java está na moda.
Piercing também está. Fumar já esteve na moda. Particularmente eu não sou um cara que liga para a moda. Prefiro mais a média, ou até mesmo a mediana ;o)
Em suma, o fato de Java estar na moda para mim só não é irrelevante porque me atrapalha. Atrapalha pois tenho que convencer semi-leigos de que o fato de Java estar na moda é irrelevante ;o) Eu não digo para o Padre qual vai ser o sermão, eu não digo para
o padeiro como fazer o pão nem para o médico qual o tratamento que quero receber antes dele dar o diagnóstico. O computeiro, apesar do nome cacofônico, merece respeito. Uma tecnologia ditada pela moda, e não fundamentada pela análise prática e teórica, é uma falta de respeito para a nossa classe.
> Ela é uma otima linguagem
Aqui concordo, ela tem seu nicho e suas vantagens. E ainda é melhor que *muita* linguagem por aí.
> Vamos com calma. Python está sendo usada em cursos
> introdutorios de programação pois é uma linguagem de fácil acesso...
> mas isso nao quer dizer que seja a melhor linguagem do mundo.
Melhor é um conceito extremamente dependente de contexto. No contexto de ensino introdutório, ainda não vi nada melhor do que Python."
Luciano Ramalho: "tenho plena consciência de que existem milhões de programadores brilhantes que preferem Java. Mas eu não resisto a uma oportunidade de criticar o Java, exatamente porque "está na moda".
Isso tem duas consequências lamentáveis, a meu ver:
(1) muitos gerentes que não sabem distinguir uma referência de um ponteiro escolhem Java para projetos que poderiam ser muito melhor resolvidos em PHP, Python, Ruby, Perl, VBScript etc, e acabam submetendo equipes inteiras de desenvolvedores a uma linguagem e uma API que são otimizadas para projetos imensos e complexos, e
consequentemente acabam induzindo projetos pequenos e simples a ficarem imensos e complexos também.
(2) é tão sofrido aprender e ficar produtivo em Java que muitos de programadores estão ficando sem vontade de aprender uma segunda, terceira ou quarta linguagem, com medo de passar pelo mesmo calvário de novo; pior, depois de suar tanto a camisa para aprender Java, muitos se convencem de que complexidade == qualidade, e que uma linguagem mais fácil de usar, como Python, tem que ser necessariamente inferior ou mais limitada, o que absolutamente não é verdade."
Luciano Ramalho: "
> E como ensinar herança múltipla, sobrecarga de operadores e tipagem
> dinâmica em uma linguagem que não os suporta/não os tem?
Sua lista de conceitos de OO está contaminada por uma perspectiva javista, Gleidson. Smalltalk, a primeira e até hoje uma das melhores linguagens orientadas a objeto já criadas tem tipagem dinâmica e não tem interfaces. C++ tem sobrecarga de operadores e não tem interfaces. Ninguém pode dizer que Smalltalk e C++ não são exemplos de linguagens
orientadas a objetos (*). Enfim, o que é essencial em uma linguagem orientada a objetos? A resposta não é simples, nem única.
> A questão do Java é meio que a popularidade dele.
Sim, é o que eu tenho dito: a popularidade do Java é ao mesmo tempo sua maior virtude e seu maior defeito. O defeito está no fato de qua a "popularidade" está levando milhares de empresas a usarem Java para desenolver aplicações que seriam feitas de forma muito mais simples com uma linguagem mais ágil, como Python, Ruby, Perl ou até mesmo PHP
e VBScript.
> É fácil achar um
> computador que tenha um ambiente java instalado. Agora vai achar um que
> tenha o python instalado pra poder rodar os programas?
A Microsoft parou de distribuir Java com o XP, lembra? Há anos o Java perdeu a vantagem de sair pré-instalado em milhões de máquinas Windows. No Linux, praticamente qualquer distribuição vem com Python, mas não com Java. E no MacOS X vem as duas.
> Fora que em Python não é compilado, então tens que
> dar o código-fonte para que alguém possa rodar seu programa.
Não é verdade. Python é compilado para um bytecode, assim como o Java. E eu posso distribuir este bytecode em vez do fonte. Mas existem ferramentas capazes de regenerar o código-fonte a partir do bytecode, tanto no caso do Java quanto no caso do Python. De qualquer forma, para 90% dos desenvolvedores essa questão é irrelevante, porque não
somos pagos para produzir software proprietário que vai ser vendido em caixinhas, e sim para desenvolver soluções customizadas para clientes, internos ou externos, que exigem o fonte de qualquer maneira."
Luciano Ramalho: "
> Ninguém pode dizer que Smalltalk e C++ não são exemplos de linguagens
> orientadas a objetos (*).
Faltou explicar o (*)...
O Alan Kay, líder da equipe que criou Smalltalk, uma vez disse:
"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."
"Eu inventei o termo Orientado a Objetos, e posso lhe dizer que não estava pensando em C++."
Se tem alguém que pode dizer o que é ou deixa de ser OO, é o Alan Kay."
Luciano Ramalho: "Gleidson, talvez vc não saiba ou passou batido, mas interfaces são uma gambiarra no java para fornecer herança multipla. A unica coisa que é bom em interfaces é que elas fornecem duck typing para java, o que não é necessario em python justamente por causa da tipagem dinamica."
PS: bom, só pra não deixar em branco, estas frases foram tiradas de uma discussão na lista de Python, e eu destaquei as argumentações pró-Python, porque evidentemente sou usuário e divulgador desta linguagem. As pessoas citadas acima disseram estas frases no contexto de forma muito ponderada, e obviamente não podem ser mal-interpretadas (da mesma forma que deve acontecer com comunidades de quaisquer outra linguagens).
Na minha opinião, a informática é uma ciência que oferece ferramentas para facilitar o dia-a-dia. E ferramentas são assim: uma hora você precisa do martelo, outra hora do porrete, o martelo sozinho não resolve as coisas, ele precisa de um prego, uma tábua e do principal: o carpiteiro. Um carpinteiro qualificado saberia fazer com o martelo o mesmo que se faria com o porrete, e vice-versa, porque ele está preparado pra fazer aquilo.
Outra metáfora que pode ilustrar aqui é o de comparar um sedã, uma scania e um trator. Digamos que o Python seja o sedã, o Java seja a scania e o C seja o trator: cada um tem sua aplicabilidade.
Marinho Brandão