Sie sind auf Seite 1von 9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

Ruby (linguagem de programao)


Origem: Wikipdia, a enciclopdia livre.

Ruby uma linguagem de programao interpretada multiparadigma, de tipagem dinmica e forte, com gerenciamento de memria automtico, originalmente planejada e desenvolvida no Japo em 1995, por Yukihiro "Matz" Matsumoto, para ser usada como linguagem de script. Matz queria uma linguagem de script que fosse mais poderosa do que Perl, e mais orientada a objetos do que Python.[2] Ruby suporta programao funcional, orientada a objetos, imperativa e reflexiva. Foi inspirada principalmente por Python, Perl, Smalltalk, Eiffel, Ada e Lisp, sendo muito similar em vrios aspectos a Python.[3] Atualmente, Ruby a 10 linguagem de programao mais popular do mundo, de acordo com o ndice Tiobe.[4] A implementao 1.8.7 padro escrita em C, como uma linguagem de programao de nico passe.[5] No h qualquer especificao da linguagem, assim a implementao original considerada de fato uma referncia. Atualmente, h vrias implementaes alternativas da linguagem, incluindo YARV, JRuby, Rubinius, IronRuby, MacRuby e HotRuby, cada qual com uma abordagem diferente, com IronRuby,[6] JRuby[7] e MacRuby[8] fornecendo compilao JustIn-Time e, JRuby[7] e MacRuby[8] tambm fornecendo compilao Ahead-Of-Time. A srie 1.9 usa YARV (Yet Another Ruby VirtualMachine), como tambm a 2.0 (em desenvolvimento), substituindo a lenta Ruby MRI (Matz's Ruby Interpreter).[9]

Ruby

Paradigma ltima verso Verso em teste Criado por Estilo de tipagem: Dialetos:

Multiparadigma 1.9.3-p385 (6 de fevereiro de 2013) 2.0.0-rc2 (8 de fevereiro de 2013) Yukihiro Matsumoto dinmica, forte YARV, Ruby MRI, JRuby, Rubinius, IronRuby, MacRuby e HotRuby, RGSS

Surgido em 1995

Influenciada Ada, CLU, Dylan, Eiffel, Lisp, Perl, por Python, Scheme, Smalltalk Influenciou Falcon, Fantom, Groovy, Ioke, Nu Licena: Pgina oficial Dupla: Ruby License / FreeBSD License[1] www.ruby-lang.org (http://www.rubylang.org/)

ndice
1 Histria 1.1 Etimologia do nome "Ruby" 2 Caractersticas 2.1 Tipos de dados 2.2 Declarao de variveis 3 Exemplos de cdigo 3.1 Programa Ol Mundo 3.2 Strings 3.3 Colees
pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao) 1/9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

3.3.1 Array 3.3.2 Hash 3.4 Blocos e iteradores 3.5 Classes 3.5.1 Classes abertas 3.5.2 Herana 3.6 Modules 3.7 Tratamento de excees 3.8 Ruby para administradores de sistemas 4 Repositrios e bibliotecas 5 Ver tambm 6 Referncias 7 Ligaes externas

Histria
A linguagem Ruby foi concebida em 24 de fevereiro de 1993 por Yukihiro Matsumoto, que pretendia criar uma nova linguagem que balanceava programao funcional com a programao imperativa.[3] Matsumoto afirmou: "Eu queria uma linguagem de script que fosse mais poderosa do que Perl, e mais orientada a objetos do que Python. por isso que eu decidi desenvolver minha prpria linguagem.".[2] Aps o lanamento do Ruby 1.3 em 1999, iniciou-se a primeira lista de discusso em ingls chamada Ruby-Talk ,[10] marcando um interesse crescente na linguagem fora do Japo. Em setembro de 2000, o primeiro livro em ingls, Programming Ruby (http://ruby-doc.org/docs/ProgrammingRuby/) , foi impresso, sendo mais tarde liberado gratuitamente para o pblico, ajudando no processo de adoo de Ruby por falantes do ingls.[2]
Yukihiro Matsumoto, Por volta de 2005, o interesse pela linguagem Ruby subiu em conjunto com o criador da linguagem Ruby Ruby on Rails, um framework de aplicaes web popular escrito em Ruby. Rails frequentemente creditada como a aplicao que tornou Ruby "famosa" e a associao to forte que ambos so muitas vezes confundidos por programadores que so novos a Ruby.[11]

At a verso 1.9.2-p290, a linguagem era lanada sob a licena dupla Ruby License / GNU General Public License. A partir da verso 1.9.3-p0, passou a ser lanada sob a licena dupla Ruby License / FreeBSD License (tambm conhecida como 2-clause BSDL).[12][1]

Etimologia do nome "Ruby"


O nome "Ruby", foi decidido durante uma sesso de bate-papo online entre Matsumoto (Matz) e Keiju Ishitsuka em 24 de fevereiro de 1993, antes que qualquer linha de cdigo tivesse sido escrita para a linguagem.[13] Inicialmente foram propostos dois nomes: "Coral" e "Ruby", sendo esse ltimo nome proposto escolhido mais tarde por Matz em um e-mail para Ishitsuka.[14] Matsumoto explicou mais tarde que o motivo de ter escolhido o nome "Ruby" foi porque essa era a pedra zodiacal de um de seus colegas.[15]
pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao) 2/9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

Caractersticas
Uma srie de caractersticas foram definidas para atender s propostas do Ruby: Todas as variveis so objetos, onde at os "tipos primitivos" (tais como inteiro, real, entre outros) so classes Mtodos de gerao de cdigo em tempo real, como os "attribute accessors" Atravs do RubyGems, possvel instalar e atualizar bibliotecas com uma linha de comando, de maneira similar ao APT do Debian Linux Code blocks (blocos de cdigo) passados como parmetros para mtodos; permite a criao de clausuras Mixins, uma forma de emular a herana mltipla Tipagem dinmica, mas forte. Isso significa que todas as variveis devem ter um tipo (fazer parte de uma classe), mas a classe pode ser alterada dinamicamente Ruby est disponvel para diversas plataformas, como Microsoft Windows, Linux, Solaris e Mac OS X, alm de tambm ser executvel em cima da mquina virtual Java (atravs do JRuby) e haver um projeto para ser executvel em cima da mquina virtual Microsoft .NET, o IronRuby.

Tipos de dados
No existem "tipos primitivos" em Ruby; todos os tipos so classes: Object a classe me de todas as outras classes em Ruby Numeric uma classe abstrata que representa nmeros Integer uma classe que representa nmeros inteiros Fixnum representa nmeros inteiros de preciso fixa Bignum representa nmeros inteiros de preciso infinita, dependente apenas da memria disponvel Float uma classe que representa nmeros de ponto flutuante (nmeros reais) String uma cadeia de caracteres. Pode ser delimitado por apstrofes (') ou aspas ("). Tudo o que h entre apstrofes interpretado literalmente, entre aspas o programador deve se utilizar de smbolos para representar caracteres especficos, como em C. Exemplos: 'azul', "a\nb\nc" Symbol semelhante a uma string, mas dois smbolos iguais possuem o mesmo endereo de memria, sendo assim timo para se utilizar como ndice numa Hash. Porm, devido sua natureza, o coletor de lixo do Ruby no os elimina. definido com um sinal de dois pontos (:), por exemplo, :nome Array so arrays dinmicos, que podem ser usados para representar matrizes e vetores. delimitado por colchetes ([]) e cada valor separado por vrgula. Exemplo: [4, 'azul', :termometro] Hash representa um vetor associativo, e, assim como as Arrays, dinmica. delimitada por chaves ({}), e o ndice precede o valor com um sinal '=>'. Exemplo: {:controller => 'user', :action => 'index'}. Qualquer objeto pode ser um ndice, mas os mais usados so as Strings e os Symbols Regexp representa expresses regulares, delimitadas por //. Funciona de forma semelhante a Perl. Exemplo: /a|ae/

Declarao de variveis
Um objeto em Ruby declarado com uma atribuio comum:
pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao) 3/9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

v a r 1=2 v a r 2=C l a s s e . n e w v a r 3=C l a s s e 2 . n e w ( p a r a m e t r o )

Uma varivel local declarada normalmente. Uma varivel de instncia declarada com um "@" no nome. Uma varivel de classe declarada com "@@", e uma varivel global declarada com "$". Variveis que iniciam com uma letra maiscula so consideradas constantes.
l o c a l=" l o c a l " @ i n s t a n c i a=4 2 @ @ c l a s s e=/ f + / $ P i=3 . 1 4 1 5 9 2 6

Exemplos de cdigo
Programa Ol Mundo
p u t s" O l ,M u n d o ! "

Strings
H uma variedade de mtodos para definir strings em Ruby. As definies a seguir so equivalentes e suportam interpolao:
a=" \ n I s t ou m as t r i n gd ea s p a sd u p l a s \ n " a=% Q { \ n I s t ou m as t r i n gd ea s p a sd u p l a s \ n } a=% { \ n I s t ou m as t r i n gd ea s p a sd u p l a s \ n } a=% / \ n I s t ou m as t r i n gd ea s p a sd u p l a s \ n / a=< < B L O C O I s t ou m as t r i n gd ea s p a sd u p l a s B L O C O

O cdigo a seguir define duas strings "cruas" que so equivalentes:


a=' I s t ou m as t r i n gd ea s p a ss i m p l e s ' a=% q { I s t ou m as t r i n gd ea s p a ss i m p l e s }

Colees
Array
a=[ 1 ,' o i ' ,3 . 1 4 ,1 ,2 ,[ 4 ,5 ] ] a [ 2 ] a . r e v e r s e a . f l a t t e n . u n i q a . p u s h ( 2 3 ) a< <2 2 #= >3 . 1 4 #= >[ [ 4 ,5 ] ,2 ,1 ,3 . 1 4 ,' o i ' ,1 ] #= >[ 1 ,' o i ' ,3 . 1 4 ,2 ,4 ,5 ] #a=[ 1 ,' o i ' ,3 . 1 4 ,1 ,2 ,[ 4 ,5 ] ,2 3 ] #a=[ 1 ,' o i ' ,3 . 1 4 ,1 ,2 ,[ 4 ,5 ] ,2 3 ,2 2 ]

Hash
pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao) 4/9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

h a s h={ ' g u a '= >' m o l h a d a ' ,' f o g o '= >' q u e n t e ' } p u t sh a s h [ ' f o g o ' ]#" q u e n t e " h a s h . e a c h _ p a i rd o| c h a v e ,v a l o r | p u t s" # { c h a v e }# { v a l o r } " e n d #I m p r i m e : # g u am o l h a d a #f o g oq u e n t e h a s h . d e l e t e _ i f{ | c h a v e ,v a l o r |c h a v e= =' g u a ' }#A p a g a' g u a '= >' m o l h a d a '

Blocos e iteradores
Blocos de cdigo (ou code blocks) so trechos de cdigo que so passados como parmetros para mtodos. Blocos so extremamente usados em Ruby.
c l a s sP a i s e s @ p a i s e s=[ " A r g e n t i n a " ," B r a s i l " ," P a r a g u a i " ," U r u g u a i " ] d e fs e l f . e a c h f o rp a i si n@ p a i s e s y i e l dp a i s e n d e n d e n d P a i s e s . e a c hd o| p a i s | p u t s" O l ,# { p a i s } ! " e n d

Iterando em arrays usando blocos:


a r r a y=[ 1 ,' o i ' ,3 . 1 4 ] a r r a y . e a c hd o| i t e m | p u t si t e m e n d #= >1 #= >' o i ' #= >3 . 1 4 #E q u i v a l e n t e ,u s a n d oc h a v e s : a r r a y . e a c h{| i t e m | p u t si t e m } #= >1 #= >' o i ' #= >3 . 1 4

Em Ruby, a estrutura de repetio for apenas acar sinttico para acessar o mtodo each, existente em iteratores.
a r r a y=[ 1 ,' o i ' ,3 . 1 4 ] f o ri t e mi na r r a y p u t si t e m e n d #= >1 #= >' o i ' #= >3 . 1 4

pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao)

5/9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

Blocos funcionam com muitos mtodos padro; no exemplo a seguir, o uso de blocos com arquivos:
F i l e . o p e n ( ' a r q u i v o . t x t ' ,' w ' )d o| a r q u i v o | f o rii n( 1 . . 3 )d o a r q u i v o . p u t s' O l ,M u n d o ! ' e n d e n d #Oa r q u i v of e c h a d oa u t o m a t i c a m e n t ea q u i F i l e . r e a d l i n e s ( ' a r q u i v o . t x t ' ) . e a c hd o| l i n h a | p u t sl i n h a e n d #= >O l ,M u n d o ! #= >O l ,M u n d o ! #= >O l ,M u n d o !

Criando uma funo annima:


p r o c{ | a r g |p r i n ta r g } P r o c . n e w{ | a r g |p r i n ta r g } l a m b d a{ | a r g |p r i n ta r g }

Classes
O cdigo a seguir define uma classe chamada Pessoa. Alm de initialize, o construtor para criar novos objetos, essa classe tem dois mtodos: um que sobre-escreve o operador de comparao >(maior), e sobreescreve o mtodo t o _ s(assim o comando p u t spode formatar a sada). Aqui a t t r _ r e a d e r um exemplo de metaprogramao em Ruby: a t t r _ r e a d e rdefine o mtodo getter, a t t r _ w r i t e rdefine o mtodo setter, e a t t r _ a c c e s s o rdefine ambos. Em Ruby, todos os atributos so privados e todos os mtodos pblicos, por padro. Ruby permite definir opcionalmente o tipo de acesso usando trs palavras-chave: public (pblico), private (privado) e protected (protegido). Ruby no suporta sobrecarga de mtodos, mas suporta argumentos padro, que podem ser utilizados para o mesmo fim. Tambm, o ltimo comando em um mtodo considerado o seu valor de retorno, permitindo a omisso de um explcito r e t u r n .
c l a s sP e s s o a a t t r _ r e a d e r: n o m e ,: i d a d e d e fi n i t i a l i z e ( n o m e=" D e s c o n h e c i d o " ,i d a d e ) @ n o m e ,@ i d a d e=n o m e ,i d a d e e n d d e f> ( p e s s o a ) i fs e l f . i d a d e>p e s s o a . i d a d e r e t u r nt r u e e l s e r e t u r nf a l s e e n d e n d d e ft o _ s#M t o d ou s a d op e l om t o d op u t s ( )p a r af o r m a t a ras a d a " # @ n o m e( # @ i d a d ea n o s ) " e n d e n d p e s s o a s=[ ] P e s s o a . n e w ( " R i c a r d o " ,1 9 ) , P e s s o a . n e w ( i d a d e=2 5 )

p u t sp e s s o a s [ 0 ] p u t sp e s s o a s [ 1 ] p u t sp e s s o a s [ 0 ]>p e s s o a s [ 1 ]#Om e s m oq u e :p e s s o a s [ 0 ] . > ( p e s s o a s [ 1 ] )

pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao)

6/9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

O cdigo acima ir imprimir:


R i c a r d o( 1 9a n o s ) D e s c o n h e c i d o( 2 5a n o s ) f a l s e

Classes abertas Em Ruby, as classes nunca so fechadas: voc pode sempre adicionar novos mtodos a uma classe. Isso se aplica tanto para classes criadas por voc, quanto para as classes padro. Um exemplo simples de adio de um novo mtodo a classe padro String:
c l a s sS t r i n g d e fi n i c i a i s i n i=S t r i n g . n e w f o rn o m ei ns e l f . s p l i td o i n i+ =n o m e [ 0 ] e n d r e t u r ni n i e n d e n d p u t s" R i c a r d oS i l v aV e l o s o " . i n i c i a i s#I m p r i m eR S V

Herana Ruby no suporta herana mltipla. Ao invs disso, Ruby usa Mixins para emular herana mltipla:
c l a s sP e s s o a<M a m i f e r o#H e r a n ad eM a m i f e r o i n c l u d eH u m a n o#E m u l a n d oh e r a n am l t i p l a e n d

No exemplo acima, "Humano" um mdulo (module).

Modules
Alm das classes normais, Ruby possui os "Modules", que so classes de classes, permitindo espao de nomes:
m o d u l eH u m a n o c l a s sC l a s s e 1 d e fi n f o " # { s e l f . c l a s s }( \ # # { s e l f . o b j e c t _ i d } ) :# { s e l f . t o _ s } " e n d e n d e n d

Tratamento de excees
Como a maioria das linguagens modernas, Ruby tambm possui suporte para tratamento de exceo. As palavras-chave para isto so "begin", "rescue" e "ensure". "Begin" inicia um trecho que pode cair em alguma exceo (opcional), "Rescue" determina o comportamento em caso de uma exceo especfica ou no e, "Ensure" o cdigo que ser executado independente de ter havido exceo ou no.
pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao) 7/9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

b e g i n #F a aa l g o r e s c u e #T r a t aa l g u m ae x c e o e l s e #F a ai s t os en e h u m ae x c e of o rl a n a d a e n s u r e #F a ai s t os ea l g u m ao un e n h u m ae x c e of o rl a n a d a e n d

Ruby para administradores de sistemas


A maioria dos administradores de sistemas Unix utilizam Perl ou Shell Script como ferramenta para resolver os problemas. Mas possvel usar Ruby e Python para os mesmos fins. Abaixo, a idia fazer um pequeno script que verifica se o servio da porta 80 (Web) de alguns servidores estavam ativos.
r e q u i r e' n e t / h t t p ' F i l e . o p e n ( " h o s t s . t x t " ," r " ) . e a c h _ l i n ed o|h o s t| c o n e x a o=N e t : : H T T P . n e w ( h o s t . c h o m p ,8 0 ) r e s p o s t a ,c o n t e u d o=c o n e x a o . g e t ( " / " ,n i l ) i fr e s p o s t a . c o d e . t o _ i>4 0 0 #a q u iv a iar o t i n ap r ae n v i a re m a i l . . . e n d e n d

Repositrios e bibliotecas
Ruby possui repositrios de bibliotecas disponveis em sites como Ruby Forge e Ruby Application Archive (RAA). Existe, ainda, uma ferramenta de instalao de bibliotecas, chamada RubyGems, semelhante aos gerenciadores de pacotes do Linux, como o APT. O projeto mais famoso desenvolvido em Ruby o metaframework Ruby on Rails. Recentemente, muitas bibliotecas novas e existentes foram hospedadas no GitHub, que focado em Git e tinha suporte nativo ao empacotamento do RubyGems.[16]

Ver tambm
Fantom Lisp Perl Python Ruby on Rails

Referncias
1. a b Yukihiro Matsumoto (31 de outubro de 2011). License (http://www.ruby-lang.org/en/about/license.txt) (em ingls). www.ruby-lang.org. Pgina visitada em 19 de novembro de 2011. 2. a b c An Interview with the Creator of Ruby (http://linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.html) (em ingls). Pgina visitada em 22 de maio de 2010. 3. a b About Ruby (http://www.ruby-lang.org/en/about/) (em ingls). ruby-lang.org. Pgina visitada em 22 de maio de 2010.
pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao) 8/9

28/02/13

Ruby (linguagem de programao) Wikipdia, a enciclopdia livre

4. Tiobe Index (http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html) (em ingls). tiobe.com. Pgina visitada em 17 de fevereiro de 2013. 5. Why Rubinius Matters to Ruby's Future (http://weblog.raganwald.com/2007/12/why-rubinius-matters-torubys-future.html) (em ingls). Pgina visitada em 25 de junho de 2010. 6. IronRuby Unleashed: An Interview with Shay Friedman (http://www.informit.com/articles/article.aspx? p=1577449) (em ingls). Pgina visitada em 25 de junho de 2010. 7. a b JRuby Compiler (http://kenai.com/projects/jruby/pages/JRubyCompiler) (em ingls). Pgina visitada em 25 de junho de 2010. 8. a b The MacRuby Blog (http://www.macruby.org/blog/index.html) (em ingls). Pgina visitada em 25 de junho de 2010. 9. Yarv (http://ruby-br.org/?s=yarv) (em ingls). Pgina visitada em 25 de junho de 2010. 10. Mailing Lists (http://www.ruby-lang.org/en/community/mailing-lists/) (em ingls). ruby-lang.org. Pgina visitada em 6 de julho de 2010. 11. Web Development: Ruby on Rails (http://www.devarticles.com/c/a/Ruby-on-Rails/Web-Development-Rubyon-Rails/) (em ingls). Pgina visitada em 3 de junho de 2010. 12. Yukihiro Matsumoto (31 de outubro de 2011). 1.9.3.0 NEWS (http://svn.rubylang.org/repos/ruby/tags/v1_9_3_0/NEWS) (em ingls). www.ruby-lang.org. Pgina visitada em 19 de novembro de 2011. 13. History of Ruby (http://blog.nicksieger.com/articles/2006/10/20/rubyconf-history-of-ruby) (em ingls). Pgina visitada em 22 de maio de 2010. 14. "The decisive moment of the language name Ruby" - Email from Hiroshi Sugihara to ruby-talk (http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/88819) (em ingls). Pgina visitada em 22 de maio de 2010. 15. "Re: the name of Ruby?" - Email from Yukihiro Matsumoto to ruby-talk (http://blade.nagaokaut.ac.jp/cgibin/scat.rb/ruby/ruby-talk/394) (em ingls). Pgina visitada em 22 de maio de 2010. 16. Gem Building is Defunct (http://github.com/blog/515-gem-building-is-defunct) (em ingls). Pgina visitada em 15 de julho de 2010.

Ligaes externas
Pgina oficial (http://www.ruby-lang.org/) (em japons, em ingls e em portugus) RAA - Ruby Application Archive (http://raa.ruby-lang.org/) (em ingls) The Book Of Ruby (http://www.sapphiresteel.com/the-book-of-ruby) (em ingls) O Guia (comovente) de Ruby do Why (http://why.nomedojogo.com/) (em portugus) Aprenda a Programar (http://aprendaaprogramar.rubyonrails.pro.br) (em portugus) Ruby Brasil (http://ruby-br.org/) (em portugus) Ruby PT (http://www.ruby-pt.org/) (em portugus) Ruby (http://www.dmoz.org/Computers/Programming/Languages/Ruby/) no Open Directory Project Obtida de "http://pt.wikipedia.org/w/index.php?title=Ruby_(linguagem_de_programao)&oldid=34142312" Categorias: Linguagens de programao orientadas a objetos Linguagens de script Linguagens interpretadas Esta pgina foi modificada pela ltima vez (s) 19h52min de 17 de fevereiro de 2013. Este texto disponibilizado nos termos da licena Atribuio-Partilha nos Mesmos Termos 3.0 no Adaptada (CC BY-SA 3.0); pode estar sujeito a condies adicionais. Consulte as condies de uso para mais detalhes.

pt.wikipedia.org/wiki/Ruby_(linguagem_de_programao)

9/9

Das könnte Ihnen auch gefallen