Enviar este artigo por e-mail para alguém Enviar este artigo por e-mail para alguém

Python vs Java

Essa screenshot eu havia visto no EnigmaCurry já faz um bom tempo. Tinha até esquecido dela até que, dando uma olhada em alguns sites, encontrei ela de novo e pensei: “Só pode ser o destino! Tenho que fazer um post sobre ela”.

Quis postar isso principalmente porque li a pouco tempo que 46% das empresas brasileiras desenvolvem em Java. Não vou falar que estou sendo imparcial neste post. Na verdade quem me conhece sabe que não sou muito fã de Java. Na minha opinião tem muita coisa desnecessária o que acaba tornando o código muito grande e complexo. Sou um cara que acredita que a melhor coisa é simplificar. Outras razões para eu não gostar é o fato dos programas desenvolvidos em Java serem grandes, pesados e muitas vezes instáveis. Para muitos isso que falei pode ser besteira, mas para mim que tenho um K6-III com 192Mb…

Sem mais delongas, ai vai a screenshot:

Python vs Java

Sim, os dois códigos na foto fazem exatamente a mesma coisa.

No topo está Python. 18 linhas de código bem simples de ler e entender. Embaixo, com 27 linhas, está o mesmo código em Java. Parenteses e chaves por todo o lado.

Estou sendo parcial. Sim, claro… Como falei, não gosto de Java. Mas não tenho nenhuma intenção de fazer um flame. Apenas estou colocando aqui minhas opiniões ;)

Referência: EnigmaCurry

Technorati Tags: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,

Se você gostou deste post, pode me pagar um café que servirá como um excelente combustível para que eu escreva mais posts ;)

Leia Também:

No Responses to “Python vs Java”

  1. Python vs Java

    “Quis postar isso principalmente porque li a pouco tempo que 46% das empresas brasileiras desenvolvem em Java. Não vou falar que estou sendo imparcial neste post. Não sou muito fã de Java. Na minha humilde opinião tem muita coisa desnecessária…”

  2. Nao entendo nada…mas acho que vc tem razao..eles complicam demais..tudo tem que ser simples , especialmente quando se trata de tecnologias..

  3. Momo, eu tbm não gosto mto de java, além de ser grande é muito complicado, igual vc falou!
    TE AMO MUITO :****

  4. interessante a matéria, mas isso é relativo, tem linguagens que se adaptam melhor a certas coisas do q outras. Java é java, linguagem comercial da sun, python é python, é uma linguagem bem didática e muito poderosa, assim como várias outras linguagem. Sinceramente, os 46% das empresas q usam java ae, usam pelo fato da sun pregar o uso das design patterns, o lance das melhores praticas de programação, orientação a serviço e bla´bla´bla´, sem falar da ‘facilidade’ do codigo rodar em multiplataformas e multi dispositivos, sei sei, python tb faz isso…mas não tem uma grande empresa por trás apoiando realmente ela como linguagem comercial, claro q temos referencia a google é atualmente a maior empresa da internet e usa python na maioria dos seus aplicativos, mas é complicado, tem muita coisa a analisar, lógico q uma escolha de tecnologia impacta no modo operante de uma empresa, mas normalmente as ordem vem da parte administrativa para a parte de tecnologia e não ao contrario. Isso tudo se deve o motivo do java ser lider ae, com a onda de webservices e bla´bla´bla´ =)
    O importante é ser feliz, programando em java, python, shellscript, perl, c, .net, até em batch no dos, claro que eu não desejo esses dois ultimos pra ninguém hauihauihaiuhaiuahiu
    Grande abraço!

  5. Fala meu querido…..

    ….é Java na veia !!!

    Java é muiitto superior !

    Abraço

    PopolonY2k
    PlanetaMessenger.org

  6. ahhh bomba, vc quer moleza? pega no do bubu =*

    vc não pode comparar os códigos por quantidade de linhas… em java, C, php vc pode ter apenas UMA linhas que mata, corta, cozinha, come, digere e lava os pratos pra vc…

    int main(int ac, char **av)
    {
    return 0;
    }

    é a mesma coisa que:

    int main(int ac, char **av){ return 0; }

    bom, mas se vc quer simplificar as coisas… contrata um programador (eu) =*

  7. Mas que droga! Das duas tenho que escolher uma:
    1) Achar algum tempo pra estudar Python ou;
    2) Parar de ler artigos a respeito dele!

    ahuahauhauh :D

  8. cilene: É exatamente disso que estou falando. Os caras ficam complicando as coisas sem motivo nenhum…

    Fabi Bombinha: Verdade mozão! Te amo mais que tudo no Universo inteiro minha baby! ;*****************************************

    Hiro: Ai está o problema! O povo da administração geralmente não sabe nada e se acham os espertões. No máximo leêm uma Info da vida e as vezes nem isso. Claro que nem todos são assim, mas a maioria é.

    PopolonY2k: Opa meu querido! Blz? Pow… Python é bem melhor ;) Abraços

    gelo: Python não apenas tem menos linhas como ainda por cima é bem menor cada linha… E o bubu é fanático por você.

    Fred Banionis: Pow cara ;) Aprende Python ehehehehheeh! Também preciso aprender! Mas antes quero ver se aprendo Ruby! :D

  9. Não concordo em tudo…

    Que o Java é complicado, isso até fico quieto…tem umas funçõeszinhas do caralho…olhando o código postado vejo o Java como mais fácil, uma vez que os comandos podem ser traduzidos ao pé da letra que farão sentido

    Independente disso a lógica é a mesma, uma vez que a base é sempre um algorítimo. Vai do programador simplificar ou não.

    Quanto a pesado para rodar…errado…

    Ele pode ser pesado se a conexão de banco de dados tiver sido feita errada ou se a máquina que está rodando não for a básica para o que está sendo feita.

    Uma analogia para ilustrar o caso: não se coloca um carro popular para se fazer o trabalho de um caminhão de obras.

    Apesar de tudo isso, eu ainda bato na tecla de que a culpa é da pecinha que senta atrás do PC e programa o aplicativo.

    Java opera com threds capaz de deixar o sistema muito mais leve….

    Uma dica: testem Java com Solaris…isso sim é desempenho!

    Abraço e bjo na bunda do Bombinha!


  10. Hiro: Ai está o problema! O povo da administração geralmente não sabe nada e se acham os espertões. No máximo leêm uma Info da vida e as vezes nem isso. Claro que nem todos são assim, mas a maioria é.

    Ai que está a diferença das empresas, teoricamente o mundo da net se dividem em: “Google” e depois “os outros”, google é uma das poucas empresas que consegue conciliar tecnologia e administração, é engraçado ver o ciclo de vida dos seus produtos, primeiro os produtos nascem, depois eles tentam descobrir como ganhar dinheiro com isso, e minha nossa, como eles ganham grana com isso, isso é muito ironico, claro q muitos projetos que nascem fracassam, pois não rendem lucro, mas a política é o lucro sobre inovação, enquando uma empresa q possui alguns serviços e fazem uso da melhora contínua e sempre tentam evoluir pouco a pouco, refinando seus produtos, enquanto empresas inovadoras focam em inovações que faz a empresa crescer em saltos astronomicos. Conciliam tecnologia, business, benefícios aos clientes e lucratividade, fantastico isso tudo, mas infelizmente muitas empresas não chegaram a esse nivel =/

  11. Tzelli:

    Sim, realmente podem ser traduzidos ao pé da letra e facilita… Mas ainda assim, o Python é muito menor e é uma linguagem muito mais fácil de aprender… Dizem que com duas semanas de estudo já dá para fazer coisas fantásticas com ele. A Google por exemplo usa muito Python ;)
    Sobre o peso… Pow, a maioria de nós só tem carro popular ;) Sem contar que o meu não é mais popular já faz uns 8 anos… ;)
    Poderia até testar com Solaris… Mas você não quis me arrumar aquele CD do Solaris pra eu brincar.

    Abraços biba..

  12. Hiro:

    Perfeito seu comentário cara ;) Infelizmente os “empresários” brasileiros são muitos retrógrados e parecem gostar mais de mostrar quem é que manda do que em ver a empresa crescendo… ;/ Mas vamos ver o que o tempo vai mostrar ainda…

    Como já falei… seu comentário foi perfeito e disse tudo!

    Abraços

  13. É sua opinião, não posso fazer nada para muda-la. Não sou fã de java, mas achei o código em java mais compreensível, a delimitação por chaves (utilizada largamente desde os anos 80) é a melhor (na minha opinião), com as chaves é possível utilizar escopos de localidade. Essa organização visual do código utilizada pelo python me faz lembrar do VB (nem gosto de digitar isso, me faz ter náuseas).

    Se repararem bem, existe praticamente uma correspondência de 1 para 1 em cada uma das linhas, exceto na linha em que é removido todos os itens da lista (onde no Python é feito com 2 linha.Isso mesmo, 2 linha, pois utilizar um FOR para remover item a item é utilizar 2 linhas de código).

    A única linha que considero em excesso no java seria a declaração da propriedade na classe (o que nem pode ser considerado excesso, pois essa é uma das características das linguagens compiladas).

    O que é importante nos programas modernos é a facilidade de manutenção, facilidade de compreensão do código. Não adianta criar um código que apenas seu programador consiga entender o que diabos está escrito lá.

    Em minhas considerações finais quero deixar claro que acho um exagero a quantidade de lixo que a hierarquia de classes do java possui (principalmente nos objetos visuais). Não sou fã do java (como mencionei no início), mas achei sua visão muito injusta (estou indignado com o seu comentário sobre as chaves e parênteses).

  14. Keylly Eyglys: Respeito sua opinião. O que disse sobre chaves e parenteses não é opinião só minha! O EnigmaCurry, que é o blog do cara que fez originalmente essa comparação (inclusive, a screenshot é dele), também disse o mesmo sobre chaves e parenteses. Pode até ser um pouco injusto eu ter falado isso.. Mas realmente java exagera realmente nas chaves e parenteses ;) Apesar de que concordo com você que a delimitação por chaves realmente ajuda a organizar melhor o código… Sabe que não parei pra pensar nisso…

    Gosto da forma como fica os códigos em C por exemplo, organizadinhos… gosto do uso das chaves, mas ainda assim, o problema com java não é só isso. Isso é oque pus para comparar do código da foto, assim como o cara do EnigmaCurry fez… Mas java tem muitas outras coisas desnecessárias, como por exemplo as coisas que você mesmo falou no comentário…

    E o Python é uma linguagem muito fácil de entender, mesmo não sendo organizadinha por chaves… Dá só uma olhada… Muito mais fácil entender o código em Python que o em java… Inclusive como já comentaram no under-linux, em apenas 2 semanas bem aproveitadas aprendendo python, já dá para fazer muita coisa interessante!

    Ainda assim respeito sua opinião e espero que não fique nervoso com meu post, pois como declarei no próprio post… Estou sim sendo parcial ;)
    Abraços

  15. Eu tenho outra opiniao. Entendi perfeitamente o codigo java, ja o codigo python…

    Por exemplo, onde e que esta a definicao do tipo de dados da lista appleList em python? Em Java, assim como em C (de que o java se baseia) isto e obrigatorio, o que simplifica mais a leitura do codigo.

    Enfim, sao opinioes.

    (PS: nao sei porque, mas nao consigo colocar os acentos aqui… deve ser do locale…)

  16. Primeiro, java instavel… tennho sistemas que fazem milhares de transacoes por dia e que sao 24×7. Eles rodam a 3 anos e que nunca deram abend… isto pode ser instavel?

    __naoseioque__ (o que eh isto?)

    Olha nao conheço bem Pyton, mas este trecho de codigo que mostrou me leva a crer que deve ser muito bom brincar com ele… Mas quando for fazer algo serio com milhares de linhas de codigo, um sistema comercial ou bancario, é melhor usar uma plataforma profissional.

    Uma outra observação, falaram que o Java é bastante utilizado por ser da Sun etc…. Se olharem em http://www.jcp.org, comite gestor da tecnologia Java, verão que lá estão Apache, IBM, Oracle, BEA, SAP…

    Abraços

  17. Legal, para quem ta criticando qualquer uma das duas, experimente programar em uma linguagem puramente funcional.
    Agora, alguem poderia me mostrar uma IDE feita em java para rodar em um computador caseiro nao tao velho ( tipo um athlon xp com 512 mb de ram, mais 128 mb de video)

    Ou entao me mostrar, uma maneira de tornar o Python mais humano?

  18. Python mais humano? O que isso quer dizer?

    Pra mim, a vantagem do Python se mostra na linha:
    someApples = appleList[0:3]
    É só aprender uma sintaxezinha e sair usando.
    Já em Java…
    List someApples = new ArrayList(appleList.subList(0, 3));

    Puxa vida! A quantidade de caracteres na linha já assusta!
    É necessário dizer 2 vezes o tipo da variável. No caso, o autor usou um tipo mais genérico para a variável e instanciou um tipo específico (até porque não poderia instanciar o tipo abstrato/interface). Isso já é uma técnica ligeiramente difícil de aprender e ainda não estou convencido de sua vantagem para meras variáveis locais.

    Depois, é feita a extração da subList. A sintaxe é um pouco mais verbosa, mas perfeitamente usável. Mas eu fico me perguntando porque é necessário criar um novo ArrayList com o retorno do appleList. Não bastava atribuir direto? Será que existe uma pegadinha na linguagem que exija essa criação? Será que o autor se enganou? Sei lá… No Python é conciso e preciso: atribuição de uma sublista…

    Vou relembrar esta “historinha da evolução das linguagens”…

    The March of Progress (Cay Horstmann)

    C
    printf(”%10.2f”, x);

    C++
    cout << setw(10) << setprecision(2)
    << showpoint << x;

    Java:
    java.text.NumberFormat formatter
    = java.text.NumberFormat.getNumberInstance();
    formatter.setMinimumFractionDigits(2);
    formatter.setMaximumFractionDigits(2);
    String s = formatter.format(x);
    for (int i = s.length(); i < 10; i++)
    System.out.print(’ ’);
    System.out.print(s);

    Java 1.5:
    System.out.printf(”%10.2f”, x);

    heheehehehe

  19. O mundo comercial sempre aposta nas piores melecas possíveis, afinal são decisões políticas, não técnicas. Mas, antes Java que .Net. É trabalho e trabalho é sempre sofrível, a despeito de vc gostar de programação ou não… aliás, se vc entrou em Ciência da Computação achando que Informática comercial é isso, só lamento…

    Já fui mais chegado à Python, que infelizmente parece estar trilhando um caminho mais verboso e barroco a la java. Das linguagens de script nascidas no *nix, Ruby é atualmente minha preferida, enquanto Perl 6 continua uma utopia.

    Se quer algo realmente diferente do procedural padrão Algol, tente Haskell, Scheme ou Inform 7. :)
    nice blog.

  20. Vou resumir toda a discussão de vocês:

    Se você é um péssimo programador, não têm a mínima noção de lógica de programação e muito menos de orientação à objetos, nunca fez um sistema de grande porte e nem pretende fazer, então utilize Python.

    Agora se você é um excelente programador, preza pelas boas práticas de programação e acima de tudo, têm uma visão de reutilização de código e de manutenibilidade fantástica, além de desenvolver sistemas de grande porte, então não há dúvidas, utilize Java.

    OBS: se 46% das empresas utilizam Java é porque com certeza a linguagem é boa.. …é só parar e pensar, será que devemos levar em conta comentários de pessoas inexperientes que mal terminaram a faculdade ou de profissionais e consultores que estão a anos trabalhando com TI e já conheceram várias linguagem, desde Basic, COBOL, Clipper Summer 87 até as tecnologias mais atuais????

  21. Muito boa jeffão, somos colegas de Clipper Summer87, COBOL, DBase II/III, MUMPS…
    O pessoal tem que ter uma visão mais corporativa, em casa posso (e devo) usar o que quiser, mas o custo para uma empresa ficar apostando em tudo que é tecnologia é alto. Podem ficar a vontade para me criticar, mas tenho 20 anos nesta estrada, e não vai ser meia dúzia de caracteres a mais ou a menos que fará diferença no sucesso de uma plataforma de desenvolvimento. Os grandes players estão com Java em suas soluções de missão critica, os servidores de aplicação da RedHat(JBoss), Apache, IBM, ORACLE, BEA, … são Java. Vejam que são servidores OpenSource e proprietários. Empresas precisam de tecnologias consolidadas ou acabam com o prejuízo.
    Não estou dizendo que não devemos olhar o que está acontecendo no mundo, muito pelo contrario, mas com a visão certa. Não gosto de COBOL, mas a realidade mostra que é ainda é a linguagem com mais linhas de código no mundo. Porque, ninguém conseguiu uma plataforma, como o Cobol, para rodar do servidor Unix ao Mainframe. Java é quem está se aproximando disto, pois roda em muitas plataformas bem como no Mainframe.

  22. “”"Se você é um péssimo programador, não têm a mínima noção de lógica de programação e muito menos de orientação a objetos, nunca fez um sistema de grande porte e nem pretende fazer, então utilize Python.”"”

    Nossa, nunca tinha visto um comentário com uma visão tão “binária” das coisas… :-( Entre o preto e o branco existem várias tonalidades, sabia??? :-( Eu não devia alimentar os trolls, mas…

  23. “se 46% das empresas utilizam Java é porque com certeza a linguagem é boa”

    “Toda unanimidade é burra”
    – Nelson Rodrigues

  24. “preza pelas boas práticas”
    “têm uma visão de reutilização de código e de manutenibilidade fantástica”
    “desenvolver sistemas de grande porte”

    Típica falácia de deslumbrados enterprise. É claro que os sistemas são de grande porte! Se fossem feitos em python, seriam de porte bem mais compacto! :)
    Aparentemente, você nem sabe do que está falando, pois prezar boas práticas não depende de linguagem e Python, sendo uma linguagem OO, expressiva, compacta e com grande foco em reutilização de código via módulos e programação OO certamente satisfaz seus requisitos.

    Outra coisinha: manter código mais compacto é bem mais rápido e fácil do que se embrenhar em montanhas e código verboso espalhados em uma dúzia de classes em frameworks diferentes.

    “pessoal tem que ter uma visão mais corporativa”
    “o custo para uma empresa ficar apostando em tudo que é tecnologia é alto”
    “20 anos nesta estrada”

    Eu não sou um burocrata, gerente de sabe-se-lá-oque. Eu sou um programador e posso dar minha sincera opinião técnica: ao apostar em Java, você aposta em um punhado de tecnologias cabeludas, um porrilhão de frameworks diferentes, uma IDE complexa e pesada, além de alguns anos de treinamento até os pobres programadores conseguirem dominar essa sopa-de-letrinhas ou desistirem desse mundo grande-porte dominado por tecnocratas monopolistas e gerentes burocratas e aderirem a ferramentas “agile” e trilharem seu próprio caminho no mercado.

    “será que devemos levar em conta comentários de pessoas inexperientes que mal terminaram a faculdade”

    As vezes só os mais ignorantes percebem que o rei está nu.

    “ou de profissionais e consultores que estão a anos trabalhando com TI e já conheceram várias linguagem, desde Basic, COBOL, Clipper Summer 87 até as tecnologias mais atuais????”

    Esses “profissa” pensam que nos enganam! Basic, COBOL, Clipper são tudo a mesma coisa! A mesma coisa! São os boçais bastardos do Algol! Vocês estão há 20 anos no mercado lidando com a mesma obsoleta forma de pensar, estagnados, prestes a se aposentar. E isso é bom, porque novas cabeças podem passar a ter poder de decisão e trazer ares novos para essa área. Linguagens funcionais, AOP, linguagens específicas de domínio o que fôr. Melhor do que esse último dinossauro descendente de Algol, procedural até a alma, mas fantasiado de Lisp…

  25. Bom, eu acho obsoleto pensar que, como disse antes, meia dúzia de linhas de código a mais ou a menos faz alguma diferença nos dias de hoje. Inclusive existe um movimento forte para o MDA, onde uma boa parte do código será gerado através de UML e transformações. Código compacto é mais fácil de manter… Talvez no sisteminha de locadora da esquina seja…. O código tem que ser modular, legível e bem documentado, não preciso dizer isto para programadores profissionais. Framework´s são uma escolha, se quiser não precisa nem usá-los. IDE´s tem de tudo que é tipo e tamanho, Eclipse, NetBeans, Jdeveloper, Kdevelop, Jedit, Gel… AOP é uma otima opção e pode ser implementado em Java.
    As empresas são isto, as empresas são aquilo… Acho que deveria ficar em casa com o teu micro e largar as empresas de mão, afinal são tudo uns idiotas e nenhum profissional precisa delas. Parece conversa de adolescente sobre seus pais, cheios onda, mas quando a coisa aperta voltam correndo.
    Nunca disse que não deveriam usar Python, mas estão fazendo as perguntas erradas. Porque o mercado usa Java se eu consigo fazer o mesmo programa em Python com meia dúzia de linha a menos? Porque, isto não importa!!! Abram os olhos e vejam quais são as qualidade do Java e façam do Python uma opção para o mercado corporativo. Lembrando que no Sourceforgue, Java estava como a linguagem mais popular, vai ver tem alguma empresa com um dinossauro corrompendo as mentes dos programadores. Deixe de egocentrismo, o mundo não gira entorno do teu micro.

  26. Cuidado pessoal, o software livre foi invadido por dinossauros burocratas… E estão armados com “{}”…

    # C (8715 projects)
    # Java (5645 projects)
    # C++ (4736 projects)
    # PHP (4200 projects)
    # Perl (3755 projects)
    # Python (2820 projects)

    http://freshmeat.net/browse/160/

  27. Deve ser um Velociraptor, com suas {} afiadas… ;)
    http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all#faster

  28. “eu acho obsoleto pensar que meia dúzia de linhas de código a mais ou a menos faz alguma diferença nos dias de hoje”

    O problema é que vc está pensando em termos dos tais “sisteminhas de esquina” ou nos examplos acima, em que no total realmente se vê pouca diferença, algumas poucas linha, caracteres a mais em Java. Em sistemas grandes, a diferença seria notória, cansativa e digna de nota.

    “O código tem que ser modular, legível e bem documentado, não preciso dizer isto para programadores profissionais.”

    Você parece pensar que programadores python escrevem coisas como:
    # eatMyShorts for each foobar in bananas
    for foobar in bananas: WTF( foobar, bananas ).eatMyShorts()

    quando pode-se fazer a mesma meleca independente da ferramenta escolhida.

    De qualquer modo, Python provê os programadores com abstrações poderosas para modularização, documentação e, indubitavelmente — sendo uma linguagem compacta, limpa e expressiva — maior legibilidade.

    “Frameworks são uma escolha, se quiser não precisa nem usá-los.”

    Quanta conversa fiada vinda de um programador “enterprise”! Para Java fazer qualquer coisa útil em um ambiente altamente burocratizado e corporativo, vc sabe que são necessários um punhado de frameworks para publicação web, geração de relatórios PDF, manipulação de documentos XML etc etc…

    Caso contrário, só dá pra fazer “sisteminha de esquina” mesmo, como sem dúvida nossos “profissas” com 20 anos de estrada em Clipper sabem…

    “Porque o mercado usa Java se eu consigo fazer o mesmo programa em Python com meia dúzia de linha a menos?”

    Tal fenômeno se chama absorção por osmose.

    Ademais, há uma grande empresa corporativa marqueteando Java, há várias pessoas lucrando com java na forma de cursos (muito necessários) e venda de milagres. Não há nada por trás de Python semelhante. Ninguém conhece. Ainda…

    “vai ver tem alguma empresa com um dinossauro corrompendo as mentes dos programadores”

    Verdade. Se chamam Sun (Java) e Microsoft (o java-wannabe .NET).

    “# C (8715 projects)
    # Java (5645 projects)
    # C++ (4736 projects)”

    heh, os 3 dinossauros do rock da década de 70…

    “Toda unanimidade é burra”
    – Nelson Rodrigues

  29. “Você parece pensar que programadores python escrevem coisas como:
    # eatMyShorts for each foobar in bananas
    for foobar in bananas: WTF( foobar, bananas ).eatMyShorts()

    quando pode-se fazer a mesma meleca independente da ferramenta escolhida.”

    Exatamente parece que agora entendeu, novamente, não são linhas a mais ou a menos que fazem diferença na qualidade do software e sim a qualidade do profissional. A legibilidade do código também, ou será que vc é daqueles que acredita que o código puro não precisa de documentação ou tira os comentários pra deixar o código com menos linhas… Não acredito que estou discutindo isto em 2007, este papo de quantidade de linhas era discussão de programadores COBOL medindo produtividade… Porcaria se faz em qualquer linguagem.

    “O problema é que vc está pensando em termos dos tais “sisteminhas de esquina” ou nos examplos acima, em que no total realmente se vê pouca diferença, algumas poucas linha, caracteres a mais em Java. Em sistemas grandes, a diferença seria notória, cansativa e digna de nota.”

    Olha acho que vc esta tentando falar em sistemas grandes, mas fala como se o programador olhasse o código como um todo (sisteminhas). Em sistemas grandes, serão dezenas de programadores trabalhando em módulos e estes módulos tem que ser pequenos, senão não são módulos, são programas monolíticos. E na hora da manutenção os programadores vão trabalhar nos módulos, pequenas unidades, onde esta “maravilhosa” diferença de quantidade de linhas não significa nada.

    “Quanta conversa fiada vinda de um programador “enterprise”! Para Java fazer qualquer coisa útil em um ambiente altamente burocratizado e corporativo, vc sabe que são necessários um punhado de frameworks para publicação web, geração de relatórios PDF, manipulação de documentos XML etc etc…”

    Acho que tens que melhorar alguns conceitos, pois esta misturando API, Framework e Application Servers… Olhe a API do Java e vai saber o que se pode fazer sem usar Frameworks e Aplication Servers. Só para exemplo existe um servidor HTTP/HTTPS na JVM, pode-se trabalhar com redes (socket’s), tratamento de XML, monitoração de execução, banco de dados, … Só para saber os frameworks e aplication servers são desenvolvidos em Java, então acho que dá para fazer alguma coisinha… Sem falar em API’s de terceiros, da uma olhada no Jakarta no projeto Commons de uma tal de Apache não sei se conhece.

    “Tal fenômeno se chama absorção por osmose.”

    Meu caro teenager, este tipo de entendimento da vida vai melhorar junto com as espinhas…
    Acho que deverias escrever para a Google, para todos os projetos no SourceForge, para a Apache, a RedHat, a IBM… e mostrar esta tua possição embasada sobre este assunto e levar luz a estas pobres almas.

    “Ademais, há uma grande empresa corporativa marqueteando Java, há várias pessoas lucrando com java na forma de cursos (muito necessários) e venda de milagres. Não há nada por trás de Python semelhante. Ninguém conhece. Ainda…

    Verdade. Se chamam Sun (Java) e Microsoft (o java-wannabe .NET).”

    E eu é que sou dinossauro… Tu está em 1995 meu caro, hoje quem leva plataforma Java é a Google, a RedHat, a Apache, os Grupos de usuários, a IBM, a Oracle, a SAP, a Borland, SUN, a MacroMedia e mais centenas de participantes do JCP, onde os brasileiros possuem destaque, como vê se a SUN explodir amanhã, não muda nada.

    Volto a dizer, não fique olhando para o umbigo, aprenda com Java e torne o Python uma plataforma para desenvolvimento corporativo.

    “# C (8715 projects)
    # Java (5645 projects)
    # C++ (4736 projects)”

    heh, os 3 dinossauros do rock da década de 70…”

    Vai implicar com C agora… manda um email pro Torvalds e fala pra ele escrever o kernel do Linux em Python… ;)

  30. Está é uma publicação de Paul Buchheit, líder e responsável pelo
    desenvolvimento do Gmail. Mas, antes de qualquer coisa a intenção do
    post é não é mostrar que Java é mais rápido que C, além
    de performance ser um tópico bastante complexo. Mas sim, demonstrar
    que aquela visão de que Java é lento já foi superada a muito tempo. O teste foi
    feito com mais de uma interação, pois existe uma série de algoritmos
    de otimização que são feitas pelo compilador JIT (just-in-time) da JVM
    durante a execução do programa e baseadas em seu comportamento. Por
    exemplo, durante a execução pode-se verificar quais objetos são
    temporários, quais são permanentes e armazená-los em áreas diferentes
    da JVM, para que sejam tratados de forma diferente pelo GC (garbage
    coletor) criando um “perfil” buscando o melhor modo de execução.
    Portando é comum a performance ir aumentando a cada interação
    principalmente em programas mais complexos. Este comportamento é comum
    em Servidores de aplicação (TomCat, JBoss,…) ou em programas que
    ficam carregados como deamons. Inclusive existem parâmetros diferentes
    de otimização para Java no cliente, onde o tempo de carga é
    importante, e o Servidor onde o tempo de carga não é tão importante,
    mas sim a otimização para programas de longa duração utilizando
    algoritmos mais sofisticados para performance.

    http://paulbuchheit.blogspot.com/2007/06/java-is-faster-than-c.html

  31. “não são linhas a mais ou a menos que fazem diferença na qualidade do software e sim a qualidade do profissional”

    linhas a mais ou a menos não fazem diferença na qualidade do software, para o usuário final!
    linhas a mais (código verboso) fazem toda a diferença diferença para o programador, seja qualificado ou desqualificado! É bem possível que a qualidade do profissional seja em parte dependente de sua paciência e esta pode ser rapidamente minada por camadas de redudância sem fim…

    “acredita que o código puro não precisa de documentação ou tira os comentários pra deixar o código com menos linhas”

    velha máxima da programação: comentários mentem, código, não. Quanto mais claro, expressivo e compacto o código, mais auto-explicativo é. Eu sugiro ter um documento geral de regras de negócios à parte e comentar trechos de código com as referências apropriadas à qual RN se refere…

    “na hora da manutenção os programadores vão trabalhar nos módulos, pequenas unidades, onde esta “maravilhosa” diferença de quantidade de linhas não significa nada.”

    Antes de trabalharem nos módulos, eles vão ter que localizar em qual módulo exatamente está o problema. E isso pode significar percorrer um punhado de arquivos XML, montanhas de chamadas em classes deeply nested no programa principal e o kcta4. Quando finalmente localizarem o raio do módulo problemático, vão ter que saber se o problema está nele ou em algum dos outros módulos que ele chama. É dose! E quanto maior, pior.

    “existe um servidor HTTP/HTTPS na JVM, pode-se trabalhar com redes (socket’s), tratamento de XML, monitoração de execução”

    Perl e TCL já eram capazes dessas proezas de integração com o SO subjacente bem antes de Java.

    “Meu caro teenager”

    Tenho 33 anos, mas agradeço o elogio.

    “levar luz a estas pobres almas”

    Veja bem, não estou dizendo que com Python vc vai escrever sistemas de infraestrutura que absolutamente requerem mínimos ciclos de CPU como SOs, SGBDs, application servers etc. Python é perfeito para aplicatições comerciais e automação, porém. Aplicações cuja performance depende principalmente não do interpretador python em si, mas da latência de conexões externas com SGBDs, servidores web, IO do SO etc.
    Google é um dos que enxergam bem, tendo apropriadamente contratado o criador de Python. Não para criar sua infraestrutura, mas aplicações se aproveitando de tanto.

    “onde os brasileiros possuem destaque”

    é, onde tem brasileiro, tem bagunça… :)
    “a intenção do post é não é mostrar que Java é mais rápido que C”

    Minha intenção também não é sugerir que python é tão rápido quanto Java. Ao invés, é sugerir que desenvolvimento com python é mais rápido do que com java, sendo tão modular e reutilizável quanto e bem mais legível e manutenível.

  32. “velha máxima da programação: comentários mentem, código, não. Quanto mais claro, expressivo e compacto o código, mais auto-explicativo é. Eu sugiro ter um documento geral de regras de negócios à parte e comentar trechos de código com as referências apropriadas à qual RN se refere…”

    Outra velha máxima é que quando a documentação e os fontes estão separados, sempre tem algum programador que altera o programa e não altera a documentação. Documentação dentro do código, como o JavaDoc, auxiliam neste problema, pois tu pode gerar a documentação do sistema pelo fonte. Mas este problema só poderá ser resolvido em ambientes integrados onde a documentação e o código estejam integrados de alguma forma, não sei qual a solução exata para este problema, existem algumas ferramentas que se propõem a isto, mas acho que é um assunto não esta totalmente resolvido.

    “Antes de trabalharem nos módulos, eles vão ter que localizar em qual módulo exatamente está o problema. E isso pode significar percorrer um punhado de arquivos XML, montanhas de chamadas em classes deeply nested no programa principal e o kcta4. Quando finalmente localizarem o raio do módulo problemático, vão ter que saber se o problema está nele ou em algum dos outros módulos que ele chama. É dose! E quanto maior, pior.”

    Se o sistema for componentizado e com camadas bem definidas, isto não é este caos todo. Ainda mais com os tracelog´s do Java no caso de excessões.

    “Perl e TCL já eram capazes dessas proezas de integração com o SO subjacente bem antes de Java.”

    Não estou dizendo que outros não podem, vc é que disse que Java não podia.

    “Tenho 33 anos, mas agradeço o elogio.”

    Bom aqui vc levou vantagem, tudo bem que comecei cedo, com 15 anos era estagiário de programação na UFRGS, mais tenho 35 e tu me chamou de dinossauro! Acho que posso ser classificado como um dos primeiros mamíferos do cretaceo! hahaha

    “Veja bem, não estou dizendo que com Python vc vai escrever sistemas de infraestrutura que absolutamente requerem mínimos ciclos de CPU como SOs, SGBDs, application servers etc. Python é perfeito para aplicatições comerciais e automação, porém. Aplicações cuja performance depende principalmente não do interpretador python em si, mas da latência de conexões externas com SGBDs, servidores web, IO do SO etc.
    Google é um dos que enxergam bem, tendo apropriadamente contratado o criador de Python. Não para criar sua infraestrutura, mas aplicações se aproveitando de tanto.”

    Bom aqui concordamos, volto a dizer, não sou contra o uso de Python. Acho que a comunidade deve investir no seu desenvolvimento e torna-lo uma plataforma corporativa. O Google é um grande, acho que enorme, usuário de tecnologia Java. Desde seus produtos até suas ferramentas, GWT por exemplo. O que não diminuiu ou aumenta a importância de Python dentro do Google.

    “Minha intenção também não é sugerir que python é tão rápido quanto Java. Ao invés, é sugerir que desenvolvimento com python é mais rápido do que com java, sendo tão modular e reutilizável quanto e bem mais legível e manutenível.”

    Voltar a discutir mais linhas, menos linhas vai ser chover no molhado. Nunca disse que Python não é modular ou reutilizável.

    A chamada do post era não compreenderem como “46% das empresas brasileiras desenvolvem em Java”. O que estou tentando mostrar é que a escolha das empresas está embasada no suporte que a comunidade e as empresas dão para o Java.
    A escalabilidade do Java é enorme, tenho soluções que vão do 100% opensouce (JSE puro,JBoss, TomCat, Glassfish,…) até um WebSphere IBM integrado com o mainframe. As ferramentas de monitoração, eu posso me conectar a JVM e verificar em cada thread qual a linha do programa que esta executando naquele momento, comportamento da memória, dos objetos,… sem precisar saber qual a ferramenta do SO X ou Y que me mostra algumas destas informações, não todas. Coloquei o post da performance, porque este é um dos itens que ajudam a responder a pergunta acima. Não conheço a estabilidade do Python, aposto que é boa, até porque não estou falando de defeitos do Python e sim das qualidades do Java. Mas a estabilidade das aplicações Java, principalmente server-side, é ótima, os sistemas 24×7 que tenho passam meses no ar, fazendo milhares de transações e nunca deram abend. A quantidade de ferramentas opensource e comerciais para Java é enorme, que vão das IDE´s até ambientes integrados para analise como RSA (IBM), Borland Together,… Todos os SGDB´s possuem drivers JDBC para Java, as ferramentas de administração da Oracle são em Java. Com Java eu tenho o poder de escolha, podendo utilizar ambiente, ferramentas,… totalmente opensource e que a minha equipe de todo o suporte necessário, ou contratar a RedHat, ou contratar a IBM (pode ser que 2 horas de sistema fora do ar pague todo o contrato de consultoria de um ano), depende do tamanho de minha empresa e do perfil dos dirigentes. Com esta pontinha de iceberg que falei do Java, quero mostrar porque estão fazendo as perguntas erradas.

    O Google migrou o Orkut para Java…
    http://www.go-java.com/blog/2007/04/11/1176291933853.html

    Agora, fora as brincadeiras, uma pergunta… porque a comunidade do Python é tão encarnada com o Java? Vejo até palestras do tipo “Matar o Java e mostrar o Python”… Porque não tem um post do tipo “porque muitas empresas usam C# e não Python?”. O Eclipse possui plugin´s para editar código Python, existe o Jython, porque estes ataques freqüentes? Será que é o preço do sucesso da plataforma?

    “é, onde tem brasileiro, tem bagunça… :)”

    Não faz assim, nós somos muito bons, senão não teríamos uma discussão como a nossa. Hahaha

    Abraços

  33. “velha máxima da programação: comentários mentem, código, não. Quanto mais claro, expressivo e compacto o código, mais auto-explicativo é. Eu sugiro ter um documento geral de regras de negócios à parte e comentar trechos de código com as referências apropriadas à qual RN se refere…”

    Outra velha máxima é que quando a documentação e os fontes estão separados, sempre tem algum programador que altera o programa e não altera a documentação. Documentação dentro do código, como o JavaDoc, auxiliam neste problema, pois tu pode gerar a documentação do sistema pelo fonte. Mas este problema só poderá ser resolvido em ambientes integrados onde a documentação e o código estejam integrados de alguma forma, não sei qual a solução exata para este problema, existem algumas ferramentas que se propõem a isto, mas acho que é um assunto não esta totalmente resolvido.

    “Antes de trabalharem nos módulos, eles vão ter que localizar em qual módulo exatamente está o problema. E isso pode significar percorrer um punhado de arquivos XML, montanhas de chamadas em classes deeply nested no programa principal e o kcta4. Quando finalmente localizarem o raio do módulo problemático, vão ter que saber se o problema está nele ou em algum dos outros módulos que ele chama. É dose! E quanto maior, pior.”

    Se o sistema for componentizado e com camadas bem definidas, isto não é este caos todo. Ainda mais com os tracelog´s do Java no caso de excessões.

    “Perl e TCL já eram capazes dessas proezas de integração com o SO subjacente bem antes de Java.”

    Não estou dizendo que outros não podem, vc é que disse que Java não podia.

    “Tenho 33 anos, mas agradeço o elogio.”

    Bom aqui vc levou vantagem, tudo bem que comecei cedo, com 15 anos era estagiário de programação na UFRGS, mais tenho 35 e tu me chamou de dinossauro! Acho que posso ser classificado como um dos primeiros mamíferos do cretaceo! hahaha

    “Veja bem, não estou dizendo que com Python vc vai escrever sistemas de infraestrutura que absolutamente requerem mínimos ciclos de CPU como SOs, SGBDs, application servers etc. Python é perfeito para aplicatições comerciais e automação, porém. Aplicações cuja performance depende principalmente não do interpretador python em si, mas da latência de conexões externas com SGBDs, servidores web, IO do SO etc.
    Google é um dos que enxergam bem, tendo apropriadamente contratado o criador de Python. Não para criar sua infraestrutura, mas aplicações se aproveitando de tanto.”

    Bom aqui concordamos, volto a dizer, não sou contra o uso de Python. Acho que a comunidade deve investir no seu desenvolvimento e torna-lo uma plataforma corporativa. O Google é um grande, acho que enorme, usuário de tecnologia Java. Desde seus produtos até suas ferramentas, GWT por exemplo. O que não diminui ou aumenta a importância de Python dentro do Google.

    “Minha intenção também não é sugerir que python é tão rápido quanto Java. Ao invés, é sugerir que desenvolvimento com python é mais rápido do que com java, sendo tão modular e reutilizável quanto e bem mais legível e manutenível.”

    Voltar a discutir mais linhas, menos linhas vai ser chover no molhado. Nunca disse que Python não é modular ou reutilizável.

    A chamada do post era não compreenderem como “46% das empresas brasileiras desenvolvem em Java”. O que estou tentando mostrar é que a escolha das empresas está embasada no suporte que a comunidade e as empresas dão para o Java.
    A escalabilidade do Java é enorme, tenho soluções que vão do 100% opensouce (JSE puro,JBoss, TomCat, Glassfish,…) até um WebSphere IBM integrado com o mainframe. As ferramentas de monitoração, eu posso me conectar a JVM e verificar em cada thread qual a linha do programa que esta executando naquele momento, comportamento da memória, dos objetos,… sem precisar saber qual a ferramenta do SO X ou Y que me mostra algumas destas informações, não todas. Coloquei o post da performance, porque este é um dos itens que ajudam a responder a pergunta acima. Não conheço a estabilidade do Python, aposto que é boa, até porque não estou falando de defeitos do Python e sim das qualidades do Java. Mas a estabilidade das aplicações Java, principalmente server-side, é ótima, os sistemas 24×7 que tenho passam meses no ar, fazendo milhares de transações e nunca deram abend. A quantidade de ferramentas opensource e comerciais para Java é enorme, que vão das IDE´s até ambientes integrados para analise como RSA (IBM), Borland Together,… Todos os SGDB´s possuem drivers JDBC para Java, as ferramentas de administração da Oracle são em Java. Com Java eu tenho o poder de escolha, podendo utilizar ambiente, ferramentas,… totalmente opensource e que a minha equipe de todo o suporte necessário, ou contratar a RedHat, ou contratar a IBM (pode ser que 2 horas de sistema fora do ar pague todo o contrato de consultoria de um ano), depende do tamanho de minha empresa e do perfil dos dirigentes. Com esta pontinha de iceberg que falei do Java, quero mostrar porque estão fazendo as perguntas erradas.

    O Google migrou o Orkut para Java…
    http://www.go-java.com/blog/2007/04/11/1176291933853.html

    Agora uma pergunta… porque a comunidade do Python é tão encarnada com o Java? Vejo até palestras do tipo “Matar o Java e mostrar o Python”… Porque não tem um post do tipo “porque muitas empresas usam C# e não Python?”. O Eclipse possui plugins para editar código Python, existe o Jython, porque estes ataques freqüentes? Será que é o preço do sucesso?

    “é, onde tem brasileiro, tem bagunça… :)”

    Não diga isto, nós somos muito bons, senão não teríamos uma discussão como a nossa. Hahaha

    Abraços

  34. Ah, desculpe mas não resisti… tudo bem que código não identado, pra mim simplesmente não existe, é qualquer coisa, carta pra namorada, menos código fonte. As {} do java vieram do C, mas definição de escopo por identação veio do Cobol por causa dos cartões perfurados… huahuahua…

  35. “Documentação dentro do código, como o JavaDoc, auxiliam neste problema, pois tu pode gerar a documentação do sistema pelo fonte.”

    ué, mas você pode extrair documentação mesmo de comentários desatualizados e redundantes de velhos fontes C. Na luta contra prazos, documentação sempre sofre, código, não.

    “onde a documentação e o código estejam integrados de alguma forma”

    ou simplesmente onde código seja tão expressivo a ponto de ser intuitivo e auto-explicativo.

    “Ainda mais com os tracelog´s do Java no caso de excessões”

    dumps de callstacks são a coisa mais antiga em programação. E, sim, são úteis.

    “vc é que disse que Java não podia”

    eu disse? Desculpe. Pensei ter dado a entender que em um ambiente “enterprise”, java barebones é o mesmo que nada. Gerentes só ficam satisfeitos com a sopa-de-letrinhas completa: JavaEE, EEJavaBeans, XML, UML, JSP, Jakarta, DOM, WAP, JBoss etc
    Se não tiver isso tudo, não presta.

    “tu me chamou de dinossauro!”

    sem problema, com engenharia genética evolução está ao alcance de todos! :)
    “é que a escolha das empresas está embasada no suporte que a comunidade e as empresas dão para o Java”

    precisamente: é uma decisão política, não técnica. Que bom que concordamos! :)
    “O Google migrou o Orkut para Java”

    da panela para a frigideira! Se não me engano, orkut era em C#.

    “porque a comunidade do Python é tão encarnada com o Java?”

    desconfio que é o medo que o escuro provoca depois de se ter provado da luz. :)
    “definição de escopo por identação veio do Cobol por causa dos cartões perfurados”

    É a primeira coisa que programadores de linguagens estruturadas reparam em python. E, no entanto, é ótimo poder dispensar begin/end ou pares de chaves em favor da já natural indentação.

    De maior relevância e profundidade é a dispensa de cansativas declarações de tipos para toda e qualquer variável, os recursos para programação dinâmica e metaprogramação e os fortes recursos da linguagem para manipulação de dados heterogêneos em coleções.

  36. Não discuto gosto.

    Afinal, gosto é que nem c*: cada um tem o seu e não necessáriamente tem que compartilhar com os outros (tirando Bombinha que as vezes escapa pro lado meio cor-de-rosa de ser…uhauahuahuah…zueira Bomba!)

    Eu defendo, alias, eu uso Java por alguns motivos simples listados abaixo:

    -É a linguagem que mais compreendo entre as que já vi [(Delphi (éca!), VB (éca!), C, C++, Clarion (essa poucos conhecem, mas eu trabalho com sistemas feito nela), Python etc...]

    -É a linguagem que que mais estudei na faculdade, assim como o Bomba.

    -É a linguagem que o mercado mais aceita por ser “universal”. Desculpem-me…vou corrigir…É uma das linguagens mais aceitas.

    -Pode-se fazer praticamente tudo com ela.

    -É de fácil aprendizado. (convenhamos que para quem gosta de computação, não é tão difícil assim entender Orientação a Objetos)

    Não sou hipócirta, quadrado, retardado etc e tal de falar que é a melhor do mundo. Apenas “aprecio” por ser mais íntimo dela do que das outras.

    Utilidade e funcionalidade comprovada todas tem (até Delphi e VB…hahahaha), mas cada um no seu devido nicho de mercado.

    Procuro aliar uma visão empresarial a programação. O que for melhor e mais viável deve ser usado.

    Pra terminar uma frase do Nicolas Cage em um filme que vi esses dias:

    “O simples é seguro!”

    Se alguém lembrar o nome do filme, favor me informar

    Usando Delphi, VB, C, C++, Clarion, Python sei la mais qual, não importa, o principal é alcançar o(s) resultado(s) desejados.

    Apenas fico preocupado e discordo quando ainda falam que o Java é instavél…mas tudo bem…não se muda o mundo em 1 dia!

    Abraço a todos!

    Obs.: Bomba, me lembra de te levar os DVD’s do Solaris…

  37. “gosto é que nem c*”

    alguns fedem mais que outros.

    O problema de qualquer discussão é que as pessoas se deixam levar pelo emocional ao invés de pela razão. Aí começa o bias…

  38. “onde a documentação e o código estejam integrados de alguma forma”

    “ou simplesmente onde código seja tão expressivo a ponto de ser intuitivo e auto-explicativo.”

    Existem duas coisas, documentação de RN e documentação de código. Programa sem comentário não é programa, pelo menos profissional, se em uma seleção me entregam um código sem nenhum comentário, eu nem verifico se o algoritmo funciona. Código 100% auto explicativo não existe, por mais simples que seja a syntax da linguagem. Quando vc trabalha em equipes não pode pensar que todos tem o mesmo conhecimento sobre os sistemas e ou que vão entender o teu algoritmo, fora que daqui a 2 anos quando for dar manutenção neste código nem vc se lembrará dele. Mesmo que o algoritmo seja de fácil compreensão podem existir motivos não explicitos para que o tenha usado. Mas repito, código sem comentário é coisa de amador.

    “eu disse? Desculpe. Pensei ter dado a entender que em um ambiente “enterprise”, java barebones é o mesmo que nada. Gerentes só ficam satisfeitos com a sopa-de-letrinhas completa: JavaEE, EEJavaBeans, XML, UML, JSP, Jakarta, DOM, WAP, JBoss etc
    Se não tiver isso tudo, não presta.”

    Bom, então quando Python for utilizado em aplicações “enterprise” a sopa-de-letrinhas será Plone/Zope… no lugar de XML será CSV… no lugar de UML será o que DFD ou XP?… Django, TurboGears,… hehehe…. a sopa continua…

    “é que a escolha das empresas está embasada no suporte que a comunidade e as empresas dão para o Java”
    “precisamente: é uma decisão política, não técnica. Que bom que concordamos! :)”

    Não é política, pois quando falo em suporte, é suporte tecnológico, é ter meio mundo desenvolvendo a plataforma, criando ferramentas, implementando novas tecnologias e infraestruturas, integrando com os mais diversos ambientes. E a parte de possuir diversos fornecedores de soluções opensource e proprietárias, onde posso escolher o que melhor se adapta as necessidades da minha empresa, também não é política é “estratégica”.

    “O Google migrou o Orkut para Java”
    “da panela para a frigideira! Se não me engano, orkut era em C#.”

    Bom, se precisaram reescrever todo o código e sendo a Google uma empresa moderna sem gerentes sopa-de-letrinhas, porque ela não migrou para Python?

    “porque a comunidade do Python é tão encarnada com o Java?”
    “desconfio que é o medo que o escuro provoca depois de se ter provado da luz. :)”

    Não sei quem inventou esta “concorrência” ou “rivalidade”, pois ela não existe, espero que um dia o Python consiga concorrer com o Java, pois a concorrência leva ao aprimoramento.
    Acho que vcs não conseguem explicar porque o Python, apesar da idade, não consegue a aceitação e confiança que Java possui, ah esqueci tem empresas marketeando pelo Java, blah, blah, blah.
    ????? Mas e o PHP ????? Não tem empresa por tras e é muito mais aceito pela comunidade e pelas empresas!!! Acho que é porque no lugar de evoluir a plataforma ficam discutindo o “sexo dos anjos” e fazendo as perguntas erradas….

    “definição de escopo por identação veio do Cobol por causa dos cartões perfurados”

    “É a primeira coisa que programadores de linguagens estruturadas reparam em python. E, no entanto, é ótimo poder dispensar begin/end ou pares de chaves em favor da já natural indentação.”

    Vai ver quem criou a linguagem era um adorador de linguagens estruturadas e colocou isto em homenagem ao Cobol. Tanto que se pode programar em Python sem OO.

    “De maior relevância e profundidade é a dispensa de cansativas declarações de tipos para toda e qualquer variável, os recursos para programação dinâmica e metaprogramação e os fortes recursos da linguagem para manipulação de dados heterogêneos em coleções.”

    As declarações de tipos que pra vc são cansativas, eu considero como no mínimo documentação. Mesmo quando trabalhei com linguagens que não exigiam declaração de variáveis como VB ou Clipper, eu fazia por uma questão de no mínimo organização. Como a plataforma Java em evoluído, e sempre existirão coisas que devam ser melhoradas, talvez por sua comunidade fazer as perguntas certas, eu tenho recursos de generics, quando eu preciso de tratamento de objetos dinâmicos uso refletion…
    E o um encapsulamento? Só tem __privado e público, preto ou branco…
    Se ficarmos enumerando, existirão milhões de coisas que não gosto em Python, ou não que vejo importância alguma, e vc do mesmo jeito para Java. Isto não vai chegar a lugar algum…..

    “O problema de qualquer discussão é que as pessoas se deixam levar pelo emocional ao invés de pela razão. Aí começa o bias…”

    Exatamente, principalmente termos posições profissionais, o tempo do amadorismo e da falta de visão corporativa já se foi…

    Não adianta vc me dizer que a Ferrari F1 do Massa é o carro mais evoluído do mundo, que alcança 19000 RPM´s, que chega a 360 km por hora, se eu preciso fazer uma mudança e ele não tem nem porta luvas. Eu vou dispensar o super carro pois ele é completamente desqualificado para a atividade e contratar um caminhão Scania.

    “Não existe solução ideal, a melhor solução é aquela que atende as necessidades da organização”


  39. “gosto é que nem c*”

    alguns fedem mais que outros.

    O problema de qualquer discussão é que as pessoas se deixam levar pelo emocional ao invés de pela razão. Aí começa o bias…”

    Parece que as pessoas levam essa discução muito mais pro lado pessoal do que pro emocional e/ou profissional…

  40. Que discussão mais pé no saco >.<

    o que vc faz em java, alguem consegue fazer igual ou melhor em python… e vice-versa. Quanto ao código ser legível ou não, depende do programador, não da linguagem. Já vi um boot loader (assembly, é claro) feito por um brasileiro que era perfeitamente legível até para a minha vó.

    nunca programei em python então não sei a qual mercado encaixá-la (sem zuar, nem sei se é compilada ou interpretada). Levando em conta que cada linguagem tem suas aplicações, minha opinião é de que python pode ser melhor que java em determinado projeto e java pode ser melhor que python em outro.

    já vi milhares de discussões sobre “a melhor linguagem” em vários foruns e nunca ninguém chega à uma conclusão. Alguns dinossauros que têm uma visão privilegiada do mundo (o próprio umbigo) defendem até a morte o seu ponto de vista. Por exemplo, já viu algum delpher respeitar vb? nem eu… mas aí eu digo, faça algo em Delphi que eu não faça em VB.

    quer comparar linguagem? Compara C++ e Java que são as linguagens que mais geram discussão por aí.

    Qual é melhor para fazer, por exemplo, um controle de estoque em que a interação com o usuário deve ser fácil e simples (janelinhas, botões etc)? Java com certeza. Vai tentar fazer isso em C++… 3 anos depois vc tem uma janela com botões que não fazem nada =P

    Qual é melhor para fazer um Half-Life2? Tentar fazer em java então… seu jogo vai rodar mto bem num pc que será lançado daqui 5 anos.

    pra falar a verdade eu acho java uma merda, mas no momento estou tentando convencer meu chefe a usar uma linguagem que não seja VB… e java é uma das minhas soluções (claro que não é a única).

  41. “Parece que as pessoas levam essa discução muito mais pro lado pessoal do que pro emocional e/ou profissional…”

    Realmente, talvez em alguns momentos acabei fazendo comentários mais irônicos do que deveria… Mas, como fui definido, sou um Dinossauro e não uma barata…

    Como falei acima, esta comparação pejorativa não deveria existir. Estas abordagens do tipo “Matar o Java e mostrar o Python” não é construtiva e muito pouco profissional. Me lembra a mentalidade antiga de concorrência de cargos dentro de empresas, onde um ficava tentando desqualificar o outro para tomar o seu lugar. “Dê uma rasteira no seu chefe e tome o lugar dele”, ou “abafe o teu funcionário senão ele pode tomar o teu lugar”. Isto não existe mais em empresas evoluídas, hoje o funcionário tem que pensar em fazer o seu gerente se destacar e subir na empresa, fazendo com que a vaga dele fique livre, e o gerente tem que preparar o seus funcionários para assumir o seu lugar quando ele ascender.
    Continuo achando que a abordagem da comunidade Python deveria ser, o que deu certo no Java? E no PHP? É muito mais construtivo, leva a evolução, todas as tecnologias tem defeitos e virtudes. Nós, profissionais da área, temos que ser técnicos (sempre), mas devemos expandir nossos horizontes e olhar além do nosso quintal.

    Abraços

  42. “se em uma seleção me entregam um código sem nenhum comentário, eu nem verifico se o algoritmo funciona”

    se eu tivesse que percorrer uma montanha de java para entender, faria o mesmo! :)
    “Código 100% auto explicativo não existe”

    exemplo em Inform 7, uma linguagem DSL para criação de interactive-fiction:
    “Olive Tree Gyro Shop is inside from Street in Kolonaki. Kostis is a man in the Gyro Shop. In the Shop is a stand. On the stand is a rotating column of cooking lamb flesh. In the shop is a closed, openable container called a drinks refrigerator. The refrigerator contains a can of Mythos beer and a can of Coke Light.”

    Sim, compila perfeito. E se vc não entendeu e acha que comentário são necessários, vou explicar:
    /*
    Olive Tree Gyro Shop is inside from Street in Kolonaki. Kostis is a man in the Gyro Shop. In the Shop is a stand. On the stand is a rotating column of cooking lamb flesh. In the shop is a closed, openable container called a drinks refrigerator. The refrigerator contains a can of Mythos beer and a can of Coke Light.
    */

    aí, melhorou? :)
    “Plone/Zope… no lugar de XML será CSV… no lugar de UML será o que DFD ou XP?… Django, TurboGears,… hehehe…. a sopa continua…”

    pois é, como eu disse: gerentes burocratas adoram. Mas Java sempre terá prevalência, por causa do tamanho da coisa.

    “porque ela não migrou para Python?”

    pq o Lobby pró-Java é bem maior que o Guido. :)
    “Mas e o PHP ?”

    Existem dois mercados aí fora, segundo vc: o de programadores ignorantes fazendo sisteminhas de esquina e o de programadores geniais fazendo sistemas de grande porte. O primeiro usa ferramentas furrecas, próprias para qualquer mecânico usar, VB, PHP, clipper e coisa e tal. O segundo grupo passa anos numa faculdade, depois em uma pós-graduação além de inúmeros cursos apenas para fazer um HelloWorld plenamente documentado e seguindo especificações enterprise, usando Java, C++, Brainfuck e outras.

    Mas vc não considerou um grupinho pequeno que não se contenta com a mediocridade de PHP nem com a insanidade de Java: o de programadores usando Python, Ruby, Lisp, Haskell e outras em pequenas soluções específicas e criativas para clientes com bom-gosto. É um nicho de mercado bem reduzido, pq, afinal de contas, o mercado é movido a Harry Potter, não Hamlet.

    “Vai ver quem criou a linguagem era um adorador de linguagens estruturadas e colocou isto em homenagem ao Cobol.”

    Na verdade, Python tem bastante influência de Pascal, e portanto, Algol. Guido é europeu e Pascal foi criado por um professor europeu e nunca deu muito certo na America. Mas Python também teve influência de Lisp e outras linguagens funcionais, de forma que também é possível programar python funcionalmente, sem em nenhum momento adentrar em OO.

    Algumas pessoas vêm essa idéia de uma linguagem multiparadigma como algo positivo. Eu sou um deles. Gerentes querendo impor malhas de aço , correias, ordem, padronização e robôs sobressalentes, não.

    “As declarações de tipos que pra vc são cansativas, eu considero como no mínimo documentação.”

    É, eu já vi no trabalho, em Delphi, insanidades como “int iContador”. Ou seja, pegaram um idioma comum desde a década de 70 (for i := 1..10) e transformaram em um monstro enterprise. É isso o que esse foco em “seriedade”, padronização e grande porte faz: deixam as pessoas insanas e cegas para os exageros, soberbas, redundâncias e preciosismos realizados em seu nome.

    “talvez por sua comunidade fazer as perguntas certas, eu tenho recursos de generics, quando eu preciso de tratamento de objetos dinâmicos uso refletion…”

    pffft! Vocês não têm esses recursos por fazerem as perguntas certas: têm por necessidade e por terem notado que são recursos úteis em linguagens mais antigas como C++ e Lisp, nos quais aliás Java sempre se espelhou.

    A API reflection de Java para metaprogramação é extremamente limitada e cansativa. Só serve mesmo para fazer IDE, ao passo que em Python ou Lisp, metaprogramação está facilmente ao alcance do programador de aplicação.

    “E o um encapsulamento? Só tem __privado e público, preto ou branco”

    Menos é mais.

    Protected não seria muito útil, pois Python não é exclusivamente OO. Ademais, existem níveis de privacidade, por escopo e também por módulo. O mal do programador java enterprise é essa obsessão por tamanho e grandiloqüência.

    “Quanto ao código ser legível ou não, depende do programador, não da linguagem.”

    A linguagem certamente ajuda. ou atrapalha.

  43. ““Matar o Java e mostrar o Python” não é construtiva e muito pouco profissional”

    Por favor, não confunda o bom-humor e a visão desencanada da comunidade open-source com falta de seriedade ou de profissionalismo. Palestras bem humoradas são um ponto forte da comunidade contra os carrancudos executivos que têm que aguentar suas seções de TI no trabalho.

    tal humor e ar blasé vêm dos primórdios da comunidade, dos tempos de hackers no MIT e outros ambientes acadêmicos, dos primórdios da cultura Unix…

  44. “Continuo achando que a abordagem da comunidade Python deveria ser, o que deu certo no Java? E no PHP? É muito mais construtivo, leva a evolução, todas as tecnologias tem defeitos e virtudes.”

    Gostei do comentário…principalmente da parte “todas as tecnologias tem defeitos e virtudes.”

    Abraços a todos!

  45. Python é bem mais simples, pegue outros exemplos na internet, alguns clássicos como a torre de hanoi, java é uns 3x maior que python.
    Python exige mais do programador, pois vc não tem tanto tempo pra pensar enquanto digita em relação a Java (piada infame, mas realista)
    Python simplifica muito a vida de quem programa, quem acha o contrário sugiro ler um pouco mais sobre python.
    Linguagens dinâmicas como Python tendem a prevalecer no futuro, a prova é o JRuby, implementação do Ruby na JVM, que foi adquirido pela SUN, e dizem as más linguas que Ruby vai ser a próxima linguagem suportada na JVM, além de Python e Groove.
    Pegue um Zope/Plone e veja o poder de python comparado a JSP.

  46. “se eu tivesse que percorrer uma montanha de java para entender, faria o mesmo!”
    Não importa o tamanho do código… documentação é fundamental.

    “pffft! Vocês não têm esses recursos por fazerem as perguntas certas: têm por necessidade e por terem notado que são recursos úteis em linguagens mais antigas como C++ e Lisp, nos quais aliás Java sempre se espelhou.”

    Perfeito… Isto é fazer a pergunta certa… verificar as necessidades, quais os erros e quais os acertos… fazer a plataforma evoluir. Se algo não foi implementado na primeira versão, nada impede que se reavalie.

    “pois é, como eu disse: gerentes burocratas adoram. Mas Java sempre terá prevalência, por causa do tamanho da coisa.”

    Como disse, Python não muda isto, outros membros do post falam “Pegue um Zope/Plone e esperimente”, então eles são os futuros gerentes burocratas do Python? Eu acho que não!

    “pq o Lobby pró-Java é bem maior que o Guido. ”

    Bom eu estudo e escolho tecnologias, não pessoas… bom, acho que o Google não estaria onde está, se vivesse de lobby, acho que eles são muito mais profissionais que isto. Gosto de ver estas respostas imparciais, quando é pra falar que o Google usa Python é porque é moderno, o mundo mudou depois dele… mas depois, se a escolha não foi Python, vira uma empresa cheia de dinossauros burocráticos fazedores de lobby. Que imparcialidade… que seriedade… que profundidade….
    Eu acho, que como refizeram todo o código, eles devem ter estudado bastante e chegaram a conclusão que Java era a melhor solução para este problema, inclusive disseram que o problema era escalabilidade.
    Não preciso dizer que existem muitas coisa no Google em Python, porque foi quem ofereceu a melhor solução para o problema.

    “Existem dois mercados aí fora, segundo vc: o de programadores ignorantes fazendo sisteminhas de esquina e o de programadores geniais fazendo sistemas de grande porte. O primeiro usa ferramentas furrecas, próprias para qualquer mecânico usar, VB, PHP, clipper e coisa e tal. O segundo grupo passa anos numa faculdade, depois em uma pós-graduação além de inúmeros cursos apenas para fazer um HelloWorld plenamente documentado e seguindo especificações enterprise, usando Java, C++, Brainfuck e outras.”

    Bom voltamos para o preto e branco, oito ou oitenta… eu não dividi o mercado desta maneira… Eu critiquei as observações sobre as “super vantagens técnicas de quantidade de linhas de código”, dizendo que o “maravilhoso código compacto” só teria vantagens em “sisteminhas de esquina”, que são os famosos sistemas feitos a facão, não documentados, não planejados…
    O “sisteminhas” não era no sentido do tamanho e sim da qualidade. Em qualquer ferramenta pode ser feito um bom sistema. A diferença estará na escalabilidade da solução.

    “Mas vc não considerou um grupinho pequeno que não se contenta com a mediocridade de PHP nem com a insanidade de Java: o de programadores usando Python, Ruby, Lisp, Haskell e outras em pequenas soluções específicas e criativas para clientes com bom-gosto. É um nicho de mercado bem reduzido, pq, afinal de contas, o mercado é movido a Harry Potter, não Hamlet.”

    Mais uma vez, não sou contra o desenvolvimento de soluções em Python, Ruby… Muito pelo contrário…

    Agora, esse papinho de “grupinho pequeno” de heróis solitários contra a opressão mercado, é pra matar… é intelectual no barzinho. Respeite os profissionais que trabalham sério com Python, Ruby!!! Acho que tens visto muito Harry Potter e pode se transformar no bruxo coitadinho… “Ser ou não ser, eis a questão!!!”

    “a mediocridade de PHP”, “a insanidade de Java”, “heh, os 3 dinossauros do rock da década de 70″, qualquer coisa que não seja Python não presta… avaliações técnicas e imparciais…

    ““Matar o Java e mostrar o Python” não é construtiva e muito pouco profissional”
    Por favor, não confunda o bom-humor e a visão desencanada da comunidade open-source com falta de seriedade ou de profissionalismo. Palestras bem humoradas são um ponto forte da comunidade contra os carrancudos executivos que têm que aguentar suas seções de TI no trabalho.”

    Sarcasmo é uma excelente forma de humor! Em pequenas pitadas é muito interessante em uma palestra, uma piada, uma passagem dentro de um contesto… mas com este destaque é ataque, provocação… é falta de maturidade!

  47. “Não importa o tamanho do código… documentação é fundamental.”

    se vc lê código claro e auto-explicativo, pra que perder tempo com um comentário que pode estar obsoleto há anos e só se mantém pq ninguém sabe pra que serve?

    “eles são os futuros gerentes burocratas do Python?”

    Não, eles são os realistas da comunidade vendendo python aos gerentes burocratas. E, mesmo com Zope/Plone, ou melhor ainda, com algo como Turbogears ou Django, a coisa ainda é mais leve e compacta no lado python do que no mesmo cenário java…

    “depois, se a escolha não foi Python, vira uma empresa cheia de dinossauros burocráticos fazedores de lobby”

    Google é um péssimo exemplo para Python: eles são criadores de infraestrutura e, como eu mesmo disse, python não se presta para infraestrutura, onde o importante é performance absoluta. Se para isso for preciso se lambuzar todo com assembly, C, C++ ou Java, eles o farão. Alguma vez já deu uma olhada no código javascript que efetivamente criam a interface do GMail? loucura, né?

    Python é a ferramenta certa para rápido desenvolvimento de software de aplicação, porém. O melhor que o Google pode contribuir aqui é com o Summer of Code para projetos