Ruby on Rails?

haha o povo ainda dá uma estrela em meu tópico.
Gente, vamos parar com esse ar de time de futebol que vocês dão para esse web framework aí. É prejudicial ;D

E Daniel, este é seu argumento? hehe pensei que ia jogar em minha cara o quanto você também é preguiçoso e por isso adora as dezenas de linhas que você deixa de digitar por usar RoR e não algum web-framework em Java ;D

[quote=LIPE]haha o povo ainda dá uma estrela em meu tópico.
Gente, vamos parar com esse ar de time de futebol que vocês dão para esse web framework aí. É prejudicial ;D[/quote]

Caso você não tenha percebido, eu nem ao menos sitei o RoR até agora.

Sinto muito desanpota-lo.

[quote=LIPE]Tudo o que faço da vida há mais de 3 anos de 8 a 14h por dia é Java.
Nunca tive que pensar que um processo estava demorando demais.
Todos os poucos problemas de performance que tive ao longo de minha vida como desenvolvedor foram oriundos do banco de dados.

“Um dia terá”? Então um dia talvez eu use.

Repito: sou preguiçoso e prefiro usar uma linguagem com a qual não tenho que pensar em performance.
Evangelizadores de Ruby se gabam demais de produtividade.[/quote]

Bem meu ambiente é outro, apesar de não usar Ruby ou RoR para isso tenho questões criticas quanto a performance em ambiente de telecom onde em determinadas situações preciso responder algo em alguns milisegundos.

Nestes casos mesmo em Java é preciso ter que usar outras linguagens ou JNI para conseguir tal performance.

Esse negócio de defender isso ou aquilo é meio embassado :roll:

Vamos aprender coisas novas e compartilhar conhecimento, fórum é pra isso mesmo ^_^. Cada coisa com o seu propósito. Para algumas coisas que faço, prefiro ruby, para algumas outras, prefiro java e por aí vai. No trabalho uso java, faz parte da especificação técnica e é a mais adequada para o caso que tenho em mãos.

Vou dar um exemplo do que eu notei e que talvez outras pessoas também notaram sobre produtividade: pra minha situação, cientificamente ruby é fabuloso, trabalha muito bem com tipos ranges e numeros grandes (com milhares de dígitos), e é justamente esse tipo de serviço que me desgasta mais no tempo de desenvolvimento.

Achei o tutorial do TaQ e em 4 dias aprendi o necessário para resolver o problema proposto.

O que mais me chamou a atenção foi que mesmo tendo anos que experiencia com C / Java e alguns dias em ruby, tive a sensação que se eu tivesse feito em C / Java eu iria demorar mais.

Claro que se eu tivesse aprendido ruby há anos atrás eu demoraria mais pra aprender do que hoje por falta de experiencia, mas não é exatamente isso que vem ao caso: o que está em questão é a praticidade.

Isso deu um nó no meu juízo e comecei a prestar mais atenção em Ruby.

A tarefa se tratava de um algoritmo logicamente pesado e com vários insights matemáticos (aritmética intervalar e objetos combinatoriais para um gerador / recuperador de ruído em imagens digitais), e vi que em ruby eu consigo enxergar melhor o algoritmo do que se tivesse em C ou java.

Pelo que escuto de python, creio que eles teriam a mesma impressão sobre a fácil leitura do algoritmo (já que a linguagem tem algumas facilidades para operações matemáticas)

Enfim, é bom focar no ato de prestar o serviço de informática e não no serviço em si, cada uma tem seu bom uso :wink:

Eu ia abrir outro tópico, mas xeu aproveitar esse.

Alguém vai?
http://www.temporealeventos.com.br/?area=6

[quote=Rafael Nunes]Eu ia abrir outro tópico, mas xeu aproveitar esse.

Alguém vai?
http://www.temporealeventos.com.br/?area=6[/quote]

Eu vou.

[quote=Rafael Nunes]Eu ia abrir outro tópico, mas xeu aproveitar esse.

Alguém vai?
http://www.temporealeventos.com.br/?area=6[/quote]

Eu adoraria, mas não estarei em São Paulo.

Eu concordo com a sua colocação. Apesar de adorar a linguagem Ruby, não quero me tornar fanático por ela, pois acho que o fanatismo pouco agrega, tanto a mim quanto a linguagem e à comunidade Ruby.
Apenas expressei a minha opnião à respeito dos simbolos aumentarem a legibilidade do código em Ruby em uma tentativa de elucidar um post anterior. Porém, algumas pessoas se sentem feridas ao saberem que podem existir outras linguagens e que elas podem ser tão boas ou melhores que Java dependendo do caso em questão.
Dito isto, argumentei algumas colocações, estas sim fanáticas sob meu ponto de vista, à respeito de Ruby, Java e até, pasmem, Eclipse.
Acho impressionante a capacidade de algumas pessoas em misturar tudo num balaio de gato, framework, linguagem, VM, interpretador, etc, e começar a estabelecer comparações. Daí vemos os absurdos de comparar Java com RoR, JVM com Ruby ou dizer impropérios a respeito da linguagem em relação a ausência (?!) de IDEs decentes.
Me parece que as pessoas criam vínculos e paixões com ferramentas e metodologias de seu dia-a-dia e simplesmente deixam de fazer análises sérias, admitir defeitos ou reconhecer vantagens em outras alternativas. Este é o primeiro passo para a estagnação.
Felizmente, existem pessoas na comunidade Java que estão atentas a estas questões.

Alexandre, desculpe… vinha gostando dos seus comentários, mas preciso discordar deste.

RoR é um framework? Ou uma DSL? Considerando que tenha características de uma DSL, se estivermos dentro do escopo (domínio) - desenvolvimento para a web - sim, ele tem aspectos que podem ser comparados com Java - a linguagem (de propósito geral). Não é uma comparação absurda (o que não significa que comparações absurdas não sejam feitas).

Eu aprendi o Rails. Ele tem seu nicho, sim. Como o Java (a plataforma). É verdade, não tem um grande desempenho. O que não quer dizer que nunca terá.

Apenas esperemos o Java 7 (a JVM) e um compilador de ruby que gere bytecode para JVM - feito pelo projeto JRuby. :wink:

Só quero ver o que justificaria seguir usando java (a linguagem) quando pudermos usar ruby e rails em java (a plataforma) - a confusão de termos é proposital. :stuck_out_tongue:

E então estava eu a brincar com o rails… uma tela que lista cópias.

Esta entidade Copia que “belongs_to :midia”, que por sua vez “belongs_to :filme”, que por sua vez, claro, “has_many :midias”.

Toda a simplicidade que só o rails faz pra você (app/views/copias/list.rhtml):

[code]

<%= copia.midia.filme.titulo %> ...[/code] Tudo certo, mostra 10 objetos por página. Então dou uma olhada no log e: [code]Processing CopiasController#index (for 127.0.0.1 at 2006-10-24 23:40:31) [GET] Session ID: 1e48abb346b3304538fda95cc6484994 Parameters: {"action"=>"index", "controller"=>"admin/copias"} e[4;36;1mSQL (0.000000)e[0m e[0;1mSELECT count(*) AS count_all FROM copias e[0m e[4;35;1mCopia Load (0.000000)e[0m e[0mSELECT * FROM copias LIMIT 0, 10e[0m Rendering admin/copias/list within layouts/standard-layout Rendering admin/copias/list e[4;36;1mMidia Load (0.000000)e[0m e[0;1mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m e[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m e[4;36;1mFilme Columns (0.015000)e[0m e[0;1mSHOW FIELDS FROM filmese[0m e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m e[4;36;1mFilme Load (0.016000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m e[4;36;1mFilme Load (0.016000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0m e[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m e[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 3) LIMIT 1e[0m e[4;36;1mDvd Columns (0.000000)e[0m e[0;1mSHOW FIELDS FROM midiase[0m e[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0m e[4;36;1mSQL (0.000000)e[0m e[0;1mSELECT count(*) AS count_all FROM copias e[0m Completed in 0.14000 (7 reqs/sec) | DB: 0.10900 (77%) | 200 OK [http://localhost/admin/copias][/code] Que ORM é esse?! É preciso mesmo fazer estas várias pesquisas iguais?!

Alexandre, desculpe… vinha gostando dos seus comentários, mas preciso discordar deste.
RoR é um framework? Ou uma DSL? Considerando que tenha características de uma DSL, se estivermos dentro do escopo (domínio) - desenvolvimento para a web - sim, ele tem aspectos que podem ser comparados com Java - a linguagem (de propósito geral). Não é uma comparação absurda (o que não significa que comparações absurdas não sejam feitas).
[/quote][/quote]

bzanchet, fui eu quem escreveu isso, não esse tal de Alexandre, rs, que eu não sei quem é. :smiley:
Concordo com você de que o RoR pode ser considerado um DSL, mas não significa que RoR é a única DSL que pode ser construida com Ruby. Por isso acho estranho comparar Java com RoR e chegar em uma conclusão sobre Ruby, compreende?
Quero dizer, podem ser construidas diversas DSLs para Web com Ruby além do RoR. E os post estavam relacionados a sintaxe Ruby, ou as sintaxes das DSLs que Ruby permite escrever.
Eu discordo em alguns pontos sobre RoR ser única e exclusivamente um DSL Web do Ruby, visto que o RoR é na verdade um agregado de outros frameworks, onde cada um atende a uma necessidade específica.

Rails tem um nicho bem conhecido, porém, não acho que a comunidade já tenha chego a uma conclusão dos pontenciais do framework. Eu só acho que a comunidade Java geralmente desdenha a linguagem Ruby e seus frameworks, demonstrando um comportamento arrogante.

Não acredito no JRuby, mas isso não passa de uma crença pessoal. Talvez vire, talvez não. Na minha opnião, o cenário futuro mais provável será algo parecido com o que ocorre com Struts. Pessoas e organizações mais resistentes continuaram no Java enquanto aos poucos Ruby e outras linguagens crescerão vagarosamente.

Mas como eu disse, isso não passa de minha opnião pessoal…
A respeito de todas essas consultas, não parei para analisa-las com calma, porém, você está utilizando cache de consultas do ActiveRecord? Talvez seja isso…

Acredito que se o Java não estivesse evoluindo, estaria realmente com seus dias contados.

Como linguagem estática e pelo que as especificações possuem ( de portlets à jsrs muito técnicas) … acredito que sempre terá seu nicho enterprise.

O Spring 2.0 já vem com suporte à DSL e linguagens como Ruby.

Agora acreditar que haverá uma substituição em toda a cadeia pelo ruby, acho pouco provável. Esse terá sim seu nicho de mercado,talvez com a evolução das tecnologias que circundam a plataforma, pode ser que seja maior do que hoje - web entre outros pequenos projetos que tenho lindo à respeito.

A tecnologia terá que amadurecer outros quesitos, e com a abertura de código do HotSpot da Sun, muitas coisas vão acabar rolando nesse sentindo, aprimorando outras tecnologias.

PS: Uma curiosidade, o cache não deveria guardar a primeira consulta para não ser realizada novamente ? Nesse caso descrito acima, acredito que tanto faz se o cache está on ou off, pois é a primeira consulta que precisará ser guardada.

Eu não mexi em configurações de cache, não. Afinal, não é simplicidade o que prega o RoR (a filosofia, não o framework/dsl)? :mrgreen:

Mas, vejam bem: o ActiveRecord faz mapeamento objeto-relacional, certo? E dentro de uma mesma requisição um mesmo objeto esta sendo acessado várias vezes (no exemplo, a mídia de id 2 e o filme de id 3). Se os objetos ‘filme’ e ‘midia’ foram instanciados e preenchidos com dados lidos do BD uma vez (no momento do acesso - ‘lazy loading’), não deveriam ‘existir’ pelo menos até o final da requisição, tornando desnecessários novas consultas ao banco de dados?

Não consigo pensar numa explicação convincente pro que está ocorrendo. :?

Sim, você tem razão. O framework vem configurado para um ambiente de desenvolvimento e sem otimizações. Caso você necessite das otimizações, você as implementa. Bem simples, não.

Sim, os atributos foram carregados, porém nada garente que eles não tenham mudado, por isso ao requisitar um atributo ele recarrega apartir do banco de dados. Estou falando isso sem confirmar, viu? Vou fazer um teste depois na minha máquina e te informo o que descobri.

:shock:

Bem, isso é o que o Hibernate faria, e o Active Record não é o Hibernate :twisted:

Nem parece haver interesse na galera que desenvolve ele em deixá-lo parecido com o Hibernate. As vezes agente se acostuma tanto com a mágica, que ela fica praticamente natural :smiley:

[quote=daniellibanori]Thiagosc

Amigo, por favor, não confunda Java com Eclipse. Caso você não sabia, um dia, houve programadores Java quando o Eclipse ainda não existia.
E caso você ache que um @ para definir uma variável de instância é algo muito complexo, o que você vai me dizer de: private static int número? Ou dos outros milhares de qualificadores que Java possui? Inclusive isso é motivo de chacota da linguagem.[/quote]

O tempo passa e as nossas expectativas quanto ao que o software deve desempenhar também aumentam. Portanto não é viável confiar em notepad para nenhum desenvolvimento profissional. O fato de em 1997 existirem desenvolvedores sem Eclipse não significa absolutamente nada.

Dá só uma olhada no que um SO para usuários comuns fazia em meados dos anos 90 e olha agora! Os requisitos não param de aumentar!

O uso de @ ou $ pode ser fácil ou não, vai depender se você prefere ler salada sem sequer highlighting no ‘vi’ ou notepad, mas o fato é que isso apenas demonstra que a linguagem visa resolver a falta de ferramentas decentes.

Como eu disse noutra thread, o IDE é para o programador o que uma calculadora científica ou um CAD é para um engenheiro. É uma ferramenta que auxilia o nosso trabalho, mas não é desculpa para não saber o que acontece por debaixo dela.

O “static” e coisas do gênero são uma questão de gosto, eu prefiro ver “static” do que “@” ou qualquer outro símbolo, afinal de contas eu não preciso me preocupar com “keystrokes”. Os tipos “int” e o que mais é questão de segurança, mas se acha que segurança não é importante ninguém tem nada a ver com isso também.

Errado, uma boa IDE é indispensável sempre. Nós como programadores e usuários de tecnologias devemos sempre exigir mais, sempre elevar o nível mínimo. Quanto mais for o “mínimo” melhor será o nosso trabalho.

Além do mais você ignora o fato de que uma IDE serve para mais coisas do que simples auto-completion de código ou templates de código. Elas integram diversas ferramentas como debugger, profiler, servidores, interfaces para DBs, interfaces para software de controle de versão, testadores, etc.

[quote=daniellibanori]
Por isso, programadores Ruby estão livres para programar em diversos ambientes que não sejam o pesadíssimo, e super competente, Eclipse: a linguagem é boa e não apenas a IDE.[/quote]

Acho que esse é o mesmo caso dos usuários Python criticando o Java pelo modificador “private”, ou seja, “se a minha linguagem favorita não tem então todos que tem são maus”.

Acho que da sobrecarga de operadores não é a sintaxe para tal, mas a bagunça que pode ser feita no código e possíveis problemas de manutenção.

Se todas pessoas pensassem igual e fizessem igual não seria um problema, mas sabemos que pessoas diferentes tem idéias diferentes, e elas pode inadvertidamente criar um monstro com sobrecarga de operador e pensar “ser super fácil”.

Para mim operadores deveriam servir para números apenas. Se a Sun fizesse o mesmo que fizeram com Strings, eu não veria problema algum, mas se fizesse essa porcaria de feature eu começaria a pensar em mudar de plataforma, pois é sinal que eles não fazem a mínima idéia do que estão fazendo com o Java.

Linguagens vão muito além de sintaxe. Analisar uma linguagem apenas pela quantidade de keystrokes, sem querer ser agressivo, mas é uma grande ignorância.

Eu acho Java uma boa linguagem, com as features que interessam no momento, afinal de contas um ambiente de desenvolvimento profissional não é apenas a linguagem, mas também as APIs, as IDEs, as tecnologias bem desenvolvidas etc. Portanto vendo a big picture eu diria que Java está a frente de Ruby.

Se for entrar numa discussão puramente acadêmica sobre qual linguagem é “a melhor” Java que não será, mas tampouco será Ruby. :slight_smile:

Estou sendo pragmático aqui, se você prefere pensar em termos de ideais, aí já é outra história e outra discussão.

Acho que isso comum a qualquer linguagem script. O ambiente perdoa muito mais do que uma linguagem como Java. O fato de não ser obrigado especificar tipos e se procupar com diagrama de classes e arquiteturas ou com trabalho braçal como no caso do C dá a impressão de que é mais rápido, é muito fácil escrever qualquer coisinha que cuspa algum resultado na tela.

Mas é só impressão mesmo. Isso não significa que o resultado será melhor.

Não precisa declarar tipos, mas tem Duck Typing :wink:

[quote=Thiagosc]se procupar com diagrama de classes e arquiteturas
[/quote]

Uh? Eu tambem gosto de bolo de banana.

(i.e. Que raios tem a ver uma coisa com a outra?!?)

er…o resultado foi melhor :wink:

Como falei, uso ferramentas conforme a necessidade. Dói menos escrever:

x = 256**782787

ao invés de

BigInteger bigInteger = new BigInteger("256").pow(782787);

Pra mim, quanto menos eu ficar negociando com a API, melhor. Enfim, cada caso é um caso. =)

t+