[Emerson Macedo]

Cansado das briguinhas recentes em listas de discuss�o, blogs e foruns sobre Ruby x Python, resolvi escrever sobre o assunto de forma totalmente imparcial. Serei imparcial, n�o por causa do blog, mas porque com esse tipo de assunto eu sempre geralmente sou imparcial, pois pela diversidade de empresas que trabalhei durante os meus mais de 12 anos de carreira, acabei sempre trabalhando com as 2 linguagens que eram o motivo da briguinha, em cada �poca distinta.

No in�cio

Em meados de 1997/1998, pouco antes da bolha da internet, quando eu comecei a trabalhar profissionalmente, eu trabalhava com eletr�nica e inform�tica em uma empresa de automa��o de ponto e acesso. Tive a oportunidade de usar Delphi para desenvolver um prot�tipo de sistema integrado ao hardware de ponto e acesso dessa empresa, pois eles usavam um programas DOS para extrair dados e jogar num arquivo texto, e o outro programa DOS fazia a leitura desse arquivo para gerar o resuldado de ponto e o acesso. Foi uma experi�ncia �tima, pois meu prot�tipo acessava diretamente o equipamento pela porta serial e j� mostrava as informa��es em tempo real. Essa id�ia foi pouco tempo depois usada pela f�brica para novas vers�es do software.

Nessa �poca, a programa��o desktop ainda reinava e as op��es mais comuns eram Delphi e Visual Basic, ent�o sempre algum colega ou outro puxava a sardinha pro lado do Delphi ou do VB. Nessa �poca, confesso que eu era meio bobo no assunto e eu acabava entrando na onda tamb�m, principalmente falando mau do coitado do VB. Tempos depois acabei trabalhando com VB em outros lugares e pude perceber que existia aplica��o para ele dependendo do caso. Confesso que sempre gostei mais do Delphi, mas nesse momento eu deixava de ser um apaixonado e passava a fazer a escolha de forma mais racional.

Surge o desenvolvimento pra Web

Quando come�ei a trabalhar com web em meados de 2000, trabalhei com PERL, depois ASP e ColdFusion. Nesse tempo, surgiu a vers�o Beta do DotNET em 2001. Foi quando comecei a desenvolver aplica��es desktop em WindowsForms e alguma coisa web, com o objetivo de aprender.

Passado pouco tempo e fui trabalhar numa empresa onde usavam tudo da Microsoft. Java nem pensar nessa empresa. Todos falavam mau da Sun e do Java. Nessa �poca eu j� estava bem escaldado com isso e n�o ia cair nessa novamente, perdendo meu tempo discutindo sobre quem era melhor, Java ou DotNET.

Passado mais um tempo, fui para uma outra empresa onde tinha projetos em DotNET, mas tamb�m tinha projetos Java. Como eu j� estava estudando Java fazia um tempo, era uma �tima oportunidade para por em pr�tica em algum projeto. Assim que surgiu uma vaga, me ofereci para entrar num projeto de um grande ecommerce brasileiro (que por algumas quest�es n�o posso citar o nome). Esse projeto foi �timo para eu por em pr�tica meus conhecimentos de Java. Nesse momento eu percebi que o pessoal de Java tamb�m gostava de falar mau do pessoal de DotNET. Na minha mente estava bem claro que isso era pura perda de tempo, pois claramente nos projetos que eu havia trabalhado eu pude perceber o valor de cada uma dessas tecnologias em cada contexto.

Passou o tempo e acabei n�o trabalhando mais com DotNET. As empresas seguintes foram todas com Java, exceto aqui na globo.com, onde voltarei a falar mais pra frente.

Muitos FUDs

Uma coisa que sempre percebi nessas brigas � que raramente usava-se argumentos l�gicos e bem fundamentados. Geralmente as discuss�es eram baseadas em achismos e usavam algum argumento falacioso ou duvidoso/pouco claro.

Quando trabalhei para algumas empresas de Telecomunica��es, Bancos e Seguradoras aqui no Rio de Janeiro, quase sempre havia um bom legado em COBOL e seus velhinhos de plant�o dando manuten��o nesses sistemas. Volta e meia eu ouvia algo do tipo: “Esse neg�cio de Java � apertar bot�ozinho e ta tudo pronto. Homem que � homem programa em COBOL”. Isso n�o fazia o menor sentido e por mais que eu tentasse explicar pros caras que n�o era bem assim, n�o adiantava, j� existia uma opini�o sem fundamentos formada na cabe�a deles.

Numa dessas �ltimas empresas que trabalhei (para um dos maiores Bancos do nosso pa�s), eu era Arquiteto junto com mais 14 desenvolvedores em um projeto Java que precisava se comunicar com programas COBOL/CICS. Sabe o que os COBOLEIROS diziam? “S� usem java pra pegar o que for processado aqui no COBOL porque aqui � que aguenta o tranco. Esse neg�cio de Java s� serve para a parte levinha“. Apesar de conhecer sobre todo o poder de processamento dos Mainframes, eu sabia que aquilo era apenas uma provoca��o, pois eu j� havia trabalhado em sistemas web feitos com Java com volumes bem maiores que os desse sistema e tudo correu muito bem. Sendo assim, nem entrei em discuss�o sobre isso, pois eles j� tinham se fechado para o assunto.

Nossos dias atuais

Hoje em dia est� muito na moda o uso de linguagens din�micas como Ruby e Python para desenvolvimento de software, muitos deles aplica��es web. Existem diversos casos de sucesso usando essas tecnologias, e mais uma vez surgem as brigas pra saber qual � a melhor: Ruby ou Python.

N�o espere aqui uma opini�o minha sobre o que � melhor entre as 2, pois isso n�o vai acontecer. N�o porque eu n�o tenha prefer�ncias, mas simplesmente porque melhor ou pior sempre depender� do contexto e n�o somente da tecnologia.

Python � uma linguagem muito usada no mundo opensource, tendo muitos aplicativos console e desktop desenvolvidos para linux. A primeira vers�o do Youtube foi escrita em Python (n�o sei se ainda �). O Google AppEngine apesar de suportar Java, foi construido para Python. Existem diversas iniciativas que usam Python e s�o bem sucedidas.

Ruby apesar de ser uma linguagem bem antiga (1993), s� explodiu mesmo com a chegada do Rails (2004/2005). Antes disso ningu�m ouvia falar de Ruby. Mesmo assim, Rails trouxe uma ascens�o mete�rica para o Ruby, surgindo um ecosistema incr�vel, com uma s�rie de produtos bem sucedidos e documenta��es fantasticas, screencasts, entre outros. Destacou-se muito com as ferramentas de testes automatizados que tanto precisamos hoje em dia para desenvolvermos software com qualidade.

No time onde eu trabalho na globo.com, desenvolvemos projetos em Java, em Python/Django e Ruby on Rails (projeto atual). Cada uma das escolhas teve raz�es l�gicas e seus benef�cios (que se comprovaram). Essa versatilidade faz com que esse time possa trabalhar em praticamente qualquer projeto da empresa, j� que tem conhecimento nas principais linguagens que a empresa trabalha. Isso � muito mais ben�fico do que ficar preso a uma tecnologia, defendendo-a com unhas e dentes.

O Mito do n�o escala

Com o advento dessas linguagens din�micas, deu bem pra perceber como a maioria dos profissionais n�o entendia/n�o entende quase nada sobre escalabilidade de sistemas web. Assim como o COBOLEIRO falava que o Java n�o aguentava o tranco, come�aram a falar que linguagens din�micas n�o escalavam, principalmente o famoso “Rails n�o escala”.

Certa vez eu l� um post de 2004 (antes do Rails) que j� falava sobre esse mito de n�o escala. Vale a pena conferir aqui. E tem tamb�m um screencast mais recente(baixe o v�deo e assista) do Gregg Pollack que nos primeiros minutos mostra na maioria das vezes o que deixa um site lento. Dica: tem pouco a ver com a tecnologia usada.

Portanto, n�o caia nessa. Pesquise e aprenda como escalar sua aplica��o, independente de voc� estar usando Python/Django Ruby/Rails, Java, DotNET ou qualquer outra tenologia do seu projeto.

Conclus�o

Mesmo com essas 2 tecnologias (Ruby e Python) fazendo seu sucesso nos dias de hoje e tendo seu contexto para serem aplicadas, o pessoal ainda continua brigando pra defender a sua tecnologia preferida. Parece que cria-se uma paix�o cega pela linguagem, como se fosse uma esp�cie de religi�o, saindo do racional e passando a ser totalmente irracional.

Dessa forma, meu conselho para todos os profissionais � que n�o entrem nessa de ficar defendendo sua tecnologia preferida e atirando pedra na tecnologia concorrente. Aprenda ambas e saiba onde e quando usar cada uma delas.