Ruby, Rails e Diversão

  • 1,463 views
Uploaded 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.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,463
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
42
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.
    • 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 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?
    • Linguagem de Script
    • Interpretada (e compilável)‏
    • Orientada a objetos (“100%”)‏
    • Programação:
      • Direta
      • Simples
      • Extensível
      • Portável
  • 17.
    • Propósito geral
    • Voltada para realização de tarefas rápidas
    • Vantagem sobre linguagens compiladas
    • Poderosa
    • Facilitadora
    O que é Ruby?
  • 18.
    • Linguagem prática (Perl)‏
    • Orientação a objetos (Smalltalk)‏
    • Metaprogramação (Smalltalk, Lisp)‏
    • Sintaxe (Smalltalk, Eiffel e Ada)‏
    • Tratamento de exceções (Java e Python)‏
    Influências
  • 19. Características
      • Não possui procedimentos nem funções
      • Tudo é um objeto
      • Objetos possuem métodos
      • Métodos são mensagens
      • Até mesmo operadores matemáticos são métodos
  • 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. Observações
    • Ruby não é perfeita
    • Ruby não é a única linguagem linda
    • Gostos variam com frequência
  • 30. Blocos
  • 31. Blocos
    • Closures. Funções anônimas. Lambdas.
    • Sintaxe concisa (similar a Smalltalk).
    • Duas sintaxes
    • do |a, b|
    • # código com a, b
    • end
    {|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
    • Código simples tende a ser mais legível sem pontuação
    • Código complexo tende a ser mais legível com pontuação
    • Tudo em Ruby, geralmente, tem duas maneiras de ser feito
  • 35. Exemplos
    • Parênteses é opcional
    • Ponto-e-vírgula é opcional
    • Duas formas de blocos
  • 36. Classes são abertas
  • 37. Classes são abertas
    • Toda classe pode ser alterada
    • Liberdade total
    • Flexibilidade no código
    • “ Ruby Way”
  • 38. Exemplos
    • class NilClass
    • def blank?
    • true
    • end
    • end
    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