Django Utilidades :: Marinho Brandaohttp://marinhobrandao.com/pt-brTue, 06 Jan 2009 06:53:22 -0000“Não aguento mais Java”http://marinhobrandao.com/blog/p/nao-aguento-mais-java_44/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 <a href="http://br.groups.yahoo.com/group/python-brasil/" target="_blank">Python-Brasil</a>, que podem ser vistas em sua totalidade <a href="http://br.groups.yahoo.com/group/python-brasil/message/23803" target="_blank">aqui</a>. Mas a minha opinião está bem próxima da média vista abaixo. <strong>decopzp:</strong> " 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" <strong>Luciano Ramalho: </strong>"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." <strong> Rodrigo Senra:</strong> " No contexto particular de ensino *introdutório* de programação, eu diria que Java como primeira linguagem é no mínimo nocivo. <em>&gt; Java está na moda.</em> 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. <em>&gt; Ela é uma otima linguagem</em> Aqui concordo, ela tem seu nicho e suas vantagens. E ainda é melhor que *muita* linguagem por aí. <em>&gt; Vamos com calma. Python está sendo usada em cursos &gt; introdutorios de programação pois é uma linguagem de fácil acesso... &gt; mas isso nao quer dizer que seja a melhor linguagem do mundo.</em> Melhor é um conceito extremamente dependente de contexto. No contexto de ensino introdutório, ainda não vi nada melhor do que Python." <strong>Luciano Ramalho:</strong> "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." <strong>Luciano Ramalho:</strong> " <em>&gt; E como ensinar herança múltipla, sobrecarga de operadores e tipagem &gt; dinâmica em uma linguagem que não os suporta/não os tem?</em> 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. <em>&gt; A questão do Java é meio que a popularidade dele.</em> 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. <em>&gt; É fácil achar um &gt; computador que tenha um ambiente java instalado. Agora vai achar um que &gt; tenha o python instalado pra poder rodar os programas?</em> 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. <em>&gt; Fora que em Python não é compilado, então tens que &gt; dar o código-fonte para que alguém possa rodar seu programa.</em> 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." <strong>Luciano Ramalho:</strong> " <em>&gt; Ninguém pode dizer que Smalltalk e C++ não são exemplos de linguagens &gt; orientadas a objetos (*).</em> Faltou explicar o (*)... O Alan Kay, líder da equipe que criou Smalltalk, uma vez disse: <strong>"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind."</strong> "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." <strong> Luciano Ramalho: </strong>"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." <strong>PS: </strong>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 <strong>pró-Python</strong>, 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). <strong>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.</strong> Outra metáfora que pode ilustrar aqui é o de comparar um <strong>sedã</strong>, uma <strong>scania</strong> e um <strong>trator</strong>. Digamos que o <strong>Python</strong> seja o sedã, o <strong>Java</strong> seja a scania e o <strong>C</strong> seja o trator: cada um tem sua <u>aplicabilidade</u>.