A Linguagem de Programação Ruby Luciano Borges [email_address] @lusabo Alex Chastinet [email_address] @alexchastinet
Matz 1993 DHH 2004
Por que o Ruby?
Dizem que é uma linguagem muito nova! Python 1991 Ruby 1993/1995 PHP 1994 Java 1995
Dizem que não tem bibliotecas! 108 bibliotecas padrões  (falta confirmar!) Ruby Application Archive http://raa.ruby-lang.org/ + 1800 projetos RubyForge http://rubyforge.org/ + 9000 projetos RubyGems http://rubygems.org/ + 20000 gems
Dizem que não tem suporte! Core 100% documentado http://www.ruby-doc.org/core/ http://apidock.com/ Vários tutoriais e livros disponíveis http://aprendaaprogramar.rubyonrails.pro.br/ http://why.nomedojogo.com/ Comunidade ativa http://softwarelivre.org/guru-ba http://guru-sp.com/ http://guruce.org/ http://softwarelivre.org/profile/grupo-de-usuarios-de-ruby-on-rails-rs …
Dizem que ninguém usa Ruby! Simulações Nasa e Motorola Telefonia Lucent Administração de Sistemas Level3 Redes Open Domain Server Aplicações Web Aqui vem a lista do Rails :)
Sintaxe Limpa Não precisa de ; Uso de () é opcional
Sintaxe Objetiva objeto.atributo =  método empty? e capitalize! métodos
Declarações simples variavel_local @variavel_de_instancia @@variavel_de_classe $variavel_global do … end ou {…} Tratamento de exceção Similar ao Java Interpolação de String Sintaxe Flexível e Simples
Tudo é objeto Números Ranges Hashes Classes … 100% OO
 
Herança
Metraprogramação Ruby permite adicionar outros métodos e operações aos objetos em tempo de execução. Meta-programação é a capacidade de gerar/alterar código em tempo de execução.
 
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. Forma de guardar nomes performaticamente sem consumir memória desnecessariamente. Use o sinal de : antes dos nomes dos símbolos. Símbolos
Ranges
Ranges
Forma mais fácil de extrair informações de um texto. Instância da classe Regexp http://rubular.com 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.
Expressões Regulares
Coleções de valores. Pode conter objetos de diversos tipos. Arrays
Estrutura de dados que mantém um grupo de objetos conhecidos como  keys  e associa um valor para cada key. Hashes
Utilizados para iterar em coleções, personalizar o comportamento de algum métodos etc. Existem duas sintaxes diferente para definir um bloco. Utilizando o símbolo { e } ou utilizando as palavras-chave do e end. Podem receber parâmetros. O símbolo | (pipe) é utilizado para demarcar o início e o fim da lista de parâmetros. Blocos de Código
 
Operadores condicionais if / elsif / else / end 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 unless
Operadores condicionais case / when / else / end
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
Operadores de loop for i in 1..5 puts i end for a in %w{a b c d} puts a end
Operadores de loop i = %w{a b c d e f} while b = i.pop puts b end
Operadores de loop i = 5 until i = 0 puts i i -= 1 end
Operadores de loop i = 0 begin puts i i += 1 end while i < 0
Operadores de loop loop do puts “a” break if true end
Interpretadores Ruby YARV, evolução do MRI JRuby – implementação em Java IronRuby – Microsoft Rubinius – implementação em Ruby REE – Ruby Enterprise Edition / Phusion
A Linguagem de Programação Ruby David Flanagan e Yukihiro Matsumoto  Desenvolvimento Fácil e Rápido de Aplicações Web: Ruby on Rails Rodrigo Urubatan Google Slideshare Referências

Apresentação Ruby no Dojo da UFBA

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

Notas do Editor

  • #4 Ruby é uma “linguagem de scripts (interpretada) para uma programação orientada a objetos rápida e fácil”; O que significa isto?
  • #20 No IRB re = /[a-z]+/ &amp;quot;12345&amp;quot; =~/[a-z]/ &amp;quot;12a345&amp;quot; =~/[a-z]/
  • #22 arr = [] arr = Array.new arr = %w{a b c}
  • #23 h1 = {1 =&gt; “Luciano”, “b” =&gt; 123} h[1] / h[“b”] h2 = Hash.new
  • #24 arr = [1,2,3,4] arr.each { |val| print “#{val}\\n” } ------------ arr.each_with_index do |val, idx| print “Posição #{idx} valor #{val}\\n” End ------------ valor = 1 arr.each do |val| valor += val end valor -----------
  • #26 b=5 if a!=1 b=6 unless b b=7 unless b O unless pode ser utilizado para definir o valor de uma variável apenas se ela ainda não tiver valor.
  • #29 Utilize apenas quando for realmente necessário, pois o modo padrão do Ruby de iterar sobre coleções é empregando os métodos apropriados como o each.
  • #30 %w{a b c d e f} – forma de declarar um array contendo apenas string.
  • #31 É o contrário do while: ele repete o bloco de código até que a condição seja verdadeira.
  • #32 Utilizado em conjunto com while ou until quando se deseja que o bloco seja executado pelo menos uma vez. Assim, a condição fica no final do bloco e não no início.
  • #33 Será executado até que encontre um break ou return do bloco.