O mundo visto de dentro do Ruby

85
O mundo visto de dentro do Ruby

description

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)

Transcript of O mundo visto de dentro do Ruby

Page 1: O mundo visto de dentro do Ruby

O mundo visto de dentro doRuby

Page 2: O mundo visto de dentro do Ruby
Page 3: O mundo visto de dentro do Ruby

2007

Page 4: O mundo visto de dentro do Ruby

Ciência da Computação

2007

Page 5: O mundo visto de dentro do Ruby
Page 6: O mundo visto de dentro do Ruby

E vocês, já ouviram falar ou usaram Ruby?

Page 7: O mundo visto de dentro do Ruby
Page 8: O mundo visto de dentro do Ruby

Yukihiro “Matz” Matsumoto

Page 9: O mundo visto de dentro do Ruby

Yukihiro “Matz” Matsumoto

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

Page 10: O mundo visto de dentro do Ruby

“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

Page 11: O mundo visto de dentro do Ruby

1993Primeiros rabiscos

Yukihiro “Matz” Matsumoto

Page 12: O mundo visto de dentro do Ruby

1993Primeiros rabiscos

1995Primeiro release público

Yukihiro “Matz” Matsumoto

Page 13: O mundo visto de dentro do Ruby

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++

Page 14: O mundo visto de dentro do Ruby

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++

Page 15: O mundo visto de dentro do Ruby

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

Page 16: O mundo visto de dentro do Ruby

Ruby 1.8.7 e 1.9.2

Page 17: O mundo visto de dentro do Ruby

Ruby 1.8.7 e 1.9.2

REE 1.8.7-2010.2

Page 18: O mundo visto de dentro do Ruby

Ruby 1.8.7 e 1.9.2

REE 1.8.7-2010.2

Rubinius 1.0.1

Page 19: O mundo visto de dentro do Ruby

Ruby 1.8.7 e 1.9.2

REE 1.8.7-2010.2

Rubinius 1.0.1

JRuby 1.5.X (Java)

Page 20: O mundo visto de dentro do Ruby

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)

Page 21: O mundo visto de dentro do Ruby

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)

Page 22: O mundo visto de dentro do Ruby

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)

Page 23: O mundo visto de dentro do Ruby

Mas, por que Ruby?

Page 24: O mundo visto de dentro do Ruby

“Tornar as coisas simples fáceis e as coisas complexas possíveis.”

Filosofia Ruby

Page 25: O mundo visto de dentro do Ruby

Focado no humano

3.times doprint “Wee”

end

Page 26: O mundo visto de dentro do Ruby

3.times doprint “Wee”

end

feed_dog if @dog.hungry?

Focado no humano

Page 27: O mundo visto de dentro do Ruby

3.times doprint “Wee”

end

feed_dog if @dog.hungry?

['beer', 'vodka', 'wine'].each |drink| doprint drink.capitalize

end

Focado no humano

Page 28: O mundo visto de dentro do Ruby

Verdadeiramente OO

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

Page 29: O mundo visto de dentro do Ruby

Verdadeiramente OO

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

>> 1.class=> Fixnum>> 1.class.class=> Class>> nil.class=> NilClass

Page 30: O mundo visto de dentro do Ruby

Código “bonito”

Page 31: O mundo visto de dentro do Ruby
Page 32: O mundo visto de dentro do Ruby
Page 33: O mundo visto de dentro do Ruby
Page 34: O mundo visto de dentro do Ruby
Page 35: O mundo visto de dentro do Ruby
Page 36: O mundo visto de dentro do Ruby

140vs

40

Page 37: O mundo visto de dentro do Ruby

“Eu sempre soube que Smalltalk substituiriaJava. Só não sabia que isso se chamaria Ruby.”

Kent Beck, Criador do "Extreme Programming" e "TDD"

Page 38: O mundo visto de dentro do Ruby

O que podemos fazer com Ruby...

Page 39: O mundo visto de dentro do Ruby

No desktop

Page 40: O mundo visto de dentro do Ruby

Bowline Titanium

Page 41: O mundo visto de dentro do Ruby

Bowline

Shoes

Titanium

GTK+

Page 42: O mundo visto de dentro do Ruby

Bowline

Shoes

wxRuby

Titanium

GTK+

Win32 widgetsAqua, GTK+

Page 43: O mundo visto de dentro do Ruby

Bowline

Shoes

wxRuby

QtRuby

Titanium

GTK+

Win32 widgetsAqua, GTK+

Qt

Page 44: O mundo visto de dentro do Ruby

Bowline

Shoes

wxRuby

QtRuby

Titanium

GTK+

Win32 widgetsAqua, GTK+

Qt

Ruby Cocoa Cocoa

Page 45: O mundo visto de dentro do Ruby

Na web

Page 46: O mundo visto de dentro do Ruby

David “dhh” Heinemeier Hansson

Page 47: O mundo visto de dentro do Ruby

2004

David “dhh” Heinemeier Hansson

Page 48: O mundo visto de dentro do Ruby

2004

David “dhh” Heinemeier Hansson

Page 49: O mundo visto de dentro do Ruby

2.3.8 3.0.0

Page 50: O mundo visto de dentro do Ruby

Código gerando código

Convenção sobre configuração

DRY (don't repeat yourself)

Produtividade sustentável

Desenvolvimento ágil

Diversão

Page 51: O mundo visto de dentro do Ruby

Sinatra

Page 52: O mundo visto de dentro do Ruby

require 'rubygems'require 'sinatra'get '/hi' do"Hello World!"

end

Page 53: O mundo visto de dentro do Ruby
Page 54: O mundo visto de dentro do Ruby
Page 55: O mundo visto de dentro do Ruby

Ferramentas

Page 56: O mundo visto de dentro do Ruby

1.8.7 + 1.9.2 + REE + JRuby + Rubinius +MagLev + IronRuby + MacRuby

Page 57: O mundo visto de dentro do Ruby

RVM

=

1.8.7 + 1.9.2 + REE + JRuby + Rubinius +MagLev + IronRuby + MacRuby

Page 58: O mundo visto de dentro do Ruby

Repositórios Github, Codebase

Page 59: O mundo visto de dentro do Ruby

Repositórios

Integração contínua

Github, Codebase

Hudson, Cruise

Page 60: O mundo visto de dentro do Ruby

Repositórios

Integração contínua

Deploy

Github, Codebase

Hudson, Cruise

Puppet, ChefCapistrano

Page 61: O mundo visto de dentro do Ruby

Repositórios

Integração contínua

Deploy

Monitoramento

Github, Codebase

Hudson, Cruise

Puppet, ChefCapistrano

NewRelic, ScoutBackupMyApp

Page 62: O mundo visto de dentro do Ruby

Repositórios

Integração contínua

Deploy

Monitoramento

Github, Codebase

Hudson, Cruise

Puppet, ChefCapistrano

NewRelic, ScoutBackupMyApp

Servidores Passenger,Mongrel, Thin

Page 63: O mundo visto de dentro do Ruby

Testes

Cucumber, Steak, RSpec, Minitest, Test::Unit, Shoulda, Bacon,

Machinist, Factory Girl, Mocha

Page 64: O mundo visto de dentro do Ruby

Minispec

http://gist.github.com/433067

Page 65: O mundo visto de dentro do Ruby

Cucumber

http://github.com/danielvlopes/buggy/blob/master/features/authenticate.feature

Page 66: O mundo visto de dentro do Ruby

Steak

Page 67: O mundo visto de dentro do Ruby
Page 68: O mundo visto de dentro do Ruby
Page 69: O mundo visto de dentro do Ruby
Page 70: O mundo visto de dentro do Ruby
Page 71: O mundo visto de dentro do Ruby
Page 72: O mundo visto de dentro do Ruby

Comunidade

Page 73: O mundo visto de dentro do Ruby
Page 74: O mundo visto de dentro do Ruby
Page 75: O mundo visto de dentro do Ruby
Page 76: O mundo visto de dentro do Ruby
Page 77: O mundo visto de dentro do Ruby
Page 78: O mundo visto de dentro do Ruby
Page 79: O mundo visto de dentro do Ruby

Ué, mas não dizem queRuby é lento?

Page 80: O mundo visto de dentro do Ruby
Page 81: O mundo visto de dentro do Ruby
Page 82: O mundo visto de dentro do Ruby

Performance

Escalabilidade

!=

Page 83: O mundo visto de dentro do Ruby

“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

Page 84: O mundo visto de dentro do Ruby

Agradecimentos

@akitaonrails (Fábio Akita)

@danielvlopes (Daniel V. Lopes)

Page 85: O mundo visto de dentro do Ruby

OBRIGADO!

@vitoravelino

[email protected]