Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby, um mundo novo

Ruby, um mundo novo

Ruby vem tomando destaque no mundo em desenvolvimento Web, e isso se deve às características da linguagem e a filosofia de sua comunidade. Nesta palestra iremos descrever algumas dessas características e mostrar a força da comunidade.

Tiago Lima

April 09, 2014
Tweet

More Decks by Tiago Lima

Other Decks in Programming

Transcript

  1. ROTEIRO • Tão Velho Quanto Java • Características da Linguagem

    • Ruby on Rails • Comunidade Única • Quem usa? • Como aprender? Sobre O Que Vamos Falar?
  2. RUBY • Criada por Yukihiro “Matz” Matsumoto em 1995 •

    Baseada em: Perl, Smalltalk, Eiffel, Ada e Lisp • “Ruby é projetada para fazer os programadores felizes” (Matz)
  3. – Kent Beck I always knew that one day Smalltalk

    would replace Java. I just didn't know it would be called Ruby.
  4. INTUITIVA • Readability - leitura fácil • Legibility - entendimento

    fácil 2.days.ago   ! Time.now   ! 3.times   ! Date.today
  5. FLEXÍVEL • Facilmente extensível class  String      def  letters

             self.gsub(/\d/,  "")      end   end       "ru2378by823ro2343ots".letters   #  =>  "rubyroots"
  6. MULTIPARADIGMA • Orientada a Objetos mandela  =  Person.new   !

    gandhi  =  Person.new   ! mandela.say_hello   ! mandela.be_friends_with(gandhi)
  7. MULTIPARADIGMA • Funcional numbers  =  [1,  2,  3,  4,  5]

      ! numbers.select  {  |n|  n  %  2  ==  0  }   ! #  =>  [2,  4]
  8. MULTIPARADIGMA • Imperativa numbers  =  [1,  2,  3,  4,  5]

      ! even  =  []   ! numbers.each  do  |n|      even  <<  n  if  n.even?   end
  9. MULTIPARADIGMA • Reflexiva beagle.is_a?  Animal   #  =>  true  

    ! "A  String".methods   #  =>  [:+,  :length,  :empty?,(...)]
  10. TIPAGEM • Forte • Dinâmica name  =  "Nelson  Mandela"  

    age  =  94   ! name  +  age   #  =>  TypeError:  can't  convert   Fixnum  into  String
  11. TUDO É OBJETO • Mais uma vez: Tudo é objeto

    • O que você acabou de pensar é um objeto 3.times   #  =>  #<Enumerator:  3:times>   ! 'im  an  object'.emtpy?   #  =>  false   ! 1.class   #  =>  Fixnum   ! false.class   #  =>  FalseClass
  12. QUASE TUDO É EXPRESSÃO • Sempre há um retorno •

    Efeito direto de: Tudo é um objeto if  sexo  ==  :masc     saudacao  =  ‘Sr.’   elsif  sexo  ==  :fem     saudacao  =  ‘Sra.’   end   ! #  Ruby  way   saudacao  =  if  sexo  ==  :masc             ‘Sr.’          elsif  sexo  ==  :fem           ‘Sra.          end   ! saudacao  =  case  sexo           when  :masc  then  ‘Sr.’           when  :fem  then  ‘Sra.’          end
  13. EXEMPLO DE USO • Defina um Conjunto de Strings, suportando

    operações de conjuntos: • Adicionar uma String • Checar se o conjunto contém uma String específica • Remover uma String
  14. CULTURA • Testes antes do desenvolvimento • Test-Driven Development •

    Behavior-Driven Development • Inovadora • Milhares de Bibliotecas abertas para uso
  15. CULTURA • Terminal - Linha de comando • Editores de

    Texto Simples • Documentação grátis e boa • Desenvolvedores prontos para ajudar
  16. RUBYGEMS • Bibliotecas são gems • Software que permite baixar,

    instalar e usar ruby software • 73,543 gems • 2,916,478,778 downloads
  17. INSTALANDO UMA GEM • Um único comando • Biblioteca para

    todos os gostos gem  install  rails   ! gem  install  cocaine   ! gem  install  mysql2   ! gem  install  rspec   ! gem  install  paperclip   ! gem  install  devise
  18. SENTA QUE LÁ VEM HISTÓRIA • David Heinemeier Hansson (DHH)

    • Criada em 2005 • Arquitetura MVC (model-view- controller) • Princípios bem estabelecidos
  19. CONTEÚDO GRATUITO • Try Ruby • Codecademy - Ruby •

    Ruby Monk • I Want To Learn Ruby • Rails Guides • Rails For Zombies • Railscasts
  20. LIVROS • The Ruby Programming • Ruby Programming • Practical

    Object-Oriented Design in Ruby: An Agile Primer • Agile Web Development with Rails 4