Porque Ruby on Rails não vai entrar pro Mainstream

http://beust.com/weblog/archives/000382.html

Alguns pontos interessantes:

[quote]Have you ever come across Smalltalk or Lisp programmers? You know, these people who, no matter what you tell them, will always respond that “Smalltalk did that twenty years ago” or that “Nothing has been invented since Lisp”.
(…)
I believe that in ten years from now, people will look back at Ruby on Rails and will have the same reaction. I’m not sure what Web frameworks we will have by then, but I’m quite convinced that a lot of the current Ruby on Rails fanatics will have the same kind of attitude: “That’s nice, but Ruby on Rails already did this ten years ago, and better”.[/quote]

Se Ruby em si não for pro mainstream (o que é realmente possível, mas é uma pena…) pelo menos a comunidade vai ter a chance de aplicar o que se aprendeu por lá em outros projetos, como o Grails.

O pior de Ruby pra mim hoje é que não tem como fazer rodar nos Tomcats da vida que eu tenho aqui e convencer o pessoal a sair de Java pra Ruby agora é simplesmente impossível… :frowning:

Essa é a intenção do JRuby :smiley:

[quote=Maurício Linhares]Se Ruby em si não for pro mainstream (o que é realmente possível, mas é uma pena…) pelo menos a comunidade vai ter a chance de aplicar o que se aprendeu por lá em outros projetos, como o Grails.

O pior de Ruby pra mim hoje é que não tem como fazer rodar nos Tomcats da vida que eu tenho aqui e convencer o pessoal a sair de Java pra Ruby agora é simplesmente impossível… :([/quote]

  1. Se RoR não virar mainstream, pelo menos ele já serviu para dar uma mexida na comunidade Java, que estava muito folgada e acostumada com complexidade excessiva. Portanto, concordo com o Maurício.

  2. Se você quiser, pode tentar usar o JRuby on Rails (http://headius.blogspot.com/2006/03/progress-update-march-9.html). Mas, mesmo assim, se sua equipe não for capaz de absorver Ruby (não adianta! não é todo mundo que está preparado para aprender linguagens o tempo todo), melhor nem tentar.

Tomcats da vida? Web container Java ou servidor web?

Hehehehe, aprender Ruby já é outra história completamente diferente, alguns até que ficaram maravilhados quando eu repeti aquele vídeo do blog “ao vivo” usando o RadRails, mas quando eu falei um pouco da mágica da linguagem, dos mixins e metaprogramação teve gente que torceu o nariz.

JRuby realmente já está em condições de ser usado em produção? Eu tava pensando em gastar um tempinho brincando com Grails pra ver se rola, mas se JRuby já estiver a caminho… eu nem olho pra Groovy :stuck_out_tongue:

Não sei. Quando eu vejo o número de pessoas que, até hoje, usam coisas deprecated já no JDK 1.2, fico cético com a adoção dos desenvolvedores a novidades.

Tem esse ponto, também. Assim como nem todo mundo está preparado para aprender linguagens o tempo todo, nem todo mundo está preparado para aprender metodologias o tempo todo. Quantas pessoas você já viu usando classes como se fossem structs do C?

Até onde eu vi jRuby ainda é lento demais (mesmo apra os padrões atuais onde desempenho é quase sempre um detalhe já que a JVM se encarrega de otimizações).

Linguagens que não geram bytecodes e não conseguem com isso se beneficiar de JIT e outras macumbas do HotSpot têm uso limitado. Com o invokeDynamic isso deve mudar mas por enquanto não é qualquer lugar que uma linguagem de JVM substitui Java, apesar de em muitos lugares ser perfeitamente possível e até desejável.

Por exemplo, implementar um framework como Spring ou hibernate, que praticamente vão interceptar todo fluzo de dados do sistema, ou um container é altamente problemático com essa performance. isso é especialmente ruim porque Ruby tem algumas coisas que fazem criar frameworks coisa realmente simples e eficiente.

De qualquer modo você sempre pode criar o ‘core’ da sua aplicação, a arquitetura, em java e mantêr linguagens dinâmicas (atualmente) interpretadas dentro de componentes de aplicação, como regras de negócio, scripting, shells…

Vou dar uma palestra sobre isso em Maio, aliás.

O JRuby na minha opinião ainda ta beeeem longinho de poder se usado em produção, mas não deixa se ser um projeto beem legal.

TOMARA que não.

Ah, o Adam fez um post resposta. Ah, melhor ainda, o David mandou uma resposta.

Acho que se a galera da Sun parar de pensar em colocar tratamento de XML direto na linguagem e essas coisas importantes, e fazer apenas 3 coisas:

:arrow: Suporte a REGEX direto na linguagem como Perl e Ruby. Quero poder fazer isso:


if (x =~ /^\s$/) { } // sem escapar a barra !!!!

ou s = s/\n//g; // sem escapar a barra !!!

:arrow: Métodos que retornam mais de uma variável


(int x, char c) = getWhatever();

:arrow: E um novo pacote javap.* (java pragmático), onde tenhamos coisas como:


String[] lines = File.read("sergio.txt");

int x = int("3");

Acho que daria para concorrer com o Ruby…

Esse “int(“3”)” já é possível usando static imports :stuck_out_tongue:

De acordo.

[quote=saoj] :arrow: Métodos que retornam mais de uma variável

[code]

(int x, char c) = getWhatever();

[/code][/quote]

Epa! Não deixa o Gosling ver isso :smiley:

Não é mais fácil fazer int x = 3? :mrgreen: Falando sério, o que seria isso ae, um cast de String pra número?

Concordo, mas acho meio distante e o tipo de coisa que a comunidade não precisa depender da Sun. Outro dia tava falando aqui de se fazer uma biblioteca do tipo, ia ser maneiro, pena que não tenho tempo para tomar a iniciativa…

[quote=diego_sl]O JRuby na minha opinião ainda ta beeeem longinho de poder se usado em produção, mas não deixa se ser um projeto beem legal.

TOMARA que não.

Ah, o Adam fez um post resposta.[/quote]

Sei não, como ele mesmo disse, ele “acabou de cair” em Rails, Cedric já tem uma boa estrada e sabe o que está falando. Todo mundo fala do RadRails, mas dá pra comparar ele pelo menos de LONGE com o JDT? Nem em sonho, tanto porque ele ainda está absurdamente verde como também porque a linguagem (por ser dinâmica) não ajuda nem um pouco (uma vantagem de Groovy, onde você pode dizer qual o tipo do objeto que vai estar lá).

Hosting de Ruby ainda é complicado (Java também é, mas agente ainda consegue com uma certa facilidade por aqui, além de que você não precisa pedir a niguém pra instalar um framework novo pra você).

E Ruby, pra o “average Joe” não é complicada, é assustadora, o cara bate a vista no código, não vê parenteses, ponto e vírgula, returns, vê “blocos de código”, instruções esquisitas (“col.each ? que porra é isso”). Se o cara não está de cabeça aberta, ele simplesmente desiste (e por mais estranho que pareça, eu vejo mais gente que não quer novidade do que o contrário).

Eu gostei muito, vou (tentar) usar Rails em um sistema que agente está desenvolvendo aqui, mas o que ainda me ocupa é Java e deve continuar assim por um bom tempo :smiley:

Hummm, útil, mas não é algo que vá revolucionar o mundo.

Ahhh, isso sim é algo que vale a pena :slight_smile:

No comments.

Você pode utilizar o Jakarta Commons IO readFileToString ou então readLines

Existe a Jakarta Commons que você poderia estár contribuindo…

O problema é que têm sempre aquele jeito, que é o seu jeito de fazer e pensar, que nem sempre é o jeito que agrada todo mundo.

Acho que eles deveriam obrigar todos os programdores Java a conhecer todos os commons, não vai matar niguém :smiley:

Eu queria uma biblioteca que fosse uma coisa só, que eu baixasse e tivesse tudo ali. Não quero utilidades mirabolantes como o Digester ou DBUtils ou HTTPClient, eu quero apenas algo que sirva como calda de chocolate para o bolo de cenoura, ou seja, uma “camada pragmática” para as APIs chatas do Java como a java.io.

O Commons deve ter muitas coisas legais, eu não conheço, mas não me parece que seja exatamente o que estamos procurando…

[quote=renato3110]Eu queria uma biblioteca que fosse uma coisa só, que eu baixasse e tivesse tudo ali. Não quero utilidades mirabolantes como o Digester ou DBUtils ou HTTPClient, eu quero apenas algo que sirva como calda de chocolate para o bolo de cenoura, ou seja, uma “camada pragmática” para as APIs chatas do Java como a java.io.

O Commons deve ter muitas coisas legais, eu não conheço, mas não me parece que seja exatamente o que estamos procurando…

[/quote]

http://jakarta.apache.org/commons/io/

Java é uma linguagem muito legal e eu acho que hoje o que ela precisa:

  • Continuations
  • Reflection mais bombada
  • Uma API

Nesse momento não consigo lembrar de nada mais porém tenho uma lsita um pouco maior.

Regexp como literal me parece coisa de linguagem como Perl que é focada em manipulação de texo. Eu não sinto falta de regexp literal em Ruby quando estou fazendo aplicações, só quando faço scripts.

Java tem que se fortalecer como a linguagem de backbone da JVM.