Criando uma linguagem para JVM (Ioke)

Apresentação de Ola Bini

Apresentação de Ola Bini

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:

http://skillsmatter.com/podcast/java-jee/language-on-jvm

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: