Ruby, Rails e diversão Júlio Santos Monteiro <julio@monteiro.eti.br> 25 de Novembro de 2008
Júlio Santos Monteiro?
seja.a2c.com.br
Ruby on Rails desde 2006
<ul><li>Desenvolver é Engenharia </li></ul>
<ul><li>Programar é  Arte </li></ul>
<ul><li>“ Beleza leva a felicidade. </li></ul><ul><li>Felicidade leva a produtividade. </li></ul><ul><li>Logo, beleza leva...
“ Você pode reconhecer a verdade por sua beleza e simplicidade.” (Richard Feynman)‏
Por que o Ruby, se já temos Java, Python, Perl, PHP, Lisp, .Net, Obj-C, ActionScript, Erlang, Lua, Smalltalk, Haskell,  (d...
1993: Yukihiro Matsumoto quer uma linguagem mais humana.
1993: Yukihiro Matsumoto faz uma linguagem mais humana.
1993: Yukihiro Matsumoto faz uma linguagem menos máquina, mais humana.
1993: Yukihiro Matsumoto cria o Java
1993: Yukihiro Matsumoto cria o Java
1993: Yukihiro Matsumoto cria o Ruby
O que é Ruby? <ul><li>Linguagem de Script </li></ul><ul><li>Interpretada (e compilável)‏ </li></ul><ul><li>Orientada a obj...
<ul><li>Propósito geral </li></ul><ul><li>Voltada para realização de tarefas rápidas </li></ul><ul><li>Vantagem sobre ling...
<ul><li>Linguagem prática (Perl)‏ </li></ul><ul><li>Orientação a objetos (Smalltalk)‏ </li></ul><ul><li>Metaprogramação (S...
Características <ul><ul><li>Não possui procedimentos nem funções </li></ul></ul><ul><ul><li>Tudo é um objeto </li></ul></u...
<ul><li>1 .class </li></ul>
<ul><li>1 .class </li></ul><ul><li>=> “Fixnum” </li></ul>
 
1
1 Ei, 1, me responda a seguinte pergunta:  class
1 Fixnum
<ul><li>1 .send(“ class ”)‏ </li></ul>
<ul><li>1 .send(“ class ”)‏ </li></ul><ul><li>=> “Fixnum” </li></ul>
Palestra “A Beleza do Ruby”, de Glenn Vanderburg
Observações <ul><li>Ruby não é perfeita </li></ul><ul><li>Ruby não é a única linguagem linda </li></ul><ul><li>Gostos vari...
Blocos
Blocos <ul><li>Closures. Funções anônimas. Lambdas. </li></ul><ul><li>Sintaxe concisa (similar a Smalltalk). </li></ul><ul...
Blocos obj.each do |e| e.save! end array.group_by {|a| a.type} (&quot;a&quot;..&quot;z&quot;).each do |char| puts char end
Blocos File.open(&quot;config.txt&quot;) do |in| in.each_line do |line| process_config_line(line)‏ end end (0..100).collec...
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 ...
Exemplos <ul><li>Parênteses é opcional </li></ul><ul><li>Ponto-e-vírgula é opcional </li></ul><ul><li>Duas formas de bloco...
Classes são abertas
Classes são abertas <ul><li>Toda classe pode ser alterada </li></ul><ul><li>Liberdade total </li></ul><ul><li>Flexibilidad...
Exemplos <ul><li>class NilClass </li></ul><ul><li>def blank? </li></ul><ul><li>true </li></ul><ul><li>end </li></ul><ul><l...
Você, amanhã, na sua empresa: “Chefinho, vamos usar Ruby?”
O Chefe: “Por que nós iriamos usar Ruby?”
Você: “A linguagem é bonita, fácil de escrever, não é verbalmente pesada, e é extensível.”
O Chefe: “F*da-se. Para quê tudo isso?Vamos continuar com nosso excelente _ _ _ _.”
Qual a utilidade disso tudo?
Código simples
Pouco código
É mais fácil achar e corrigir um  bug  em: a) 100 LOC b) 10.000 LOC c) 10^42 LOC
Facilidade de correção
Facilidade para extensão
Menos tempo de desenvolvimento
Menos tempo para entregar um produto
 
(Obs: quando estiver preparando a apresentação, colocar aqui blá-blá-blá sobre a história do Rails e da 37signals)‏
Direto ao ponto:
No Rails, você se preocupa com a Lógica de Negócio
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 caract...
class Book < ActiveRecord::Base # Relacionamentos belongs_to :user has_and_belongs_to_many :tags has_and_belongs_to_many :...
acts_as_state_machine :initial => :registred state :passive state :registred state :waiting_processing state :in_processin...
Hey, mas o framework ______ também faz isso!
Rails usa Ruby
Rails agora é (pelo jeito)  mainstream
 
 
 
 
 
 
Observações:
Ruby é difícil
Ruby é difícil pois é diferente
Ruby é difícil pois é diferente e é meta-programável
Ruby on Rails é difícil
Ruby on Rails é difícil pois é um framework
Ruby on Rails é difícil pois é um framework e usa Ruby.
Mas vale apena, ao menos aprender para conhecer e aproveitar suas idéias.
Obrigado! Júlio Santos Monteiro <julio@monteiro.eti.br> 25 de Novembro de 2008
Upcoming SlideShare
Loading in...5
×

Ruby, Rails e Diversão

1,572

Published on

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.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,572
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
43
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Ruby, Rails e Diversão

  1. 1. Ruby, Rails e diversão Júlio Santos Monteiro <julio@monteiro.eti.br> 25 de Novembro de 2008
  2. 2. Júlio Santos Monteiro?
  3. 3. seja.a2c.com.br
  4. 4. Ruby on Rails desde 2006
  5. 5. <ul><li>Desenvolver é Engenharia </li></ul>
  6. 6. <ul><li>Programar é Arte </li></ul>
  7. 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. 8. “ Você pode reconhecer a verdade por sua beleza e simplicidade.” (Richard Feynman)‏
  9. 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. 10. 1993: Yukihiro Matsumoto quer uma linguagem mais humana.
  11. 11. 1993: Yukihiro Matsumoto faz uma linguagem mais humana.
  12. 12. 1993: Yukihiro Matsumoto faz uma linguagem menos máquina, mais humana.
  13. 13. 1993: Yukihiro Matsumoto cria o Java
  14. 14. 1993: Yukihiro Matsumoto cria o Java
  15. 15. 1993: Yukihiro Matsumoto cria o Ruby
  16. 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. 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. 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. 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>
  20. 20. <ul><li>1 .class </li></ul>
  21. 21. <ul><li>1 .class </li></ul><ul><li>=> “Fixnum” </li></ul>
  22. 23. 1
  23. 24. 1 Ei, 1, me responda a seguinte pergunta: class
  24. 25. 1 Fixnum
  25. 26. <ul><li>1 .send(“ class ”)‏ </li></ul>
  26. 27. <ul><li>1 .send(“ class ”)‏ </li></ul><ul><li>=> “Fixnum” </li></ul>
  27. 28. Palestra “A Beleza do Ruby”, de Glenn Vanderburg
  28. 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>
  29. 30. Blocos
  30. 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 }
  31. 32. Blocos obj.each do |e| e.save! end array.group_by {|a| a.type} (&quot;a&quot;..&quot;z&quot;).each do |char| puts char end
  32. 33. Blocos File.open(&quot;config.txt&quot;) do |in| in.each_line do |line| process_config_line(line)‏ end end (0..100).collect {|n| User.find(n).destroy }
  33. 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>
  34. 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>
  35. 36. Classes são abertas
  36. 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>
  37. 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 == &quot;&quot; end end
  38. 39. Você, amanhã, na sua empresa: “Chefinho, vamos usar Ruby?”
  39. 40. O Chefe: “Por que nós iriamos usar Ruby?”
  40. 41. Você: “A linguagem é bonita, fácil de escrever, não é verbalmente pesada, e é extensível.”
  41. 42. O Chefe: “F*da-se. Para quê tudo isso?Vamos continuar com nosso excelente _ _ _ _.”
  42. 43. Qual a utilidade disso tudo?
  43. 44. Código simples
  44. 45. Pouco código
  45. 46. É mais fácil achar e corrigir um bug em: a) 100 LOC b) 10.000 LOC c) 10^42 LOC
  46. 47. Facilidade de correção
  47. 48. Facilidade para extensão
  48. 49. Menos tempo de desenvolvimento
  49. 50. Menos tempo para entregar um produto
  50. 52. (Obs: quando estiver preparando a apresentação, colocar aqui blá-blá-blá sobre a história do Rails e da 37signals)‏
  51. 53. Direto ao ponto:
  52. 54. No Rails, você se preocupa com a Lógica de Negócio
  53. 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.
  54. 56. 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
  55. 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
  56. 58. Hey, mas o framework ______ também faz isso!
  57. 59. Rails usa Ruby
  58. 60. Rails agora é (pelo jeito) mainstream
  59. 67. Observações:
  60. 68. Ruby é difícil
  61. 69. Ruby é difícil pois é diferente
  62. 70. Ruby é difícil pois é diferente e é meta-programável
  63. 71. Ruby on Rails é difícil
  64. 72. Ruby on Rails é difícil pois é um framework
  65. 73. Ruby on Rails é difícil pois é um framework e usa Ruby.
  66. 74. Mas vale apena, ao menos aprender para conhecer e aproveitar suas idéias.
  67. 75. Obrigado! Júlio Santos Monteiro <julio@monteiro.eti.br> 25 de Novembro de 2008
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×