O mundo visto de dentro do
          Ruby
2007
2007
Ciência da Computação
E vocês, já ouviram falar ou
       usaram Ruby?
Yukihiro “Matz” Matsumoto
“Se você terminar seu trabalho rápido e
                              de forma divertida, isso não é bom?”




Yukihiro “M...
“Se você terminar seu trabalho rápido e
                              de forma divertida, isso não é bom?”


             ...
1993
                            Primeiros rabiscos




Yukihiro “Matz” Matsumoto
1993
                              Primeiros rabiscos



                                  1995
                          ...
   Sintaxe simples, inspirada por Ada, Eiffel e Perl
   Semântica compacta, inspirada por Smalltalk
   Object Model igu...
   Sintaxe simples, inspirada por Ada, Eiffel e Perl
   Semântica compacta, inspirada por Smalltalk
   Object Model igu...
   Produtividade no desenvolvedor
   Simplicidade
   Linguagem humana
   Linguagem dinâmica e reflexiva
   Extensibili...
Ruby   1.8.7 e 1.9.2
Ruby   1.8.7 e 1.9.2

REE    1.8.7-2010.2
Ruby       1.8.7 e 1.9.2

REE        1.8.7-2010.2

Rubinius   1.0.1
Ruby       1.8.7 e 1.9.2

REE        1.8.7-2010.2

Rubinius   1.0.1

JRuby      1.5.X           (Java)
Ruby       1.8.7 e 1.9.2

REE        1.8.7-2010.2

Rubinius   1.0.1

JRuby      1.5.X           (Java)

MacRuby    0.6    ...
Ruby       1.8.7 e 1.9.2

REE        1.8.7-2010.2

Rubinius   1.0.1

JRuby      1.5.X           (Java)

MacRuby    0.6    ...
Ruby       1.8.7 e 1.9.2

REE        1.8.7-2010.2

Rubinius   1.0.1

JRuby      1.5.X           (Java)

MacRuby    0.6    ...
Mas, por que Ruby?
“Tornar as coisas simples fáceis e as coisas
           complexas possíveis.”
                                   Filosofia...
Focado no humano

    3.times do
           print “Wee”
    end
Focado no humano

      3.times do
             print “Wee”
      end


  feed_dog if @dog.hungry?
Focado no humano

            3.times do
                   print “Wee”
            end


      feed_dog if @dog.hungry?

...
Verdadeiramente OO



Tudo é objeto, não há sequer tipo primitivo.
Verdadeiramente OO



Tudo é objeto, não há sequer tipo primitivo.



                >> 1.class
                => Fixnum...
Código “bonito”
140
vs

40
“Eu sempre soube que Smalltalk substituiria
Java. Só não sabia que isso se chamaria Ruby.”
               Kent Beck, Criad...
O que podemos fazer com Ruby...
No desktop
Bowline   Titanium
Bowline   Titanium


Shoes     GTK+
Bowline   Titanium


Shoes     GTK+


wxRuby    Win32 widgets
          Aqua, GTK+
Bowline   Titanium


Shoes     GTK+


wxRuby    Win32 widgets
          Aqua, GTK+

QtRuby    Qt
Bowline      Titanium


Shoes        GTK+


wxRuby       Win32 widgets
             Aqua, GTK+

QtRuby       Qt


Ruby Coc...
Na web
David “dhh” Heinemeier Hansson
2004




David “dhh” Heinemeier Hansson
2004




David “dhh” Heinemeier Hansson
2.3.8   3.0.0
   Código gerando código
   Convenção sobre configuração
   DRY (don't repeat yourself)
   Produtividade sustentável
...
Sinatra
require 'rubygems'
require 'sinatra'
get '/hi' do
 "Hello World!"
end
Ferramentas
1.8.7 + 1.9.2 + REE + JRuby + Rubinius +
    MagLev + IronRuby + MacRuby
1.8.7 + 1.9.2 + REE + JRuby + Rubinius +
    MagLev + IronRuby + MacRuby

                   =

                RVM
Repositórios   Github, Codebase
Repositórios          Github, Codebase


Integração contínua   Hudson, Cruise
Repositórios          Github, Codebase


Integração contínua   Hudson, Cruise


                      Puppet, Chef
Deploy
...
Repositórios          Github, Codebase


Integração contínua   Hudson, Cruise


                      Puppet, Chef
Deploy
...
Repositórios          Github, Codebase


Integração contínua   Hudson, Cruise


                      Puppet, Chef
Deploy
...
Testes



Cucumber, Steak, RSpec, Minitest,
   Test::Unit, Shoulda, Bacon,
  Machinist, Factory Girl, Mocha
Minispec




http://gist.github.com/433067
Cucumber




http://github.com/danielvlopes/buggy/blob/master/features/authenticate.feature
Steak
Comunidade
Ué, mas não dizem que
     Ruby é lento?
Performance

      !=

Escalabilidade
“O The New York Times usou Ruby on Rails para agregar,
analisar e mostrar os resultados das eleições em quase tempo
     r...
Agradecimentos


@akitaonrails   (Fábio Akita)
@danielvlopes   (Daniel V. Lopes)
OBRIGADO!
@vitoravelino
vitoravelino@octahedron.com.br
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
O mundo visto de dentro do Ruby
Upcoming SlideShare
Loading in …5
×

O mundo visto de dentro do Ruby

1,126 views

Published on

Palestra realizada no DSC (Departamento de Sistemas e Computação) para alunos do curso de Ciência da Computação da UFCG.

Agradecimentos:
- Fábio Akita (/akitaonrails)
- Daniel V. Lopes (/danielvlopes)

Published in: Technology
  • Be the first to comment

  • Be the first to like this

O mundo visto de dentro do Ruby

  1. 1. O mundo visto de dentro do Ruby
  2. 2. 2007
  3. 3. 2007 Ciência da Computação
  4. 4. E vocês, já ouviram falar ou usaram Ruby?
  5. 5. Yukihiro “Matz” Matsumoto
  6. 6. “Se você terminar seu trabalho rápido e de forma divertida, isso não é bom?” Yukihiro “Matz” Matsumoto
  7. 7. “Se você terminar seu trabalho rápido e de forma divertida, isso não é bom?” “Eu queria uma linguagem mais poderosa que perl, e mais orientada a objetos que Python. Foi por isso que eu decidi projetar minha própria linguagem.” Yukihiro “Matz” Matsumoto
  8. 8. 1993 Primeiros rabiscos Yukihiro “Matz” Matsumoto
  9. 9. 1993 Primeiros rabiscos 1995 Primeiro release público Yukihiro “Matz” Matsumoto
  10. 10.  Sintaxe simples, inspirada por Ada, Eiffel e Perl  Semântica compacta, inspirada por Smalltalk  Object Model igual ao de Smalltalk  Expressões regulares do Perl  Conceitos de linguagem funcional  Características do C e C++
  11. 11.  Sintaxe simples, inspirada por Ada, Eiffel e Perl  Semântica compacta, inspirada por Smalltalk  Object Model igual ao de Smalltalk  Expressões regulares do Perl  Conceitos de linguagem funcional  Características do C e C++
  12. 12.  Produtividade no desenvolvedor  Simplicidade  Linguagem humana  Linguagem dinâmica e reflexiva  Extensibilidade  Todas as classes são abertas  Herança simples e mixins  DSL’s  Garbage collector
  13. 13. Ruby 1.8.7 e 1.9.2
  14. 14. Ruby 1.8.7 e 1.9.2 REE 1.8.7-2010.2
  15. 15. Ruby 1.8.7 e 1.9.2 REE 1.8.7-2010.2 Rubinius 1.0.1
  16. 16. Ruby 1.8.7 e 1.9.2 REE 1.8.7-2010.2 Rubinius 1.0.1 JRuby 1.5.X (Java)
  17. 17. Ruby 1.8.7 e 1.9.2 REE 1.8.7-2010.2 Rubinius 1.0.1 JRuby 1.5.X (Java) MacRuby 0.6 (Objective-C)
  18. 18. Ruby 1.8.7 e 1.9.2 REE 1.8.7-2010.2 Rubinius 1.0.1 JRuby 1.5.X (Java) MacRuby 0.6 (Objective-C) MagLev Beta (Smalltalk)
  19. 19. Ruby 1.8.7 e 1.9.2 REE 1.8.7-2010.2 Rubinius 1.0.1 JRuby 1.5.X (Java) MacRuby 0.6 (Objective-C) MagLev Beta (Smalltalk) IronRuby 1.1 (.NET)
  20. 20. Mas, por que Ruby?
  21. 21. “Tornar as coisas simples fáceis e as coisas complexas possíveis.” Filosofia Ruby
  22. 22. Focado no humano 3.times do print “Wee” end
  23. 23. Focado no humano 3.times do print “Wee” end feed_dog if @dog.hungry?
  24. 24. Focado no humano 3.times do print “Wee” end feed_dog if @dog.hungry? ['beer', 'vodka', 'wine'].each |drink| do print drink.capitalize end
  25. 25. Verdadeiramente OO Tudo é objeto, não há sequer tipo primitivo.
  26. 26. Verdadeiramente OO Tudo é objeto, não há sequer tipo primitivo. >> 1.class => Fixnum >> 1.class.class => Class >> nil.class => NilClass
  27. 27. Código “bonito”
  28. 28. 140 vs 40
  29. 29. “Eu sempre soube que Smalltalk substituiria Java. Só não sabia que isso se chamaria Ruby.” Kent Beck, Criador do "Extreme Programming" e "TDD"
  30. 30. O que podemos fazer com Ruby...
  31. 31. No desktop
  32. 32. Bowline Titanium
  33. 33. Bowline Titanium Shoes GTK+
  34. 34. Bowline Titanium Shoes GTK+ wxRuby Win32 widgets Aqua, GTK+
  35. 35. Bowline Titanium Shoes GTK+ wxRuby Win32 widgets Aqua, GTK+ QtRuby Qt
  36. 36. Bowline Titanium Shoes GTK+ wxRuby Win32 widgets Aqua, GTK+ QtRuby Qt Ruby Cocoa Cocoa
  37. 37. Na web
  38. 38. David “dhh” Heinemeier Hansson
  39. 39. 2004 David “dhh” Heinemeier Hansson
  40. 40. 2004 David “dhh” Heinemeier Hansson
  41. 41. 2.3.8 3.0.0
  42. 42.  Código gerando código  Convenção sobre configuração  DRY (don't repeat yourself)  Produtividade sustentável  Desenvolvimento ágil  Diversão
  43. 43. Sinatra
  44. 44. require 'rubygems' require 'sinatra' get '/hi' do "Hello World!" end
  45. 45. Ferramentas
  46. 46. 1.8.7 + 1.9.2 + REE + JRuby + Rubinius + MagLev + IronRuby + MacRuby
  47. 47. 1.8.7 + 1.9.2 + REE + JRuby + Rubinius + MagLev + IronRuby + MacRuby = RVM
  48. 48. Repositórios Github, Codebase
  49. 49. Repositórios Github, Codebase Integração contínua Hudson, Cruise
  50. 50. Repositórios Github, Codebase Integração contínua Hudson, Cruise Puppet, Chef Deploy Capistrano
  51. 51. Repositórios Github, Codebase Integração contínua Hudson, Cruise Puppet, Chef Deploy Capistrano NewRelic, Scout Monitoramento BackupMyApp
  52. 52. Repositórios Github, Codebase Integração contínua Hudson, Cruise Puppet, Chef Deploy Capistrano NewRelic, Scout Monitoramento BackupMyApp Servidores Passenger, Mongrel, Thin
  53. 53. Testes Cucumber, Steak, RSpec, Minitest, Test::Unit, Shoulda, Bacon, Machinist, Factory Girl, Mocha
  54. 54. Minispec http://gist.github.com/433067
  55. 55. Cucumber http://github.com/danielvlopes/buggy/blob/master/features/authenticate.feature
  56. 56. Steak
  57. 57. Comunidade
  58. 58. Ué, mas não dizem que Ruby é lento?
  59. 59. Performance != Escalabilidade
  60. 60. “O The New York Times usou Ruby on Rails para agregar, analisar e mostrar os resultados das eleições em quase tempo real em um de seus sites mais acessados de todos os tempos.” http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise/?fp=16&fpid=1
  61. 61. Agradecimentos @akitaonrails (Fábio Akita) @danielvlopes (Daniel V. Lopes)
  62. 62. OBRIGADO! @vitoravelino vitoravelino@octahedron.com.br

×