Upload
others
View
20
Download
0
Embed Size (px)
Citation preview
RubyUma Linguagem Atraente
Marcello Moura Diego RorizCentro de Recursos Computacionais Katon Agencia DigitalUniversidade Federal de Goias (UFG) Avenida C-104, Quadra 317, Lote 02, Loja 04
Caixa Postal 131 – 74.001-970 Jardim America – 74.290-030Goiania – GO – Brazil Goiania – GO – Brazil
[email protected] [email protected]
Goiania, 20 de Novembro 2014
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 1 / 24
Sumario
1 Introducao
2 Informacao
3 Documentacao
4 Projetos
5 Conclusao
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 2 / 24
Sumario
1 Introducao
2 Informacao
3 Documentacao
4 Projetos
5 Conclusao
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 3 / 24
Introducao
Ruby 1 e uma linguagem de programacao dinamica e livre comfoco em simplicidade e produtividade. Ela tem uma elegantesintaxe que e natural para se ler e facil de escrever.
1David Flanagan and Yukihiro Matsumoto. The Ruby ProgrammingLanguage. O’Reilly Media, Incorporated, 2008.
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 4 / 24
Summary
1 Introducao
2 Informacao
3 Documentacao
4 Projetos
5 Conclusao
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 5 / 24
Informacao
Ja esteve entre as 10 linguagem mais utilizadas no rankingTiobe. Atualmente na posicao 14 (Nov. 2014).
Matz disse, “I wanted a scripting language that was morepowerful than Perl, and more object-oriented thanPython.” 2.
Ruby uma linguagem cuidadosamente balanceada. Matzafirma que ela mescla partes de sua linguagem favorita(Perl, Smalltalk, Eiffel, Ada, e Lisp) para formar uma novalinguagem que balanceia programacao funcional comimperativa.
Alem disso: altamente legıvel, extremamente portavel, efacilmente extensıvel.
2An Interview with the Creator of Ruby, (29-Nov. 2001).Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 6 / 24
Extensao
E possıvel instalar bibliotecas para estender as funcionalidadesda linguagem.
Existe na biblioteca padrao mais 100 bibliotecas incluıdasna distribuicao da versao 1.9.x. Atualmente v2.1.5.
Existem repositorios de bibliotecas externas, as maisconhecidas sao: RubyGems, Github e RubyForge.Uso e muito simples:
gem search <palavra-chave>gem install <biblioteca>gem help
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 7 / 24
Ruby e outras linguagem
Ruby e duas partes Perl, uma parte Python, e uma parte deSmalltalk, disse Colin Steele 3.O que esperar: Linguagem X para Ruby 4:
Ruby a partir de C and C++
Ruby a partir de Java
Ruby a partir de Perl
Ruby a partir de PHP
Ruby a partir de Python
3Arquivos O’Reilly.4Ruby-lang.org – Documentation.
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 8 / 24
Minha comparacao
Javaclass HelloWorldApp {public static void main(String[] args) {System.out.println("Hello World!");
}}
Lisp(DEFUN HELLO ()
"Hello World!")
Perlprint "Hello World!\n";
Rubyputs "Hello World!"
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 9 / 24
Minha comparacao
Javaclass HelloWorldApp {public static void main(String[] args) {System.out.println("Hello World!");
}}
Lisp(DEFUN HELLO ()
"Hello World!")
Perlprint "Hello World!\n";
Rubyputs "Hello World!"
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 9 / 24
Minha comparacao
Javaclass HelloWorldApp {public static void main(String[] args) {System.out.println("Hello World!");
}}
Lisp(DEFUN HELLO ()
"Hello World!")
Perlprint "Hello World!\n";
Rubyputs "Hello World!"
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 9 / 24
Minha comparacao
Javaclass HelloWorldApp {public static void main(String[] args) {System.out.println("Hello World!");
}}
Lisp(DEFUN HELLO ()
"Hello World!")
Perlprint "Hello World!\n";
Rubyputs "Hello World!"
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 9 / 24
Destaque
Metaprogramacao“Metaprogramming is writting code that writes code” 5.
Biblioteca padraoinclui modulos para: YAML, JSON, XML, CGI, OpenSSL,HTTP, FTP, RSS, curses, zlib, Tk, etc 6.
Disponıvel nas maiores plataformas de SOUNIX, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS,BeOS, OS/2, etc.
Outras implementacoes de Ruby - MRI (Matz’s RubyInterpreter)
JRuby, MacRuby, Rubinius, mruby, IronRuby, etc.
5Perrota, Paolo (2010). Metaprogramming Ruby: Program Like the RubyPros. The Pragmatic Programmers, LLC.
6Britt, James. “Ruby 2.0.0 Standard Library Documentation”. Retrieved2013-12-09.
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 10 / 24
Summary
1 Introducao
2 Informacao
3 Documentacao
4 Projetos
5 Conclusao
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 11 / 24
Documentacao
E possıvel consultar documentacoes para iniciantes, manuais,livros, lista de emails, referencias, API, bibliotecas, etc. Existemmuita informacao livre na internet. 7
7Ruby-lang.org – DocumentationMarcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 12 / 24
Summary
1 Introducao
2 Informacao
3 Documentacao
4 Projetos
5 Conclusao
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 13 / 24
Projetos
Alguns projetos legais feitos em Ruby 8:
Sketchup: Aplicativo de modelagem 3D.
Metasploit Framework: Ferramenta para exploracao defalhas de seguranca.Ruby on Rais (RoR ou Rails): Meta Web Framework.
Noosfero: Plataforma de redes sociais.Redmine: Gerenciador de Projetos.Spree: Web commerce.Weby: Gerenciador de Conteudo Web. ;-)
8Ruby-lang.org – Success-stories.Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 14 / 24
Summary
1 Introducao
2 Informacao
3 Documentacao
4 Projetos
5 Conclusao
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 15 / 24
Conclusao
Grupo de Usuarios.
Lista de email e grupo de notıcias.
IRC (salas de discussao - mensagens instantaneas).
Ruby core (Sistema de acompanhamento do projeto).
Blogs, sites usuario e grupos.
Aprendizado online 9.
Conferencias.
Envolva e divirtam-se!
9http://tryruby.orgMarcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 16 / 24
Perguntas?
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 17 / 24
RubyUma Linguagem Atraente
Marcello Moura Diego RorizCentro de Recursos Computacionais Katon Agencia DigitalUniversidade Federal de Goias (UFG) Avenida C-104, Quadra 317, Lote 02, Loja 04
Caixa Postal 131 – 74.001-970 Jardim America – 74.290-030Goiania – GO – Brazil Goiania – GO – Brazil
[email protected] [email protected]
Goiania, 20 de Novembro 2014
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 18 / 24
DiferenciaisIteracao
Duas caracterısticas do Ruby que sao um pouco diferente doque voce pode ter visto antes, e que levam algum tempo parase acostumar, sao ”blocos” e iteradores.Em vez de um loop sobre um ındice (como com C, C++ ou Javapre-1.5), ou sobre uma lista (como Perl para (a) ..., ou Pythonpara i em aList:...), com Ruby voce vai muitas vezes ao invesver:
alguma_lista.each do |item|# Estamos dentro de um bloco.# tratamos agora com item.end
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 19 / 24
DiferenciaisTudo tem um valor
Nao ha diferenca entre uma expressao e uma declaracao. Tudotem um valor, mesmo que o valor seja nulo. Isto e possıvel:
x = 10y = 11z = if x < y
trueelsefalse
endz # => true
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 20 / 24
DiferenciaisArgumentos
Como em Python, no Ruby 2.0 metodos podem ser definidosusando argumentos:
def entregar(de: ’A’, para: nil, via: ’mail’)"Enviando de #{from} para #{to} via #{via}."
end
entregar(para: ’B’)# => "Enviando de A para B via mail."entregar(via: ’Celular’, de: ’B’, para: ’A’)# => "Enviando de B para A via Celular."
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 21 / 24
DiferenciaisMetodos de nomes intuitivos
Ruby possui metodos nativos com sinais como, por exemplo,pontos de interrogacao ou de exclamacao.
a = []a.empty? # => true
a = [’a’,’b’,’c’]a.reverse # => [’c’,’b’,’a’]a # => [’a’,’b’,’c’]a.reverse!a # => [’c’,’b’,’a’]
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 22 / 24
DiferenciaisMensagens
Uma chamada de metodo e realmente uma mensagem paraoutro objeto:
# Acucar sintatico (syntactic sugar)1 + 2# Mesmo acima agora com sal sintatico# (syntactic salt)1.+(2)# Que eh o mesmo que:1.send "+", 2
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 23 / 24
DiferenciaisClasses abertas
Voce pode abrir as classes para adicionar e modificar aqualquer momento. Mesmo para classes ancestrais comoFixnum ou mesmo Object.
class Fixnum# Voce pode mas nao deveria fazer isso!def +(other)self - other
endend
=, .., ..., !, not, &&, and, ||, or, !=, !˜, ::# Esses nao podem ser redefinidos
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 24 / 24