Algumas perguntas sobre Ruby

Caros,

Estou fazendo um comparativo entre linguagens programação e a procura das

seguintes respostas para Ruby(Framework Ruby on Rails):

Curva de Aprendizado:

Custo do Profissional:

Produtividade:

Vantágens:

Desvantágens:

Caso alguém tenha respostas para essas perguntas e possa compartilhar, agradeço.
obs.: Quem tiver interesse de responder as mesmas perguntas para PHP e Java pode
ficar a vontade, porém não queria que isto vire uma discussão polémica.

Vou tentar te ajudar, mas “isso vai dar merda, capitão”…

Curva de Aprendizado:
PHP: Baixa
Java: Media
Ruby: Alta
–> Levando-se em considerações a certa utilização da linguagem e dios recursos

Custo do Profissional
PHP: Baixo e Facil de se encontrar
Java: de Medio a Alto e Facil de se Encontrar
Ruby: Alto e Dificil de se achar, levando-se em considerações qe muitos são programadores experientes em outras linguagens

Produtividade
PHP: Alta
Java: Alta
Ruby: Alta
–> Produtividade depende mais de frameworks, processos e pessoas…

Vantagens
PHP: Rapido desenvolvimento. Muitos Profissionais
Java: Diversidade de frameworks, linguagem amplamente utilizada pela comunidade
Ruby: Hype forte, não conh~ço a ponto de opinar outras vantagens

Desvantagens
PHP: Faltou um hype maior… pq a linguagem é boa…
Java: Está passando por uma “depressão” com o ruby mas ainda é a maior candidata a "linguagem de sempre"
Ruby: Pouca mão de obra, poucos projetos, poucas empresas grandes auxiliando.

Valeu pela resposta.

“Vou tentar te ajudar, mas “isso vai dar merda, capitão”…” rsrsrs

[quote=rodrigoallemand]Vou tentar te ajudar, mas “isso vai dar merda, capitão”…

Curva de Aprendizado:
PHP: Baixa
Java: Media
Ruby/Rails: Alta
–> Levando-se em considerações a certa utilização da linguagem e dios recursos
[/quote]
Isto não confere, em um dia é possível uma pessoa sair desenvolvendo razoavelmente (claro não vai ser nenhum expert) utilizando Rails, em Java isto leva pelo menos um mês.
Em uma semana uma pessoa consegue se tornar aceitavelmente produtiva utilizando Rails, em Java isto leva pelo menos uns 2 meses.

Aqui varia bastante

A maior desvantagem do PHP, que também esta se tornando uma grande desvantagem do java, é a grande quantidade de profissionais mediocres fazendo porcaria por ai …

Me desculpe mas eu discordo completamente de vc… e esse foi um dos comentários mais pro-rails que eu já vi na minha vida… vc gerar um esqueleto de aplicação no Rails não quer dizer que vc sabe usar as artemanhas do Rails… e se vc considerar que nem tudo gerado é utilizado, o problema aumenta quando vc precisa entender o código gerado sem ter conhecimento…

Se for assim, em Java vc tb consegue gerar uma aplicação completa via banco pelo J2EESpider… até ai, vc falar que uma pessoa é fluente em Java em 2 dias tb fica bem impossivel… 2 meses, acho que é um numero perto da realidade…

P.S.: É por comentarios assim que eu me torno cada vez mais encucado com o uso de Ruby…

   Para esta análise as variáveis são muitas e principalmente complexas, pois envolve o quesito Humano. Acho que é prudente eu reunir alguns requisitos, como a experiencia profissional dos desenvolvedores, requisitos funcionais do sistema e o orçamento para disponível para o projeto, para que as respostas para as minhas perguntas se aproximem mais da minha realidade.

Valeu pelo interesse urubatan e rodrigoallemand.

é verdade sim, e eu não estou falando de gerar o esqueleto de uma aplicação com o comando rails.
eu ja ministrei de rails, e de java, pessoas que ja programavam em outra linguagem antes, em um dia conseguem desenvolver aplicações simples em Rails, em um dia em java as pessoas ainda estão tentando entender para que serve um servlet.

Claro que o fato de tu não precisar escolher framework (pois o curso era de rails) facilita muito isto, mas java é muito complicado, tudo tem 5000 formas de fazer.
Eu programo em java, trabalho com java desde 2002, gosto muito de java, mas dizer que a curva de aprendizado não é muito grande é no minimo falta de experiência …

PS.: em 2 meses a pessoa vai estar querendo descobrir qual framework utilizar para desenvolvimento web em java, e vão estar dizendo para ela testar todos …

Posso estar errado mas se você precisar usar algum framework web em Ruby, dificilmente você vai fugir de RoR ou Merb. Mas sim, consegui fazer uma aplicação simples em Ruby em pouco tempo mas acho que se eu saísse do zero em programação para web, levaria quase o mesmo tempo, pois teria que aprender o ciclo de vida de uma requisição web, que acho que é o mais trabalhoso. De resto é linguagem.

Até!

Ai sim eu concordo com vc, Rodrigo. Se vc colocar frameworks em cheque como o o Rails defendendo Ruby e o…er…hum… Struts defendendo Java, fica mais facil vc aprender Rails… mas vamos tirar os frameworks de foco… vamos comparar a curva nas linguagens…
Em Java vc pode escrever mais, mas fica mais facil de criar um primeiro código maior que um HelloWorld. E se eu não usar Rails nem MErb (hipoteticamente falando)… como criar algo pra web em Ruby?! Não é mais dificil?!?

Sem contar o vasto material de Java contra Ruby, até por tempo de maturidade da linguagem e adoção e entendimento geral da comunidade…

Bem, seria sexo dos anjos se não fosse pra ajudar ao amigo que abriu o tópico. Programo em Java e estou aprendendo os mundos de Ruby… e acho que uma pessoa sem programar linguagem nenhuma pega o Ruby/Rails/Merb mais facilmente do que uma pessoa que já conheça outra linguagem, que já esteja viciado em outra meneira de se programar…

[quote=rodrigoallemand]Ai sim eu concordo com vc, Rodrigo. Se vc colocar frameworks em cheque como o o Rails defendendo Ruby e o…er…hum… Struts defendendo Java, fica mais facil vc aprender Rails… mas vamos tirar os frameworks de foco… vamos comparar a curva nas linguagens…
Em Java vc pode escrever mais, mas fica mais facil de criar um primeiro código maior que um HelloWorld. E se eu não usar Rails nem MErb (hipoteticamente falando)… como criar algo pra web em Ruby?! Não é mais dificil?!?

Sem contar o vasto material de Java contra Ruby, até por tempo de maturidade da linguagem e adoção e entendimento geral da comunidade…

Bem, seria sexo dos anjos se não fosse pra ajudar ao amigo que abriu o tópico. Programo em Java e estou aprendendo os mundos de Ruby… e acho que uma pessoa sem programar linguagem nenhuma pega o Ruby/Rails/Merb mais facilmente do que uma pessoa que já conheça outra linguagem, que já esteja viciado em outra meneira de se programar…[/quote]
Só para justificar, eu estava ao seu post, pois você escreveu Ruby/Rails, por tanto, respostas considerando rails são perfeitamente válidas.

Olá

Concordo plenamente com o Urubatan. Ruby não é mais difícil de aprender do que Java e colocar Ruby/Rails em comparação com Java não tem sentido porque Ruby é a linguagem e Rails um framework web, que apesar de mais fácil de aprender do que qualquer framework web para Java, é algo a mais do que a linguagem.

Para mim a relação seria na questão de curva de aprendizado:
PHP: altíssima (acho a linguagem muito feia, tive a maior dificuldade para aprender quando tentei e desisti)
Java básico: média,
Java com o mínimo necessário para programar direito inclusive com testes unitários: alta
Ruby básico: baixa
Ruby com o mínimo necessário para programar direito inclusive com testes unitários: entre média e alta

[]s
Luca

[quote=Luca]Olá

Concordo plenamente com o Urubatan. Ruby não é mais difícil de aprender do que Java e colocar Ruby/Rails em comparação com Java não tem sentido porque Ruby é a linguagem e Rails um framework web, que apesar de mais fácil de aprender do que qualquer framework web para Java, é algo a mais do que a linguagem.

Para mim a relação seria na questão de curva de aprendizado:
PHP: altíssima (acho a linguagem muito feia, tive a maior dificuldade para aprender quando tentei e desisti)
Java básico: média,
Java com o mínimo necessário para programar direito inclusive com testes unitários: alta
Ruby básico: baixa
Ruby com o mínimo necessário para programar direito inclusive com testes unitários: entre média e alta

[]s
Luca[/quote]
concordo 99% :smiley:
Também acho a sintaxe do PHP muito feia, mas como foi a primeira linguagem para web que aprendi, não achei tão complicado na epoca, mas os códigos que eu escrevia eram um lixo :smiley:

[quote=urubatan]
Também acho a sintaxe do PHP muito feia, mas como foi a primeira linguagem para web que aprendi, não achei tão complicado na epoca, mas os códigos que eu escrevia eram um lixo :D[/quote]
Idem!

Vou corrigir o Ruby/Rails no meu post acima…

PHP:

Curva de Aprendizado: Muito Baixa, a sintaxe é muito próxima de perl e c/c++. Muitos tutoriais, ótima documentação e muito código-fonte pra ler em sites como sourceforge.

Custo do Profissional: Baixo/Médio, tem muita gente que sabe, mas quem é bom sempre se destaca.

Produtividade: Alta, principalmente depois que surgiram frameworks inspirados no Rails, como o CodeIgniter.

Vantagens: Documentação, grande comunidade, muito código aberto disponível para aprendizagem, muitas ferramentas prontas pra fazer testes unitários, gerar pdfs, etc.

Desvantagens: Muito fácil qualquer zé mané desenvolver qualquer coisa, aí acabam aparecendo problemas de segurança, escalabilidade, POG’s, etc… Mas o problema não é com a linguagem.

Java:

Curva de Aprendizado: Alta. Além da linguagem de programação, o iniciante tem que aprender, Orientação a Objetos, frameworks.

Custo do Profissional: Médio/Alto. Depende do lugar e depende do profissional. Mas geralmente se paga bem por um programador java.

Produtividade: Média/Baixa. Apesar de ter uma senhora API padrão e muitas ferramentas e frameworks disponíveis, passa longe de PHP e Ruby quando o negócio é produtividade. Basta comparar:

PHP <?php echo "Olá GUJ!"; ?>

Java

public class OlaMundo {
    public static void main(String args[]) {
       System.out.println("Olá, Mundo!");
    }
 }

Ruby puts ‘Hello world’

Vantagens: Portabilidade, comunidade grande, documentação extensa, muitas ferramentas disponíveis de código aberto .

Desvantagens: Verbosidade excessiva.

Ruby: Não conheço e não vou arriscar um comentário mais completo. Mas é conhecida pela produtividade, recursos avançados como closures e metaprogramação, e o framework Rails.

Cara, não perca a credibilidade ao comparar coisas simples como um Hello World. Procure por uma lista ligada no ruby para ver se tem. Ah, não tem implementado? Então posso comparar as linguagens por isso também?

Até!

Cara, não perca a credibilidade ao comparar coisas simples como um Hello World. Procure por uma lista ligada no ruby para ver se tem. Ah, não tem implementado? Então posso comparar as linguagens por isso também?

Até![/quote]

Os HelloWorlds são um ótimo exemplo, mas as pessoas usam eles de forma incorreta. Sabe o que mata em um helloworld em Java?

public class Teste { public static void main( String[] args ) { System.out.println( "Olá Mundo!" ); } }

Pense agora você, como programador Java que já sabe o que é isso, quantos conceitos diferentes estão inclusos nesse simples exemplo, apenas porque alguém queria que tudo em Java começasse dentro de uma classe :slight_smile:

Esse simples helloworld é de fazer qualquer qualquer iniciante com o mínimo de curiosidade surtar e também de mostrar qual é a idéia que a equipe que desenvolveu o Java tinha em mente. Um HelloWorld pode falar muita coisa, por mais simples que ele seja como exemplo de uso de uma linguagem de programação.

[quote=Maurício Linhares]
Esse simples helloworld é de fazer qualquer qualquer iniciante com o mínimo de curiosidade surtar e também de mostrar qual é a idéia que a equipe que desenvolveu o Java tinha em mente. Um HelloWorld pode falar muita coisa, por mais simples que ele seja como exemplo de uso de uma linguagem de programação.[/quote]

Eu discordo.

HelloWorld em Java comparável ao PHP:

<%="Hello World"%>

Você pode construir sistemas inteiros apenas usando scriplets e tags padrão.

Comparar o código necessário para imprimir algo na tela para mim é uma besteira. Existem linguagens extremamente produtivas que requerem um trabalho grande para fazer isso simplesmente porque não é seu foco. Java (como Ruby) tem mil problemas mas querer usar um exemplo deste para mostrar aluns deles é apelar. Alguém aí construa, por favor, um sistema -não um script- em Rails ou o que for em Ruby que não defina nenhuma definição de objeto e apenas use o top-level.

É óbvio que qualquer comparação entre linguagens que se resume a um post de fórum vai ficar incompleta.

O que eu quis mostrar com os hello world’s é como você escreve muito mais código em Java, quando comparado a PHP ou Ruby ou [coloque sua linguagem de script dinâmicamente tipada aqui]. Até onde a verbosidade da linguagem está relacionada a sua produtividade é relativo, mas dá pra ter uma noção.
E na maior parte dos casos isso é verdade. Como você pega um valor numa requisição HTTP em Java? E em PHP?
Só pra dar um exemplo tosco.
Mas pensem no “geralmente” que eu quis ilustrar com o exemplo, e não no exemplo em si.
Existe alguém produtivo desenvolvento em Java pra web que não precisa de no mínimo 2 frameworks? Em PHP pode existir, dependendo do porte da aplicação.
Java tem suas vantagens em relação ao PHP e Ruby, mas dentro delas não está a produtividade.

Quem precisa de lista linkada em ruby? Eu não sei ruby, mas acredito que como eu nunca precisei de uma em PHP, os rubystas podem sobreviver sem ela. Em PHP eu tenho arrays que funcionam como mapas e no mínimo umas 3 maneiras de iterar sobre ele.

[quote=pcalcado]
Você pode construir sistemas inteiros apenas usando scriplets e tags padrão.[/quote]

Claro, só aposto que você nunca fez um. Tem regra de negócio nesses sistemas não?

Você não mostrou verbosidade, mostrou um Hello World.

<%=${requestScope.} %>

Sim. Mas essa não é a discussão. Rails oferece vantagens no desenvolvimento que Java não possui mas a crítica é quanto ao infeliz exemplo de HelloWorlds. Se você quer comparar HelloWorld de PHP com HelloWorld de Java tem que usar JSP.

Você não precisa de listas ligadas em Java. Basta usar qualquer outra implementação, ou mesmo um Array. E nem ha porque não ter listas ligadas em Ruby. Não entendi o que você quer dizer nem o que isso tem a ver com os Hello Worlds.

[quote=dlt]

Perdeu a aposta.

E acho que você está fazendo aluma confusão aí. Não sei o que você quer dizer por regra de engóciomas JSP é Turing Complete então eu posso implementar quaquer regra de negócio em JSP diretamente na página, assim como em PHP ou ERB/Rails.

Meu ponto é simples: Se você quer comparar linguagens use mais que Hello Worlds. Eles não mostram nada.

Falar que um System.out.println, não dá uma idéia da verbosidade do java quando comparado a um echo ou um puts é sacanagem, né?

A discussão é sim sobre a diferença de produtividade entre as linguagens em questão, entre outras coisas. Até onde um hello world diz sobre uma linguagem e se se pode comparar duas linguagens usando hello world como critério já são outros quinhentos, inclusive o caso das listas ligadas foi citado pra desfazer qualquer suspeita de que estou tentando comparar duas linguagens usando apenas um critério. Se se por acaso eu deixei essa infeliz impressão, que fique claro que eu sou o primeiro a refutar essa idéia.

Eu limitei o exemplo dos hello world’s somente a verbosidade das linguagens, e que até onde a verbosidade impacta na produtividade é bastante relativo.

Concordo, ainda assim você há de concordar comigo quando ao quesito verbosidade.

Espero que o subtópico dos hello worlds tenha parado por aqui e que possamos voltar ao assunto original. Tenho certeza que temos muito mais coisas importantes pra falar.