SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
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.
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.
7.
<ul><li>“ Beleza leva a felicidade. </li></ul><ul><li>Felicidade leva a produtividade. </li></ul><ul><li>Logo, beleza leva a produtividade.” </li></ul>(David Heinemeier Hansson)
8.
“ Você pode reconhecer a verdade por sua beleza e simplicidade.” (Richard Feynman)
9.
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?
10.
1993: Yukihiro Matsumoto quer uma linguagem mais humana.
11.
1993: Yukihiro Matsumoto faz uma linguagem mais humana.
12.
1993: Yukihiro Matsumoto faz uma linguagem menos máquina, mais humana.
16.
O que é Ruby? <ul><li>Linguagem de Script </li></ul><ul><li>Interpretada (e compilável) </li></ul><ul><li>Orientada a objetos (“100%”) </li></ul><ul><li>Programação: </li></ul><ul><ul><li>Direta </li></ul></ul><ul><ul><li>Simples </li></ul></ul><ul><ul><li>Extensível </li></ul></ul><ul><ul><li>Portável </li></ul></ul>
17.
<ul><li>Propósito geral </li></ul><ul><li>Voltada para realização de tarefas rápidas </li></ul><ul><li>Vantagem sobre linguagens compiladas </li></ul><ul><li>Poderosa </li></ul><ul><li>Facilitadora </li></ul>O que é Ruby?
18.
<ul><li>Linguagem prática (Perl) </li></ul><ul><li>Orientação a objetos (Smalltalk) </li></ul><ul><li>Metaprogramação (Smalltalk, Lisp) </li></ul><ul><li>Sintaxe (Smalltalk, Eiffel e Ada) </li></ul><ul><li>Tratamento de exceções (Java e Python) </li></ul>Influências
19.
Características <ul><ul><li>Não possui procedimentos nem funções </li></ul></ul><ul><ul><li>Tudo é um objeto </li></ul></ul><ul><ul><li>Objetos possuem métodos </li></ul></ul><ul><ul><li>Métodos são mensagens </li></ul></ul><ul><ul><li>Até mesmo operadores matemáticos são métodos </li></ul></ul>
27.
<ul><li>1 .send(“ class ”) </li></ul><ul><li>=> “Fixnum” </li></ul>
28.
Palestra “A Beleza do Ruby”, de Glenn Vanderburg
29.
Observações <ul><li>Ruby não é perfeita </li></ul><ul><li>Ruby não é a única linguagem linda </li></ul><ul><li>Gostos variam com frequência </li></ul>
31.
Blocos <ul><li>Closures. Funções anônimas. Lambdas. </li></ul><ul><li>Sintaxe concisa (similar a Smalltalk). </li></ul><ul><li>Duas sintaxes </li></ul><ul><li>do |a, b| </li></ul><ul><li># código com a, b </li></ul><ul><li>end </li></ul>{|a, b| # código com a, b }
32.
Blocos obj.each do |e| e.save! end array.group_by {|a| a.type} ("a".."z").each do |char| puts char end
33.
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 }
34.
Sintaxe para servir <ul><li>Código simples tende a ser mais legível sem pontuação </li></ul><ul><li>Código complexo tende a ser mais legível com pontuação </li></ul><ul><li>Tudo em Ruby, geralmente, tem duas maneiras de ser feito </li></ul>
35.
Exemplos <ul><li>Parênteses é opcional </li></ul><ul><li>Ponto-e-vírgula é opcional </li></ul><ul><li>Duas formas de blocos </li></ul>
37.
Classes são abertas <ul><li>Toda classe pode ser alterada </li></ul><ul><li>Liberdade total </li></ul><ul><li>Flexibilidade no código </li></ul><ul><li>“ Ruby Way” </li></ul>
38.
Exemplos <ul><li>class NilClass </li></ul><ul><li>def blank? </li></ul><ul><li>true </li></ul><ul><li>end </li></ul><ul><li>end </li></ul>class String def blank? self == "" end end
39.
Você, amanhã, na sua empresa: “Chefinho, vamos usar Ruby?”
54.
No Rails, você se preocupa com a Lógica de Negócio
55.
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.
57.
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