Durante a semana do QCon London, o Ola Bini fez uma apresentação aberta na ThoughtWorks e falou sobre sua linguagem de criação, chamada Ioke. Ficamos surpresos com a quantidade de pessoas que se interessou pelo assunto, pois muitos tiveram que assistir de pé. Estive lá e conferi essa excelente palestra.
Ola Bini trabalha na ThoughtWorks e é apaixonado por linguagens de programação e inteligência artificial. Ele faz parte do principal time de desenvolvimento do JRuby e publicou o livro Practical JRuby on Rails Projects.
Ele começou explicando o que é uma JVM, hotspot, gerenciamento de memória e compilador JIT. Depois falou de JRuby, sendo a melhor implementação da lingagem Ruby para muitos propósitos.
Sobre o Ioke:
- É um experimento. Uma linguagem de programação.
- Dinâmica e fortemente tipada
- Orienteção a Objetos baseado em Prototype.
- Roda na JVM.
Propósito Geral:
Scripting, Web, Rules, DSL, Game engine.
Paradigma
Orientado a Objetos, Lógico, Funcional, Metaprogramação.
Em seguida foi explicado detalhadamente sobre a sistaxe do Ioke, como foi construído o analisador léxico, o parsing da linguagem e a diferença para o JRuby.
Integração com Java
- Chamada de métodos java. Até mesmo métodos estáticos.
- Converte argumentos automaticamente para os tipos corretos.
- Cria objetos Java.
- Mantém referência a objetos Java.
- Converte dados de tipo primitivo em Java.
- Trabalha com arrays em Java.
- Implementa Java Types
Ou seja, totalmente compatível com Java.
Diferenças entre os Modelos de Objetos:
Java
- Classes não são objetos, mas você pode chegar a ter uma representação para uma classe.
- Métodos não são objetos, mas você pode chegar a uma representação para um método.
- Atributos não são objetos, mas você pode chegar a uma representação para um atributo.
- Um objeto é criado de uma classe.
- Um objeto tem os mesmos métodos e atributos definidos na classe.
- Métodos não podem ser mudados por Objetos
- Atrubutos não podem ser mudados por objetos
Ruby
- Tudo é um objeto. Classes e módulos são objetos, mas classes tem um método de alocação mágico
- Qualquer objeto tem qualquer tipo de variáveis de instância.
- Qualquer objeto tem qualquer número de métodos.
- Um objeto pode ter uma classe associada. Essa classe pode ser nomeada ou uma classe singletom anônima, gerada quando o objeto faz mudanças específicas.
Ioke
- Tudo é um objeto.
- Qualquer objeto pode imitar zero ou mais outros objetos.
- Um objeto tem zero ou mais células. Célula é um binding de um nome para m objeto do mesmo tipo.
- Método é um objeto.
- Um macro é um objeto.
- Um pedaço de código é uma coleção de objetos.
Outros detalhes da apresentação:
Limitações da JVM, Representação de código, Representação Interna, Manipulação de erros, concorrência, manipulação de texto.
Os Slides da apresentação estão em:
http://olabini.com/presentations/CreatingALanguageForTheJVM.pdf.
O vídeo da apresentação está em:
