Groovy ou Ruby? Um breve relato.  XML
Índice dos Fóruns » Assuntos gerais (Off-topic)
Autor Mensagem
Marcio Duran
GUJ Master
[Avatar]

Membro desde: 23/01/2008 11:14:35
Mensagens: 1905
Offline

Não tinha como não publicar isso aqui, para iniciar um debate, acho que agora ficou bem claro , cada tecnologia vai ter seu responsabilidade, mas a evolução é inevitável.

Fonte Groovy ou Ruby

Groovy ou Ruby? Um breve relato.
Publicado por: Felipe Rodrigues de Almeida
em: 03 Out 2008 às 18:58

Como já é de conhecimento publico, a InfoQ Brasil será lançada no dia 20 de Outubro de 2008 incluindo vários artigos e notícias traduzidos para o protuguês, além do livro Scrum e XP direto das trincheiras também traduzido.

Todos que conhecem o portal InfoQ sabem da qualidade de seu conteúdo e pretendemos manter a mesma qualidade na versão brasileira do portal. Para começar bem, iremos cobrir e publicar as apresentações do Rails Summit 2008 ao longo do próximo ano. Esse evento promete ser um marco na história do Ruby e Rails no Brasil e como tal estarei lá pra conferir. =)

Você devem estar se perguntando o que isso tem a ver com o título do post. =)

Eu explico. Eu pedi pro Floyd Marinescu (co-fundador da InfoQ) uma idéia de quantos posts são publicados por mês na InfoQ original. Ele me respondeu o email dizendo que o máximo que ele podia fazer era conseguir um arquivo CSV com o seguinte conteúdo:



Obviamente isso não resolvia meu problema. Nesse arquivo temos o tipo de publicação (Interview, Article, News ou Presentation), tem a data em que foi publicado e a comunidade em que foi publicado o artigo. O que eu pensei? Vou escrever um parser para esse arquivo e assim obter os dados que preciso.

O objetivo era conseguir um resultado como esse:

ANO
A quantidade de materias desse ano foi: <>
A media de materias por mes nesse ano foi: <>

ANO
A quantidade de materias desse ano foi: <>
A media de materias por mes nesse ano foi: <>

O Total de itens é <>

Decidi que faria esse parser em ruby, abri meu e-editor e comecei a digitar o programa. 15 minutos depois percebi que eu estava indo pelo caminho errado e que não conseguiria o reslutado esperado daquela forma. Meus anos de Java me acostumaram errado. Eu comecei a pensar que deveria haver algum modo mais fácil de fazer aquilo. Decidi então escrever em Groovy, linguagem que possuo mais domínio do que Ruby. Em Groovy não tive dificuldades e construi esse código:


Foi extremamente fácil e não gastei mais do que 15 minutos para concluir esse código. Decidi então que eu iria escrever o mesmo programa em Ruby, tentando seguir os mesmos passos que realizei em Groovy. O resultado saiu em 10 minutos com o seguinte código:



Dessa experiência pude observar várias semelhanças entre as duas linguagens e também algumas diferenças. Os pontos que mais me chamaram a atenção foram o seguinte:
Groovy possue mais métodos de conveniência do que Ruby. Esses métodos são projetados para oferecer mais comodidade para o desenvolvedor. Isso fez com que o programa escrito em Groovy utilizasse apenas 23 linhas de código, enquanto o programa em Ruby utiliza 29 linhas.
Ruby foi mais performático neste caso (rodando ambos como script).
Ambas são linguagens extremamento flexiveis e poderosas com recursos e facilidades muito boas. Eu não tentei escrever esse programa em Java e nem em C, mas imagino que teriamos pelo menos o dobro de linhas de código. Se alguém se habilitar a fazer essa experiência, eu agradeço.

Analisem os dois exemplos e tirem suas próprias concluões sobre qual delas é mais a sua cara.

Isso me deu uma ótima idéia para postar sobre Groovy on Rails e Ruby on Rails. Também pretendo postar sobre meta-programação nestas duas linguagens.'

Pra terminar o post vale a pena mostrar o resultado, assim já dá uma idéia de quanto conteúdo teremos na InfoQ Brasil.

2006
A quantidade de materias desse ano foi: 949
A media de materias por mes nesse ano foi: 79
A media de materias por semana nesse ano foi: 19

2007
A quantidade de materias desse ano foi: 1525
A media de materias por mes nesse ano foi: 127
A media de materias por semana nesse ano foi: 31

2008
A quantidade de materias desse ano foi: 878
A media de materias por mes nesse ano foi: 73
A media de materias por semana nesse ano foi: 18

Total de itens em todos os anos: 3352

Conto com a participação de todos vocês nesse novo e promissor portal brasileiro. =)
Tags: | Ruby | Groovy |

Consultor Open Source
Comunidade JavaLivros
Twitter Comunidade JavaLivros
Novo Blog do MiddleHeaven
[WWW]
rlazoti
Virtual Machine Man
[Avatar]

Membro desde: 09/04/2008 11:02:51
Mensagens: 569
Localização: Sao Paulo / SP
Offline

Não é mais facil colocar apenas o link para o blog, do que duplicar toda a informação do post aqui no forum?

Já tinha lido este post diretamente no blog, achei bem interessante.

This message was edited 1 time. Last update was at 20/02/2009 12:52:17


Rodrigo Lazoti
blog: http://www.rodrigolazoti.com.br
twitter: http://twitter.com/rodrigolazoti
[WWW]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

O código equivalente em Java é bem mais verboso (embora eu não leia todas as linhas dentro de um array, o que potencialmente permite a leitura de arquivos muito grandes, o que obviamente não é o caso do CSV passado pelo pessoal do InfoQ).

This message was edited 1 time. Last update was at 20/02/2009 13:15:47

[WWW]
Marcio Duran
GUJ Master
[Avatar]

Membro desde: 23/01/2008 11:14:35
Mensagens: 1905
Offline

rlazoti wrote:Não é mais facil colocar apenas o link para o blog, do que duplicar toda a informação do post aqui no forum?

Já tinha lido este post diretamente no blog, achei bem interessante.

Não queria que as pessoas perde-se tempo indo para o link, já adiantei a informação, -" se repitada?.; - não é pois esta sendo discutida aqui , no GUJ.

Consultor Open Source
Comunidade JavaLivros
Twitter Comunidade JavaLivros
Novo Blog do MiddleHeaven
[WWW]
Marcio Duran
GUJ Master
[Avatar]

Membro desde: 23/01/2008 11:14:35
Mensagens: 1905
Offline

thingol wrote:O código equivalente em Java é bem mais verboso (embora eu não leia todas as linhas dentro de um array, o que potencialmente permite a leitura de arquivos muito grandes, o que obviamente não é o caso do CSV passado pelo pessoal do InfoQ).

Talvez o caso não fosse de um unico recurso que cabe ao CSV, mas a quantidade reduzida de código a ser processado por linhas de comandos.
[WWW]
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline





Detalhe que, para saber quantas materias foram publicadas por ano, vc pode fazer


http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
fredferrao
GUJ Master
[Avatar]

Membro desde: 01/06/2005 13:23:32
Mensagens: 1901
Localização: Brasil
Offline

peczenyj wrote:cut -d \; -f 1 arquivo.cvs | sort | uniq -c


Sinceramente??? Sei que muitos aqui se matam pelas linguangens script e tals, mas vou falar a verdade;
Funcionais: sim; econômicas: sim; menos código: sim; eficiente: talvez; Legíveis: nem um pouco; compreesiveis: muitos menos!

Resumindo, daqui um pouco vamos estar escrevendo assim
/\??#4*& 33)($* 1*)@#*39. Ai o NERD fala, olha que legal o código que escrevi!!! Ou seja regredindo, saimos de assembly fomos pra linguagens de mais alto nivel que podiam ser lidas por seres normais, e agora de volta ao inferno, em suma, SER HUMANO!!!
Mas vai ser a ONDA!, pq alguem chegou primeiro e disse que era massa, que ia acabar com o java e por ai vai!!
Sinceramente, talvez hoje eu deva aprender Ruby(por prazer) pq to nesse forum desde de 2005 e sempre escuto esse papo que RoR é o futuro da nação, e agora 4 anos depois: WHERE IS THE RUBY, nao consigo ver nada significante!

This message was edited 2 times. Last update was at 21/02/2009 09:33:28


Não respondo dúvidas via MP!
cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

Um jeito seria pensar na saida do progama como a quantidade de materias publicas em funcao do periodo. Neste caso duas coisas precisariam ser ditas:

1) definir funcao:
contador-fn = "conta os resultados nao-nulos obtidos do mapeamento da pesquisa do padrao de busca por cada linha do arquivo."

(count (remove nil? (map (find (pattern ano) linha) arquivo))

2) utilizar a funcao contadora no programa principal que por sua vez consiste em:
total materias = "acumulacao do resultado obtido do mapeamento da funcao contadora atraves dos anos."

(acumula + (map contador-fn periodo))

em Clojure ficaria assim...
[Email]
Bruno Laturner
GUJ Expert
[Avatar]

Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline

fredferrao wrote:
peczenyj wrote:cut -d \; -f 1 arquivo.cvs | sort | uniq -c


Sinceramente??? Sei que muitos aqui se matam pelas linguangens script e tals, mas vou falar a verdade;
Funcionais: sim; econômicas: sim; menos código: sim; eficiente: talvez; Legíveis: nem um pouco; compreesiveis: muitos menos!

Resumindo, daqui um pouco vamos estar escrevendo assim
/\??#4*& 33)($* 1*)@#*39. Ai o NERD fala, olha que legal o código que escrevi!!! Ou seja regredindo, saimos de assembly fomos pra linguagens de mais alto nivel que podiam ser lidas por seres normais, e agora de volta ao inferno, em suma, SER HUMANO!!!
Mas vai ser a ONDA!, pq alguem chegou primeiro e disse que era massa, que ia acabar com o java e por ai vai!!
Sinceramente, talvez hoje eu deva aprender Ruby(por prazer) pq to nesse forum desde de 2005 e sempre escuto esse papo que RoR é o futuro da nação, e agora 4 anos depois: WHERE IS THE RUBY, nao consigo ver nada significante!


Você pega um único exemplo e já sai esculachando toda uma classe de linguagens de programação? Nem todos os scripts são um jogo Perl Golf.

Sem falar que você pode fazer um código ilegível mesmo nas linguagens de mais alto nível.


Obs: Se você soubesse unix shell script, o exemplo que citou seria um dos mais legíveis.

This message was edited 1 time. Last update was at 21/02/2009 13:47:25


A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra
[WWW]
peczenyj
Moderador
[Avatar]

Membro desde: 26/03/2006 23:25:37
Mensagens: 3191
Localização: Rio de Janeiro
Offline

fredferrao wrote:
peczenyj wrote:cut -d \; -f 1 arquivo.cvs | sort | uniq -c


Sinceramente??? Sei que muitos aqui se matam pelas linguangens script e tals, mas vou falar a verdade;
Funcionais: sim; econômicas: sim; menos código: sim; eficiente: talvez; Legíveis: nem um pouco; compreesiveis: muitos menos!

Resumindo, daqui um pouco vamos estar escrevendo assim
/\??#4*& 33)($* 1*)@#*39. Ai o NERD fala, olha que legal o código que escrevi!!! Ou seja regredindo, saimos de assembly fomos pra linguagens de mais alto nivel que podiam ser lidas por seres normais, e agora de volta ao inferno, em suma, SER HUMANO!!!
Mas vai ser a ONDA!, pq alguem chegou primeiro e disse que era massa, que ia acabar com o java e por ai vai!!
Sinceramente, talvez hoje eu deva aprender Ruby(por prazer) pq to nesse forum desde de 2005 e sempre escuto esse papo que RoR é o futuro da nação, e agora 4 anos depois: WHERE IS THE RUBY, nao consigo ver nada significante!


Vejamos, isso é legivel?:



Para ser legivel vc deveria conhecer a assinatura desses 3 metodos: cut, sort e uniq

O que eu fiz com pipes e comandos basicos do unix para mim é legivel.

RTFM


http://pacman.blog.br

'Não importa quanto alguém se dedique à tarefa. Ninguém consegue fazer a água da cascata cair para cima.'
[WWW]
cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

Bruno Laturner wrote:
Sem falar que você pode fazer um código ilegível mesmo nas linguagens de mais alto nível.


Obs: Se você soubesse unix shell script, o exemplo que citou seria um dos mais legíveis.


Entretanto nao é possivel fazer codigo legivel usando linguagem de baixo nivel. Logo sua segunda afirmacao nao é verdadeira.
[Email]
Bruno Laturner
GUJ Expert
[Avatar]

Membro desde: 18/02/2008 16:17:53
Mensagens: 3002
Offline

cmoscoso wrote:
Bruno Laturner wrote:
Sem falar que você pode fazer um código ilegível mesmo nas linguagens de mais alto nível.


Obs: Se você soubesse unix shell script, o exemplo que citou seria um dos mais legíveis.


Entretanto nao é possivel fazer codigo legivel usando linguagem de baixo nivel. Logo sua segunda afirmacao nao é verdadeira.


Shell script não é uma linguagem de baixo nível, nem o código é ilegível.

Legibilidade requer em primeiro lugar o conhecimento da linguagem. Não adianta falar que um livro é bem escrito se a pessoa nem sabe o significa do que está lá.

A resposta acima foi achada em menos de 5 minutos no google.
The prisoner falls in love with his chains. --E.W. Dijkstra
[WWW]
Marcio Duran
GUJ Master
[Avatar]

Membro desde: 23/01/2008 11:14:35
Mensagens: 1905
Offline

Bruno Laturner wrote:
cmoscoso wrote:
Bruno Laturner wrote:
Sem falar que você pode fazer um código ilegível mesmo nas linguagens de mais alto nível.


Obs: Se você soubesse unix shell script, o exemplo que citou seria um dos mais legíveis.


Entretanto nao é possivel fazer codigo legivel usando linguagem de baixo nivel. Logo sua segunda afirmacao nao é verdadeira.


Shell script não é uma linguagem de baixo nível, nem o código é ilegível.

Legibilidade requer em primeiro lugar o conhecimento da linguagem. Não adianta falar que um livro é bem escrito se a pessoa nem sabe o significa do que está lá.


Uma coisa que queria melhor entender, a legibilidade requer o conhecimento da linguagem (mas se for o caso de usar uma ferramenta que gere código), se tivesse que usar o AndroMDA, até aonde eu posso pensar em especialização por uma linguagem ou promover um desenvolvimento que envolva até implementação visual, ou isso não seria possível, não sei até onde posso afirmar isso..... !!!, mas na certa já são muitas empresa que trabalham sobre modelo ou worflows que produzam desenvolvimento pelo o domínio do problema

This message was edited 2 times. Last update was at 22/02/2009 16:57:21


Consultor Open Source
Comunidade JavaLivros
Twitter Comunidade JavaLivros
Novo Blog do MiddleHeaven
[WWW]
tchandy
JavaChild
[Avatar]

Membro desde: 12/03/2007 21:18:49
Mensagens: 114
Localização: Jaraguá do Sul - SC
Offline



E isso que eu fiz aqui rapidinho, dá pra melhorar....

Isso só demonstra falta de conhecimento na linguagem, e sair por ae publicando artigos sem noção...

Você pode ter todo dinheiro do mundo, mas há algo que jamais poderá comprar... Um Dinossauro!
(Homer J. Simpson)



http://thiagopradi.net | http://github.com/tchandy
[MSN]
cmoscoso
Virtual Machine Man

Membro desde: 23/10/2007 10:08:29
Mensagens: 687
Offline

Bruno Laturner wrote:
Shell script não é uma linguagem de baixo nível, nem o código é ilegível.


Entao experimenta fazer um forum usando shell script.

Bruno Laturner wrote:
Legibilidade requer em primeiro lugar o conhecimento da linguagem. Não adianta falar que um livro é bem escrito se a pessoa nem sabe o significa do que está lá.


Conhecimento da linguagem e fundamental, principalmente a linguagem de dominio utilizada pelo cliente. E se alguem pretende oferecer uma solucao, sim este alguem precisa conhecer o problema (isso incluiria a linguagem utilizada para descrever o problema!).

Dito isso, a legibilidade a que me refiro esta relacionado com a capacidade de implementar com precisao essa linguagem do dominio (no caso poderia ser materias publicadas, periodo, totalizacao) numa GPL, seja ela groovy, ruby, clojure, etc.

A principio nao importa se pra isso serao utilizadas 2 linhas, ou 1 e meia, apenas o codigo precisa fazer sentido pro "cliente".
[Email]
 
Índice dos Fóruns » Assuntos gerais (Off-topic)
Ir para:   
Powered by JForum 2.1.8 © JForum Team