Your SlideShare is downloading. ×
0
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Ruby, Rails e Diversão
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Ruby, Rails e Diversão

1,544

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.

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,544
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
43
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ruby, Rails e diversão Júlio Santos Monteiro <julio@monteiro.eti.br> 25 de Novembro de 2008
  • 2. Júlio Santos Monteiro?
  • 3. seja.a2c.com.br
  • 4. Ruby on Rails desde 2006
  • 5. <ul><li>Desenvolver é Engenharia </li></ul>
  • 6. <ul><li>Programar é Arte </li></ul>
  • 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.
  • 13. 1993: Yukihiro Matsumoto cria o Java
  • 14. 1993: Yukihiro Matsumoto cria o Java
  • 15. 1993: Yukihiro Matsumoto cria o Ruby
  • 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>
  • 20. <ul><li>1 .class </li></ul>
  • 21. <ul><li>1 .class </li></ul><ul><li>=> “Fixnum” </li></ul>
  • 22.  
  • 23. 1
  • 24. 1 Ei, 1, me responda a seguinte pergunta: class
  • 25. 1 Fixnum
  • 26. <ul><li>1 .send(“ class ”)‏ </li></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>
  • 30. Blocos
  • 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} (&quot;a&quot;..&quot;z&quot;).each do |char| puts char end
  • 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 }
  • 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>
  • 36. Classes são abertas
  • 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 == &quot;&quot; end end
  • 39. Você, amanhã, na sua empresa: “Chefinho, vamos usar Ruby?”
  • 40. O Chefe: “Por que nós iriamos usar Ruby?”
  • 41. Você: “A linguagem é bonita, fácil de escrever, não é verbalmente pesada, e é extensível.”
  • 42. O Chefe: “F*da-se. Para quê tudo isso?Vamos continuar com nosso excelente _ _ _ _.”
  • 43. Qual a utilidade disso tudo?
  • 44. Código simples
  • 45. Pouco código
  • 46. É mais fácil achar e corrigir um bug em: a) 100 LOC b) 10.000 LOC c) 10^42 LOC
  • 47. Facilidade de correção
  • 48. Facilidade para extensão
  • 49. Menos tempo de desenvolvimento
  • 50. Menos tempo para entregar um produto
  • 51.  
  • 52. (Obs: quando estiver preparando a apresentação, colocar aqui blá-blá-blá sobre a história do Rails e da 37signals)‏
  • 53. Direto ao ponto:
  • 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.
  • 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
  • 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
  • 58. Hey, mas o framework ______ também faz isso!
  • 59. Rails usa Ruby
  • 60. Rails agora é (pelo jeito) mainstream
  • 61.  
  • 62.  
  • 63.  
  • 64.  
  • 65.  
  • 66.  
  • 67. Observações:
  • 68. Ruby é difícil
  • 69. Ruby é difícil pois é diferente
  • 70. Ruby é difícil pois é diferente e é meta-programável
  • 71. Ruby on Rails é difícil
  • 72. Ruby on Rails é difícil pois é um framework
  • 73. Ruby on Rails é difícil pois é um framework e usa Ruby.
  • 74. Mas vale apena, ao menos aprender para conhecer e aproveitar suas idéias.
  • 75. Obrigado! Júlio Santos Monteiro <julio@monteiro.eti.br> 25 de Novembro de 2008

×