A JVM e as outras linguagens: você está preparado?

Um outro assunto que tem aparecido com cada vez mais frequência na lista interna da Caelum são as diversas linguagens que rodam sob a JVM. Sejam elas compiladas diratamente para bytecode Java, ou interpretadas através da Java Scripting API adicionada no Java 6.

O Fábio Kung fez no início do ano um acalorado post intitulado 2009 o ano do Ruby on Rails no Brasil, e podemos ir além: diversas linguagens que não fazem faziam parte do mainstream corporativo vem ganhando muita força por todos os lugares.

Martin Fowler fez um trabalho minucioso em suas considerações ao uso de Ruby pela ThoughtWorks (traduzido pelo Fábio Akita aqui). Fowler discorre a respeito das opiniões e sentimentos dos lideres técnicos de cada projeto que optou por Ruby, e poucos deles (5 de 41) disseram que Ruby foi a escolha errada.

Mas será que apenas o Ruby tem ganho toda essa notoriedade e força?

O Rafael Ferreira compartilhou comigo recentemente um excelente artigo que discute os diferentes paradigmas de programação, citando vantagens e desvantagens, culminando na importância do aprendizado de diferentes linguages, em especial para tirar proveito das que facilitam o desenvolvimento de sistemas com muita concorrência.

O Renato Lucindo me mostrou também o quão grande tem sido a repercussão do Scala em grandes ambientes, como é esse caso da Électricité de France Trading que trocou 300 mil linhas de Java por Scala.

Vale também citar a troca de linguagens num dos cursos mais famosos de computação do mundo: o Structure and Interpretation of Computer Programs, curso que inicia os graduandos de ciência da computação e engenharia elétrica do MIT. Este curso foi sempre famoso por ser ministrado em Scheme, e agora depois de uma série de debates e justificativas, foi reformulado usando Python, novamente sem usar uma das linguagens enterprisey.

Pedro Matiello, que trabalha aqui com a gente, é o lider de desenvolvimento da biblioteca python-graph, que implementa diversos algoritmos para grafos em python e possui colaboração dos mais variados países.

Aqui na Caelum, além de usarmos extensivamente Ruby e Rails em projetos e termos estendido o tempo do nosso curso RR-11 para 32 horas ja há algum tempo, há um pedaço de um sistema desenvolvido em Scala e ainda temos o curso de Lógica de Programação é realizado em grande parte com Groovy.

São muitos meus amigos e colegas de trabalho estudando LISP, Erlang, OCaml, Scala e outras linguagens, sem contar Ruby/Rails e Python/Django. Todas essas linguagens podem de certa forma rodar sobre a JVM. É um lugar-comum (e é uma das dicas do excelente Pragmatic Programmer) dizer que devemos aprender mais linguanges de programação para ampliar nossa visão e formas de ataque a um problema. Já disse Peter Norvig que é necessário 10 anos para que adquiramos fluência numa linguagem de programação, mas sempre há o momento de começar.

E você? Como está seu contato com essas linguagens? Sua empresa está usando algo “novo” em seus projetos?

18 Comentários

  1. Marllon 25/06/2009 at 07:28 #

    Olá pessoal, acredito que qualquer desenvoledor que seja mais do que um codificador ou digitador de UC’s, tem obrigação de conhecer mais que 2 linguagens. Trabalho atualmente como Terceiro para uma empresa de Florianopolis e lá utilizamos Java, mas como sou terceiro ainda tenho meus projetos particulares, e estes usam Rails como principal opção depois de Java (mais por causa do conhecimento do pessoal envolvido do que qualquer outro motivo) e estamos pensando em explorar o lado python da coisa.
    Acredito que qualquer empresa tenha capacidade para usar novas tecnologicas, mas, por alguma experiencia, afirmo que é muito complicado de uma empresa entrar de cabeça em alguma tecnologia nova como se já utilizasse ela a tempos, existe muito mais etapas do que simplesmente treinar o funcionário ;). Só minha opinião..

  2. Leandro Silva 26/06/2009 at 09:13 #

    Excelente post, Paulo!

    Eu tenho me envolvido com várias linguagens, apesar de meu “trabalho formal” ($$$) ser, ser lá, pelo menos uns 80~90% focado Java.

    Pra citar um pouco desse envolvimento…

    Toco um projeto open source em JRuby – Sparrow, a JMS client based on JRuby (http://github.com/leandrosilva/sparrow); já escrevi coisas sobre Scala, Groovy, Elang e até Ioke em meu blog; no começo do ano passado escrevi coisas como “Não uma única linguagem de programação” (http://leandrosilva.com.br/2008/02/04/nao-ha-uma-unica-linguagem-de-programacao) e “A Plataforma Java não é sobre a Linguagem Java” (http://leandrosilva.com.br/2008/02/04/a-plataforma-java-nao-e-sobre-a-linguagem-java); e mais recentemente, fiz uma entrevista exclusiva com um dos “gurus” de linguagens para JVM, o Ola Bini (http://leandrosilva.com.br/2009/04/28/entrevista-com-ola-bini-ioke-jvm-net-e-mais).

    Eu sou vidrado em linguagens de programação e adoro a plataforma Java.

  3. Leandro Silva 26/06/2009 at 09:19 #

    Como assim, não criou hyperlink nas URLs que botei no meu comentário? Pô, assim fica difícil de fazer jaba, né? kkk

  4. Antonio Kantek 09/07/2009 at 14:36 #

    shhhhh

    Scala

    http://www.scala-lang.org/

  5. Antonio Kantek 09/07/2009 at 14:43 #

    Outra opcao eh ficar bom em matlab, escrever programas feios e horriveis, trabalhar em um hedge fund e ganhar muito dinheiro.

  6. Paulo Silveira 12/07/2009 at 06:59 #

    Só para melhorar algumas informações sobre o post, devemos citar com mais veemencia Scala. Eu e o Sergio Lopes estamos cada vez mais impressionados com o hype que ha hoje em dia:

    Gosling, em **2008**:

    “Which Programming Language would you use *now* on top of JVM, except Java?”. The answer was surprisingly fast and very clear: – Scala.

    http://www.adam-bien.com/roller/abien/entry/java_net_javaone_which_programming

    Charles nutter, do JRuby, em abril desse ano:

    “No other language on the JVM seems as capable of being a “replacement for Java” as Scala, and the momentum behind Scala is now unquestionable.”

    http://blog.headius.com/2009/04/future-part-one.html

    James Strachan, que criou o groovy:

    “I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I’d probably have never created Groovy.”

    http://macstrac.blogspot.com/2009/04/scala-as-long-term-replacement-for.html

    Paper sobre a importância das linguagens funcionais para a web:

    http://steve.vinoski.net/pdf/IC-Welcome_to_the_Functional_Web.pdf

  7. Andre Carneiro 17/07/2009 at 16:24 #

    Vale a pena lembrar Perl6. Ele está aí e tem propostas bem interessantes como o uso de definições de gramáticas e novos tipos de operadores que lidam com estrutura de dados complexas diretamente, e uma característica vagamente semelhante ao JAVA6. Pode-se implementar Perl6 em várias linguagens… Existe implementação de Perl6 em Raskel por exemplo.

    Finalizando, a tendência mesmo é ter pessoas com conhecimento em várias linguagens. Não sei até que ponto isso é bom, pois existe uma ‘latência’ grande quando se trata de linguagens de programação. Existe até mesmo uma cultura, é como se você escolhesse uma ‘faculdade’ pra fazer. Ser obrigado a programar bem em várias linguagens pode ser um diferencial bem difívil de se alcançar. Se o mercado tender para isso, muito provavelmente os cursos de capacitação(sejam técnicos, sejam universitários etc), terão que ser reformulados completamente.

    Cheers!

  8. Elano Chow 06/08/2009 at 02:25 #

    Começamos a treinar nossos programadores java/spring/struts/hibernate em grails para utilização em projetos ageis devido a carência de profissionais que saibam ruby/rails ou mesmo python/django.Temos uma massa de desenvolvedores Java e treina-los em RoR seria muito demorado e custoso.

    Avaliamos Scala, mas a linguagem ainda parece muito imatura além de bem mais complexa, o suporte a IDE quase inexistente e seu framework web Lift bem menos poderoso que grails.

    A Caelum bem que podia abrir cursos de groovy e grails.

  9. Martin Muller 20/06/2011 at 16:20 #

    Na empresa que trabalho sou líder de projeto com uma equipe de 12 pessoas, começamos a utilização do Groovy e Grails com um projeto que precisava ser desenvolvido o mais rápido possível, são 2 projetos no framework. Utilizei em um desenvolvimento Freela e também obtive bastante ganho no desenvolvimento. Já trabalho a mais de 2 anos no framework e gostei muito.

    Concordo com Elano Chow que a Caelum poderia abrir curso de Groovy e Grails.

  10. João Henrique Sewaybrick 21/03/2013 at 07:10 #

    De todos ainda prefiro o bom e velho java, mas quando consideramos produtividade e boas práticas com certeza a linguagem groovy on grails q é literalmente um ruby on rails com python misturado.(conceitos)

    Essa linguagem te força a usar as melhores práticas, pra começar ela automaticamente tem para cada projeto a divisão de camadas controller,domain e view , permite também a utilização de services.

    Além disse para cada projeto que é criado temos um pack de teste e um arquivo de configuração q permite configurar conexão em três ambientes teste,desenvolvimento e homologação.

    Todos os arquivos do groovy conversam com classe nativas java e as classe conversam com os arquivos groovy , porque em tempo de execução ambos são bytecode.

    No groovy a compilação é dinâmica por isso as classe groovy e java conversam entre sí.

    Pacotes como lang,util,date são importados automaticamente no groovy.(Só os essenciais utilizados por todos e não apenas os essenciais do java).

    Aqui dá alguns erros, alias vários pq as vezes o import que deveria ser automático não é feito ou é feito o import errado.

  11. João Henrique Sewaybrick 21/03/2013 at 07:28 #

    É bom que a caelum pesquise o mercado para ver a linguagem mais promissora a ser lançada em seus cursos.

    Meu voto é no groovy on grails , pelo suporte e por copiar boas idéias do ruby on raills e conceitos do python.

    Não sei se tem,mas deveria ter um curso especifico de JQuery , cada vez mais acho essencial saber Jquery e javascript. e não importa se é java ,.net,ruby ou groovy ele ta lá em todas e é preferido e aclamado em 99% dos casos.

    é muito comum imputar dados do front-end para o back end objetos javascript, creio que até alguns frameworks que antes eu considerava mágico fazem isso usando jquery.(Já que por ele podemos passar para o back end o form inteiro utilizando uma única linha de comando).

    O que não tem suporte e se vêe na marro no mercado é integração com paypal,moip e pagseguro.

    Quem já vez principalmente as avançadas sabe q não é tão trivial assim e q as vezes dependendo da solução o manuel é uma droga.

    Acho que a caelum deveria sair do ambiente acadêmico onde vemos bem coisas didáticas como um crud , aplicações MVC,ORM e passar a inovar seus cursos.

    Como? Criando mini projetos de lojas virtuais,soluções ecommerce mo geral.

    São exemplo de coisas reais que são utilizadas no dia-a-dia da empresa.

    Não a uma escola que ensine a usar tortoise ,svn,a trabalhar em equipe em mini projetos que retratem mais a realidade do ambiente de trabalho.

    Vamos ver tudo isso na prática.

  12. João Henrique Sewaybrick 21/03/2013 at 07:37 #

    Acho que essa seria a melhor abordagem para a realidade do mercado atual.

    E todos esses mini projetos com paypal,moip e pagseguro podem ser criados sem custo nenhum utilizando o ambiente de teste.

    São situações que todos os programadores iniciante ou não na área passam ou irão passar mas que nenhuma escola ensina.

    No final ainda é um banho de água fria o ingresso no mercado e muitas vezes por conta dessas questões que levantei.

  13. Paulo Silveira 21/03/2013 at 07:42 #

    oi Joao Henrique, obrigado pelas mensagens!

    Temos sim o curso de jQuery:
    http://www.caelum.com.br/curso-javascript-jquery/

    E, em vez de svn, temos o curso de git online:
    http://www.caelum.com.br/curso/online/git/

    E tambem um curso que ensina a trabalhar em equipe, pair programming, testes, etc:
    http://www.caelum.com.br/curso-praticas-ageis/

  14. João Henrique Sewaybrick 21/03/2013 at 07:49 #

    É isso que todo aluno realmente espera de um curso, seja na universidade ou em uma academia de programação.

    Não importa, pra mim é onde todos pecam e é ai que o mercado carece de profissional, também é ai que diferem o iniciante do profissional.

    Com certeza quem tomar essas iniciativas terá o reconhecimento não apenas acadêmico, mas de mercada. Porque uma coisa é um bom perfil técnico, não é algo que mercado quer mais, pelo menos ele não espera mais só isso.

    Ele vai além e exige que saibam lidar com pressão,saibam lidar com equipe e que principalmente saibam lidar com requisitos comuns de todos grande projeto e que infelizmente não são abordados em nenhum um lugar exceto nas próprias empresas.

  15. João Henrique Sewaybrick 21/03/2013 at 07:55 #

    Muito obrigado pela informação , passei um apuro para implementar essa mesma solução em paypal. A documentação não era uma das melhores.

    Essa solução de vcs foi um simples button ou utilizando api.
    O botão é rápido mas a API é complicada pelo menos pra mim.

Deixe uma resposta