Quem me conhece há algum tempo ou acompanha este meu blog, sabe que eu sou totalmente meio fissurado por linguagens de programação. Sempre estou dando uma olhada em uma aqui e outra ali. Lendo, fuçando…
Mas tem um cara que com certeza é ainda muito mais fissurado em linguagens de programação do que eu – e diferente de mim, manja pra caramba. Esse cara é o Ola Bini, membro do core team do JRuby, consultor da ThoughtWorks, escritor do livro JRuby on Rails, membro do expert group da JSR-292 e criador da linguagem Ioke.
Bem, como não podia deixar de ser, eu resolvi fazer uma pequena entrevista com ele sobre Ioke, linguagens para a JVM e a Microsoft CLR, e uma coisinha ou duas mais. Confira!
Fale-nos um pouco sobre sua paixão por linguagens de programação. Quando isto começou? O que mais te motivou?
Oh wow. Boa pergunta. Eu não sei quando isto começou. Em algum momento obscuro do passado – muito longe para me lembrar. =)
Eu comecei bem cedo, com Basic no Apple IIc. Fiz muito C e assembler na minha adolecencia, e então, aprendi C++, Java e Lisp.
Penso que minha atual facinação por linguagens começou quanto eu percebi como diferentes linguagens são e como muitas coisas ruins são usadas. Esta percepção levou algum tempo, mas ficou cada vez maior.
Eu comecei com a implementação de outra linguagem há 5-6 anos atrás.
Além de contribuir com o projeto JRuby, você também criou a linguagem Ioke do zero. O que você tem a dizer sobre a JVM com plataforma para outras linguagens (além da linguagem Java)?
Sim. Então, a JVM é uma excelente plataforma para linguagens. Você tem um JIT muito maduro no Hotspot. Você tem garbage collectors fantásticos; e você tem um monte de bibliotecas e ferramentas disponíveis. A parte ruim é que a JVM atualmente está muito amarrada a linguagens que se parecem com Java, no nível do bytecode. É possível contornar isto, e nós estamos trabalhando na JSR292 para dar suporte a invocações dinâmicas na JVM.
Mas atualmente a JVM ainda está um bocado ligada a linguagens como Java. Isto não é necessário a tudo (muitas das tecnologias Java começaram em Smalltalk e Strongtalk).
Você acredita que a linguagem Java está caminhando para se tornar em uma linguagem de infra-estrutura? (Uma linguagem para escrever linguagens e outros componentes críticos de infra-estrutura.)
Espero que sim. Java não é uma boa linguagem para escrever aplicações – ela é realmente muito baixo nível.
Sobre Ioke. O que levou você a começar o projeto desta linguagem? Onde você pensa chegar com ela? O que você planeja para o futuro de Ioke?
Basicamente, a ideia com Ioke é ver o quão expressiva você pode fazer uma linguagem; e isto é o que tenho feito. Isto tem dado características linguísticas bastante avançadas; você pode fazer coisas nela que muitas pessoas inicialmente tem problemas para entender – mas ela permite você escrever código bastante sucinto e legível, que capture suas intenções.
O que acontecerá exatamente no futuro está no ar. Tenho muitas idéias, mas nada concreto no momento.
Recentemente, você também portou a linguagem Ioke para a Microsoft CLR. O que te motivou a fazer isto? O que você pensa sobre a plataform Microsft .NET como plataforma host para novas linguagens?
Sim! Eu fiz isto porque não queria que Ioke fosse somente uma linguagem da JVM. Queria ver como a CLR funcionaria para implementa-la e queria amplicar um pouco a base de usuário. A plataforma .NET é mais ou menos tão boa quanto a JVM. Algumas coisas são piores, outras são melhores.
O que você recomenda a aqueles que gostariam de, como você, serem designers de linguagens para a JVM? Esta recomendação seria mais ou menos a mesma para a plataforma .NET?
Há duas coisas que você precisa fazer. A primeira é ter uma boa idéia de como diferentes linguagens funcionam. Você precisa aprender linguagens de diferentes paradigmas e tentar entender como elas podem ser implementadas. Então, você precisa começar a fazer. Esta é a parte mais importante.
Comece realmente a implementar e ver o que acontece.
Finalmente, sinta-se à vontade para dizer o que quiser sobre Ioke.
Ela é muito “louca”. Ela é expressiva. Ela é muito lenta.
Penso que esta coisa de expressividade vai ser importante no futuro – já que nós estamos fazendo coisas mais e mais avançadas. Texto não escala se não podemos ter uma abstração estrutural (1). Ioke permite isto.
Muito legal Leandro, parabéns 🙂
Parabéns Leandro! Bem legal o post e mais legal ainda o canal que vc abriu com um dos grandes gurus da programação da atualidade!
Sobre a nossa conversa sobre o que ele quis dizer na última frase, acredito que seja isso mesmo. Ele cita o futuro.. Entendo que uma linguagem de programação só pode evoluir em sua expressividade, a partir do momento que ela tenha suporte a esse tipo de evolução.
Linguagens sem esse suporte até permitem um certo tipo de melhoria expressiva, mas essa característica não é de sua natureza e dessa forma o investimento de tempo é maior com um resultado pior.
Talvez até o termo “codificar” já esteja ficando obsoleto a partir do momento que estamos mantendo um tipo de “conversa” com a maquina. 🙂
Abraço!
– LeoLuz –
@Diego Valeu man!
@LeoLuz hehehe… Gostei!
[quote]
Talvez até o termo “codificar” já esteja ficando obsoleto a partir do momento que estamos mantendo um tipo de “conversa” com a maquina.
[/quote]
Muito bom Leandro!
Tem mais algumas informações sobre o Ioke nesse post:
http://manifestonaweb.wordpress.com/2009/03/31/criando-linguagens-jvm/
Abraços