Desenvolvedores Scala, Ruby, a jugular está preparada

[quote=Rafael Nunes][quote=Juk]Seria legal você postar exemplos de empresas, até pra gente interessada em ter a oportunidade de trabalhar com Ruby poder procurar nos lugares certos.
[/quote]

Em SP que eu conheço a Abril …[/quote]
Inclusive tem membros do GUJ que trabalham lá e podem confirmar essa informação.

fred.

O ideal seria vcs so ter getters e setters para as propriedades que devem ser acessadas ou sobreescritas, não a todas as propriedades.

Eu nunca crio setters que nunca preciso, mas algumas vezes eles contem somente a definição para o novo campo.

[]'s

[quote=Felagund]fred.

O ideal seria vcs so ter getters e setters para as propriedades que devem ser acessadas ou sobreescritas, não a todas as propriedades.

Eu nunca crio setters que nunca preciso, mas algumas vezes eles contem somente a definição para o novo campo.

[]'s[/quote]

Sim foi essa a ideia que eu quis passar no ultimo post. Mostrar pro usuario apenas o necessario e nao tudo. E tambem claro, nem sempre eles tem fazer algo mais alem de definir o valor.

De uns amigos e ex-alunos que tenho na Abril, sei que a migração foi feita da galera que desenvolvia em Java, botaram todo mundo para estudar Ruby. Se bem que procurar alguém com experiência ia ser perca de tempo, talvez achassem um ou outro.

Olha, a Abril, WebCO, Locaweb, UOL e a Agência Click são exemplos que me surgiram agora.

Uma vez dessa história que falei de cara trocando jsf/struts pra rails eu sinceramente não lembro o nome, foi alguém que eu conheci uma vez num onibus que eu ví e troquei uma idéia e aí sim que ele tinha falado que tinha alguns projetos com Rails.

Tem um user aqui do fórum que trabalha com home-office, em Rails, pra Alemanha

Se alguém tiver mais outras é só ir postando também :slight_smile:

A propósito, o pessoal da Caelum tem usado em alguns projetos também?

Isso é muito bom, dá um dinamismo.

Esta conversa de que Java é pouco produtivo e temos que mudar para Ruby já está enchendo o saco.
Afinal o que “Produtivo” significa ? Sem a definição disso dizer que X é mais produtivo que Y é uma falácia à priori.

Vamos supor que “produtivo” significa :" consigo executar mais instruções com menos linhas de codigo".
Ora java tb consgue isso. Basta que vc tenha bibliotecas/api/classes que encapsulem os comandos malucos.

No MiddleHeaven - que é Java - tb faço uma selecção aleatoria como uma linha de codigo

Integer resultado = Range.over ( 1 , 6 ) .random () ;

Isso não é diferença entre as linguagens. É diferença entre as API. Acontece apenas que API de X tem funções mais “rápidas” que a de Y.
Blz, vc consegue escrever random generator em uma linha. E dai ?

Agora vamos supor que “mais produtivo” significa “consigo fazer mais com menos esforço”
Java é fortemente tipada. Só isso garante menos esforço em debuging. É clara que script não só pela tipagem forte mas pelo pouco uso de simbolos.
Sendo que não ha invocação dinamica é possivel saber e seguir o codigo de qualquer classe sem ter que saber que o método xyz é mágico e declaro dinamicamente. As coisas são o que são e não deixam de ser o que são.

Ok, você consegue colocar uma aplicação no ar com RoR em 1 dia. Em Grails tb. Mas isso são frameworks ! Não são linguagens.

Qualquer programação pode ser tão produtiva em uma linguagem quanto outra. Quando a linguagem não oferce o que queremos a API oferece. Se aPI não oferece alguma outra API de terceiro o faz, e sempre podemos implementar a nossa.

Agora, você tem um monte de coisa pronta em Java , vc vai mudar isso para outra coisa ? Isso é “produtivo” não. Vc vai criar uma aplicação nova.
Vc já conhece o framework ZZ e tem um monte de Utils da vida que vc domina e escreve aplicações em uma semana. Vai mudar para ruby ou outra coisa onde você tem que fazer tudo de novo ? Não me parece que isso é produtivo.

Cada linguagem tem o seu propósito. Scala veio com a ideia de programação funcional. Grovy com script derrotanto o ruby. Outras virão. Pode ser mais facil escrever uma classe nessas linguagens, mas é mais facil escrever um sistema inteiro ? É real a competição entre Java e essas outras linguagens para uma aplicação de proposito genérico ? Java é uma linguagem de proposito genérico ela não foi desenhada para escrever pouco ou dar comandos mirabulantes em um linha , se ela fosse assim não precisamos de linguagens de script.
Java foi criado para ser simples e seguro em comparação com C e C++ .

Finalmente, esse negocio de migrar está ultrapasado. todas essas linguagens novas correm ou irão correr na JVM. Sendo assim, existirão pontos mais faceis de criar com scala ou FX e outros com groovy. Ai faz todo o sentido pq vc tem acesso a todas as API java e java passa a ser para essas linguagens o que o C++ é hoje ( uma comunicação mais nativa com os recursos mais baixos) para impletar plugins e coisas do tipo.
Sair do ambiente da JVM é suicidio tecnico.

Quanto para mim, sem a definição de “produtivo” esta conversa é fútil e só serve para alimentar o hype das linguagens. ( ainda outro dia alguem falava do Ioke… ora… não vou perdeu o meu tempo aprendendo toda a linguagem-want-to-be que aparece… ) Essas linguagems precisam amadurecer. Depois a gente conversa de novo sobre qual realmente fez a diferença.

Acho que essa é a tendencia. Eu por exemplo sempre quis trabalhar com Ruby, estudei um pouco informalmente mas nunca tive a oportunidade de usar trabalhando. Ficaria bem feliz em usá-la (longe de querer largar o Java, mas gosto de aprender linguagens novas e me interesso muito por DSLs).

Olha, não conheço bem o Ruby, embora já tenha dado minhas estudadas. Mas ao que percebi, tem alguns que acham que DSL e coisa do Ruby ou que faz em linguagens como ele. Eu faço em Java sem problemas. Dá mais trabalho sim, mas no final, o resultado de usar é o mesmo, então, acho válido pela Orientação de Objetos.
Estou me interessando em Scala e acredito que vai se tornar muito mais popular que Ruby atualmente.

Não tenho nada contra estudar novas linguagens e aplicá-las onde faz sentido. Mas a simples idéia de que alguns fazem de que Ruby é a última bolacha do pacote é meio irritante.

Existem conceitos básicos que são aplicáveis a várias linguagens. O que determinará se uma linguagem é boa ou ruim são os conceitos em que se baseia mais a qualidade da implementação e bibliotecas.

Portanto quem é fã de Ruby não está “evoluindo” em nenhum aspecto, pois não sabe que determinadas features são mais velhas do que andar para frente. Se analisassem de fato veriam que Ruby nem é tão flexível assim como outras. Admitam, vocês apenas estão seguindo a modinha. Não existe nenhuma outra razão além dessa.

O fascínio de alguns com o Ruby se dá mais por causa do fato de que muitos não conheciam nada além de Java, do que com a qualidade da linguagem em si.

[quote=rafael.azevedo]Olha, não conheço bem o Ruby, embora já tenha dado minhas estudadas. Mas ao que percebi, tem alguns que acham que DSL e coisa do Ruby ou que faz em linguagens como ele. Eu faço em Java sem problemas. Dá mais trabalho sim, mas no final, o resultado de usar é o mesmo, então, acho válido pela Orientação de Objetos.
Estou me interessando em Scala e acredito que vai se tornar muito mais popular que Ruby atualmente.[/quote]

Sim, DSL é uma nova sigla da sopa de letrinhas que muitos gostam de repetir. Em algumas linguagens o que chamam de DSL não passa de “business as usual”, porque se estará desenvolvendo dessa forma naturalmente.

Ninguém evolui por ser fã de uma linguagem, mas aprender Ruby pode sim ensinar bastante coisa pra alguém que só programou nas linguagens que viu na faculdade ou no trabalho. Apesar das features serem mais velhas que andar pra frente, Ruby tem o mérito de tê-las trazido pro mainstream. Quantas pessoas você conhece que trabalham com Lisp, Smalltalk ou Haskel? E com Ruby?

[quote=Thiagosc]Não tenho nada contra estudar novas linguagens e aplicá-las onde faz sentido. Mas a simples idéia de que alguns fazem de que Ruby é a última bolacha do pacote é meio irritante.
[/quote]

Com certeza. Pra falar a verdade, qualquer um que passa a idéia de que qualquer linguagem é a última bolacha, se engana amargamente. Essa coisa de produtividade é relativa. Conheço um cara que escreve em pascal, melhor que muita gente calejada a anos em rails ou java. Isso vai de pessoa pra pessoa.

Sobre aprender novas linguagens.
Imagino que seja essencial não depender de uma única para desenvolver projetos.

Vocé poderia citar uma dessas features que, graças ao Ruby, foi introduzida no mainstream?

Closures, metaprogramação, mixins. É muito mais fácil mexer com reflexão no Ruby, também, E tudo é objeto,

Só mais um exemplo de empresa, aqui na Gonow já trabalhamos com alguns projetos em Rails, tem alguns meses que montamos uma equipe especializada e temos previsão de mais que triplicar isso, alias a empresa será uma das grandes patrocinadoras do Rails Submit esse ano.

Quem não gosta de Ruby ou Rails, favor dar argumentos técnicos e não pessoais, para que o tópico não vire outro flame de eu gosto, vc não gosta.

As vezes aparecem umas vagas de emprego na rails-br, também.

temos bastante coisa em rails aqui na Caelum tbm, varios projetos.

e estamos nos aventurando em scala tbm. um modulo de um dos sistemas principais aqui foi feito em scala.

Ruby se apresentou como um melhor implementação de objetos para a época. Mas dizer que closures, mixins e monkeypatching virou mainstream é ir longe demais IMO.

Até porque acredito que o mainstream, que é formado por desenvolvedores de aplicações, não precisa de metaprogramação, mas posso estar errado quanto a isso!

[quote=Luiz Aguiar]Só mais um exemplo de empresa, aqui na Gonow já trabalhamos com alguns projetos em Rails, tem alguns meses que montamos uma equipe especializada e temos previsão de mais que triplicar isso, alias a empresa será uma das grandes patrocinadoras do Rails Submit esse ano.

Quem não gosta de Ruby ou Rails, favor dar argumentos técnicos e não pessoais, para que o tópico não vire outro flame de eu gosto, vc não gosta.
[/quote]

Um argumento que pode não ser técnico, mas que embasa a minha opinião com relação ao que vi de Ruby até hoje é a confusão que aparece com a condensação de muita lógica em poucas linhas. Não estou falando da declaração de classe do Scala, que pelo que andei vendo desde a semana passada, parece realmente melhor que em Java. Estou falando da lógica no corpo de um método, por exemplo. Mais uma vez, por isso dei o exemplo dos números aleatórios do Falando em Java. Me parece muita lógica (responsabilidade) para pouca linha, o que, na minha visão, torna a sintaxe da linguagem confusa.

E como o que li em um post do Sérgio, se não me engano. Se quisermos realmente este tipo de coisa, podemos criar dentro do próprio Java. Trabalhar com arquivos em Java é chatinho pra dedéu, não é? Pois é, eu criei uma API em que você passa o nome do arquivo e um List do conteúdo do arquivo no construtor de uma das classes e pronto. Fica algo como isso:

List<String> linhas = new ArrayList<String>();
FileOut out = new FileOut("testeGuj.txt", linhas);
out.write();

write é sobrecarregado sem argumentos; ou com uma List ou uma String como argumentos. Nunca foi tão fácil escrever um arquivo. BufferedWriter, FileWriter e todas as outras pragas estão encapsuladas na classe FileOut. Tenho uma classe FileIn que, obviamente, serve para ler um arquivo.

Nem sempre a melhor forma de expressar uma idéia é de forma resumida ou sintética, como eu vi um post nessa thread dizer. Existem situações em que escrever mais favorece o entendimento. No Java por exemplo, quando extraimos um método (Refactoring) estamos, no mínimo, criando mais duas linhas de código (assinatura e a chave de fechamento “}”), sem por isso estar comprometendo a legibilidade. Normalmente o que acontece é justamente o contrário.