Pessoal, meu patrão está com uns papos pra mim dar uma estudada em Ruby on Rails. Ele me mostrou alguns sistemas feitos em Ruby on Rails e o código fonte dos mesmos, até eu fiquei de cara com a pouca quantidade de linhas de comando usadas para fazer sistemas complexos.
EU gostaria de saber a opnião da comunidade JAVA em relação a esta linguagem, mas sem fanatismo pelo JAVA!!!
Vamos discutir isto a sério, pois amanhã pode ser seu patrão que te fala pra estudar Ruby on Rails !!!
Estude Ruby. Se quiser mais informações por aqui use a busca. E há um site específico de ruby http://www.rubyonbr.org/
[]s
Luca
M
macfly2500
Uma pergunta:
O código é interpretado por um CGI?
Ele abre um processo no servidor a cada requisição do usuário, assim como o PHP quando não instalado como sapi?
Confere esta informação?
Obrigado
Proteu_Alcebidiano
Que estranho, normalmente aqui no brasil a situação é adversa: os desenvolvedores sofrendo pra convencer os chefes de que RoR é promissor e vale a pena investir. Espero que o comportamento “chefe-sugestionando-rails” prolifere =)
peczenyj
macfly2500:
Uma pergunta:
O código é interpretado por um CGI?
Ele abre um processo no servidor a cada requisição do usuário, assim como o PHP quando não instalado como sapi?
Confere esta informação?
Pois é, se for assim é um chute no s***
Imagine 50-60 usuários conectados, cada um com um processo no servidor.
M
macfly2500
carloseduardo:
Rapaz, não é obrigado a usar CGI, você pode usar fastcgi + apache, Mongrel ou ainda Lighttpd com fastcgi normalmente, ai não tem essa de 50 ou 60 usuários tomando conta do teu servidor, veja a http://www.37signals.com veja 500.000 Usuários depois vais que pagevews são BEM MAIS…
Cara em ambiente de desenvolvimento isso não é problema.
Mas tem que ver onde o site vai ficar hospedado se tem essa configuração.
No meu caso ficará em um servidor compartilhado, NÃO dedicado.
Em um servidor de hospedagem que pretendia utilizar já vi que só recomendam Ruby para uso em servidores Dedicados.
Humm… estava fungando até agora pouco… estou com a página aberta aqui ainda no cache… vai ver que atingiu os 500.000 usuários… estou brincando!!
tmoretto
IMHO, RoR é muito bom, para projetos pequenos e no máximo médios, mas acho que precisa amadurecer para atacar projetos grandes. Vale a pena aprender RoR sim, é um framework bem bolado, mas tem que ser muito bem estudado pra ser aplicado em determinado problema (às vezes ele pode te deixar na mão).
M
marceloplis
Pessoal, vamos com calma !!!
Deixando um pouco de lado as opniões individuais e partindo para a visão de mercado, alguém que trabalhe em empresa de TI de grande ou médio porte, pode nos dizer o que os cérebros da empresa pensam sobre isso ?
Daniel_Quirino_Olive
marceloplis:
Pessoal, vamos com calma !!!
Deixando um pouco de lado as opniões individuais e partindo para a visão de mercado, alguém que trabalhe em empresa de TI de grande ou médio porte, pode nos dizer o que os cérebros da empresa pensam sobre isso ?
Onde eu trabalho (uma da empresa americana líder mundial em serviços de TI) existem pessoas e grupos investigando a adoção de RoR e outras soluções OSS ao portfólio tecnológico da empresa a médio prazo. Acho que os dois grande empecilhos de uma adoção imediata de RoR em empresas como a minha são:
homologação de uma versão (qual é a versão mais estável e com menos bugs críticos para a minha necessidade? qual vai ser a política de atualização de versões? gaaahh!!!)
suporte técnico (em quem eu vou jogar a culpa se o sistema que eu vendi para meu cliente parar de funcionar de uma hora para outra?)
custos não-tangíveis desconhecidos
Mas, acredite, ninguém é cego. Por maior e por mais inflexíveis que algumas destas grandes empresas do ramo possam ser/parecer, elas são feitas por pessoas que estão ligadas no que está acontecendo por aí e sabem influenciar quem decide
Kenobi
Fala pra gente, quando ele pode deixar a gente na mão. e fale também o do porque tem que ser bem estudado.
Há quanto projetos “pequenos” será que é mesmo ? a SAP a IBM pensam o mesmo sobre Ror ? :roll:
Não é pq a IBM Coloca no seu developers work, que ela implementa de fato a tecnologia. E só para lembrar, a IBM é uma empresa de tecnologia e tem a obrigação de ser early adopter. Assim como a mesma está apoiando a iniciativa da Zend com o PHP.
Ruby é uma linguagem bem poderosa e o RFC da SAP é escrito em C como biblioteca para a mesma. Entretanto RubyOnRails é uma coisa completamente diferente.
É um framework/produto que precisa sim ser bastante estudado para aplicações de grande porte, como bancárias, seguradoras entre outras.
Tive grandes problemas na adoção do SpringMVC no início, ora por alguns bugs em viewresolvers como jasper, ora por paradigmas de desenvolvimento do mesmo (outro assunto, não vou me alongar).
Mesmo o Spring possuindo diversas publicações e uma comunidade vibrante, seu uso no mundo real (aplicações financeiras por grandes instituições), começou à pouco.
Acredito que para uma aplicação mais densa, que vai envolver alguns milhares de usuários, e uma estratégia comercial por trás, que depende do funcionamento da aplicação, será necessário que o corpo técnico estude e analise profundamente o mesmo, já que caso a aplicação pare a culpa será totalmente dos desenvolvedores, já que Ruby ainda não é padrão de mercado, muito menos Rails.
Vou até falar de padrão, JSF. Em produção para aplicações de massa, você conhece grandes cases de sucesso ?
plentz
Aqui tem uma lista de aplicações com uma quantidade considerável de usuários - e todas feitas com Rails.
Sim, o maior case Java do RS.
Dúvida Kenobi: porque você acha que uma linguagem/framework só é enterprise-ready quando alguma “grande-aplicação-bancária-e-ou-financeira” foi feita com ela?
Daniel_Quirino_Olive
plentz:
Dúvida Kenobi: porque você acha que uma linguagem/framework só é enterprise-ready quando alguma “grande-aplicação-bancária-e-ou-financeira” foi feita com ela?
Talvez porque estas aplicações costumam ter os requisitos não-funcionais mais cretinos que existem por aí, que acabam se tornando meio “prova de fogo” para alguma coisa.
E, apesar do 37signals et al., a VM padrão do Ruby é lenta demais. Antes que alguém se levante com aquele argumento de que “ciclo de CPU hoje são mais baratos do que ciclos de um desenvolvedor”, sou obrigado a dizer que, embora concorde com o argumento, é difícil convencer um aumento no orçamento de um projeto para pedir um servidor mais potente para se alcançar o mesmo nível de performance que Java conseguiria hoje com uma máquina mais barata. Pois é, Rubysts, bem-vindo ao que foi o ano 2000 dos Javaneses
Thiagosc
Tenho ouvido muito mais de SOA ultimamente, Ruby até agora zero, nem entre desenvolvedores. Aliás, o único lugar em que ouço falar de Ruby é aqui no GUJ.
Rubem_Azenha
Que outros sites vc acessa além do GUJ? :?
Thiagosc
Vários, pq?
neofito
Olá,
sou leigo em ruby, mas como todos por aqui falam nele, estou ficando curioso. Já dei uma olhada em alguns códigos ruby, e aí vem minha questão: o ruby possui convenções de código que visem melhorar a legibilidade do mesmo? Pode parecer preconceito, mas não gosto muito de "::" e "=>", ou métodos built-in que vc não sabe de onde vêm e nem pra onde vão (estilo PHP). Obs.: não sei se ruby é assim no que tange aos métodos.
Ruby é assim ou procura combater esses problemas?
Não estou querendo defender o java, mas uma coisa que me atrai muito nele é a legibilidade do código. É verboso? É. Mas tem um motivo realmente plausível pra isso, e se resume a uma só palavra: legibilidade.
Como diria o mago Martin Fowler, "escrever programas é fácil, o difícil é escrever programas que um ser humano possa entender".
Mas ainda continuo curioso em relação a ruby
cv1
Assim como qualquer outra linguagem, quando vc eh leigo todo simbolo na sintaxe parece “barulho”. Depois de um tempo, o barulho some - seu cerebro aprende a nao ver mais o monte de ::, =>, {, }, [, ], (, ), & e * pra todo lado.
Que o diga os usuários de Perl, haha. Achei as convenções adotadas pelo Ruby muito perl-like, ou seja, medonhas. Mesmo que com o passar do tempo você não precise mais pensar a respeito, isso polui o código e dá brecha para que um desenvolvedor “iluminado” faça coisas ilegíveis.
Aqueles negócios de $, @, @@, :, $_ (etc) sinceramente são o fim da picada.
neofito
Thiagosc:
…
Aqueles negócios de $, @, @@, :, $_ (etc) sinceramente são o fim da picada.
Tenho uma opnião semelhante, apesar de não achar que isso estrague completamente uma linguagem.
Uma coisa que me irrita em particular são nomes de métodos abreviados de forma estranha. Esses nomes não são explicativos e se a linguagem não tiver um forma de documentação estilo javadoc (olha o java ae de novo) há fortes possibilidades de códigos muito ilegíveis surgirem. Digo isso apenas porque o java é “verboso”, e o ruby talvez tente “melhorar” isso.
Ah!, e a propósito… ô sintaxezinha bunitinha tem o perl né?
Vai ter um evento da Tempo Real sobre Ruby on Rails, dia 28 de Outubro. Quem da discussão estiver interessado em ter um startup na linguagem, compareçam ao evento.
Aqui tem uma lista de aplicações com uma quantidade considerável de usuários - e todas feitas com Rails.
Sim, o maior case Java do RS.
Dúvida Kenobi: porque você acha que uma linguagem/framework só é enterprise-ready quando alguma “grande-aplicação-bancária-e-ou-financeira” foi feita com ela?
Vamos lá, primeiramente todas essas aplicações feitas com RoR são peace of cake, e eu as conhecia. Só voltando um pouco, estou estudando Ruby e Rails e até fazendo um projeto piloto pessoal com a tecnologia exatamente pela produtividade, já que não possuo muito tempo livre. Entretanto se fosse parar para pensar numa aplicação de grande porte, teria muitas ressalvas.
Quanto as indagações citarem exemplos bancários, como foi dito, é o ambiente onde se testa realmente muitos itens não funcionais, onde está o dinheiro e mercado que atuo. Logo, pra mim não faz sentido uma tecnologia que não me dê segurança nesse cenário. Pelo mesmo motivo não adoto Dot.Net, que possui excelente produtividade também.
Quanto ao maior case do RS em cima de JSF, gostaria de saber alguns detalhes da aplicação, pois me interessa. Estou estudando JSF e gostaria de saber como fica a implementação com um número de usuários simultâneos elevado, já que toda sua árvore de componentes (estado), é gravado no servidor.
Vocês possuem cluster das Sessions ? Como fica a disponibilidade ?
Valew,
[]´s
F
flaleite
Kenobi,
Do jeito que vc fala parece que só no meio financeiro ("é o ambiente onde se testa realmente) existem aplicações com muitos itens não funcionais. Existem outros ambientes tão complexos e delicados como o financeiro, por exemplo, aviônicos e telecom (onde existem especificações carrier-grade que são extremamente exigentes).
Kenobi
flaleite:
Kenobi:
Quanto as indagações citarem exemplos bancários, como foi dito, é o ambiente onde se testa realmente muitos itens não funcionais, onde está o dinheiro e mercado que atuo. Logo, pra mim não faz sentido uma tecnologia que não me dê segurança nesse cenário. Pelo mesmo motivo não adoto Dot.Net, que possui excelente produtividade também.
Kenobi,
Do jeito que vc fala parece que só no meio financeiro ("é o ambiente onde se testa realmente) existem aplicações com muitos itens não funcionais. Existem outros ambientes tão complexos e delicados como o financeiro, por exemplo, aviônicos e telecom (onde existem especificações carrier-grade que são extremamente exigentes).
Sim concordo e corrijo meu post. O que eu quis dizer é à respeito de aplicações piece of cake - como ferramenta de blog, ferramenta web para shopping e etc… vs aplicações densas, telecom, financeira e por aí vai !!
PS: Coloquei financeira pois é minha área de atuação e não conheço muito bem outros contextos.
Espero que tenha ficado claro,
Abraço,
Kenobi
F
flaleite
Pra quem precisar realmente de performance em Ruby
daniellibanori
Não quero gerar nenhuma flamewar, mas posso garantir que se bem usado os simbolos do Ruby aumentam em muito a legibilidade e clareza do código.
Ruby é uma linguagem que permite construções que podem tornar-se um inferno para serem entendidas, em contrapartida, se bem utilizada permite construções simples e poderosas. Grande parte devido aos símbolos e outras features da linguagem. Extamente por isso existe o Ruby way, ou a maneira de se programar em Ruby, que visa evitar as construções ‘bizarras’ e estimular o código limpo, enxuto e altamente legível.
Por isso repito, se bem utilizado, os símbolos Ruby aumentam muito a legibilidade do código.
No fim, tudo depende do programador, como em qualquer outra linguagem. O que me parece uma idiotice, é construir uma linguagem sem ‘features’ para que o programador não faça bobagem… Talvez isso seja útil quando se tem 50 programadores num projeto, mas 9 mulheres não fazem 1 filho em um mês.
Refactoring of method dispatch, code evaluation, and block dispatch code
Parser performance enhancement
Rewriting of Enumerable, StringScanner and StringIO in Java
New experimental syntax for implementing interfaces
[]s
Luca
Thiagosc
Uma vez li num artigo da internet, ou num fórum não lembro, um cara falando que os símbolos do Perl ($, @, % , etc) auxiliavam a leitura do código. Por exemplo, você sabe de ante mão se aquilo é uma variável, array, hash, etc.
Sabe o que isso significa? NOTEPAD. Pelo mesmo motivo em algumas outras linguagens adotaram-se convenções similares quando a linguagem em si não obriga o uso de nada, prefixos para métodos, campos, etc.
Se eles tivessem IDEs decentes, achariam isso coisa de doido e uma total perda de tempo. Acho que todos concordamos que os dias de se fazer código com o notepad acabaram-se faz tempo.
Eu já acho isso um bom design. “Mais” não é “melhor”. Um exemplo de feature faltando é o sobrecarga de operadores. Cara, por isso que eu gosto de Java, os caras de caso pensado deixaram essa porcaria de fora.
cv1
Pode-se dizer que Strings literais no Java sao prefixadas com " e sufixadas com ". E nunca vi ninguem reclamar. Idem com simbolos no Ruby (onde o sufixo eh : ).
_fs
Sou preguiçoso e prefiro usar uma linguagem com a qual não tenho que pensar em performance.
1112
Sou preguiçoso e prefiro usar uma linguagem com a qual não tenho que pensar em performance.
Assembly? Temos definições diferentes de “preguiça”…
Z
ZehOliveira
Bem que eles poderiam ter implementado alguns outros já “de fábrica”, como fizeram com a classe String e o operador +. Isso faz uma falta escandalosa em qualquer código que use BigDecimal.
Qualquer expressão matemática com mais de cinco operações fica um monstro de n linhas com BigDecimal.
daniellibanori
Em primeiro lugar, peço desculpa a todos por entrar num fórum Java e defender Ruby.
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.
Quanto a fazer código em NotePad ou Ultra-IDEs, acho que talvez você não conheça o poder de uma boa linguagem. Uma boa IDE é indispensável quando se tem uma péssima linguagem. 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.
Sobrecarga de operador em Ruby
def >
#código
end
Difícil? Deve ser uma porcaria mesmo caso os caras da Sun resolvessem adicionar sobrecarga em Java, provavelmente algo parecido com C++, não?
Sem fanatismos, mas Java, pelo menos sintaticamente, é arcaica. Você não precisa pesquisar muito para descobrir porque foi construida assim: facilitar a adoção por parte do programadores oriundos de C e C++. E C++ não é famosa pela sua ótima sintaxe.
Java, sintaticamente, não possui nenhuma feature que possa ser considerada interassante. Não estou querendo desqualificar a linguagem, mas isso é uma verdade contundente. A Sun não ousou e a comunidade não vai ousar sair do padrão já estabelecido. Isso não é bom, nem mal, é apenas um dos camimhos que se pode tomar.
Lipe
Por favor, me apresente em qual linguagem que não precisamos nos preocupar com performance. Fiquei extremamente curioso.
Alias, performance e preguiça até aonde minha experiência mostra, são bem antagônicas, visto que quase sempre temos que pelejar para obter uma melhor performance.
Ruby tem sim problemas de performance, como outras linguagens já tiveram. Alias, você já está a algum tempo nesse forum e deve saber que esse já foi um dos argumentos utilizados contra Java. VMs otimizadas estão ai para isso. Ruby ainda não tem, mas um dia terá.
Não quero parecer agressivo, mas esse tipo de colocação me deixa profundamente triste quando vem de alguem com conhecimento de causa.
Proteu_Alcebidiano
Apoiado.
Sou a favor da simplicidade. Quando precisamos explicar demais alguma coisa sobre uma linguagem / tecnologia, é porque tem algo errado com a curva de aprendizado desta. Alguns tutoriais na internet me fizeram aprender ruby facilmente, não diria que seria a mesma coisa de java.
T+
_fs
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.
daniellibanori
Você deve ser preguiçoso mesmo.
_fs
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
daniellibanori
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
Caso você não tenha percebido, eu nem ao menos sitei o RoR até agora.
Sinto muito desanpota-lo.
F
flaleite
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.
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.
Proteu_Alcebidiano
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
Rafael_Nunes
Eu ia abrir outro tópico, mas xeu aproveitar esse.
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.
bzanchet
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.
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.
bzanchet
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):
...
<td><%=copia.midia.filme.titulo%></td>
...
Tudo certo, mostra 10 objetos por página. Então dou uma olhada no log e:
ProcessingCopiasController#index(for127.0.0.1at2006-10-2423:40:31)[GET]SessionID:1e48abb346b3304538fda95cc6484994Parameters:{"action"=>"index", "controller"=>"admin/copias"}[4;36;1mSQL (0.000000)[0m [0;1mSELECT count(*) AS count_all FROM copias [0m[4;35;1mCopia Load (0.000000)[0m [0mSELECT * FROM copias LIMIT 0, 10[0mRenderingadmin/copias/listwithinlayouts/standard-layoutRenderingadmin/copias/list[4;36;1mMidia Load (0.000000)[0m [0;1mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1[0m[4;35;1mFilme Load (0.000000)[0m [0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1[0m[4;36;1mFilme Columns (0.015000)[0m [0;1mSHOW FIELDS FROM filmes[0m[4;35;1mMidia Load (0.000000)[0m [0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1[0m[4;36;1mFilme Load (0.016000)[0m [0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1[0m[4;35;1mMidia Load (0.000000)[0m [0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1[0m[4;36;1mFilme Load (0.000000)[0m [0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1[0m[4;35;1mMidia Load (0.000000)[0m [0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1[0m[4;36;1mFilme Load (0.016000)[0m [0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1[0m[4;35;1mMidia Load (0.000000)[0m [0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1[0m[4;36;1mFilme Load (0.000000)[0m [0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1[0m[4;35;1mMidia Load (0.000000)[0m [0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1[0m[4;36;1mFilme Load (0.000000)[0m [0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1[0m[4;35;1mMidia Load (0.000000)[0m [0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1[0m[4;36;1mFilme Load (0.000000)[0m [0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1[0m[4;35;1mMidia Load (0.000000)[0m [0mSELECT * FROM midias WHERE (midias.id = 3) LIMIT 1[0m[4;36;1mDvd Columns (0.000000)[0m [0;1mSHOW FIELDS FROM midias[0m[4;35;1mFilme Load (0.000000)[0m [0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1[0m[4;36;1mSQL (0.000000)[0m [0;1mSELECT count(*) AS count_all FROM copias [0mCompletedin0.14000(7reqs/sec)|DB:0.10900(77%)|200OK[http://localhost/admin/copias]
Que ORM é esse?! É preciso mesmo fazer estas várias pesquisas iguais?!
daniellibanori
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]
bzanchet, fui eu quem escreveu isso, não esse tal de Alexandre, rs, que eu não sei quem é.
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…
Kenobi
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.
bzanchet
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. :?
daniellibanori
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.
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
Thiagosc
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.
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.
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.
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.
Estou sendo pragmático aqui, se você prefere pensar em termos de ideais, aí já é outra história e outra discussão.
Thiagosc
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.
peczenyj
Não precisa declarar tipos, mas tem Duck Typing
pcalcado
Thiagosc:
se procupar com diagrama de classes e arquiteturas
Uh? Eu tambem gosto de bolo de banana.
(i.e. Que raios tem a ver uma coisa com a outra?!?)
Proteu_Alcebidiano
er…o resultado foi melhor
Como falei, uso ferramentas conforme a necessidade. Dói menos escrever:
Pra mim, quanto menos eu ficar negociando com a API, melhor. Enfim, cada caso é um caso. =)
t+
daniellibanori
Em primeiro lugar, desculpem-me pela mensagem imensa.
Isso demonstra bem que você tem muito pouco conhecimento do que está criticando. A linguagem Ruby foi desenvolvida no início da década de 90, muito próximo ao Java inclusive. E naquela época não existiam IDEs com metade do poder que existem hoje.
VIm possui highlighting e auto-completion. Sinto muito que você não saiba utiliza-lo. Java ao ser criada nem ao menos tentou resolver a falta de ferramentas, correto?
Outro ponto, mais importante, é que é fato empírico que existe um nível saudável de simbolismos que aumentam a legibilidade do programa.
Esse tipo de argumentação mostra que você desconhece bem as implicações de tipagem dinâmica. Sei que ela tem seus prós e contras, mas dizer que o programa se torna menos seguro é atestar o desconhecimentoa respeito do assunto.
Só por curiosidade, quantas vezes na vida você ja chamou funções que não pertecem a um determinado objeto? Esse tipo de erro praticamente nunca ocorre. E você ainda possui mecanismos para verificação de tipo caso seja necessário.
Minha IDE chama-se VIm e um conjunto extenso de programas UNIX que atuam bem, e rápido, em um escopo reduzido.
E o que isso significa? Que não existe outra forma de debugger, profiler, testadores em Ruby?! Que a única forma de ter acesso a essas ferramentas são IDEs?!
Antes de criticar, por favor, se informe. Ruby possui um framework de testes integrado a biblioteca básica da linguagem. Ruby possui um utilitário de instalação e remoção de pacotes, gems em ruby, que já instala a documentação necessária. Ruby possui console interativo para você experimentar construções ou que você desejar fazer. Ruby possui um utilitário de consulta a documentação on-line.
Existem outras formas de se obter os resultados que para você só podem ser obtidos através de poderosas IDEs.
Para mim esse parece ser o SEU comportamento. Quem veio fazer críticas e falar que Ruby não possui boas IDEs foi você. Eu apenas argumentei que a linguagem não é tão dependente de um IDE específica e disse que a importância de uma boa IDE é outra. E que em Ruby a realidade do ambiente de desenvolvimento é outra. E existem boas IDEs ou ferramentas que não deixam o programador Ruby na mão, você apenas as desconhece.
Concordo. Eu me limitei ao aspecto sintático porque era esse o meu foco na discussão.
Em Ruby, um operador nada mais é que uma chamada a uma função. Você pode criar funções em Java?! Isso torna seu código mais complicado?
Concordaria com você caso me dissese que eles, os operadores, podem levar o programador a conclusões errôneas. Porém, em última instância, quem programa é o programador, e se o programador não sabe o que está fazendo então ele não deveria estar programando. Sobrecarga de operador não é uma tarefa proponsa a erros que necessita ser evitada.
Ruby, diferente de Java, não é uma linguagem que tenta proteger o programador de si mesmo. Ruby oferece soluções elegantes a bons programadores. Isso é uma faca de dois gumes, pois dá a liberdade de mals programadores fazerem coisas bizarras…
Sem querer ser agressivo. Mas comporte-se como se eu estivesse falando de uma linguagem, ferramenta, e não como de um parente seu.
Caso você não tenha lido, eu vou colocar em negrito para não passar em branco dessa vez:
Java, pelo menos sintaticamente, é arcaica.
Eu fui claro o suficiente quando estou me referindo apenas ao aspecto sintático da linguagem? Falei que Java é uma porcaria como um todo ou apenas disse que sintaticamente é arcaica? Por favor, não coloque palavras na minha boca, pois em nenhum momento eu disse que Java é uma porcaria.
Em nenhum momento eu disse o contrário. Mas acho que para alguns casos específicos, Java já está perdendo espaço para outras alternativas. Isso é bom, até para vocês, que vão se ver obrigados a se modernizar e correr atrás do tempo perdido em alguns aspectos.
Falta muito para você ser pragmático.
daniellibanori
Nossa… esse tipo de mensagem acaba com o meu dia. Só esse post representa uns 5 anos de desatualização em novas abordagens de desenvolvimento.
J
juzepeleteiro
daniellibanori:
Thiagosc:
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.
Nossa… esse tipo de mensagem acaba com o meu dia. Só esse post representa uns 5 anos de desatualização em novas abordagens de desenvolvimento.
Não esqueça que para o Thiago IDE boa é o RAD da IBM…
Z
ZehOliveira
Já já chegarão ao ponto de dizer: “Java é uma linguagem melhor por que seus programadores usam Eclipse, que é bonitinho e cheio de recursos, e Ruby é uma linguagem pior por que seus programadores usam Vi, que não não tem menus e janelinhas pipocando a todo momento”.
Eu programo Ruby no Eclipse. E aí? A linguagem ficou melhor por que eu tou usando o Eclipse? Pra mim, fica a mesma coisa, só que vou ter um custo bem menor pra executar determinadas tarefas.
Discussão mais sem sentido.
Daniel_Quirino_Olive
E até 2001 não existiam IDEs Java dignas de boas lembranças também. Será que não está demorando um pouquinho para criarem alguma coisa na linha para Ruby também (além do Eclipse RDT, é claro)?
Pessoalmente, acho $ e @ bem ruins, e acho coisas como blocos try/catch bem malas também. Os primeiros aumentam muito a minha “developer memory load”, pois eu preciso sempre ficar lembrando e associando que $=public. Ambos tornam meus códigos bem chatos de serem lidos.
Contudo, dificilmente alguém vai alterar a linguagem Java para oferecer um suporte a tratamento de exceções semelhante ao do IO nem alterar a linguagem Ruby para introduzir palavras-reservadas private/static/public/whatever pois isso leva a um risco de projeto que certamente não vale a pena correr. Então, acostumem-se com estas características, tentem achar um jeito de driblá-las e parem de achar que só por estes motivos fúteis uma linguagem é melhor/pior do que a outra.
Sabem uma coisa bem interessante que existe no Ruby e que ninguém aponta como um defeito do Java? Um sistema de tipos numéricos tão flexível quanto o Fixnum/Bignum. Isso é muito útil em Ruby e faz uma real diferença no dia-a-dia, principalmente se seu dia-a-dia for recheado por sistemas financeiros/científicos em que é preciso lidar o tempo todo com números que muitas vezes podem escapar da faixa de valores de um determinado tipo e dar um overflow sem você notar.
Contudo, Ruby poderia ter um sistema de threads decente, sem aquela implementação amadora de green threads que permite que implementemos sistemas multi-thread sobre o DOS (yupi! \0/ ).
F
flaleite
Uma coisa que estressa no RoR é que algumas coisas realmente são bem mais simples porém tem outras que para funcionar tem que se fazer umas gambis violentas (não que Java não tenha disso)…
Exemplo, vai brincar de Class Table Inheritance no Rails,vai …
Z
ZehOliveira
Isso é verdade.
Uma vez, em um pet project, eu precisei fazer um relacionamento duplo - algo do tipo um jogo tem o time da casa e o visitante - e não teve documentação, comunidade ou fórum que me respondesse como fazer isso. Tentei de tudo que tinha na documentação do Rails. Resultado: deixei a brincadeira pra lá.
Às vezes, o excesso de convenção no rails me deixa um pouco irritado.
peczenyj
Eu acho que vcs deviam voltar ao ANSI C.
Querem orientação à objetos?? Criem estruturas com ponteiros para funções
Thiagosc
Demonstra como? O que uma coisa tem a ver com outra? É fato que as nossas expectativas aumentam conforme o tempo passa.
Um exemplo: qualquer coisa menos completa que o javadoc hoje em dia seria encarada como uma falha terrível.
Outro exemplo: um browser com o nível de funcionalidade do IE 1.0 faria sucesso hoje em dia? Nós esperamos mais de um browser, apesar de ainda estarmos falando de “browsers”, o tempo passou e a nossa expectativa aumentou.
daniellibanori:
VIm possui highlighting e auto-completion. Sinto muito que você não saiba utiliza-lo. Java ao ser criada nem ao menos tentou resolver a falta de ferramentas, correto?
Outro ponto, mais importante, é que é fato empírico que existe um nível saudável de simbolismos que aumentam a legibilidade do programa.
haha. Sério, acho que essa atitude sua é coisa de fã. Dá uma olhada em C++ e diga se aqueles símbolos são realmente mais “fáceis” principalmente para um iniciante. Uma linguagem mais limpa é o ideal, mas essa é só a minha opinião.
Já trabalhei bastante com linguagens script para saber que somos obrigados a nos preocupar com muita coisa que não precisamos em Java por causa da tipagem.
Um dia na Discovery Channel eu vi um programa onde mostrava um pessoal construindo um prédio moderno ou coisa do gênero.
O cara tinha o modelo no computador e com uma impressora 3D (!) esculpiu o prédio num material lá. Logo eles tinham um modelo 3D do prédio.
Porque em TI temos tantos luditas? Por que a tecnologia não pode nos ajudar assim como ajuda várias outras áreas?
Cara, sabe o que significa um “I” no IDE, é de “integrated”. O intuito é agrupar um conjunto de funcionalidades, numa interface padrão, numa GUI.
Eu espero que não esteja advogando “a volta da linha de comando”, pois isso seria o cúmulo do sem noção.
daniellibanori:
E o que isso significa? Que não existe outra forma de debugger, profiler, testadores em Ruby?! Que a única forma de ter acesso a essas ferramentas são IDEs?!
Não coloque palavras que eu não escrevi. Isso singifica que uma ferramenta integrada com tudo isso é muito melhor.
daniellibanori:
E
Antes de criticar, por favor, se informe. Ruby possui um framework de testes integrado a biblioteca básica da linguagem. Ruby possui um utilitário de instalação e remoção de pacotes, gems em ruby, que já instala a documentação necessária. Ruby possui console interativo para você experimentar construções ou que você desejar fazer. Ruby possui um utilitário de consulta a documentação on-line.
Existem outras formas de se obter os resultados que para você só podem ser obtidos através de poderosas IDEs.
Desculpa, mas isso não passa nem perto do tanto que uma IDE provê.
E eu mostrei acima que isso é puro non-sense. Querer que profissionais larguem as suas ferramentas para trabalhar no “vi” é como pedir para escritores usarem pena, tinteiro e pergaminhos, ou então pedir que médicos troquem a ciência moderna por sangrias.
Imagina um Rubyista da engenharia: CAD, para quê? Tudo o que você precisa é de lápis, borracha e papel. Calculadora!? Que espécie de burro precisa de calculadores, eles não ensinam mais matemática hoje em dia?
Menos, menos. Você está cegamente tentando defender um ponto que é impossível de estar correto.
Operadores tem outros significado no nosso dia a dia. Nós pensamos naturalmente neles como relacionados a números e matemática apenas. Estou errado?
Se o propósito é apenas para “facilitar a matemática” porque eles não incluem isso na linguagem, ao invés de usar “sobrecarga de operadores”?
Operadores não são como funções, nem adianta comparar.
daniellibanori:
Concordaria com você caso me dissese que eles, os operadores, podem levar o programador a conclusões errôneas. Porém, em última instância, quem programa é o programador, e se o programador não sabe o que está fazendo então ele não deveria estar programando.
Você já trabalhou em projetos maiores que 1 programador? Se sim, então sabe que não apenas precisamos saber o que fazemos, mas também entender o que outros escrevem.
Com sobrecarga de operadores não é possível fazer afirmação nenhuma a respeito de nenhum operador pois nunca se sabe o que acontecerá. Uma função é mais descritiva do que executa.
Já disse, se o problema é matemática então que incluam o uso de operadores para BigInteger ou coisa do gênero.
Acredito que eu e vários aqui pensam o contrário.
Eu discordo. E acho Ruby muito feio.
daniellibanori:
Sem querer ser agressivo. Mas comporte-se como se eu estivesse falando de uma linguagem, ferramenta, e não como de um parente seu.
Não, estou falando de fatos. Não se analisa uma linguagem pela sua sintaxe apenas.
Isso não quer dizer absolutamente nada. A menos que esteja avaliando o Java como um todo, mas aí cai no que dissera antes.
1- Isso é sonho. Sempre existiram e existirão linguagens ocupando certos nichos, hoje não é diferente. Veja Perl, PHP e outras.
2 - Não há nada de errado em atualizar, fazemos isso o tempo todo (pelo menos quem quer sobreviver) o errado é um bando de bullies pela internet atacar outros e ameaça-los como crianças
Existe uma diferença entre genuínamente aprender algo melhor, ou largar o melhor para trabalhar no vi assim como faziam nos anos 80.
daniellibanori:
Falta muito para você ser pragmático.
Será?
peczenyj
> Eu espero que não esteja advogando "a volta da linha de comando", pois isso seria o cúmulo do sem noção.
Deus te ouça. Os verdadeiros programadores vão prosperar, nesse dia. }-)
> Operadores tem outros significado no nosso dia a dia. Nós pensamos naturalmente neles como relacionados a números e matemática apenas. Estou errado?
> Se o propósito é apenas para "facilitar a matemática" porque eles não incluem isso na linguagem, ao invés de usar "sobrecarga de operadores"?
> Operadores não são como funções, nem adianta comparar.
intx=2+3;// isso podeStringx="oi"+"boi";// isso tambempublicclassComplex{doublereal;doubleimaginarypublicComplex(doubler,doublei){this.real=r;this.imaginary=i;}// nao seria mais facil sobrecarregar +publicComplexadd(ComplexX){return...;}}
"Operadores não são como funções" :shock:
a unica diferença, ao meu ver, é que quando usamos operadores podemos lidar com procedência.
Thiagosc
peczenyj:
“Operadores não são como funções” :shock:
a unica diferença, ao meu ver, é que quando usamos operadores podemos lidar com procedência.
Acho que já disse bastante do que poderia ser dito sobre problemas com manutenção e entendimento de código, mais que isso talvez você devesse procurar no Google tópicos a respeito. Tenho a impressão que tem um pessoal aqui que responde apenas pelo prazer de contrariar, se fazendo de desentendidos.
Se você acha que sobrecarga de operadores é “o que há” em termos de linguagem, vai que é sua Taffarel!
daniellibanori
Você não sabe o que fala.
Vou parar por aqui essa discussão com você.
Estou contente com a performance do meu desenvolvimento e não preciso convencer ninguém de que minhas ferramentas e metodologias são boas.
Boa sorte
peczenyj
As caracteristicas da linguagens influenciam na sua manutenção? talvez as caracteristicas de quem programou influencie.
alem do mais, sobrecarga de operadores tem no C++, D, C#, VB e não vejo os programadores reclamando. perigoso mesmo é herança, no java e outras linguagens orientadas à objetos.
class Stack extends Vector
class Properties extends Hashtable
entende o que eu digo?
daniellibanori
Não estou apenas falando de sobrecarga de operador, estou falando de:
sobrecarga de operadores
code blocks
mixins
classes abertas
introspecção decente
Isso são features, mas vou um pouco além disso. Estou falando principalmente de filosofia da linguagem.
F
flaleite
eu prefiro comprar pão por unidade e não por peso… :lol:
thokk
É uma forma mais dinamica e tranparente!!!
Quer dizer que é bem mais fácil de trabalhar com ela!!!
e outras frameworks
Active Record;
Action Pack;
Action Mailer;
Active Support;
Active WebServices.
naum esquecendo delas!!!
rsrsrsrs
daniellibanori
Posso saber quais, na sua opnião? Eu sei que existem algumas coisas que estão bem longes da perfeição, como internacionalização, por exemplo. Mas gostaria de saber na sua opnião o que precisa de gambis.
Vamos lá então.
Partindo do pressuposto que você já tem um banco de dados funcionando.
Não tenho nada a ver com a discussão de vocês, mas… você acha que não?
F
flaleite
Posso saber quais, na sua opnião? Eu sei que existem algumas coisas que estão bem longes da perfeição, como internacionalização, por exemplo. Mas gostaria de saber na sua opnião o que precisa de gambis.
Uma coisa que tem que fazer uma gambi violenta é a questão do Class Table Inheritance, ie, montar uma herança com uma tabela para cada classe. O RoR suporta apenas Single Table Inheritance e para fazer funcionar tem que fazer algumas gambis que com tabelas e views. Antes ainda era preciso colocar alguns patches no ActiveRecord mas atualmente isso não é mais necessário.
Z
ZehOliveira
Tem coisas que só o GUJ faz por você. Uma comunidade Java foi o único lugar onde solucionaram minha dúvida de Ruby on Rails. :mrgreen:
Valeu, daniel!
Thiagosc
daniellibanori:
Estou contente com a performance do meu desenvolvimento e não preciso convencer ninguém de que minhas ferramentas e metodologias são boas.
Acho que ninguém é doido de deixar de usar algo que seja melhor, foi assim que Java conquistou se espaço, ele oferecia coisas que outras linguagens e plataformas não ofereciam. O fato é que Ruby não é melhor que Java, não a ponto de substituí-lo, por mais que os fanáticos repitam o contrário.
Outra coisa é “virar o mundo de cabeça para baixo” para que “as vantagens” do Ruby sejam vantagens, isto é, sobrecarga de operadores, classes abertas, tipagem dinâmica mais trabalhar no notepad e com a linha de comando usando uma documentação escrota. Qualquer ser humano normal simplesmente repudiaria tal regressão, mas fazendo a inversão de conceitos, o que é ruim fica bom e o que é bom fica ruim, aí sim Ruby sai “vitorioso”. Não sei como retórica sozinha pode ser boa para essa área de TI, o que precisamos são de ferramentas sempre melhores não a retórica “voltemos para a linha de comando”.
daniellibanori
Nossa, quanta bobagem. Estou impressionado.
fmeyer
Thiagosc:
Outra coisa é “virar o mundo de cabeça para baixo” para que “as vantagens” do Ruby sejam vantagens, isto é, sobrecarga de operadores, classes abertas, tipagem dinâmica mais trabalhar no notepad e com a linha de comando usando uma documentação escrota. Qualquer ser humano normal simplesmente repudiaria tal regressão, mas fazendo a inversão de conceitos, o que é ruim fica bom e o que é bom fica ruim, aí sim Ruby sai “vitorioso”. Não sei como retórica sozinha pode ser boa para essa área de TI, o que precisamos são de ferramentas sempre melhores não a retórica “voltemos para a linha de comando”.
Documentacao escrota ??? acho que voce precisa ler um pouco … a documentacao para ruby tem mais exemplos do que o javadoc q é apenas uma assinatura da funcao. http://www.ruby-doc.org/
Quanto a ide … voce mesmo sabe que existe o radrails e textmate … entao nao fala besteira.
Outra coisa, eu sugiro as pessoas aqui apenas responderem o tiago quando ele resolver mostrar a cara e o background dele aqui no guj.
ele fala tanta merda e tanta baboseira que nem mostrar a cara ele tem coragem …
Se ocorrer duas cópias na lista apontando pro mesmo filme, deveria mostrar o titulo do filme como ‘teste’, na segunda? Ele não muda, porque o valor é lido novamente do banco de dados.
ProcessingCopiasController#index(for127.0.0.1at2006-10-2721:43:34)[GET]SessionID:b0f8879f356885b92699a439cc29c231Parameters:{"action"=>"index", "controller"=>"admin/copias"}e[4;36;1mCopia Columns (0.016000)e[0m e[0;1mSHOW FIELDS FROM copiase[0me[4;35;1mSQL (0.016000)e[0m e[0mSELECT count(*) AS count_all FROM copias e[0me[4;36;1mCopia Load (0.000000)e[0m e[0;1mSELECT * FROM copias LIMIT 0, 10e[0mRenderingadmin/copias/listwithinlayouts/standard-layoutRenderingadmin/copias/liste[4;35;1mMidia Load (0.016000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0me[4;36;1mFita Columns (0.000000)e[0m e[0;1mSHOW FIELDS FROM midiase[0me[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;36;1mFilme Columns (0.015000)e[0m e[0;1mSHOW FIELDS FROM filmese[0me[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0me[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0me[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0me[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0me[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0me[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 2) LIMIT 1e[0me[4;36;1mFilme Load (0.000000)e[0m e[0;1mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;35;1mMidia Load (0.000000)e[0m e[0mSELECT * FROM midias WHERE (midias.id = 3) LIMIT 1e[0me[4;36;1mDvd Columns (0.015000)e[0m e[0;1mSHOW FIELDS FROM midiase[0me[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;36;1mMidia Load (0.016000)e[0m e[0;1mSELECT * FROM midias WHERE (midias.id = 3) LIMIT 1e[0me[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;36;1mMidia Load (0.000000)e[0m e[0;1mSELECT * FROM midias WHERE (midias.id = 3) LIMIT 1e[0me[4;35;1mFilme Load (0.000000)e[0m e[0mSELECT * FROM filmes WHERE (filmes.id = 3) LIMIT 1e[0me[4;36;1mSQL (0.000000)e[0m e[0;1mSELECT count(*) AS count_all FROM copias e[0mCompletedin0.20400(4reqs/sec)|DB:0.10900(53%)|200OK[http://localhost/admin/copias]
Esse comportamento é normal? É o correto, esperado?
Thiagosc
Luca:
Olá
Foi esse o cara que disse que 640KB era memória suficiente para todos, e mais tarde disse que a internet não ia pegar?
O pessoal daqui apela.
Kenobi
Reconheço o poder do Ruby e estou no momento aprendendo, até para ter uma visão de um mundo diferente e mudar alguns conceitos - paradigmas.
Contudo, ainda não consigo entender qual a real vantagem de classes abertas. Para um sistema Enterprise, onde muitas vezes eu quero fazer uma caixa preta e expor somente parte do meu serviço fica bastante complicado - segurança da informação.
Eu nem vou entrar no detalhe sobre performance, pois não é o foco.
Outra coisa, tem como vc criar um arquivo de deploy em Ruby ou Rails, como no java - jar, war, ear ? Pq ficar rodando rake (ant) o tempo todo e milhares de scripts, não parece uma solução ideal de deployment, ao menos não para enterprise, onde normalmente quem faz o deployment é a equipe de infra-estrutura, que muitas vezes possui conhecimento limitado.
peczenyj
Não tenho nada a ver com a discussão de vocês, mas… você acha que não?
Sim, as características de uma linguagem influenciam na sua manutenção, entretanto as características de quem irá implementa-la influencia mais. O contexto que eu tentei usar a pergunta é que uma linguagem não dificulta as coisas por si só, sempre tem um “artista” no meio.
Se eu fosse eleger uma linguagem de dificil manutenção pelas caracteristicas eu citaria C. Entretanto o Kernel do Linux, por exemplo, não parece ter tantos problemas assim. O numero de erros por linha de código é extremamente baixo e ninguem nunca disse ‘meu deus o codigo do kernel linux é hediondo, quando descobrirem um bug vai ser um inferno de resolver’.
Devemos isto graças ao sr. Linus Torvalds e uma grande trupe de pessoas habeis em C que não abusam (muito) do C.
Alguem aqui conhece uma ‘lenda’ chamada Lisp on Lines ? Parece ser uma versão lisp do rails. (deve (ser (muito 'legal))(!))
J2Alex
Não tenho nada a ver com a discussão de vocês, mas… você acha que não?
Sim, as características de uma linguagem influenciam na sua manutenção, entretanto as características de quem irá implementa-la influencia mais. O contexto que eu tentei usar a pergunta é que uma linguagem não dificulta as coisas por si só, sempre tem um “artista” no meio.
Se eu fosse eleger uma linguagem de dificil manutenção pelas caracteristicas eu citaria C. Entretanto o Kernel do Linux, por exemplo, não parece ter tantos problemas assim. O numero de erros por linha de código é extremamente baixo e ninguem nunca disse ‘meu deus o codigo do kernel linux é hediondo, quando descobrirem um bug vai ser um inferno de resolver’.
Devemos isto graças ao sr. Linus Torvalds e uma grande trupe de pessoas habeis em C que não abusam (muito) do C.
Alguem aqui conhece uma ‘lenda’ chamada Lisp on Lines ? Parece ser uma versão lisp do rails. (deve (ser (muito 'legal))(!))
Acho (opinião pessoal) um código Java bem mais legível, portanto mais fácil de dar manutenção (ao menos aos simples mortais) do que C…
ronaldtm
Veja se isso resolve (não tenho a mínima idéia, só fiz a pergunta no fórum do rubyonbr ):
Existe uma gem muito interessante no Ruby chamada Capistrano. Basta:
$rake deploy
E temos o codigo submetido ao SVN sendo instalado no servidor e reiniciada os processos fastcgi entre requisições.
Muito interessante o Capistrano, pois você pode definir uma série de tarefas dentro de um deploy, como atualização do cluster de banco de dados, back-ups, execução de scripts, etc.
Isso ai já deve ajudar a levar um ponta pé inicial
carlos_eduardo1
macfly2500:
Uma pergunta:
O código é interpretado por um CGI?
Ele abre um processo no servidor a cada requisição do usuário, assim como o PHP quando não instalado como sapi?
Confere esta informação?
Obrigado
Se tu estiver usando como cgi… sim, se tu estiver usando fastcgi não, apesar de ser possível rodar rails como cgi, não é aconselhado.
carlos_eduardo1
Que estranho, normalmente aqui no brasil a situação é adversa:
os desenvolvedores sofrendo pra convencer os chefes de que
RoR é promissor e vale a pena investir.
Espero que o comportamento "chefe-sugestionando-rails"
prolifere =)
Pois é, se for assim é um chute no s***
Imagine 50-60 usuários conectados, cada um com um processo no servidor.
Rapaz, não é obrigado a usar CGI, você pode usar fastcgi + apache, Mongrel ou ainda Lighttpd com fastcgi normalmente, ai não tem essa de 50 ou 60 usuários tomando conta do teu servidor, veja a http://www.37signals.com veja 500.000 Usuários depois que page views são BEM MAIS…
carlos_eduardo1
Ambiente de testes e desenvolvimento da pra usar webrick mesmo mais veja eu ando usando a http://www.railsplayground.com não é um servidor dedicado e tem uns planos bem legais, meu site e minhas aplicações estão sobre Mongrel , e Lighttpd + Fastcgi.