Joel: Ruby Performance Revisited

Em resposta a alguns defensores do Rails, ele enfatiza que Ruby é 10x mais lento que outras langs, e que isso tem que melhorar:

Alguém discorda dele ou já “bateu de frente” com esse detalhezinho da linguagem? :smiley:

Aqui o cara fala sobre um “erro” no benckmark anterior:
http://www.pankaj-k.net/archives/2005/11/revised_ruby_or.html

E aqui, é o projeto da “fastest Virtual Machine for Ruby in the world”:
http://www.atdot.net/yarv/#i-1

Ruby é e sempre foi muito lento principalmente porque nunca houve atenção/vontade/gente capaz/necessidade para implementar VMs mais eficientes. O ponto é que agora existe uma atenção suficientemente grande por parte da comunidade de desenvolvedores para tentar reverter isso. Mas, considerando o salto de desempenho que Java conseguiu desde quando começou a se tornar mainstream até os dias de hoje, é bem possível que em alguns anos tenhamos VMs Ruby bem decentes (e com um mecanismo de threads que preste, diferente daquelas green threads bem fraquinhas).

De quebra, o pessoal do JRuby também ta tocando o barco, agora dentro da Sun. Quem sabe não agiliza um pouco?

Ninguem jamais vai ter problemas com a velocidade de uma linguagem.

Talvez alguns problemas com o interpretador ou com a maquina virtual. Talvez. :wink:

Bem, ele falou algo certo, nunca que um interpretador para uma linguagem com duck typing poderá ser muito eficiente, já que o tipo do objeto tem que ser descoberto para saber para onde será enviada a mensagem e… er, será?

Mas o que eu achei engraçada foi a conclusão:

Bem, eu acho que isso é óbvio para qualquer um com mais de dois neurônios. Nenhuma ferramenta é apropriada para todas as situações e, em boa parte dos casos, apenas uma ferramenta pode não ser suficiente e/ou eficiente. Prêmio Mr. Obvious pro Joel.

O Joel não conhece o StrongTalk. Que tem um mecanismo de devirtualização extremamente avançado, incluindo otimizações especilativas e técnicas muito avançadas.

Hahahaha. Sabe o que eu acho engraçado? É o herói de alguns sendo queimado por falar o que pensa pelos seus próprios fãs, o que é uma ironia tremenda. Nesses tempos de blogs a fama vai e vem rapidamente, o bullying cibernético não perdoa nem pessoas com o curriculum dele.

Hahahaha. Sabe o que eu acho engraçado? É o herói de alguns sendo queimado por falar o que pensa pelos seus próprios fãs, o que é uma ironia tremenda. Nesses tempos de blogs a fama vai e vem rapidamente, o bullying cibernético não perdoa nem pessoas com o curriculum dele.
[/quote]

E?

http://blogs.sun.com/jag/entry/the_black_hole_theory_of#comments

Deus do céu, estou rolando de rir!! Hahahahahahaha

Sem contar que a Sun e a MS já fizeram o “All your base are belong to us” com Ruby e Python. Putz. Hahahaha O sonho acabou.

http://blogs.sun.com/jag/entry/the_black_hole_theory_of#comments

Deus do céu, estou rolando de rir!! Hahahahahahaha

Sem contar que a Sun e a MS já fizeram o “All your base are belong to us” com Ruby e Python. Putz. Hahahaha O sonho acabou.[/quote]

E?

Thiago, e isso não é troll bait, eu realmente não entendi do que você disse. O que o comentário daquele no blog do Gosling tem a ver com qualquer coisa?

No primeiro post eu apenas citei a situação engraçada a qual o post original se refere, a do “Joel sendo queimado”. No segundo post eu apenas zoei porque acabara de ver aquela entrada no blog do Gosling, e se encaixou perfeitamente no perfil de alguns usuários aqui do GUJ.

Pessoalmente, nunca vi nenhum usuário aqui do GUJ chamando os demais de idiotas. Dá pra citar os nomes (e os posts) em vez de se esconder no “alguns”?

Pense bem: se Rails fosse inútil ninguém estaria levando a discussão até o ponto onde a performance importa. Então, concordamos, pelo menos, que não é totalmente inútil?

a performance de uma linguagem é, além de outras coisas, diretamente ligada a sua distancia em relacao à linguagem do computador quando em seu formato de execução. e tambem à quantidade de passos necessários a se tornar uma linguagem de computador.

Essas linguagens estao emulando algo que computadores não fazem naturalmente e a culpa da lentidão ou está nos artificios usados para que isso funciona ou na arquitetura dos computadores.

De quem é a culpa? Eu digo que é a arquitetura que não mudou nos ultimos 20 anos e não vai mudar tão cedo.

Exemplos?

http://www.guj.com.br/posts/list/40555.java

Usuários foram atacados por expressar as suas opiniões.

http://www.guj.com.br/posts/list/40368.java

O Sr. louds atacou-me verbalmente baseado em absolutamente nada. O assunto tratado foi um simples comentário de uma feature que será útil em aplicativos desktop (DataSets desconectados, para carregar registros, atualizá-los em memória e mandar atualizar no DB; componentes com data-binding).

Padrões esses de comportamento desde o momento que contradisse, em nome da razão e de vários usuários daqui que preferem não expressar a voz contra a panela, “a idéia única”, ou seja, a idéia do “Ruby is cool” (inclusive tentaram vender scriptlets como “taglibs para Ruby”).

E tenho levantado diversas idéias que parecem contrariar “os reis da cocada preta” como:

  • Crítica ao AOP: Isso está longe de ser uma unânimidade, mas na cabeça de alguns (não necessariamente deste fórum) parece haver lógica em um “novo” paradigma "orientado a " salvar a pátria de tempos em tempos. Apenas isso basta;

  • Considerações sobre DSL: as pessoas estão cometendo os mesmo erros que cometeram com XML;

  • Comentários diversos sobre o Spring e DI: Você já reparou quantos artigos criticando o Spring existem? São poucos, procure no Google. No entanto existem muitas pessoas como eu e muitas outras daqui se perguntando “mas que diabos esse pessoal tem na cabeça de escrever toneladas de XML para fazer qualquer coisinha?”.

Só para completar, uma comentário não relacionado ao quote, eu noto um padrão dos entusiastas Ruby, eles parecem provir do Spring! Você percebe que o Ruby é lindo para quem escreve toneladas de XML? Para quem usa Spring é mais fácil perguntar o que não seria lindo em comparação, talvez só o EJB 2.x mesmo.

Totalmente inútil nenhuma linguagem comercial é. Se ela existe e possui usuários para alguma coisa serve. Mas o intuito da segunda mensagem foi apenas ilustrar o sentimento de alguns membros do fórum, que “Ruby dominará” e que todos que não entram no hype “são burros ou trolls”.

Na minha opinião o principal motivador do hype é a total falta de objetividade e a vergonha de se reconhecer a própria ignorância. Estou longe de ser especialista em linguagens de programação, mas sei que existem toneladas delas aí fora, o suficiente para fazer qualquer afirmação a respeito se “X ou Y é melhor” ser ridícula.

Se é impossível medir diretamente qual é a melhor, como umas se tornam populares e outras não?

thiagosc,

voce realmente acha que alguem vai ler esse monologo aí?

De uma forma mais geral, isso eh verdade - mas implementacoes como Strongtalk, Self e alguns compiladores Common Lisp invalidam isso ao usar otimizacoes (e otimizadores) que tornam alguns casos mais performaticos do que o mesmo em C++ ou ate mesmo C.

Estranho ouvir isso de um EJB evangelist… :stuck_out_tongue:

Aliás, critique o conceito de DI por causa do XML do Spring. Da pra fazer DI muito bem sem XML :slight_smile:

[quote=Thiagosc]http://www.guj.com.br/posts/list/40368.java

O Sr. louds atacou-me verbalmente baseado em absolutamente nada. O assunto tratado foi um simples comentário de uma feature que será útil em aplicativos desktop (DataSets desconectados, para carregar registros, atualizá-los em memória e mandar atualizar no DB; componentes com data-binding).

Padrões esses de comportamento desde o momento que contradisse, em nome da razão e de vários usuários daqui que preferem não expressar a voz contra a panela, “a idéia única”, ou seja, a idéia do “Ruby is cool” (inclusive tentaram vender scriptlets como “taglibs para Ruby”).[/quote]

No dia que eu li também tive essa impressão…é que o GUJ te ama, Thiago! Por isso a cada “bom dia”, você ganha uma estrelinha :smiley: :smiley: :smiley:

Mas também, gente vocês não têm a impressão que o Thiago tem um talento engraçado de transformar qualquer tópico do GUJ em um tópico sobre Ruby? :smiley:

Agora falando sério, eu tenho essa mesma visão, pelo menos em parte…

[quote=Thiagosc]Se é impossível medir diretamente qual é a melhor, como umas se tornam populares e outras não?
[/quote]

Ótima pergunta! O que os outros acham?

Acho mais facil o Ruby virar umas das linguagens suportadas pela JVM, assim como o Java, Groovy(Java 6), VB(java 7), quem sabe não entra o Ruby…

VELO