O mundo visto de dentro do Ruby
-
Upload
vitor-avelino-dutra-magalhaes -
Category
Technology
-
view
931 -
download
1
description
Transcript of O mundo visto de dentro do Ruby
O mundo visto de dentro doRuby
2007
Ciência da Computação
2007
E vocês, já ouviram falar ou usaram Ruby?
Yukihiro “Matz” Matsumoto
Yukihiro “Matz” Matsumoto
“Se você terminar seu trabalho rápido e de forma divertida, isso não é bom?”
“Se você terminar seu trabalho rápido e de forma divertida, isso não é bom?”
“Eu queria uma linguagem mais poderosaque perl, e mais orientada a objetos que
Python. Foi por isso que eu decidi projetarminha própria linguagem.”
Yukihiro “Matz” Matsumoto
1993Primeiros rabiscos
Yukihiro “Matz” Matsumoto
1993Primeiros rabiscos
1995Primeiro release público
Yukihiro “Matz” Matsumoto
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++
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++
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
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 (Objective-C)
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)
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)
Mas, por que Ruby?
“Tornar as coisas simples fáceis e as coisas complexas possíveis.”
Filosofia Ruby
Focado no humano
3.times doprint “Wee”
end
3.times doprint “Wee”
end
feed_dog if @dog.hungry?
Focado no humano
3.times doprint “Wee”
end
feed_dog if @dog.hungry?
['beer', 'vodka', 'wine'].each |drink| doprint drink.capitalize
end
Focado no humano
Verdadeiramente OO
Tudo é objeto, não há sequer tipo primitivo.
Verdadeiramente OO
Tudo é objeto, não há sequer tipo primitivo.
>> 1.class=> Fixnum>> 1.class.class=> Class>> nil.class=> NilClass
Código “bonito”
140vs
40
“Eu sempre soube que Smalltalk substituiriaJava. Só não sabia que isso se chamaria Ruby.”
Kent Beck, Criador do "Extreme Programming" e "TDD"
O que podemos fazer com Ruby...
No desktop
Bowline Titanium
Bowline
Shoes
Titanium
GTK+
Bowline
Shoes
wxRuby
Titanium
GTK+
Win32 widgetsAqua, GTK+
Bowline
Shoes
wxRuby
QtRuby
Titanium
GTK+
Win32 widgetsAqua, GTK+
Qt
Bowline
Shoes
wxRuby
QtRuby
Titanium
GTK+
Win32 widgetsAqua, GTK+
Qt
Ruby Cocoa Cocoa
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
Desenvolvimento ágil
Diversão
Sinatra
require 'rubygems'require 'sinatra'get '/hi' do"Hello World!"
end
Ferramentas
1.8.7 + 1.9.2 + REE + JRuby + Rubinius +MagLev + IronRuby + MacRuby
RVM
=
1.8.7 + 1.9.2 + REE + JRuby + Rubinius +MagLev + IronRuby + MacRuby
Repositórios Github, Codebase
Repositórios
Integração contínua
Github, Codebase
Hudson, Cruise
Repositórios
Integração contínua
Deploy
Github, Codebase
Hudson, Cruise
Puppet, ChefCapistrano
Repositórios
Integração contínua
Deploy
Monitoramento
Github, Codebase
Hudson, Cruise
Puppet, ChefCapistrano
NewRelic, ScoutBackupMyApp
Repositórios
Integração contínua
Deploy
Monitoramento
Github, Codebase
Hudson, Cruise
Puppet, ChefCapistrano
NewRelic, ScoutBackupMyApp
Servidores Passenger,Mongrel, Thin
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 queRuby é 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
real em um de seus sites mais acessados de todos ostempos.”
http://www.computerworld.com.au/article/268003/ruby_rails_rolls_into_enterprise/?fp=16&fpid=1
Agradecimentos
@akitaonrails (Fábio Akita)
@danielvlopes (Daniel V. Lopes)