74
Júlio Santos Monteiro?

Ruby, Rails e Diversão

Embed Size (px)

DESCRIPTION

Palestra ministrada dia 25 de novembro de 2008 (2008-11-25) para a turma de Bacharel em Sistemas de Informação da Faculdade Cenecista de Joinville (FCJ), em Joinville/SC.

Citation preview

Page 1: Ruby, Rails e Diversão

Júlio Santos Monteiro?

Page 2: Ruby, Rails e Diversão

seja.a2c.com.br

Page 3: Ruby, Rails e Diversão

Ruby on Rails desde 2006

Page 4: Ruby, Rails e Diversão

Desenvolver é Engenharia

Page 5: Ruby, Rails e Diversão

Programar é Arte

Page 6: Ruby, Rails e Diversão

“Beleza leva a felicidade.Felicidade leva a produtividade.

Logo, beleza leva a produtividade.”

(David Heinemeier Hansson)

Page 7: Ruby, Rails e Diversão

“Você pode reconhecer a verdade por sua beleza e

simplicidade.”(Richard Feynman)

Page 8: Ruby, Rails e Diversão

Por que o Ruby, se já temos Java, Python, Perl, PHP,

Lisp, .Net, Obj-C, ActionScript, Erlang, Lua, Smalltalk, Haskell,

(digite aqui o nome de uma linguagem), etc?

Page 9: Ruby, Rails e Diversão

1993:Yukihiro Matsumoto quer uma linguagem

mais humana.

Page 10: Ruby, Rails e Diversão

1993:Yukihiro Matsumoto faz uma linguagem

mais humana.

Page 11: Ruby, Rails e Diversão

1993:Yukihiro Matsumoto faz uma linguagem

menos máquina, mais humana.

Page 12: Ruby, Rails e Diversão

1993:Yukihiro Matsumoto cria o

Java

Page 13: Ruby, Rails e Diversão

1993:Yukihiro Matsumoto cria o

Java

Page 14: Ruby, Rails e Diversão

1993:Yukihiro Matsumoto cria o

Ruby

Page 15: Ruby, Rails e Diversão

O que é Ruby?

• Linguagem de Script

• Interpretada (e compilável)

• Orientada a objetos (“100%”)

• Programação:– Direta– Simples– Extensível– Portável

Page 16: Ruby, Rails e Diversão

• Propósito geral

• Voltada para realização de tarefas rápidas

• Vantagem sobre linguagens compiladas

• Poderosa

• Facilitadora

O que é Ruby?

Page 17: Ruby, Rails e Diversão

• Linguagem prática (Perl)

• Orientação a objetos (Smalltalk)

• Metaprogramação (Smalltalk, Lisp)

• Sintaxe (Smalltalk, Eiffel e Ada)

• Tratamento de exceções (Java e Python)

Influências

Page 18: Ruby, Rails e Diversão

Características

– Não possui procedimentos nem funções

– Tudo é um objeto

– Objetos possuem métodos

– Métodos são mensagens

– Até mesmo operadores matemáticos são métodos

Page 19: Ruby, Rails e Diversão

1.class

Page 20: Ruby, Rails e Diversão

1.class=> “Fixnum”

Page 21: Ruby, Rails e Diversão
Page 22: Ruby, Rails e Diversão

1

Page 23: Ruby, Rails e Diversão

1

Ei, 1, me responda a

seguinte pergunta: class

Page 24: Ruby, Rails e Diversão

1

Fixnum

Page 25: Ruby, Rails e Diversão

1.send(“class”)

Page 26: Ruby, Rails e Diversão

1.send(“class”)=> “Fixnum”

Page 27: Ruby, Rails e Diversão

Palestra “A Beleza do Ruby”,de Glenn Vanderburg

Page 28: Ruby, Rails e Diversão

Observações

• Ruby não é perfeita• Ruby não é a única linguagem linda• Gostos variam com frequência

Page 29: Ruby, Rails e Diversão

Blocos

Page 30: Ruby, Rails e Diversão

Blocos

• Closures. Funções anônimas. Lambdas.

• Sintaxe concisa (similar a Smalltalk).

• Duas sintaxes

do |a, b|

# código com a, b

end{|a, b| # código com a, b }

Page 31: Ruby, Rails e Diversão

Blocos

obj.each do |e|

e.save!

end

array.group_by {|a| a.type}

("a".."z").each do |char| puts charend

Page 32: Ruby, Rails e Diversão

Blocos

File.open("config.txt") do |in|

in.each_line do |line|

process_config_line(line)

end

end

(0..100).collect {|n| User.find(n).destroy }

Page 33: Ruby, Rails e Diversão

Sintaxe para servir

• Código simples tende a ser mais legível sem pontuação

• Código complexo tende a ser mais legível com pontuação

• Tudo em Ruby, geralmente, tem duas maneiras de ser feito

Page 34: Ruby, Rails e Diversão

Exemplos

• Parênteses é opcional

• Ponto-e-vírgula é opcional

• Duas formas de blocos

Page 35: Ruby, Rails e Diversão

Classes são abertas

Page 36: Ruby, Rails e Diversão

Classes são abertas

• Toda classe pode ser alterada

• Liberdade total

• Flexibilidade no código

• “Ruby Way”

Page 37: Ruby, Rails e Diversão

Exemplos

class NilClass

def blank?

true

end

end

class String

def blank?

self == ""

end

end

Page 38: Ruby, Rails e Diversão

Você, amanhã, na sua empresa:“Chefinho, vamos usar Ruby?”

Page 39: Ruby, Rails e Diversão

O Chefe:“Por que nós iriamos usar Ruby?”

Page 40: Ruby, Rails e Diversão

Você:“A linguagem é bonita, fácil de escrever, não é verbalmente

pesada, e é extensível.”

Page 41: Ruby, Rails e Diversão

O Chefe:“F*da-se. Para quê tudo isso?Vamos continuar com nosso

excelente _ _ _ _.”

Page 42: Ruby, Rails e Diversão

Qual a utilidade disso tudo?

Page 43: Ruby, Rails e Diversão

Código simples

Page 44: Ruby, Rails e Diversão

Pouco código

Page 45: Ruby, Rails e Diversão

É mais fácil achar e corrigir um bug em:

a) 100 LOCb) 10.000 LOCc) 10^42 LOC

Page 46: Ruby, Rails e Diversão

Facilidade de correção

Page 47: Ruby, Rails e Diversão

Facilidade para extensão

Page 48: Ruby, Rails e Diversão

Menos tempo de desenvolvimento

Page 49: Ruby, Rails e Diversão

Menos tempopara entregar um produto

Page 50: Ruby, Rails e Diversão
Page 51: Ruby, Rails e Diversão

(Obs: quando estiver preparando a apresentação, colocar aqui blá-blá-blá sobre a história do Rails e

da 37signals)

Page 52: Ruby, Rails e Diversão

Direto ao ponto:

Page 53: Ruby, Rails e Diversão

No Rails, você se preocupa com a Lógica de Negócio

Page 54: Ruby, Rails e Diversão

Classe Livro: Pertence a um Usuário, tem várias Tags e Tópicos, e tem um Upload. O subtítulo deve ter entre 0 e 256 caracteres A descrição deve ter entre 1 e 1024 caracteres. Tem uma máquina de estados com vários estados e eventos.

Page 55: Ruby, Rails e Diversão

class Book < ActiveRecord::Base # Relacionamentos belongs_to :user has_and_belongs_to_many :tags has_and_belongs_to_many :topics has_one :upload # Validações validates_length_of :subtitle, :mininum => 0, :maximum => 256, :allow_nil => true validates_length_of :description, :mininum => 1, :maximum => 1024

Page 56: Ruby, Rails e Diversão

acts_as_state_machine :initial => :registred state :passive state :registred state :waiting_processing state :in_processing state :preview state :published state :unpublished event :register do transitions :from => :passive, :to => :registred end # ...end

Page 57: Ruby, Rails e Diversão

Hey, mas o framework ______ também faz isso!

Page 58: Ruby, Rails e Diversão

Rails usa Ruby

Page 59: Ruby, Rails e Diversão

Rails agora é (pelo jeito) mainstream

Page 60: Ruby, Rails e Diversão
Page 61: Ruby, Rails e Diversão
Page 62: Ruby, Rails e Diversão
Page 63: Ruby, Rails e Diversão
Page 64: Ruby, Rails e Diversão
Page 65: Ruby, Rails e Diversão
Page 66: Ruby, Rails e Diversão

Observações:

Page 67: Ruby, Rails e Diversão

Ruby é difícil

Page 68: Ruby, Rails e Diversão

Ruby é difícilpois é diferente

Page 69: Ruby, Rails e Diversão

Ruby é difícilpois é diferente

e é meta-programável

Page 70: Ruby, Rails e Diversão

Ruby on Rails é difícil

Page 71: Ruby, Rails e Diversão

Ruby on Rails é difícilpois é um framework

Page 72: Ruby, Rails e Diversão

Ruby on Rails é difícilpois é um framework

e usa Ruby.

Page 73: Ruby, Rails e Diversão

Mas vale apena,ao menos aprender

para conhecer e aproveitarsuas idéias.

Page 74: Ruby, Rails e Diversão

Obrigado!Júlio Santos Monteiro <[email protected]>

25 de Novembro de 2008