Python está “pronta para o mercado”
Postado por Osvaldo Santana
Recentemente li um artigo em um blog que se propunha a vender a idéia de que a pilha “J2EE/Java/Linux” seria a mais perfeita escolha para uma fábrica de software trabalhar.
Em certo momento do artigo o autor faz uma comparação da plataforma Java que usa quase que exclusivamente a linguagem Java com outras plataformas e/ou linguagens de programação. Neste momento ele explica porque Python não seria uma boa escolha:
…Python, apesar de ser mais moderna e poder ser compilada, não foge muito deste escopo também. Além disso, ambas (Perl e Python) não conseguiram uma aceitação comercial madura, e, não representando um investimento seguro a longo prazo, não devem ser escolhidas como estratégicas (sic) para a fábrica de SW de uma empresa, ou para um sistema complexo e de missão crítica.
Esse chavão “…não conseguiram uma aceitação comercial madura…” e suas variantes são sempre repetidas com veemência e numa quantidade extremamente alta. Acho que essas pessoas fazem isso pensando que se repetirem essa mentira ela talvez se torne verdade.
Se é verdade que não existe empresas do tamanho da Sun, Oracle e IBM que promovam Python da mesma forma que se promove Java também é verdade que existem muitas empresas que usam o poder de Python para concorrer com toda essa força bruta usada pelos javanistas.
A coisa funciona mais ou menos assim:
- você quer produzir software pra ganhar dinheiro.
- você pode escolher Java ou Python pra trabalhar
- os seus concorrentes já usam Java ha bastante tempo e estão mais adiantados no desenvolvimento de seus softwares
- se você escolher Java, você precisa do mesmo tempo que eles para desenvolver o seu software
- usar Python te torna mais produtivo1 e consequentemente você levaria menos tempo para alcaçar seus concorrentes e em pouco tempo ultrapassá-los.
Esse cenário já foi bem descrito por Paul Graham mas os atores envolvidos no tempo em que ele iniciou a empresa dele eram C++ (fazendo o papel da Java) e Lisp (fazendo o papel de Python).
A dica que eu daria para as empresas que produzem software é: prestem atenção em Python e experimentem-na. Eu garanto que depois de usá-la você vai querer mantê-la como “segredo de negócio” para seus concorrentes, algo como uma “arma estratégica” contra eles.
E se você não gostar de Python também pode experimentar Ruby porque com qualquer uma dessas você certamente produzirá muito mais e melhor do que usando Java/J2EE. E se isso não for verdade eu publico o seu case de insucesso aqui neste blog e dou o meu braço a torcer.
Por último: Cobol, Clipper e Delphi já foram as linguagens que todos diziam ser “maduras para o mercado”. Pense nisso.
1 Existem várias formas de comprovar essa afirmação mas todas elas são extensas demais para este blog. Convido os interessados a pesquisarem sobre essa afirmação na Internet ou com empresas que já assumiram publicamente que usam Python.
9 Responses to “Python está “pronta para o mercado””
Deixe um comentário







Novembro 10th, 2006 at 2:42 pm
Lisp fazendo o papel de Lisp?

De forma geral, vejo o processo de iniciacao no Python sempre da mesma forma (inclusive comigo): rejeicao, suspeita, experimentacao, aceitacao e jubilo
Novembro 10th, 2006 at 6:43 pm
Aah, que se dane. Eu vou falar tudo o que esteve entalado na garganta todo esse tempo, sem me preocupar em justificar ou usar lógica. Lá vai rant.
1. lisp > ruby > python
python + & = ruby, ruby + & = lisp, & pequeno (e diminuindo)
python > java
python = java + &, & beeeeem grande
3. * 1/3 dos problemas que as pessoas resolvem com Java seriam muito melhor resolvidos em C
* outro 1/3 em {python,ruby,lisp}
* e o restante quer ser Erlang e não sabe
4. O problema de Java não é que a implementação é lenta e a máquina virtual come memória (vsize de `java -version` = 209796KiB). O problema de Java é que a linguagem é horrível. Mesmo que houvesse uma máquina virtual maravilhosa, Java continuaria sendo horrível.
5. Quem diz que Java é bom porque é orientado a objetos não conhece smalltalk ou ruby.
A idéia que os programadores Java tem de orientação a objetos é “coleta lixo e deixa eu encapsular funções com dados”.
6. O prof. Dijkstra escreveu que “PL/I pertence mais ao conjunto de problemas que ao conjunto de soluções”. Java não só pertence mais ao conjunto de problemas, como *cria problemas onde eles não existiam*. A única razão boa para usar Java é se você é pago por linha de código, por número de classes ou por function points. Se Java tivesse sido inventada enquanto Dijkstra era vivo, ele teria desistido de ciência da computação e declarado o campo morto.
7. Tudo que é justificado por ser “profissional” é um lixo. Java inclusive.
8. A fórmula perfeita para criar linguagens de programação está descrita na primeira frase do artigo do Scheme:
> Programming languages should be designed not by piling feature on top of feature, but by removing the weaknesses and restrictions that make additional features appear necessary.
Se houvesse justiça os caras que criaram Java teria isso tatuado a fogo na testa ao contrário, pra ler todo dia de manhã quando fossem ao banheiro.
9. Você já criou em seu editor de textos macros ou abreviações para certos idiomas comuns? Você já implementou design patterns? Em Lisp você nunca faria isso. Em Lisp o compilador faria isso.
10. Uma linguagem de programação que tenta proteger o programador de seus próprios erros vira burocracia. Burocracia não é apenas tediosa, ela acaba com o KISS e destrói estabilidade, manutenibilidade e poder de expressão. A linguagem de programação ideal é a **mais concisa possível**. Concisão **não** significa usar poucos caracteres (aka Perl), significa usar poucos *conceitos*, poucos *comandos*. A ferramenta definitiva para aumentar concisão é permitir ao programador poder total para alterar a sintaxe da linguagem. Para programar a sintaxe, você precisa que os próprios programas sejam objetos de primeira ordem, facilmente manipuláveis.
Lisp é a única linguagem em que você pode programar a sintaxe. cada programa Lisp é escrito em uma linguagem especial para resolver *aquele* problema.
Lisp *sempre* vai ser a única linguagem em que você pode programar a sintaxe, porque se você acrescentar essa funcionalidade a outra linguagem, você terá em suas mãos Lisp com açúcar sintático. Assim como Unix, Lisp não é uma implementação, é um ideal. Lisp não é uma linguagem; uma linguagem é Lisp.
Os programadores de Haskell acham que Lisp é bom porque é funcional, e Haskell é mais funcional do que Lisp, portanto Haskell é melhor. Mas a vantagem de Lisp não é ser funcional, é ser uma linguagem de programação programável. O estilo funcional é o mais favorecido por Lisp porque francamente ele é o melhor para a maioria dos casos (muito melhor que OO, diga-se de passagem), mas Lisp não existe para você programar funcional, existe para você programar *como quiser*. É trivial implementar imperativo (comandos OpenGL) ou OO (CLOS) ou lógica (não-determinismo) em Lisp. Não no compilador de Lisp, veja bem, *em Lisp*.
Novembro 11th, 2006 at 10:41 am
acho que comentarios como esse é normal vindo de quem usa java…
que usa java realmente nao conhece python… se conhecesse nao falaria isso ou melhor, nao seria mais programador em java e sim em python
=)
Novembro 11th, 2006 at 5:25 pm
O Boiko compartilha de muitas das minhas opiniões. Só não acho *sinceramente* que Ruby seja “>” que Python. E sim, eu conheço Smalltalk (pra falar a verdade sou um dos poucos brasileiros que recebeu salário para programar em Smalltalk).
Resumidamente eu acho que Ruby é tão poderosa quanto Python mas tem uma sintaxe que me desagrada.
Novembro 14th, 2006 at 9:19 pm
python e ruby a essa altura (essa altura = python 2.5) são praticamente a mesma coisa; o que muda é a cultura dos dois grupos (as diferenças entre as bibliotecas padrões são muito maiores do que as diferenças entre as linguagens). o grande problema de python é que ela tenta obrigar você a fazer “a coisa certa”, o que acaba em burocracia (quando alguém vem e faz algo maravilhosamente prático como o upvars() do web.py o Guido vai lá e puxa a orelha). suponho que as pessoas que acreditam que é papel da linguagem de programação minimizar os erros do programador possam gostar dessa filosofia, mas ela acaba com a concisão (Paul Prescod: “o objetivo de Python é regularidade e legibilidade, não concisão”).
eu acredito muito firmemente que concisão, do jeito que defini acima, leva a um nível de regularidade e legibilidade bem maior que “explícito é melhor que implícito”; é só olhar pra scheme.
(btw: dada a cultura que cerca python, me surpreende que até agora não tenham colocado tipagem estática na linguagem.)
ruby, ao invés de te dizer o que é certo, tenta ser prática e obediente, e consegue (muito bem, por sinal — sou obrigado a confessar que mesmo em lisp não consigo resolver as coisas de forma tão natural e gostosa quanto em ruby).
as grandes vantagens que python tem sobre ruby são documentação decente e suporte a Unicode.
Novembro 14th, 2006 at 9:21 pm
em outras palavras: sendo razoável, eu entendo por que alguém poderia considerar python melhor que ruby, mas não estava sendo razoável quando escrevi o rant :o)
Novembro 14th, 2006 at 10:57 pm
Bom, threads sobre python x ruby (ou python x java) não são a coisa mais rara na pythonbrasil (e eu sempre arrasto alguma sobre ruby…).
A coisa já anda tão descambada que já ouvi um ‘consultor’ falar de ‘design pattern da Sun’. Pode uma coisa dessas?
Desconheço Lisp
, mas os comentários do Bolko me deixaram com água na boca!
Voltando a vaca fria, tem uma frase de um historiador que diz algo como: ‘Os que desconhecem a história estão fadados a repeti-la’. Mas parece que mesmo conhecendo, o homem traça o seu destino de forma a repetir o passado…
No meu trabalho, temos uma porção de formulários web ‘descartáveis’ - Ele é feito, tem seu uso por um certo tempo, depois morre. Um sério candidato a soluções específicas como Django, Turbo Gears, ou até mesmo Rails. Mas a tendência é levar pro lado ‘corporativo’. Mas demos um tempo no Java - a curva seria muito grande e ainda é mais prático fazer em PHP.
O fato de Java ser ‘enterprise’ significa tão somente que ela tem 100% das características que você não precisará em 90% do tempo. E os 10% que você precisa, são absurdamente burocráticos.
Bom seria se os programadores pudessem tomar a decisão. Infelizmente, na maioria das vezes ou não podem ou não tem coragem.
Novembro 15th, 2006 at 7:28 pm
Sou o autor do artigo citado.
É ótimo que Python, Lisp, etc, tenham todas essas funcionalidades que vocês apontaram. Conheço alguns de vocês e sei que têm respaldo para falar.
O comentário do Walter Cruz, sobre excesso de funcionalidades/características que não são usados, não se aplica da mesma forma para uma linguagem/tecnologia. Excesso de funcionalidade é ruim para um produto, e não para uma tecnologia. Programador sabe sempre usar todas as funcionalidades de uma lingaugem (não estou falando de decorar bibliotecas).
Mas os comentários estão focando em funcionalidades e eu estou falando de ecossistema e maturidade observável na indústria.
Eu posso agora criar um produto que tem todas as funcionalidades desejáveis, ser muito melhor que seus concorrentes etc. Infelizmente, a primeira pergunta que vou ouvir quando tentar vende-lo para uma empresa que se preocupa onde pisa é: Quem semelhante a mim já usa isso? É uma perversão terrível do mercado. E leva tempo e suor penetrar esse produto no mercado. No final, o maior valor que o produto/tecnologia pode ter é seu ecossistema, penetração, enfim, maturidade, e não suas funcionalidades.
Naquela análise que fiz, tentei ser independente e frio. Limitei-me a somente relatar o que observei no mercado. Não morro de amores por nada, nem Java. Meu papel é observar e tentar dar sugestões maduras e seguras aos meus clientes, de forma que seja um passo seguro adotar tecnologias abertas, como Java, como Python, como PHP, como Linux. Mas cada um no seu lugar.
O objetivo final é Computação Aberta. E não exatamente os tijolos que a constroem isoladamente.
Novembro 18th, 2006 at 5:50 pm
Um auto puxão de orelha - fiz o que você pediu pra não ser feito na pycon. Me reformulado - Java é uma ótima plataforma, mas não é a única que está ‘pronta para o mercado’. Mil perdões Osvaldo.