Aprender Python pode ser interessante, por causa do GAE - Google App Engine?

Será que prender Python pode ser interessante, por causa do GAE - Google App Engine?
Onde mais podemos usar esta linguagem?

Eu acho um boa sim.

Pelo GAE, mas também pelo Django, Pylons, Web2py, Plone, etc.

Além disso Python é muito usada na Administração de Sistemas (tem superado Perl principalmente em ambiente Linux), Computação Científica, IA, Multimídia,etc.

http://www.python.org/about/apps/
http://www.python.org.br/wiki/ImpressioneSe

Ta ai uma pergunta que sempre quis fazer: Porque pelo GAE?

Não tem outras linguagens hospedadas no GAE? Ou porque python seria melhor?

Aprender Python SÓ por causa do GAE é que não vale a pena. É a mesma coisa que dizer que a única vantagem de aprender Ruby e Rails e poder usar o Engine Yard. Python tem MUITAS outras vantagens.

Concordo com o André.
Se é só por causa do Appengine, por que não continuar com o Java mesmo?

Mas, dito isso, Python é minha segunda linguagem atualmente. A maior parte dos meus projetos do GAE estão em Python, porém um deles estou considerando converter para Java.

[quote=Bani]Concordo com o André.
Se é só por causa do Appengine, por que não continuar com o Java mesmo?

Mas, dito isso, Python é minha segunda linguagem atualmente. A maior parte dos meus projetos do GAE estão em Python, porém um deles estou considerando converter para Java.[/quote]

Por que converter para Java? Tem alguma situação específica que o Python não é tão adequado quanto o Java?

P.S: Pergunto isso, pois sempre é bom saber o que cada linguagem pode ou não pode.

Após quase 1 ano e meio trabalhando no GAE usando Java quase que diariamente, digo: Java ainda é cidadão de segunda classe no GAE, o Python é que reina.

Não que seja uma coisa ruim e não que o ambiente Java lá seja muito diferente do ambiente Python. Rodo Java lá e não pretendo mudar nem de linguagem e nem de servidor, estou bem satisfeito.

Mas é fato que o ambiente do GAE foi pensado para o Python e depois botaram o Java lá em cima com certas gambiarras. As APIs no Python se encaixam muito melhor no ambiente do GAE, diversas opções e novidades aparecem primeiro em Python (e às vezes nem aparecem em Java), etc.

E pra mim a maior prova disso é o modelo de startup das aplicações. No GAE não há inicialização de contexto como num server Java normal, tudo é request. Esse modelo é perfeitamente compatível com uma arquitetura Python (PHP/CGI etc) mas não Java. O que nos leva àqueles LoadingRequests e ao velho problema do Cold Start. Uso os novos WarmUpRequests e pago pelo AlwaysOn do GAE 1.4.0 desde o dia 0, mas isso só aliviou um pouco o problema, não resolveu por completo.

Enfim, um pouco de desabafo. Mas devo dizer que adoro o ambiente do GAE, mesmo com Java :slight_smile:

[quote=Sergio Lopes]Após quase 1 ano e meio trabalhando no GAE usando Java quase que diariamente, digo: Java ainda é cidadão de segunda classe no GAE, o Python é que reina.

Não que seja uma coisa ruim e não que o ambiente Java lá seja muito diferente do ambiente Python. Rodo Java lá e não pretendo mudar nem de linguagem e nem de servidor, estou bem satisfeito.

Mas é fato que o ambiente do GAE foi pensado para o Python e depois botaram o Java lá em cima com certas gambiarras. As APIs no Python se encaixam muito melhor no ambiente do GAE, diversas opções e novidades aparecem primeiro em Python (e às vezes nem aparecem em Java), etc.

E pra mim a maior prova disso é o modelo de startup das aplicações. No GAE não há inicialização de contexto como num server Java normal, tudo é request. Esse modelo é perfeitamente compatível com uma arquitetura Python (PHP/CGI etc) mas não Java. O que nos leva àqueles LoadingRequests e ao velho problema do Cold Start. Uso os novos WarmUpRequests e pago pelo AlwaysOn do GAE 1.4.0 desde o dia 0, mas isso só aliviou um pouco o problema, não resolveu por completo.

Enfim, um pouco de desabafo. Mas devo dizer que adoro o ambiente do GAE, mesmo com Java :)[/quote]

++

Uso o GAE há 8 meses em Java e gostei muito. Contudo, como o amigo Sérgio Lopes comentou, para Python GAE é bem melhor mesmo. Eu vou aprender o Python por causa disso e porque me desiludi um pouco com Java depois de ver ActionScript, uma linguagem mais dinâmica. Java agora só para consultoria e curso mesmo…rs.

Basta vc comparar o Datastor para o Python e para o Java para vc sentir a diferença e confirmar o que o amigo já disse: Colocaram o Java fazendo umas gambis para funcionar lá.

Também concordo com o amigo que falou sobre o Django e outros frameworks Python. Mas definitivamente minha escolha pelo Python foi motivada bastante pelo GAE.

Quanto ao Cold Start, a única maneira que encontrei para melhorar a questão foi chutar o balde para o SPRING e fazer tudo na mão. O Spring só serviria mais para Injeção de Dependência, então fiz o meo próprio framework: http://jfera.nuccitec.com.br. Mas ele serve para integração com Flex, então é muito específico.

[]s

Mesma situação aqui. No caso, uso VRaptor e o padrão dele é usar o Spring por baixo. Boa parte do trabalho no VRaptor 3.2 foi suporte ao Pico Container e ao Google Guice, além de um classpath scanning em build time. Foi tudo fortemente motivado por meus estudos no GAE e incansáveis tentativas de melhorar o Cold Start.

Atualmente uso o Pico Container.

[quote=RafaelViana]Por que converter para Java? Tem alguma situação específica que o Python não é tão adequado quanto o Java?

P.S: Pergunto isso, pois sempre é bom saber o que cada linguagem pode ou não pode.[/quote]

Sim, o projeto que eu estou convertendo é o http://www.horaagora.com
Uma parte que ficou bem meia boca é o mapa com conversão de timezones, e a conversão de horário de verão já deu pau mais de uma vez (por burrice minha, mas se eu não tivesse que ter escrito meu próprio código provavelmente funcionaria). No Python, ao contrário do Java, essa parte de timezones é uma biblioteca à parte, e é uma biblioteca com trocentos arquivos com classes com inicialização “estática” quando carrega o programa o que, no GAE, basicamente acontece a cada acesso a app. Eu expliquei um pouco melhor o lance no blog do projeto. Então para fazer um lance sério de conversão de horários eu teria que ou adaptar muito a biblioteca do Python pra colocar dentro do meu projeto ou fazer em Java, e refazer em Java está me parecendo bem mais simples. Mesmo porque, na real, não tem quase nada de código server side nesse projeto, é quase tudo JavaScript mesmo. Eu já cheguei a fazer um webservice de conversão de timezone que eu poderia chamar a partir do Python, mas ia ficar tosco e lento demais, então melhor terminar de passar o pouquinho de código que tem pra dentro do Java e usar tudo de lá. :slight_smile:

Acho que aprender Python deveria ser visto como o aprendizado de uma segunda lingua, ou seja, algo necessário, que irá agregar conhecimento. :wink:

Faço minhas as palavras do André.

[]s

Vou dar uma ressucitada no tópico…

Que raiva desse Python jurássico que roda no AppEngine que torna um inferno trabalhar com acentuação ou com qualquer coisa Unicode!!!

[size=7]pronto[/size] :slight_smile:

Como anda o mercado de python no sul/sudeste? Sempre achei python uma linguagem muito interessante inclusive foi a primeira linguagem que tive contato até por usar Linux desde cedo.