Ruby: Diferenzas entre revisións

Contido eliminado Contido engadido
TobeBot (conversa | contribucións)
Xqbot (conversa | contribucións)
m bot Modificado: fa:روبی (زبان برنامه‌نویسی); cambios estética
Liña 21:
'''Ruby''' é unha [[linguaxe de programación]] [[reflexión (programación)|reflexiva]] e [[Programación orientada a obxectos|orientada a obxectos]] (linguaxe interpretada), creada polo programador [[Xapón|xaponés]] [[Yukihiro Matsumoto|Yukihiro "Matz" Matsumoto]] en [[1993]]. Combina unha sintaxe inspirada en [[Python]], [[Perl]] con características de programación orientada a obxectos similares a [[Smalltalk]]. Comparte tamén funcionalidade con outras linguaxes de programación como [[Lisp]], [[Lua (linguaxe de programación)]], [[Dylan]] e [[CLU]]. Ruby é unha linguaxe de programación interpretada nunha soa pasada e a súa implementación oficial é distribuida baixo unha [[Ruby#Licencia|licencia]] de [[software libre]].
 
== Historia ==
[[Ficheiro:Yukihiro Matsumoto.JPG|thumb|right|100px|Yukihiro Matsumoto, creador de Ruby.]]
A linguaxe foi creado por [[Yukihiro Matsumoto|Yukihiro "Matz" Matsumoto]], quen comezou a traballar o Ruby en [[24 de febreiro]] de [[1993]], e lanzóuno ó público no año [[1995]]. O nome "Ruby" foi ideado en base á pedra correspondente ó mes de nacemento dun colega. Á data de [[Decembro de 2007]],a última versión estable é a 1.8.6; o 26 de Decembro de 2007 foi publicado Ruby 1.9.0: unha versión de desenvolvemento que incorpora melloras sustanciaies no rendimiento da linguaxe, que se espera queden reflexadas na próxima versión estable de produción da linguaxe, Ruby 2.0. Diferenzas en rendemento entre a actual implementación de Ruby (1.8.6) e outras linguaxes de programación más arraigados levaron ó desarrollo de varias máquinas virtuales para Ruby. Entre ésas atópanse [[JRuby]], un intento de levar Ruby á plataforma [[Linguaxe de programación Java|Java]], e [[Rubinius]], un intérprete modelado en base ás máquinas virtuales de [[Smalltalk]].
<!--Queda Traducir: The main developers have thrown their weight behind the virtual machine provided by the [[YARV]] project, which was merged into the Ruby source tree on [[31 December]] [[2006]], and will be released as Ruby 2.0.-->.
 
== Filosofía ==
O creador da linguaxe, [[Yukihiro Matsumoto|Yukihiro "Matz" Matsumoto]], dixo que Ruby foi deseñado para a productividade e divertimento do desenvolvedor, seguindo os principios dun bo deseño de [[interface de usuario]].<ref>[http://www.informit.com/articles/article.asp?p=18225 A linguaxe de programación Ruby foi liberada por Yukihiro Matsumoto o día 06-12-2000 (informit.com)]</ref> El afirma que os deseños de sistemas precisan ser deseñados para os humáns, fronte ás computadoras: <ref>[http://www.artima.com/intv/ruby4.html A filosofía de Ruby, unha conversa con Yukihiro Matsumoto, Parte I por Bill Venners en 29-9-2003 (Desenvolvedor de Artima)]</ref>:
 
Liña 38:
''Todos teñen un transfondo individual. Algúns poden vir dende Python, outros dende Perl, e poden estar sorprendidos por diferentes aspectos da linguaxe. Eles poden vir e dicirme, 'Estou sorprendido por esta carcterística da linguaxe, porque Ruby viola o principio da menor sorpresa.' Espera. Espera. O principio da menor sorpresa non é só para ti. O principio da menor sorpresa significa principio da ''miña'' menor sorpresa. E isto significa a menor sorpresa despois de que aprendas Ruby bastante ben. Por exemplo, Eu fun un programador de C++ antes de comezar a deseñar Ruby. Programei en C++ exclusivamente durante dous ou tres anos. E despois de dous anos de programación con C++, incluso me sorprendeu.''
 
== Semántica ==
Ruby é [[orientado a objetos]]: tódolos tipos de datos son un obxecto, incluídas as clases e tipos que outras linguaxes definen como primitivas, (como [[enteiro]]s, booleanos, e "nil"). Toda [[función (programación)|función]] é un [[Método (programación orientada a obxectos)|método]]. As variables sempre son referencias a obxectos, non os obxectos mismos. Ruby soporta [[Herdanza (programación orientada a objetos)|herdanza]] con [[enlace dinámico]], [[mixin]]s e [[singleton|patróns singleton]] (pertencentes e definidos por unha soa [[Instancia (programación)|instancia]] máis que definidos poa clase). A pesar de que Ruby non soporta [[Herdanza múltiple|herdanza múltiple]], as clases poden importar [[Módulo (programación)|módulomódulos]]s como mixins. A sintáxis procedural esta soportada, pero tódolos métodos definidos fora do ámbito dun objeto son realmente métodos da clase Object. Como esta clase é pai de tódalas demáis, os cambios son visibles para tódalas clases e obxectos.
 
Ruby descibíuse coma unha [[linguaxe de programación multiparadigma]]: permite programación procedural (definindo funcións e variables fora das clases facéndoas parte do obxecto raiz Object), con orientación a obxectos, (todo é un obxecto) ou [[Programación funcional|funcionalmente]] (ten funcións anónimas, [[Clausura (informática)|clausuras ou closures]], e [[continuation]]s; tódalas sentencias teñen valores, e as funcións devolven a última avaliación). Soporta [[Introspección(programación|introspección]], [[Reflexión (informática)|reflexión]] e [[metaprogramación]], ademáis de soporte para [[Fio de execución|fios de execución]] xestionados polo intérprete . Ruby ten[[tipado dinámico]], e soporta [[Polimorfismo (programación orientada a obxectos)|polimorfismo]].
Liña 45:
De acordo coas preguntas frecuentes de Ruby <ref>[http://faq.rubygarden.org/ Ruby FAQ]</ref>, "Se che gusta [[Perl]], gustarache Ruby e a súa sintaxe. Se che [[Smalltalk]], gustarache Ruby e a súa semántica. Se che gusta [[Python]], a enorme diferencia de diseño entre Python y Ruby/Perl pode que che convenza ou pode que non." <ref>[http://faq.rubygarden.org/entry/show/14 ¿Cómo se compara Ruby con Python? (FAQ)]</ref>
 
== Características ==
* [[orientado a obxectos]]
* catro niveles de ámbito de [[Variable (programación)|variable]]: global, clase, instancia y local.
Liña 53:
* posibilidad de redefinir los operadores (sobrecarga de operadores)
* [[recolector de basura|recolección de basura automática]]
* altamente [[portable|portable]]
* Fíos de execución simultáneos en tódalas plataformas empregando ''green threads''
* Carga dinámica de [[Dynamic Linking Library|DLL]]/[[Biblioteca (programación)|librerías compartidas]] na maioría das plataformas
Liña 60:
* soporta [[inxección de dependencias]]
* soporta alteración de obxectos en tempo de execución
* [[continuación]]s e [[Xeneradores|xeneradores]]
 
Ruby actualmente non tiene soporte completo de [[Unicode]], a pesar de tener soporte parcial para [[UTF-8]].
 
== Sintaxe ==
A sintaxe de Ruby é moi similar á de Perl e Python. As definicións de clases e métodos son sinaladas por palabras chave. En contraste con Perl, as variables non son prefixadas obrigatoriamente con un símbolo [[símbolo (informática)|símbolo]]. Cando son empregados, os símbolos cambian a semántica do ámbito da variable. A diferenza máis grande dende C e Perl son que as palabras chave son normalmente empregadas para definir bloques de código lóxico, sen corchetes (p.e. pares de { e }). Os finais de liña son significativos e recollen o final da declaración ; un punto e coma pode ser equivalentemente empregado. Fronte a Python, a indentación non é significativa.
 
Liña 82:
</source>
 
== Falla ==
=== Características da linguaxe ===
En termos de velocidade, Ruby ten un rendemento inferior a algunhas linguaxes compiladas (xa que é unha linguaxe interpretada) e outras linguaxes maioritarias de script como [[Python]] e [[Perl]]<ref name="alioth">[http://shootout.alioth.debian.org/ The Computer Language Benchmarks Game]</ref>. Sen embargo, en futuras versións (revisión actual: 1.9), Ruby será [[bytecode|compilado bytecode]] para ser executado en [[YARV]] (''Yet Another Ruby VM''). Actualmente, o [[memory footprint]](emprego de memoria) de Ruby é superior para as mesmas operacións que as de Perl e Python.<ref name="alioth" />
 
Liña 90:
A lista de "[[gotcha|falla]]" pode ser atopado no libro de Hal Fulton ''The Ruby Way'', 2nd ed (ISBN 0-672-32884-4), Section 1.5. Unha lista similar á da 1ª edición escrita para a anterior versión da linguaxe (version 1.6), algúns problemas solucionáronse co tempo. <code>retry</code>, por exemplo, agora funciona con <code>while</code>, <code>until</code>, e <code>for</code>, así coma cos iteradores.
 
== Repositorios e Librarías ==
O [[Ruby Application Archive]] (RAA), tamén coñecido coma [[RubyForge]], serve como repositorio para un amplo rango de aplicazóns Ruby e librarías, contendo máis de dous centos de elementos. Aínda que o número de aplicacións non coinccide moito co volume de material dispoñíbel na comunidade [[Perl]] ou [[Python (programming language)|Python]], hai un amplo rango de ferramentas e utilidades as cales seven para impulsar o desenvolvemento da linguaxe.
 
[[RubyGems]] chegou a ser o mantedor de paquetes estándar para as librarías Ruby. É moi similar en propositos ó de Perl [[CPAN]], aínda que o seu uso é moi parecido a [[apt-get]].
 
== Implementacións ==
Ruby ten dúas grandes implementacións: O Ruby oficial [[interprete (informática)|intérprete]] tamén chamando como o [[Matz's Ruby Interpreter]](Intérprete de Ruby de Matz) (MRI), o máis extendido, e [[JRuby]], a implementación baseada en [[Linguaxe de programación Java|Java]].
 
Hai outras implementacións como son [[IronRuby]] ([[Estado de desenrrolo#Alpha|pre-alpha]] fontes dispoñibles dende o 31 de agosto de 2007<ref>{{Cite web | url = http://www.iunknown.com/2007/08/ironruby-on-rub.html | title = IronRuby on Rubyforge! | autor = John Lam | data = 2007-08-31}}</ref>), [[Rubinius]], [http://rubydotnetcompiler.googlecode.com/ Ruby.NET], [http://xruby.com/ XRuby] e [[YARV]]. YARV é a nova máquina virtual oficial de Ruby 1.9 non estará dispoñíble como un proxecto separado dende a devandita versión.
 
=== Sistemas operativos ===
Están dispoñibles versións do interprete de Ruby para os seguintes [[sistemas operativos]]s:
<div style="-moz-column-count:3; column-count:3;">
Liña 122:
Existen outros portes que non se listaron aquí.
 
== Críticas ==
 
A versión 1.8, a actual versión estable do interprete, ten algunhas limitacións, que inclúen:
Liña 133:
Ruby 2.0 é o obxectivo para eliminar estes problemas mencionados:
 
* '''Rendemento''' -- un novo e máis rápido intérprete, [[YARV]], unha [[máquina virtual]] que executa instruccións, que son compiladas en instrucción nativas do procesador empregando o compilador [[Just-in-time_compilationtime compilation|JIT]].
* '''Threading''' -- os fíos nativos empregaránse no canto de fíos verdes.[http://glu.ttono.us/articles/2005/10/14/yarv-progress-report]
* '''Unicode''' -- suporte compreto para cadeas Unicode.
Liña 143:
* Ruby aínda falla na especificación, a actual implementación C é a especificación referenza ''de facto'' [http://headius.blogspot.com/2007/04/what-would-i-will-i-change-about-ruby.html] [http://craigrandall.net/archives/2006/09/from-java-to-ruby/] .
 
== Licenza ==
O intérprete e as [[biblioteca (programación)|bibliotecas]] están licenciadas de forma dual (inseparable) baixo as licencias [[Software_LibreSoftware Libre|libres]] e de [[código aberto]] [[GPL]] e [http://www.ruby-lang.org/en/LICENSE.txt Licenza Ruby].
 
== Notas ==
{{listaref}}
 
== Vexase tamén ==
=== Outros artigos ===
* [[RubyGems]] (xestor de paquetes para Ruby)
* [[Ruby on Rails]] (framework orientado a aplicacións web en Ruby)
Liña 156:
* [[Orientado a obxectos]] (Programación orientada a obxectos)
 
=== Ligazóns externas ===
* [http://www.ruby-lang.org Ruby] Sitio principal de Ruby en Internet.
* [http://www.rubycentral.com Ruby central] Recursos sobre Ruby en Inglés.
* [http://ruby.org.es Rubíes] Comunidad hispana de usuarios de Ruby.
* [http://rubytutorial.wikidot.com/ Ruby Tutorial] tutorial en castelán de Ruby.
* [http://www.rubycentral.com/book/ Programming Ruby], David Thomas e Andrew Hunt. [[Libro libre]]
* [http://wiki.rubyargentina.com.ar/gruporubyargentina/show/HomePage Ruby Argentina] Comunidad Arxentina de Ruby
* [http://www.ruby.com.ve Ruby Venezuela] Ruby de Venezuela
Liña 173:
[[Categoría:Linguaxes interpretadas|Ruby]]
[[Categoría:Compiladores e interpretadores libres]]
 
[[Categoría:Linguaxes de programación]]
[[Categoría:Linguaxes interpretadas]]
Liña 191 ⟶ 190:
[[et:Ruby (programmeerimiskeel)]]
[[eu:Ruby]]
[[fa:روبی (زبان برنامه‌نویسی)]]
[[fi:Ruby]]
[[fr:Ruby]]