Estamos à beira de uma grande guerra. A primeira das “guerras para acabar com todas as guerras”. Não falo das batalhas entre nações poderosas ou o “secular” conflito de civilizações — que bota de lados opostos as religiões monoteístas do planeta — e muito menos da maior guerra de todas: a da torcida do meu Juventus da Mooca versus os patrícios da Portuguesa. A guerra é pela sua fé, pela sua fidelidade, pelo seu bolso, e ela envolve as empresas de mídia, telecom e de tecnologia da informação.
Este assunto rende muita conversa, sob os mais diversos aspectos: desde o declínio, queda e previsível morte da Sony até a dominância californiana sobre o mundo da informação e entretenimento.
Mas neste exato momento o assunto é mais provinciano e marginal (quando comparado ao todo). Falo das tecnologias de ponta dentro do mundo da tecnologia da informação.
Primeiro, nenhuma tecnologia nasce pronta, madura e com a aceitação do mercado. Sendo assim vou bater numa tecla que que parecia morta e enterrada. Tecnologias para programação é um assunto que fala muito fundo a desenvolvedores e gestores de TI.
Morta e enterrada? Sim, isto mesmo. Há quase uma década ouço profetas entoarem seus mantras: “Java is everywhere”, “Run once, run anywhere”, “Want a cup of coffee?”, “It not Microsoft…”, e, como um choque de realidade, vamos afirmar que Java é O padrão de fato para sistemas corporativos. E para os ávidos por futurologia, este cenário não mudará tão cedo. Viva o rei!
A dominância de Java me lembra, e muito, meu começo de carreira. Eu fazia “aulinhas” de Basic, C e ADA (eu li em algum lugar que a Nasa usava esta linguagem. Resolvi aumentar minhas chances), mas ao final das aulas o instrutor dizia que linguagem de programação mesmo era Cobol, pois o mercado pedia. Tudo rodava em Cobol, Cobol era o “Emplastro Brás Cubas”! Não preciso dizer o quão certo aquele instrutor estava, anos se foram e até hoje temos sistemas Cobol embrenhados nos alicerces das mais diversas empresas.
Ao mesmo tempo, tudo muda e nada é permanente. Esta verdade, em TI, parece mais real que nunca. As grandes empresas, as gigantes, deste jogo sabem disto muito bem e mesmo investindo fábulas nas tecnologias de desenvolvimento atuais — melhorias, atualizações e principalmente novos acrônimos — investem outro bom dinheiro na concepção e direcionamento das potenciais vencedoras do evolucionismo tecnológico — a próxima geração.
Dando nomes, quando digo gigantes vocês podem ler, sem medo, IBM, Microsoft, Sun, Apple e Google, e quando digo potenciais vencedoras aposto fortemente em Ruby e Python (Colocaria PHP também, mas acredito que Ruby canibalizará este mercado).
Meses atrás escrevi um artigo, aqui mesmo no Webinsider, sobre o uso de Python para desenvolvimento web. Foi engraçado que tive várias mensagens de apoio — quase todas elas de membros ativos da comunidade Python — e tive também alguns comentários mais “céticos”.
Especificamente um “afirmava” que, pelo que eu descrevia no artigo, o “universo” todo era escrito em Python (exageros por minha conta). Sinceramente, nunca tive ânimo para responder àquele comentário, primeiro porque ficava claro que a pessoa não leu o artigo e segundo porque meu sarcasmo poderia ser mal interpretado. Hoje, com mais bom humor, a resposta seria que talvez não o universo, mas que o Google e o YouTube são.
Para não incorrer novamente no erro de só mencionar o Python, conto uma passagem ocorrida na última RubyConf — conferência mundial de usuário de Ruby — e presenciada pelo meu velho amigo e mentor, Luciano Ramalho. O evento estava totalmente esgotado, com pessoas de várias partes do mundo e de todo tipo de empresas. A grande surpresa (ao menos para mim) veio da presença de um pequeno grupo de funcionários da Sun que estão alocados em um projeto de portar Ruby para a VM da Sun, oferecendo assim uma maneira mais produtiva para o desenvolvimento em torno do mundo Java (que, continuará a mover bolsos e planilhas dos CIOs pela próxima década).
Seguindo o Google/YouTube no mundo Python e a Sun no mundo Ruby vemos a sombra da Microsoft.
Há poucos meses a empresa de Redmond anunciou que incorporará as duas linguagens ao seu já poderoso Visual Studio, e, indo além, contratou algumas personalidades destas comunidades para serem os responsáveis pela evangelização destas linguagens dentro de seu corpo de desenvolvedores.
Por trás destes movimentos vê-se uma estratégia de apostar nos principais cavalos, ainda mais que ambas as linguagens não têm “donos” — leia-se empresas e patentes atreladas a elas — são frutos de trabalhos individuais que graças a meritocracia reinante no mundo do software livre e ao marketing boca a boca saíram de seus nichos e ganharam lugares de destaque. Os gigantes, agora, estão brincando nos mesmos playgrounds pequenos e orgânicos — não projetados — das comunidades.
O resultado destes movimentos? Impossível apontar, mas é certo que a meritocracia reinante até agora será, em parte, substituída pelos desejos estratégicos de cada corporação.
Google e Microsoft brigando pelo controle da linguagem na Python Foundation, com vantagem para o Google que contratou Guido van Rossun há mais de um ano. E Microsoft e Sun batalhando nos terrenos abertos da comunidade Ruby, sendo que a sorte penderá, provavelmente, para a empresa que expatriar “Matz” Matsumoto, criador da linguagem.
Enquanto isto, aos desenvolvedores, resta relaxar e esperar a melhorar onda. [Webinsider]
.
Érico Andrei
<strong>Érico Andrei</strong> (erico@simplesconsultoria.com.br) é diretor da <a href="http://www.simplesconsultoria.com.br" rel="externo">Simples Consultoria</a></strong>
27 respostas
Olá ,
consegui ler todo o artigo hoje!! parabens!! , soh pra comentar , gostaria de dizer que o mercado é antigo digo mercado aonde o google , a microsoft , ibm , etc.. atuam , está sim mudando concerteza mais ainda todo dia de trabalho as vezes domingos e feriados usão as ferramentas a mesma espingarda para atirar no mesmo alvo , esse alvo é um cometa cliente que a cada dia passa mais rapido , as vezes tentamos acertar na cabeça do cometa cliente acerta-mos o corpo do cometa cliente..
Depois de entrar em (leve) contato com XP, tenho aprendido que o que garante a qualidade do código não é ele ter passado numa compilação, mas ter passado por testes.
Ou seja: mesmo que o seu código fortemente tipado/tipado estaticamente passe na compilação, nada garante que aquele método que só é chamado umas 3 vezes no seu seu código não vai dar problema.
Então, vamos escrever testes (ok, eu falo mais do que faço, mas estou progredindo). Numa linguagem de tipagem dinâmica, programo e escrevo testes. Numa de tipagem estática, programo tomando cuidado com tipos – e nisso geralmente sou auxiliado por uma IDE – e devo fazer os testes. O que eu sinto é que teste de tipos no compilador + testes unitários são um pouco de redundância.
(Não sei se fui claro. Qualquer coisa, dêem um alô).
Python e Ruby tem algo de apaixonante pois são extremamente sintéticas e altamente produtivas.
E quando a discussão envolve paixão é certo que perde-se um pouco de razão.
Saliento sobre as grandes parcerias (IBM, Sun, M$) que elas realmente são muito salutares mas não encantam apenas pelo nome: a produção ganha como um todo.
Fica o parabéns pelo artigo.
Discussão para muitas mesas de bar.
😉
Andrew,
Você não parseou corretamente minha resposta. Eu disse que a tipagem estática e o compilador verificando essas coisas Garante, no máximo, que você não vai ter um erro de runtime por método não encontrado em um programa mal-feito.
Os únicos erros de programação detectados durante a compilação são, exatamente, aqueles tão triviais que até um verificador mecânico embutido num IDE pode encontrar.
Carlos de Nobrega,
A composição do universo ainda é motivo de muito debate e celeumas na comunidade científica, mas a questão do Google é um pouco menos traumática:
http://web.archive.org/web/19990204033714/google.stanford.edu/about.html
Sem dúvida ele não é SÓ feito em Python, ainda mais que esta linguagem serve muito bem de cola para outros sistemas.
Quero deixar claro que minha posição é contra qualquer tipo de solução pura em tecnologia, pois isto remete ao velho ditado de que para quem tem martelo, qualquer parafuso é prego…
Abs,
EA
Gabriel C,
Falando em experiências pessoais, há alguns anos o maior site web brasileiro, a finada Usina do Som, rodava em ASP com SQL Server e os sistemas sérios da empresa onde eu costumava trabalhar ainda rodavam em Cobol…
A questão aqui é que as tecnologias evoluem, o que é padrão hoje não necessariamente o será amanhã. Se desenvolvimento sério significar apenas sistemas operacionais sou obrigado a concordar que C/C++ são a solução, mas se significar soluções de missão crítica que mantém negócios funcionando, eles migraram ou migrarão para Java.
Não é de hoje que PHP é a linguagem web mais popular (vide WebInsider, Digg, etc), mas não é por isto que ela será a solução para os novos paradigmas.
abs,
EA
Correção. Nem o universo e nem o google é feito em python…
É engraçado tudo isso por que em particular o pouco que programo para web me viro no PHP mas falando em sistemas de verdade, repito, de verdade mesmo, C/C++ sempre fará tudo muito mais rapido e estavel.
Vou dar um exemplo prático de porque usar Python faz o programador se tornar mais produtivo.
Primeiro um exemplo de como gerar um hash MD5 em Java:
http://codare.net/2007/02/02/gerando-codigos-hash-md5-sha/
Agora em Python:
import md5
m = md5.md5(Olá mundo!)
m.hexdigest() # retorna 8d595f21e04dffc4f863bb7d37940b78
Ricardo Bánffy:
erro de runtime por método não encontrado
na verdade seria um erro de compilação pois se você tentar invocar um método que não existe na classe ele nem compilar vai..
A vantagem de declarar tipo é que é que além de erros serem detectados em tempo de compilação a IDE te auxilia.
PHP, Cold Fusion, Asp .. são excelentes linguagens… mas só quem é experienciado com Ruby on Rails ou Smalltak, consegue entender a extensão deste artigo.
Parabéns!
Andrew:
Muitos programadores que só conhecem Java acham que, por serem linguagens com tipagem dinâmica, os programas escritos em Python e Ruby (ou Lisp e Smalltalk) são inerentemente mais bugados e/ou menos estáveis.
A verdade triste é que apenas garantir que os objetos sejam dos tipos esperados não significa muito. Garante, no máximo, que você não vai ter um erro de runtime por método não encontrado em um programa mal-feito.
Isso não chega nem mesmo a ser um bom primeiro passo.
Por outro lado, quando o poder expressivo da linguagem é maior (mais funcionalidade em menos linhas), você passa mais tempo resolvendo o problema corretamente e menos expressando sua solução. Quanto menores seus módulos, mais fáceis de serem generalizados, adaptados e reutilizados, até o ponto em que isso deixa de ter significado – quando o código fica breve demais mesmo para precisar ser reutilizado. Também podemos dizer que, quanto menos tempo escrevendo a solução, mais tempo sobra para se escrever os testes (que ele devia ter escrito antes, de qualquer modo). E mais ainda: quanto menos código o programador precisa escrever, mais disposto ele vai estar para tentar idéias novas e mais depressa vai conseguir fazer isso.
E coisas como testes e flexibilidade em experimentar são muito mais importantes para a qualidade do software do que apenas a validade sintática. Não se trata apenas de atender os requisitos, mas atendê-los da melhor forma possível.
E, Felipe:
Eu sei que existem bons frameworks para PHP. Mas se você pegar 50 desenvolvedores que só conhecem PHP, quantos vão conseguir entender o que é MVC? Não é um problema da tecnologia, mas do mercado em que ela se desenvolve.
Não entendo porque muitos consideram Java uma linguagem improdutiva, o que Python e Ruby tem de tão produtivo que Java não tem?
Concordo que nestas duas você escreve bem menos código, mais o fato de escrever menos código não significa que o trabalho foi produtivo, é muito melhor escrever um código grande, bem feito e reusável do que escrever um código pequeno e pouco estável, e isto não depende da linguagem mais sim do programador.
Torre de Babel.
Handerson,
Bela adição. Eu já conhecia o TIOBE e costumo mostrá-lo aos meus alunos nas aulas.
Exatamente como você disse, ele é um indicador de uso de determinadas linguagens, sem fazer qualquer juízo de valor ou qualidade.
Apenas vale lembrar que o Mercado sempre busca o equilíbrio. Quando existe uma clara demanda, as pessoas se preparam para suprir esta demanda, até que temos um excesso de mão de obra e vemos o Fantástico fazer reportagens com Advogados prestando concursos para garis…
abs,
EA
Felipe,
Obrigado pelo elogio ao artigo.
Com relação a Ruby e PHP você tem todo direito de discordar, aliás isto é ótimo! Sei que existem várias boas iniciativas no mundo PHP, sei que tem muita gente investindo pesado em soluções PHO e, para ser sincero, adoro citar que o meu site favorito (depois do WebInsider, é claro) o Digg é feito em PHP e MySQL.
A questão aqui é que muito mais difícil você mover uma montanha — leia-se a massa de desenvolvedores PHP — do que mover um pequeno amontoado — desenvolvedores Ruby, por exemplo — sendo assim um framework como o Rails ganha muito mais publicidade, por ser a única solução em Ruby, do que todas as outras em PHP.
Da mesma forma, é muito mais fácil para as corporações influenciarem nas comunidades Python e Ruby do que na comunidade PHP, sendo assim, elas preferem investir no futuro destas linguagens a gastar maos esforços do que o necessário para dominar algo já consolidado.
No geral digo que Ruby vai canibalizar PHP por ser o caminho do meio entre o PHP e o Java unindo a produtividade de um com a robustez do outro.
E, para finalizar, este É um exercício de futurologia e assim sendo, pode dar errado 😉
Acho que vale a pena dar uma olhada no TIOBE Programming Community Index.
O TIOBE é um indexador que oferece uma indicação da popularidade de uma linguagem de programação. A classificação é baseada no número de desenvolvedores, cursos e empresas envolvidas com a linguagem. Resultados do Google, MSN e Yahoo! tambem são usados para calcular a classificação.
Vale lembrar que o TIOBE não indica qual é a melhor linguagem de programação nem qual linguagem tem mais linhas de códigos escritas.
A intenção é usar o indexador para verificar se as linguagens que você conhece ou pretende estudar/usar estão sendo atualmente usadas e se seu uso vem aumentando ou diminuindo ao longo do tempo.
O TIOBE elegeu Ruby como a linguagem de 2006, subindo da 21a. posição que ocupava em Jan-2006 para a 10a. em Jan-2007.
Java manteve a 1a. posicao mas com perda de 3% na popularidade.
Python manteve a 8a. colocacao e PHP foi ultrapassado por Visual Basic e agora ocupa a 5a. colocação.
Link para o TIOBE: http://www.tiobe.com/tpci.htm
Olá,
Adorei o artigo, trabalho com Web (e com todas as linguagens citadas no artigo :-] ) mas me dou o direito de discordar de uma coisa, quando você falou que o Ruby vai engolir PHP.
Acho que ao tocar nesse assunto precisamos lembrar que:
1 – PHP é a linguagem de programação mais usada na WEB (repito, NA WEB)
2 – A versão 5 veio com muitas melhoras em termos de POO.
3 – Existem SIM bons frameworks, inclusive o TRAX que é a copia declarada do Rails para ela. E o Zend MVC (o framework OFICIAL da Zend)
4 – Tem gente GRANDE investindo nela: IBM, Oracle, e recentemente a Microsoft fez uma parceiria com a Zend para portar melhor o PHP para o IIS.
Então eu acho que PHP deve crescer para esse lado enterprise também e não deve ser desconsiderada.
Quanto a Ruby e Python não tenho dúvidas que são linguagens magníficas quebrando toda aquela burocracia de Java (que também é uma linguagem MUITO bacana e poderosa, mas nos faz perder noites de sono por conta da baixa produtividade comparada às outras supra-citadas)
Um Abraço
Handerson,
Obrigado pelo elogio ao artigo.
Com relação ao Google, a própria filosofia de contratação deles implica na diversidade de tecnologias, mas se você olhar bem, a preferência por Python é grande. No Orkut, todo o mecanismo de help é feito em Python, e em outras áreas também, mas o mais importante está no link abaixo:
http://web.archive.org/web/19990204033714/google.stanford.edu/about.html
Esta página remonta a 1999 quando eles ainda diziam publicamente quais tecnologias usavam.
A questão geral com relação a Python é que as pessoas que usam não necessariamente saem contando por aí pois este é um dos diferenciais tecnológicos deles (pela produtividade da linguagem).
Abs,
EA
Bem bacana o artigo Érico.
Gostaria de fazer você saber que comprei um livro de Python só por causa daquele teu artigo (risos). Reconheço o poder do Java, mas ainda não dispenso o poder de codificação de linguagens de scripting como o PHP. Vi que a Python era bem flexivel nesse sentido e me rendi às listas e tuplas dela. No embalo ainda comprei um livro de Ruby também.
Avaliação: o Ruby on Rails realmente é uma puta ferramenta de desenvolvimento no que diz respeito à produtividade. Todavia, o nível de abstração requerido para o desenvolvimento de uma aplicação em Ruby ainda está bem acima, pelo menos pelo que li e fiz, do que o desenvolvimento de algo em Python, muito mais simples, flexível e estupidamente bem organizada (não posso deixar de alardear como fiquei feliz em ver uma linguagem que se guia pela identação dos blocos! genial!).
Então, creio que a Ruby vai realmente canibalizar o PHP (que está carente de frameworks tão poderosos como o Rails mas ainda sim sobrevive pela sua falicidade e flexibilidade, além do seu império construido após anos de desenvolvimento) daqui a alguns anos se não sairem boas frameworks pra ela. Mas ainda acho que vai ficar nesse time open source: Ruby com o Rails, PHP e suas bilhões de framworks (não vi nenhuma MVC realmente bacana, instintiva e flevivel de mexer) e o Python com a Django. A Microsoft manda bem em linguagens de desenvolvimento e a .NET é surpreendente em alguns fatos. Mas quem gosta de programar e fazer coisas especificas não vai querer ficar preso a lentidão do IIS e outras sutilezas que o tio Bill sempre coloca pra calotar a gente.
Vida longa ao mundo open-source e à escovação de bits! (risos)
Abração!
O carinho que a comunidade java tem por Ruby são as funcionalidades que ela incorpora que resolvem as coisas mais chatas de configurar num projeto web em java.
Erico, gosto muito dos seus artigos, mas nao entendo (e pode ser ignorancia da minha parte) quando voce diz que grande parte do universo Google se baseia no Python.
Alguns produtos do Google, como Gmail e Google Maps, tem uma forte dependencia da Linguagem Java neste momento do tempo. Estes dois produtos foram criados usando o GWT Google Web Toolkit (http://code.google.com/webtoolkit/) que permite gerar codigos Javascript/Ajax a partir de Java. O Orkut* eh baseado em .Net e a engine de busca nao eh necessariamente escrito em Python.
Dado o tamanho do universo Google e a diversidade de tecnologias usadas ali eu nao tenho certeza se Python realmente tem uma posicao de destaque entre as linguagens usadas pelo Google.
Abracos cordiais.
PS: *Na minha opiniao o Orkut nao eh levado a serio pelo Google e citei apenas como exemplo da infidelidade tecnologica do Google. 😉
PS2: Me desculpe pela total falta de acentos.
Érico,
Parabéns pelo artigo. Trabalho com Java há mais de dez anos e no ano passado comecei a estudar e utilizar Ruby on Rails. O framework é muito interessante e extremamente produtivo. Além disso, Ruby é uma linguagem fantástica.
Acredito que essa é uma linguagem que se disseminará rapidamente aqui no Brasil nos próximos anos, inclusive comentei sobre isso em http://blog.improveit.com.br/articles/2007/01/13/que-tipo-profissional-quando-crescer .
Falando especificamente sobre o Rails, é interessante notar que o Brasil já é o quinto país em número de desenvolvedores Rails, perdendo apenas para EUA, Reuino Unido, Canada e Alemanha. Mais sobre isso em http://blog.improveit.com.br/articles/2007/01/19/brasil-quinto-lugar-desenvolvedores-rails .
Gosto muito de Java e dediquei a maior parte da minha vida profissional a essa tecnologia, mas devo admitir que, ao menos no desenvolvimento para web, é difícil não migrar para o Rails e deixar de aproveitar a elegância e expressividade do Ruby.
Abraços,
Vinícius Manhães Teles
Eu ainda não consegui identificar a razão do carinho especial que a comunidade Java em geral, e a Sun em particular, tem por Ruby. Até pouco tempo atrás Jython era *a linguagem de scripting* da plataforma Java. Por razões políticas resolveram criar Groovy e descartar o Jython. Eu acho que Ruby vai entrar em conflito com Groovy mais cedo ou mais tarde, e as duas podem parar de rimar. Só espero que a Microsoft também não vá por esse caminho. Como todo tecno-geek eu adoro inovação e novidades, mas como profissional da área da informática eu sei que o __Domínio__ de uma ferramenta (principalmente uma linguagem de programação) leva anos. Alguma hora temos que nos concentrar menos em inventar novas tintas e nos concentrar mais em pintar belos quadros. Parabéns pelo artigo Érico.
Olá Érico,
Eu creio que todo este bafafá vai dar em algo como ok..temos uma linguagem em mãos e vamos detonar..será? o PHP está forte na web e a MS não quer deixar seu ASP .net para trás…
Eu sou do tipo que só acretida vendo.
Algo parecido aconteceu com o Cold Fusion e não vejo (desculpem-me os entusiastas) esta linguagem, que é poderosíssima, rodando em muitos sites, comparado ao PHP (também não sou php maníaco, para deixar bem claro).
De tudo isso, gosto mais de saber que você torce para o nosso Juventão da Rua Javari 🙂 Dá-lhe muleque travesso!