Ruby, Rails e Diversão

  • Published on
    19-May-2015

  • View
    1.524

  • Download
    1

Embed Size (px)

DESCRIPTION

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

Transcript

<ul><li> 1. Ruby, Rails e diverso Jlio Santos Monteiro 25 de Novembro de 2008</li></ul> <p> 2. Jlio Santos Monteiro? 3. seja.a2c.com.br 4. Ruby on Rails desde 2006 5. </p> <ul><li>Desenvolver Engenharia </li></ul> <p> 6. </p> <ul><li>Programar Arte </li></ul> <p> 7. </p> <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> <p>(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 mquina, 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? </p> <ul><li>Linguagem de Script </li></ul> <ul><li>Interpretada (e compilvel) </li></ul> <ul><li>Orientada a objetos (100%) </li></ul> <ul><li>Programao: </li></ul> <ul><li><ul><li>Direta </li></ul></li></ul> <ul><li><ul><li>Simples </li></ul></li></ul> <ul><li><ul><li>Extensvel </li></ul></li></ul> <ul><li><ul><li>Portvel </li></ul></li></ul> <p> 17. </p> <ul><li>Propsito geral </li></ul> <ul><li>Voltada para realizao de tarefas rpidas </li></ul> <ul><li>Vantagem sobre linguagens compiladas </li></ul> <ul><li>Poderosa </li></ul> <ul><li>Facilitadora </li></ul> <p>O que Ruby? 18. </p> <ul><li>Linguagem prtica (Perl) </li></ul> <ul><li>Orientao a objetos (Smalltalk) </li></ul> <ul><li>Metaprogramao (Smalltalk, Lisp) </li></ul> <ul><li>Sintaxe (Smalltalk, Eiffel e Ada) </li></ul> <ul><li>Tratamento de excees (Java e Python) </li></ul> <p>Influncias 19. Caractersticas </p> <ul><li><ul><li>No possui procedimentos nem funes </li></ul></li></ul> <ul><li><ul><li>Tudo um objeto </li></ul></li></ul> <ul><li><ul><li>Objetos possuem mtodos </li></ul></li></ul> <ul><li><ul><li>Mtodos so mensagens </li></ul></li></ul> <ul><li><ul><li>At mesmo operadores matemticos so mtodos </li></ul></li></ul> <p> 20. </p> <ul><li>1 .class </li></ul> <p> 21. </p> <ul><li>1 .class </li></ul> <ul><li>=&gt; Fixnum </li></ul> <p> 22. 23. 1 24. 1 Ei, 1, me responda a seguinte pergunta:class 25. 1 Fixnum 26. </p> <ul><li>1 .send( class ) </li></ul> <p> 27. </p> <ul><li>1 .send( class ) </li></ul> <ul><li>=&gt; Fixnum </li></ul> <p> 28. Palestra A Beleza do Ruby, de Glenn Vanderburg 29. Observaes </p> <ul><li>Ruby no perfeita </li></ul> <ul><li>Ruby no a nica linguagem linda </li></ul> <ul><li>Gostos variam com frequncia </li></ul> <p> 30. Blocos 31. Blocos </p> <ul><li>Closures. Funes annimas. 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># cdigo com a, b </li></ul> <ul><li>end </li></ul> <p>{|a, b| # cdigo 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 </p> <ul><li>Cdigo simples tende a ser mais legvel sem pontuao </li></ul> <ul><li>Cdigo complexo tende a ser mais legvel com pontuao </li></ul> <ul><li>Tudo em Ruby, geralmente, tem duas maneiras de ser feito </li></ul> <p> 35. Exemplos </p> <ul><li>Parnteses opcional </li></ul> <ul><li>Ponto-e-vrgula opcional </li></ul> <ul><li>Duas formas de blocos </li></ul> <p> 36. Classes so abertas 37. Classes so abertas </p> <ul><li>Toda classe pode ser alterada </li></ul> <ul><li>Liberdade total </li></ul> <ul><li>Flexibilidade no cdigo </li></ul> <ul><li> Ruby Way </li></ul> <p> 38. Exemplos </p> <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> <p>class String def blank? self == "" end end 39. Voc, amanh, na sua empresa: Chefinho, vamos usar Ruby? 40. O Chefe: Por que ns iriamos usar Ruby? 41. Voc: A linguagem bonita, fcil de escrever, no verbalmente pesada, e extensvel. 42. O Chefe: F*da-se. Para qu tudo isso?Vamos continuar com nosso excelente _ _ _ _. 43. Qual a utilidade disso tudo? 44. Cdigo simples 45. Pouco cdigo 46. mais fcil achar e corrigir umbugem: a) 100 LOC b) 10.000 LOC c) 10^42 LOC 47. Facilidade de correo 48. Facilidade para extenso 49. Menos tempo de desenvolvimento 50. Menos tempo para entregar um produto 51. 52. (Obs: quando estiver preparando a apresentao, colocar aqui bl-bl-bl sobre a histria do Rails e da 37signals) 53. Direto ao ponto: 54. No Rails, voc se preocupa com a Lgica de Negcio 55. Classe Livro: Pertence a um Usurio, tem vrias Tags e Tpicos, e tem um Upload. O subttulo deve ter entre 0 e 256 caracteres A descrio deve ter entre 1 e 1024 caracteres. Tem uma mquina de estados com vrios estados e eventos. 56. class Book &lt; ActiveRecord::Base # Relacionamentos belongs_to :user has_and_belongs_to_many :tags has_and_belongs_to_many :topics has_one :upload # Validaes validates_length_of :subtitle, :mininum =&gt; 0, :maximum =&gt; 256, :allow_nil =&gt; true validates_length_of :description, :mininum =&gt; 1, :maximum =&gt; 1024 57. acts_as_state_machine :initial =&gt; :registred state :passive state :registred state :waiting_processing state :in_processing state :preview state :published state :unpublished event :register do transitions :from =&gt; :passive, :to =&gt; :registred end # ... end 58. Hey, mas o framework ______ tambm faz isso! 59. Rails usa Ruby 60. Rails agora (pelo jeito)mainstream 61. 62. 63. 64. 65. 66. 67. Observaes: 68. Ruby difcil 69. Ruby difcil pois diferente 70. Ruby difcil pois diferente e meta-programvel 71. Ruby on Rails difcil 72. Ruby on Rails difcil pois um framework 73. Ruby on Rails difcil pois um framework e usa Ruby. 74. Mas vale apena, ao menos aprender para conhecer e aproveitar suas idias. 75. Obrigado! Jlio Santos Monteiro 25 de Novembro de 2008</p>