ruby, rails e diversão

Download Ruby, Rails e Diversão

Post on 19-May-2015

1.525 views

Category:

Technology

1 download

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.

TRANSCRIPT

  • 1. Ruby, Rails e diverso Jlio Santos Monteiro 25 de Novembro de 2008

2. Jlio Santos Monteiro? 3. seja.a2c.com.br 4. Ruby on Rails desde 2006 5.

  • Desenvolver Engenharia

6.

  • Programar Arte

7.

  • Beleza leva a felicidade.
  • Felicidade leva a produtividade.
  • Logo, beleza leva a produtividade.

(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?

  • Linguagem de Script
  • Interpretada (e compilvel)
  • Orientada a objetos (100%)
  • Programao:
    • Direta
    • Simples
    • Extensvel
    • Portvel

17.

  • Propsito geral
  • Voltada para realizao de tarefas rpidas
  • Vantagem sobre linguagens compiladas
  • Poderosa
  • Facilitadora

O que Ruby? 18.

  • Linguagem prtica (Perl)
  • Orientao a objetos (Smalltalk)
  • Metaprogramao (Smalltalk, Lisp)
  • Sintaxe (Smalltalk, Eiffel e Ada)
  • Tratamento de excees (Java e Python)

Influncias 19. Caractersticas

    • No possui procedimentos nem funes
    • Tudo um objeto
    • Objetos possuem mtodos
    • Mtodos so mensagens
    • At mesmo operadores matemticos so mtodos

20.

  • 1 .class

21.

  • 1 .class
  • => Fixnum

22. 23. 1 24. 1 Ei, 1, me responda a seguinte pergunta:class 25. 1 Fixnum 26.

  • 1 .send( class )

27.

  • 1 .send( class )
  • => Fixnum

28. Palestra A Beleza do Ruby, de Glenn Vanderburg 29. Observaes

  • Ruby no perfeita
  • Ruby no a nica linguagem linda
  • Gostos variam com frequncia

30. Blocos 31. Blocos

  • Closures. Funes annimas. Lambdas.
  • Sintaxe concisa (similar a Smalltalk).
  • Duas sintaxes
  • do |a, b|
  • # cdigo com a, b
  • end

{|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

  • Cdigo simples tende a ser mais legvel sem pontuao
  • Cdigo complexo tende a ser mais legvel com pontuao
  • Tudo em Ruby, geralmente, tem duas maneiras de ser feito

35. Exemplos

  • Parnteses opcional
  • Ponto-e-vrgula opcional
  • Duas formas de blocos

36. Classes so abertas 37. Classes so abertas

  • Toda classe pode ser alterada
  • Liberdade total
  • Flexibilidade no cdigo
  • Ruby Way

38. Exemplos

  • class NilClass
  • def blank?
  • true
  • end
  • end

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 < 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 => 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 ______ 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