Ruby Uma Linguagem Atraente
Marcello Moura Diego Roriz Centro de Recursos Computacionais Katon Agenciaˆ Digital Universidade Federal de Goias´ (UFG) Avenida C-104, Quadra 317, Lote 02, Loja 04 Caixa Postal 131 – 74.001-970 Jardim America´ – 74.290-030 Goianiaˆ – 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 Introduc¸ao˜
2 Informac¸ao˜
3 Documentac¸ao˜
4 Projetos
5 Conclusao˜
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 2 / 24 Sumario´
1 Introduc¸ao˜
2 Informac¸ao˜
3 Documentac¸ao˜
4 Projetos
5 Conclusao˜
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 3 / 24 Introduc¸ao˜
Ruby 1 e´ uma linguagem de programac¸ao˜ dinamicaˆ e livre com foco em simplicidade e produtividade. Ela tem uma elegante sintaxe que e´ natural para se ler e facil´ de escrever.
1David Flanagan and Yukihiro Matsumoto. The Ruby Programming Language. O’Reilly Media, Incorporated, 2008. Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 4 / 24 Summary
1 Introduc¸ao˜
2 Informac¸ao˜
3 Documentac¸ao˜
4 Projetos
5 Conclusao˜
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 5 / 24 Informac¸ao˜
Ja´ esteve entre as 10 linguagem mais utilizadas no ranking Tiobe. Atualmente na posic¸ao˜ 14 (Nov. 2014). Matz disse, “I wanted a scripting language that was more powerful than Perl, and more object-oriented than Python.” 2. Ruby uma linguagem cuidadosamente balanceada. Matz afirma que ela mescla partes de sua linguagem favorita (Perl, Smalltalk, Eiffel, Ada, e Lisp) para formar uma nova linguagem que balanceia programac¸ao˜ funcional com imperativa. Alem´ disso: altamente leg´ıvel, extremamente portavel,´ e facilmente 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 funcionalidades da linguagem. Existe na biblioteca padrao˜ mais 100 bibliotecas inclu´ıdas na distribuic¸ao˜ da versao˜ 1.9.x. Atualmente v2.1.5. Existem repositorios´ de bibliotecas externas, as mais conhecidas sao:˜ RubyGems, Githube RubyForge. Uso e´ muito simples: gem search
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 de Smalltalk, 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 comparac¸ao˜
Java class HelloWorldApp { public static void main(String[] args){ System.out.println("Hello World!"); } } Lisp (DEFUN HELLO () "Hello World!" ) Perl print "Hello World!\n"; Ruby puts "Hello World!"
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 9 / 24 Minha comparac¸ao˜
Java class HelloWorldApp { public static void main(String[] args){ System.out.println("Hello World!"); } } Lisp (DEFUN HELLO () "Hello World!" ) Perl print "Hello World!\n"; Ruby puts "Hello World!"
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 9 / 24 Minha comparac¸ao˜
Java class HelloWorldApp { public static void main(String[] args){ System.out.println("Hello World!"); } } Lisp (DEFUN HELLO () "Hello World!" ) Perl print "Hello World!\n"; Ruby puts "Hello World!"
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 9 / 24 Minha comparac¸ao˜
Java class HelloWorldApp { public static void main(String[] args){ System.out.println("Hello World!"); } } Lisp (DEFUN HELLO () "Hello World!" ) Perl print "Hello World!\n"; Ruby puts "Hello World!"
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 9 / 24 Destaque
Metaprogramac¸ao˜ “Metaprogramming is writting code that writes code” 5. Biblioteca padrao˜ inclui modulos´ para: YAML, JSON, XML, CGI, OpenSSL, HTTP, FTP, RSS, curses, zlib, Tk, etc 6. Dispon´ıvel nas maiores plataformas de SO UNIX, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, etc. Outras implementac¸oes˜ de Ruby - MRI (Matz’s Ruby Interpreter) JRuby, MacRuby, Rubinius, mruby, IronRuby, etc.
5Perrota, Paolo (2010). Metaprogramming Ruby: Program Like the Ruby Pros. The Pragmatic Programmers, LLC. 6Britt, James. “Ruby 2.0.0 Standard Library Documentation”. Retrieved 2013-12-09. Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 10 / 24 Summary
1 Introduc¸ao˜
2 Informac¸ao˜
3 Documentac¸ao˜
4 Projetos
5 Conclusao˜
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 11 / 24 Documentac¸ao˜
E´ poss´ıvel consultar documentac¸oes˜ para iniciantes, manuais, livros, lista de emails, referencias, API, bibliotecas, etc. Existem muita informac¸ao˜ livre na internet. 7
7Ruby-lang.org – Documentation Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 12 / 24 Summary
1 Introduc¸ao˜
2 Informac¸ao˜
3 Documentac¸ao˜
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 explorac¸ao˜ de falhas de seguranc¸a. 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 Introduc¸ao˜
2 Informac¸ao˜
3 Documentac¸ao˜
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.org Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 16 / 24 Perguntas?
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 17 / 24 Ruby Uma Linguagem Atraente
Marcello Moura Diego Roriz Centro de Recursos Computacionais Katon Agenciaˆ Digital Universidade Federal de Goias´ (UFG) Avenida C-104, Quadra 317, Lote 02, Loja 04 Caixa Postal 131 – 74.001-970 Jardim America´ – 74.290-030 Goianiaˆ – GO – Brazil Goianiaˆ – GO – Brazil [email protected] [email protected]
Goiania,ˆ 20 de Novembro 2014
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 18 / 24 Diferenciais Iterac¸ao˜
Duas caracter´ısticas do Ruby que sao˜ um pouco diferente do que voceˆ pode ter visto antes, e que levam algum tempo para se acostumar, sao˜ ”blocos” e iteradores. Em vez de um loop sobre um ´ındice (como com C, C++ ou Java pre-1.5),´ ou sobre uma lista (como Perl para (a) ..., ou Python para i em aList:...), com Ruby voceˆ vai muitas vezes ao inves´ ver: 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 Diferenciais Tudo tem um valor
Nao˜ ha´ diferenc¸a entre uma expressao˜ e uma declarac¸ao.˜ Tudo tem um valor, mesmo que o valor seja nulo. Isto e´ poss´ıvel: x= 10 y= 11 z= if x
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 20 / 24 Diferenciais Argumentos
Como em Python, no Ruby 2.0 metodos´ podem ser definidos usando 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 Diferenciais Metodos´ de nomes intuitivos
Ruby possui metodos´ nativos com sinais como, por exemplo, pontos de interrogac¸ao˜ ou de exclamac¸ao.˜ 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 Diferenciais Mensagens
Uma chamada de metodo´ e´ realmente uma mensagem para outro 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 Diferenciais Classes abertas
Voceˆ pode abrir as classes para adicionar e modificar a qualquer momento. Mesmo para classes ancestrais como Fixnum ou mesmo Object. class Fixnum # Voce pode mas nao deveria fazer isso! def +(other) self- other end end =,.., ...,!, not,&&, and, ||, or, !=, !˜,:: # Esses nao podem ser redefinidos
Marcello Moura, Diego Roriz Ruby – Uma Linguagem Atraente 24 / 24