então aproveitando. Pq Ruby, ela é melhor do q Python ?
V
Vegetto
Eu acho que é 100x melhor aprender as duas… Python é muito consolidade e você encontra muita coisa pronta…
Pra aprender python eu recomendo o livro Dive into Python(disponivel online gratuitamente)
Proteu_Alcebidiano
Python está aí há mais tempo, uns 15 anos, acho. Não estudei Python a fundo, mas Ruby está me agradando muito, principalmente na escrita de algoritmos. Essa coisa dele ter inteiros grandes e suportar aritmética invervalar (ranges) nativamente é joia pra que faz algoritmos =) A facilidade é óbvia…usar coisas como (Ruby / Python tem isso)
n = 2**100
s = n + 3**200
...
...
ao inves de
BigIntegern=newBigInteger("2").pow(100);......
É mais transparente =)
Enfim, conforme dito, isso depende do caso de uso.
J
juzepeleteiro
Python é a liguagem querida do pessoal do Google. Se você quiser um dia trabalhar no Google, aprender essa liguagem é um plus danado.
O próprio google é feito em C e Python.
[]'s
Jose Peleteiro
V
Vegetto
juzepeleteiro:
Python é a liguagem querida do pessoal do Google. Se você quiser um dia trabalhar no Google, aprender essa liguagem é um plus danado.
Claro que um PhD e mais algumas publicações relevantes também ajudam =D
Thiagosc
Como eu odeio essa palavra “pragmático”. Hoje em dia qualquer mané tomando cervejas num boteco é “pragmático”. Essa palavra é tão (mal) utilizada que ganhou conotação de “algo positivo” e perdeu totalmente o significado, principalmente em TI.
J
juzepeleteiro
Vegetto:
juzepeleteiro:
Python é a liguagem querida do pessoal do Google. Se você quiser um dia trabalhar no Google, aprender essa liguagem é um plus danado.
Claro que um PhD e mais algumas publicações relevantes também ajudam =D
Para ser honesto nem tanto, eu tenho um amigo que foi e nem tem isso. O que o pessoal ficou impolgado na entrevista (nao souberam nem esconder isso) foi o fato dele manjar de Python.
saoj
Python é bem vista nos Estados Unidos, mas a meu ver Ruby é mais moderna.
Sobre Pragmatismo:
ser direto, claro e objetivo.
Na minha opinião, e talvez isso se deva ao fato de eu ser um programador, tudo na vida com exceção de sexo, quanto mais pragmático melhor é…
Quer um exemplo de falta de pragmatismo? Veja como o webwork é pragmático na questão do file upload:
Agente já se desentedeu uma vez por causa disso. Não critique um framework ou seja lá o que for, se você não têm conhecimento e experiência nele. Você pode até criticar a documentação do WebWork.
Para fazer upload no WebWork você declara um set em arrays de byte ou um FileItem e pronto. Isso tudo que você viu ai na documentação é se você quiser fazer na mã0 e ter um certo controle, ou sei lá o motivo.
Um abraço,
Jose Peleteiro
saoj
Não quero me desentender com vc não, peleteiro.
Sö me mostre onde está a documentação do WebWork onde FileUpload é simples e pragmático. Deve ter em algum lugar e eu que não consegui encontrar mesmo…
Acho que vc dveria ajudar os caras do webwork a documentar então. Pois as suas explicações são sempre mais simples que a documentação deles…
marcelomartins
Não, em hipótese alguma.
Po, dizer que Ruby é 100 vezes melhor que python não dá. O ruby pode ser melhorzinho em alguns casos (que não consigo imaginar nenhum).
J
juzepeleteiro
Sim, a documentação deles é uma bosta. Eles vendem livros e isso que eles fazem para documentar.
Bem, eu tenho mais de 10 projetos em Webworks na bagagem para conhecer ele bem. E concordo que a documentação deles é uma bosta. Para usar WebWork você têm que comprar livros.
O conceito todo, que até agora foi só isso, está no tratamento de tipos compostos do WebWork. Você declara byte de arrays como um tipo la do tipo file upload que eu nao me lembro o nome e pronto.
Assim como você faria para converter aquele monte de string em um tipo Cliente por exemplo automaticamente.
Aquilo é um wiki, aonde as pessoas colocam as soluções que elas preferem.
Eu também não quero me desentender não, mas é chato toda hora você forçando e criticando os frameworks com base em conhecimento de uma página de documentação/wiki.
Disse que devido a moda e falatório em torno de Ruby seria 100 vezes mais vantajoso partir para Ruby. Se bem que em termos de mercado Phyton deve estar muito na frente!
saoj
Talvez não entenda tanto quanto vc, mas com certeza um pouco mais do que uma página de wiki.
Eu acho o WebWork um ótimo framework, mas como vc mesmo falou a documentação é um lixo, logo não posso considerar sua produtividade alta, pois eu não quero ter que ler um livro para ser produtivo.
E o falto dele usar xwork, não ter input só injection, um monte de XML, depender do Spring para IoC, enablers pra tudo que é lado e essas coisas complicam mais do que ajudam.
Eu não tenho dúvida em afirmar que o Mentawai, vRaptor, Rife e Stripes são frameworks mais pragmáticos e modernos que o WebWork.
Me ajuda aqui para eu entender isso de vez. Como o link que vc passou sugere eu preciso colocar os métodos abaixo na minha action para pegar o arquivo. Mas como vou pegar um arquivo de File ??? Isso é um java.io.File ??? Cadê o meu byte[] com o conteúdo do arquivo ??? Ou um InputStream ???
Talvez não entenda tanto quanto vc, mas com certeza um pouco mais do que uma página de wiki.
Eu acho o WebWork um ótimo framework, mas como vc mesmo falou a documentação é um lixo, logo não posso considerar sua produtividade alta, pois eu não quero ter que ler um livro para ser produtivo.
Tudo bem, mas eu acredito em treinamento como parte de uma preparação para ser produtivo.
Desculpa, eu já acho a ideia de input/output em Java (fortemente tipada) muito anos 90.
Perceba, que não é só passar os parametros por setter, mas convertelos para tipos concretos também.
Não considero o WebWork um framework moderno também, inclusive nenhum projeto que estou trabalhando hoje usa ele e eu não usaria mais ele. Mas ele já foi muito bom. Hoje eu usaria, em Java, um SpringMVC ou JBoss Seam e talvez um JSF (dependendo do projeto).
saoj:
Me ajuda aqui para eu entender isso de vez. Como o link que vc passou sugere eu preciso colocar os métodos abaixo na minha action para pegar o arquivo. Mas como vou pegar um arquivo de File ??? Isso é um java.io.File ??? Cadê o meu byte[] com o conteúdo do arquivo ??? Ou um InputStream ???
public void setMyDoc(File myDoc) { ...}
public void setMyDocContentType(String contentType) { .... }
public void setMyDocFileName(String filename) { .... }
Você pode ler o file. Ou então utilizar a primeira maneira que eu disse.
Das três maneiras é possível (a terceira não é bem documentada). Eu te mandei um link e uma sugestão para você dar uma lida sobre type conversione OGNL, ai você entenderia o que estou falando.
saoj
Acho isso preconceito. Uma coisa é vc ter HttpServletRequest, HttpServletResponse e outras classes concretas bizarras. Outra coisa é ter duas interfaces input/output bastante simples e práticas e que vão facilitar a vida dos filtros, que são o ponto principal de um framework web ao meu ver.
Sim, pra isso que os filtros já convertem isso automaticamente pra vc e populam objetos. E vc tem o total controle disso.
Preciso entender de OGNL para fazer um FileUpload? Deixa isso pra lá pois já fugimos do tópico…
J
juzepeleteiro
saoj:
peleteiro:
Desculpa, eu já acho a ideia de input/output em Java (fortemente tipada) muito anos 90.
Acho isso preconceito. Uma coisa é vc ter HttpServletRequest, HttpServletResponse e outras classes concretas bizarras. Outra coisa é ter duas interfaces input/output bastante simples e práticas e que vão facilitar a vida dos filtros, que são o ponto principal de um framework web ao meu ver.
Talvez seja, mas é só minha opinião pessoal. Tem gente que gosta, eu não acho legal não. Mas estou aberto a amanha dizer que eu estava errado.
saoj:
Perceba, que não é só passar os parametros por setter, mas convertelos para tipos concretos também.
Sim, pra isso que os filtros já convertem isso automaticamente pra vc e populam objetos. E vc tem o total controle disso.
Legal, os converters são PropertyEditor? (no Webwork não é (o que acho muito ruim), é só uma pergunta mesmo) E como você tratou dos casos em que as collections são usam genenerics?
saoj:
Peleteiro:
Eu te mandei um link e uma sugestão para você dar uma lida sobre type conversione OGNL, ai você entenderia o que estou falando.
Preciso entender de OGNL para fazer um FileUpload? Deixa isso pra lá pois já fugimos do tópico…
[/quote]
Para você entender de WebWorks sim. Esse tipo de coisa, como converter um arquivo enviar para um tipo na sua action é tratada pelo OGNL. Entender de OGNL é pre-requesito para entender bem o WebWorks.
Z
ZehOliveira
Que monte de XML? Eu tenho alguns projetos bem grandinhos com o WebWork e o único XML é o xwork.xml (não uso o validator dele). E configurá-lo é bem fácil.
Se uma interface input faz tanta falta assim, você pode usar a ActionContext pra pegar os parametros na unha. Mas definirmos que isso é má prática de programação, por que gera um forte acoplamento e quebra a inversão de controle (o objeto recebe tudo o que precisa pra ser executado); do mesmo jeito seria se fosse o Menta e o pessoal quisesse usar a Input invés de injection.
Enablers não existem mais, isso é coisa de versões muito antigas. E não depende do Spring pra IoC, o ponto é que a equipe do WebWork só achou necessário apenas implementar o factory pra Spring, quem quiser fazer pra outro engine pode fazer, o *framework é flexível a esse ponto. (Não gosto da palavra flexível, assim como pragmático…)
Já usei Mentawai, vRaptor e WebWork em alguns projetos de vários portes. O vRaptor é sim mais moderno e prático que os outros, mas não tem integração com nada por default. Acho que ele ganha de goleada por usar recursos do Java 5…
WebWork e Menta, por outro lado, eu diria que são praticamente a mesma coisa, só que fazem algumas coisas de modos diferente e chamam outras de nomes diferentes, mas são frameworks da mesma geração. Não vejo um sendo mais prático ou moderno que outro (não tou dizendo que não são, mas que estão no mesmo nível).
Z
ZehOliveira
Esqueci de falar de Java x Python.
Python é bem fácil de aprender e tem uma sintaxe muito clara, o código fica bem fácil de ler. Conta com uma diversidade enorme de módulos implementados, uma comunidade grande (mas não supera a de Java) e também é muito bem documentada.
Uma vantagem que eu vejo de Python em relação a Java é que os módulos, aparentemente, são desenhados pensando na simplicidade, em facilitar a vida do programador (em Java, as vezes, dá a impressão que o projetista de uma API queria fazer algo mais estado da arte do que simples de usar).
Ruby é uma linguagem mais moderna que as outras duas, mas tem o preconceito por causa do hype. Mas aprender uma linguagem com recursos como blocks e closures é interessante, embora não ela não seja a única, acho que é a mais fácil e acessível pra quem tá começando.
saoj
O Menta suporta os dois também. Basta vc colocar o InjectionFilter como filtro global que todos os parametros do input vão pular para a Action (ou direto para o model). Acho legal ter os dois, pois há casos que o input ali prontinho pra vc vai facilitar bastante e haverá outros casos que vc quer deixar totalmente disacoplado do framework como vc falou, apesar de na minha opinião esses casos serem minoria, mas isso de novo vai do gosto da pessoa.
O IoC do WebWork é (pelo menos era) cheio de limitações. Achei que a integração com o Spring se deveu a esse fato.
Nada te impede de usar Java 5 com o Mentawai. Configuração via Annotations é de novo uma questão de gosto pessoal. Eu prefiro centralizar tudo num lugar só. Outros vão preferir anotar cada action e por aí vai. Vai gerar o acoplamento que vc condenou mais acima.
Todos os frameworks evoluem. O VRaptor1 era outro produto assim como o WebWork1. Quando eu conheci o webwork tinha sim enablers até para session e um monte de outras maluquices que agora não tem pois evoluiu.
Tirando o Mentawai eu gosto do VRaptor, Riffe e Stripes. O VRaptor tb é bastante parecido com o Stripes.
Um framework tem que ser avaliado junto com a documentação, e isso o WebWork deixa muito a desejar, ficando até mesmo complicado para quem o olha pela primeira vez.
Acho que o VRaptor e o Mentawai tá provando para Bruce Tate e cia do RoR que dá sim para fazer coisas simples com Java. É só entender que o simples pode tb ser poderoso, principalmente se faz o mesmo trabalho com qualidade e em menos tempo.
Thiagosc
saoj:
Python é bem vista nos Estados Unidos, mas a meu ver Ruby é mais moderna.
Sobre Pragmatismo:
ser direto, claro e objetivo.
Na minha opinião, e talvez isso se deva ao fato de eu ser um programador, tudo na vida com exceção de sexo, quanto mais pragmático melhor é…
Cara, acho que esse “ser direto” é muito subjetivo. Não há uma métrica para tal e linhas de código realmente não significam absolutamente nada.
Por exemplo, as classes IO podem ter seus defeitos (por isso foi feito o NIO) mas para mim faz sentido o como as classes são estruturadas. O fato de alguém teclar um pouco mais porque usa notepad ao invés de um Eclipse ou Netbeans para usar um BufferedOutputStream não torna aquilo menos “direto”, levando-se em conta que é uma classe genérica para ser usada em diversas situações e diversas aplicações. Pela lógica do OO aquilo faz sim sentido e é consistente com o restante do sistema.
Você pode depois criar algum método que faça tudo de uma vez nas suas próprias classes.
O class library do Java é o que dá a produtividade à plataforma, e nisso o Java é imbatível. O que mais se aproxima é o .Net, mas ainda falta comer feijão para chegar no Java.
J
juzepeleteiro
Eles implementaram para o PicoContainer também.
cv1
Sem ofensas, mas o pessoal que ja migrou pra Rails nao ta nem ai pra frameworks web em Java, a nao ser pra falar mal.
J
juzepeleteiro
Sem ofensas, mas o pessoal que ja migrou pra Rails nao ta nem ai pra frameworks web em Java, a nao ser pra falar mal. ;)
Huahuahuahuahauha…
Agora falando sério, o dia que você mudar a sua classe em Java e apertar o F5 para ver como ficou pode até ser que o cenário mude.
J
juzepeleteiro
Sim, fazer um container de IoC não é um tarefa trivial. Não é simplementes chegar e colocar uma instancia no lugar de uma interface.
Não sei se o IoC do Menta é IoC bom. Ele tem hot-swap, lazy creation, eager creation, controle de dependências ciclicas, eventos, mixin, controle de ciclo de vida, dentro outros?
Z
ZehOliveira
saoj:
Nada te impede de usar Java 5 com o Mentawai. Configuração via Annotations é de novo uma questão de gosto pessoal. Eu prefiro centralizar tudo num lugar só. Outros vão preferir anotar cada action e por aí vai. Vai gerar o acoplamento que vc condenou mais acima.
Não tava falando de configuração usando anotação, mas sim disso:
Tiago, não força. Isso só é possivel em java, sem fazer um redeploy, se for mudança do corpo de um método. Qualquer alteração na assinatura das classes ou configuração o redeploy é necessário.
Tiago, não força. Isso só é possivel em java, sem fazer um redeploy, se for mudança do corpo de um método. Qualquer alteração na assinatura das classes ou configuração o redeploy é necessário.
Não, não estou forçando não, até porque esse programa usa a JVM da IBM. Sabe existe um mundo além da Sun, portanto eu não entendo o que esse seu link do site deles quer dizer.
Não sei como o RAD faz, se ele faz um redeploy por debaixo dos panos no WebSphere, mas sei que o F5 funciona. Ah sim, funciona.
cv1
Ou seja, vc esta ai batendo a mao no peito sobre uma feature que vc nao tem a menor ideia de como funciona, mas vc ‘sabe que funciona, pq ja viu acontecer’.
Me faz querer voltar pro PHP, as vezes.
Fabricio_Cozer_Marti
Com o redeploy automático configurado na maioria dos containers, é possível sim você alterar uma classe e esperar um pouco( tempo que o container atualiza o classloader ) e depois é só apertar F5. E com PHP é possível ? Pelo que eu saiba com classes em PHP não é possível alterações serem repercutidas em run-time.
cv1
Fabricio, PHP sempre foi edita-f5-edita-f5. De onde vc tirou essa?
Rubem_Azenha
juzepeleteiro:
Sim, fazer um container de IoC não é um tarefa trivial. Não é simplementes chegar e colocar uma instancia no lugar de uma interface.
Não sei se o IoC do Menta é IoC bom. Ele tem hot-swap, lazy creation, eager creation, controle de dependências ciclicas, eventos, mixin, controle de ciclo de vida, dentro outros?
A IoC do Mentawai cobre a maior parte dos casos. É mais para criar a interface de serviços e injetas automaticamente as dependências. Se você quer algo mais complexo, veja se você realmente precisa disso. Se precisar, o mentawai esta bem integrado com Spring.
Z
ZehOliveira
Ouxe. Em PHP só existe run-time.
Java me deixa com muita saudade de php quando o assunto é editar-f5, era tudo muito mais simples e rápido. O Tomcat é bizarro nesse assunto. Além de ter um redeploy muito lento, às vezes dá uns paus que só reiniciando ele pra voltar a funcionar.
Não tá funcionando? Reinicia o tomcat. Ainda não funciona? Limpa o diretório work. Nada ainda? Reinicia a máquina. - Pronto. Funcionou.
:shock:
Fabricio_Cozer_Marti
Retificando, o PHP é reload-auto. Tá certo Carlos.
marcelomartins
Para um programar agil, com F5 enabled, é só usar o Jetty.
Se tua ide favorita tem auto complile, quando é salvo um arquivo .java ele compila, poe no diretorio de output, e o jetty já da o reload nele automaticamente
J
juzepeleteiro
marcelomartins:
Para um programar agil, com F5 enabled, é só usar o Jetty.
Se tua ide favorita tem auto complile, quando é salvo um arquivo .java ele compila, poe no diretorio de output, e o jetty já da o reload nele automaticamente
Para um programar agil, com F5 enabled, é só usar o Jetty.
Se tua ide favorita tem auto complile, quando é salvo um arquivo .java ele compila, poe no diretorio de output, e o jetty já da o reload nele automaticamente
O mais legal de redeploy automático com Java é que 101% dos containers e JVMs geram object leaks. Sem falar se se você usar coisas como Spring, Hibernate & cia, vai esperar um século dependendo do caso para a nova versão estar em operação.
marcelomartins
louds:
O mais legal de redeploy automático com Java é que 101% dos containers e JVMs geram object leaks. Sem falar se se você usar coisas como Spring, Hibernate & cia, vai esperar um século dependendo do caso para a nova versão estar em operação.
Beleza, então de novo, reload automatico de classes para terem efeitos na web só com linguagens dinamicas, com java não dá. Mesma história da outra thread sobre o activeRecord.
louds
marcelomartins:
louds:
O mais legal de redeploy automático com Java é que 101% dos containers e JVMs geram object leaks. Sem falar se se você usar coisas como Spring, Hibernate & cia, vai esperar um século dependendo do caso para a nova versão estar em operação.
Beleza, então de novo, reload automatico de classes para terem efeitos na web só com linguagens dinamicas, com java não dá. Mesma história da outra thread sobre o activeRecord.
Da sim, é a arquitetura J2EE que não foi feita pensando nisso.
marcelomartins
louds:
marcelomartins:
louds:
O mais legal de redeploy automático com Java é que 101% dos containers e JVMs geram object leaks. Sem falar se se você usar coisas como Spring, Hibernate & cia, vai esperar um século dependendo do caso para a nova versão estar em operação.
Beleza, então de novo, reload automatico de classes para terem efeitos na web só com linguagens dinamicas, com java não dá. Mesma história da outra thread sobre o activeRecord.
Da sim, é a arquitetura J2EE que não foi feita pensando nisso.
Então não dá
Thiagosc
Não, Zé. Se eu disse que ele faz isso é porque eu uso essa ferramenta e é assim que eu trabalho.
Agora, diga-me você, que teorias científicas do big bang, do significado da vida e tudo mais estão envolvidas no ato de se pressionar o F5 e ver o resultado no browser?
Se duvida então baixe o trial e veja você mesmo.
Thiagosc
louds:
O mais legal de redeploy automático com Java é que 101% dos containers e JVMs geram object leaks. Sem falar se se você usar coisas como Spring, Hibernate & cia, vai esperar um século dependendo do caso para a nova versão estar em operação.
Sorte que geralmente isso é usado num localhost quando se está em desenvolvimento e testes. Muda aqui, testa, muda ali, testa…
Falando assim até parece que isso é um problema generalizado em servidores de produção. hehehe Isso, lógico, considerando-se que o que disseste está correto.
Esse pessoal hypista quer malhar o Java de qualquer jeito. Eu me sinto moralmente obrigado a responder.
Z
ZehOliveira
Tempo perdido durante o processo de desenvolvimento também é dinheiro, ou não?
Você é que é paranóico demais. Nós só estamos criticando a ferramenta que usamos todo dia e ninguém melhor pra conhecer os defeitos de Java do que quem trabalha com ela.
I
igson_mendes_da_silv
Gente vcs podem me tirar a duvida em relação a estas linguagens …sendo que nao quero saber qual a melhor .
E sim qual a melhor forma de trabalhar entre a duas …qual delas ajuda a diminuir o desenvolvimento .
Uns dizem que python é melhor , outros dizem que é java ?