apresentação ruby no dojo da ufba
DESCRIPTION
TRANSCRIPT
![Page 1: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/1.jpg)
A Linguagem de ProgramaçãoA Linguagem de ProgramaçãoRubyRuby
Luciano Borges
@lusabo
Alex Chastinet
@alexchastinet
![Page 2: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/2.jpg)
Matz1993
DHH2004
![Page 3: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/3.jpg)
Por que o Ruby?
![Page 4: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/4.jpg)
Dizem que é uma linguagem muito nova!
Python 1991 Ruby 1993/1995 PHP 1994 Java 1995
![Page 5: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/5.jpg)
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
![Page 6: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/6.jpg)
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 …
![Page 7: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/7.jpg)
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 :)
![Page 8: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/8.jpg)
Sintaxe Limpa
Não precisa de ; Uso de () é opcional
![Page 9: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/9.jpg)
Sintaxe Objetiva
objeto.atributo = – método
empty? e capitalize!– métodos
![Page 10: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/10.jpg)
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
![Page 11: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/11.jpg)
Tudo é objeto Números Ranges Hashes Classes …
100% OO
![Page 12: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/12.jpg)
![Page 13: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/13.jpg)
HerançaHerança
![Page 14: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/14.jpg)
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.
![Page 15: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/15.jpg)
![Page 16: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/16.jpg)
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
![Page 17: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/17.jpg)
Ranges
![Page 18: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/18.jpg)
Ranges
![Page 19: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/19.jpg)
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.
![Page 20: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/20.jpg)
Expressões Regulares
![Page 21: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/21.jpg)
Coleções de valores. Pode conter objetos de diversos tipos.
Arrays
![Page 22: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/22.jpg)
Estrutura de dados que mantém um grupo de objetos conhecidos como keys e associa um valor para cada key.
Hashes
![Page 23: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/23.jpg)
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
![Page 24: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/24.jpg)
![Page 25: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/25.jpg)
Operadores condicionais• if / elsif / else / end
a=0if a == 0print “zero”elsif a == 1print “um”elseprint “não sei”end
unless a == 0print “não é zero”elseprint “a é zero”end
• unless
![Page 26: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/26.jpg)
Operadores condicionais case / when / else / end
![Page 27: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/27.jpg)
Operadores de loopOperador 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
O operadores acima podem ser utilizados com qualquer dos loops.
![Page 28: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/28.jpg)
Operadores de loop
for i in 1..5puts iend
for a in %w{a b c d}puts aend
![Page 29: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/29.jpg)
Operadores de loop
i = %w{a b c d e f}while b = i.popputs bend
![Page 30: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/30.jpg)
Operadores de loop
i = 5until i = 0puts ii -= 1end
![Page 31: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/31.jpg)
Operadores de loop
i = 0beginputs ii += 1end while i < 0
![Page 32: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/32.jpg)
Operadores de loop
loop doputs “a”break if trueend
![Page 33: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/33.jpg)
Interpretadores Ruby
• YARV, evolução do MRI
• JRuby – implementação em Java
• IronRuby – Microsoft
• Rubinius – implementação em Ruby
• REE – Ruby Enterprise Edition / Phusion
![Page 34: Apresentação Ruby no Dojo da UFBA](https://reader033.vdocuments.mx/reader033/viewer/2022061119/5463f29eaf795988338b46de/html5/thumbnails/34.jpg)
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