Apresentação Ruby no Dojo da UFBA

742 visualizações

Publicada em

Publicada em: Tecnologia
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Apresentação Ruby no Dojo da UFBA

  1. 1. A Linguagem de Programação Ruby Luciano Borges [email_address] @lusabo Alex Chastinet [email_address] @alexchastinet
  2. 2. Matz 1993 DHH 2004
  3. 3. Por que o Ruby?
  4. 4. Dizem que é uma linguagem muito nova! <ul><li>Python 1991 </li></ul><ul><li>Ruby 1993/1995 </li></ul><ul><li>PHP 1994 </li></ul><ul><li>Java 1995 </li></ul>
  5. 5. Dizem que não tem bibliotecas! <ul><li>108 bibliotecas padrões (falta confirmar!) </li></ul><ul><li>Ruby Application Archive </li></ul><ul><ul><li>http://raa.ruby-lang.org/ </li></ul></ul><ul><ul><li>+ 1800 projetos </li></ul></ul><ul><li>RubyForge </li></ul><ul><ul><li>http://rubyforge.org/ </li></ul></ul><ul><ul><li>+ 9000 projetos </li></ul></ul><ul><li>RubyGems </li></ul><ul><ul><li>http://rubygems.org/ </li></ul></ul><ul><ul><li>+ 20000 gems </li></ul></ul>
  6. 6. Dizem que não tem suporte! <ul><li>Core 100% documentado </li></ul><ul><ul><li>http://www.ruby-doc.org/core/ </li></ul></ul><ul><ul><li>http://apidock.com/ </li></ul></ul><ul><li>Vários tutoriais e livros disponíveis </li></ul><ul><ul><li>http://aprendaaprogramar.rubyonrails.pro.br/ </li></ul></ul><ul><ul><li>http://why.nomedojogo.com/ </li></ul></ul><ul><li>Comunidade ativa </li></ul><ul><ul><li>http://softwarelivre.org/guru-ba </li></ul></ul><ul><ul><li>http://guru-sp.com/ </li></ul></ul><ul><ul><li>http://guruce.org/ </li></ul></ul><ul><ul><li>http://softwarelivre.org/profile/grupo-de-usuarios-de-ruby-on-rails-rs </li></ul></ul><ul><ul><li>… </li></ul></ul>
  7. 7. Dizem que ninguém usa Ruby! <ul><li>Simulações </li></ul><ul><ul><li>Nasa e Motorola </li></ul></ul><ul><li>Telefonia </li></ul><ul><ul><li>Lucent </li></ul></ul><ul><li>Administração de Sistemas </li></ul><ul><ul><li>Level3 </li></ul></ul><ul><li>Redes </li></ul><ul><ul><li>Open Domain Server </li></ul></ul><ul><li>Aplicações Web </li></ul><ul><ul><li>Aqui vem a lista do Rails :) </li></ul></ul>
  8. 8. Sintaxe Limpa <ul><li>Não precisa de ; </li></ul><ul><li>Uso de () é opcional </li></ul>
  9. 9. Sintaxe Objetiva <ul><li>objeto.atributo = </li></ul><ul><ul><li>método </li></ul></ul><ul><li>empty? e capitalize! </li></ul><ul><ul><li>métodos </li></ul></ul>
  10. 10. <ul><li>Declarações simples </li></ul><ul><ul><li>variavel_local </li></ul></ul><ul><ul><li>@variavel_de_instancia </li></ul></ul><ul><ul><li>@@variavel_de_classe </li></ul></ul><ul><ul><li>$variavel_global </li></ul></ul><ul><li>do … end ou {…} </li></ul><ul><li>Tratamento de exceção </li></ul><ul><ul><li>Similar ao Java </li></ul></ul><ul><li>Interpolação de String </li></ul>Sintaxe Flexível e Simples
  11. 11. <ul><li>Tudo é objeto </li></ul><ul><ul><li>Números </li></ul></ul><ul><ul><li>Ranges </li></ul></ul><ul><ul><li>Hashes </li></ul></ul><ul><ul><li>Classes </li></ul></ul><ul><ul><li>… </li></ul></ul>100% OO
  12. 13. Herança
  13. 14. Metraprogramação <ul><li>Ruby permite adicionar outros métodos e operações aos objetos em tempo de execução. </li></ul><ul><li>Meta-programação é a capacidade de gerar/alterar código em tempo de execução. </li></ul>
  14. 16. <ul><ul><li>Como se fosse uma string que sempre vai alocar o mesmo lugar na memória, não vai ficar mudando de lugar na memória. </li></ul></ul><ul><ul><li>Forma de guardar nomes performaticamente sem consumir memória desnecessariamente. </li></ul></ul><ul><ul><li>Use o sinal de : antes dos nomes dos símbolos. </li></ul></ul>Símbolos
  15. 17. Ranges
  16. 18. Ranges
  17. 19. <ul><ul><li>Forma mais fácil de extrair informações de um texto. </li></ul></ul><ul><ul><li>Instância da classe Regexp </li></ul></ul><ul><ul><li>http://rubular.com </li></ul></ul>Expressões Regulares Método Descrição =~ Procura pela expressão regular no texto e retorna o índice em que ela foi encontrada. !~ Informa se existe uma ocorrência da expressão regular no texto. match Retorna um objeto do tipo MatchData, que contém ponteiros para os locais onde cada grupo da expressão regular foi encontrado.
  18. 20. Expressões Regulares
  19. 21. <ul><ul><li>Coleções de valores. </li></ul></ul><ul><ul><li>Pode conter objetos de diversos tipos. </li></ul></ul>Arrays
  20. 22. <ul><ul><li>Estrutura de dados que mantém um grupo de objetos conhecidos como keys e associa um valor para cada key. </li></ul></ul>Hashes
  21. 23. <ul><ul><li>Utilizados para iterar em coleções, personalizar o comportamento de algum métodos etc. </li></ul></ul><ul><ul><li>Existem duas sintaxes diferente para definir um bloco. </li></ul></ul><ul><ul><ul><li>Utilizando o símbolo { e } ou utilizando as palavras-chave do e end. </li></ul></ul></ul><ul><ul><li>Podem receber parâmetros. </li></ul></ul><ul><ul><ul><li>O símbolo | (pipe) é utilizado para demarcar o início e o fim da lista de parâmetros. </li></ul></ul></ul>Blocos de Código
  22. 25. Operadores condicionais <ul><ul><li>if / elsif / else / end </li></ul></ul>a=0 if a == 0 print “zero” elsif a == 1 print “um” else print “não sei” end unless a == 0 print “não é zero” else print “a é zero” end <ul><ul><li>unless </li></ul></ul>
  23. 26. Operadores condicionais <ul><ul><li>case / when / else / end </li></ul></ul>
  24. 27. Operadores de loop O operadores acima podem ser utilizados com qualquer dos loops. Operador Descrição break Sai do loop atual next Executa o próximo passo do loop return Sai do loop e do método atual redo Reinicia o loop atual
  25. 28. Operadores de loop for i in 1..5 puts i end for a in %w{a b c d} puts a end
  26. 29. Operadores de loop i = %w{a b c d e f} while b = i.pop puts b end
  27. 30. Operadores de loop i = 5 until i = 0 puts i i -= 1 end
  28. 31. Operadores de loop i = 0 begin puts i i += 1 end while i < 0
  29. 32. Operadores de loop loop do puts “a” break if true end
  30. 33. Interpretadores Ruby <ul><li>YARV, evolução do MRI </li></ul><ul><li>JRuby – implementação em Java </li></ul><ul><li>IronRuby – Microsoft </li></ul><ul><li>Rubinius – implementação em Ruby </li></ul><ul><li>REE – Ruby Enterprise Edition / Phusion </li></ul>
  31. 34. <ul><ul><li>A Linguagem de Programação Ruby </li></ul></ul><ul><ul><ul><li>David Flanagan e Yukihiro Matsumoto </li></ul></ul></ul><ul><ul><li>Desenvolvimento Fácil e Rápido de Aplicações Web: Ruby on Rails </li></ul></ul><ul><ul><ul><li>Rodrigo Urubatan </li></ul></ul></ul><ul><ul><li>Google </li></ul></ul><ul><ul><li>Slideshare </li></ul></ul>Referências

×