Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby: MRI, Rubinius, JRuby e outros

Ruby: MRI, Rubinius, JRuby e outros

Palestra realizada no primeiro encontro do Pocando On Rails (Grupo de usuários Ruby do ES)

João Maia

April 13, 2013
Tweet

More Decks by João Maia

Other Decks in Programming

Transcript

  1. Ruby: MRI, Rubinius, JRuby e outros João Víctor Rocon Maia

    @jvrmaia #PocandoOnRails Saturday, April 13, 13
  2. Agenda - Teoria introdutória - A linguagem Ruby - MRI

    - Rubinius - JRuby - Bônus Saturday, April 13, 13
  3. Onde são usados? Analisadores léxicos Editores de texto Recuperação de

    texto Reconhecimento de padrões Analisadores sintáticos Processamento de SQL Saturday, April 13, 13
  4. Fases ANÁLISE SÍNTESE Analisador léxico Analisador sintático Analisador semântico Gerador

    de código intermediário Otimizador de código Gerador de código final Saturday, April 13, 13
  5. Exemplo salario_liquido = salario_bruto - impostos ** 2 identificador identificador

    identificador atribuição operador subtração operador exponenciação inteiro meu nome é Token Saturday, April 13, 13
  6. Exemplo salario_liquido = salario_bruto - impostos ** 2 = **

    salario_liquido salario_bruto impostos 2 - Saturday, April 13, 13
  7. Análise semântica Qual o tipo da variável “X”? A variável

    “X” foi declarada? A expressão “x * y + z” é consistente no tipo? A função “puts” tem parâmetros? Saturday, April 13, 13
  8. Ruby Implementações: - MRI: oficial em C - Rubinius: bytecode

    C++(LLVM) escrita em Ruby - JRuby: Java - MacRuby: Objective-C - IronRuby: .NET - MagLev: Smalltalk - Cardinal: Parrot VM - Topaz: Python (PyPy) Saturday, April 13, 13
  9. RubySpec NÃO É “OFICIAL”! http://rubyspec.org/ Ruby Conf 12 Toward a

    Design for Ruby by Brian Ford http://youtu.be/BagNfTbXn3w Saturday, April 13, 13
  10. MRI • Mirror: https://github.com/ruby/ruby • parser.y: 11422 LOC (http://goo.gl/kxH6C) •

    YARV • C http://www.ruby-lang.org/en/ Saturday, April 13, 13
  11. MRI Código Ruby Tokenize Parse Compile Instruções YARV não usa

    Flex feito em C no parse.y Bison (LALR) parse.y e parser.c Saturday, April 13, 13
  12. Rubinius http://rubini.us/ + = “An environment for the Ruby programming

    language providing performance, accessibility, and improved programmer productivity” 93% dos testes passando no RubySpec compatível com MRI 1.8, e 1.9 e 2.0 em progresso concorrência? Threads, Fibers e agora Actors (sem GIL) Saturday, April 13, 13
  13. JRuby http://jruby.org/ “ The Ruby Programming Language on the JVM

    ” Why JRuby? http://youtu.be/etCJKDCbCj4 High Performance Ruby http://vimeo.com/61255646 Saturday, April 13, 13
  14. JRuby Código Ruby Tokenize Parse Compile JVM bytecode parser.y generate

    parser (jay) parser.java Saturday, April 13, 13
  15. Topaz? Por quê? Rápido! PyPy é muito poderoso! Prove! toma

    ae! http://goo.gl/UpA7s Saturday, April 13, 13
  16. Why Python, Ruby and Javascript are Slow? Vídeo: http://vimeo.com/61044810 Why

    PyPy? Vídeo: http://youtu.be/P5ad6NpjR3M Vídeo: http://youtu.be/Q9wf63flICs PyPy without the GIL Saturday, April 13, 13
  17. Referências Bison http://goo.gl/Pmbns Ruby Under Microscope http://goo.gl/siEiv Compilers: Principles, Techniques,

    and Tools http://goo.gl/Y4Dtg So you want to write an interpreter? http://goo.gl/UfbxC Saturday, April 13, 13