Ruby: Diferenzas entre revisións

Contido eliminado Contido engadido
m →‎Ligazóns externas: Arranxos varios
Toliño (conversa | contribucións)
+{{Linguaxes de programación}}; WP:COR
Liña 23:
== Historia ==
[[Ficheiro:Yukihiro Matsumoto.JPG|miniatura|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 lanzouno ó público no añoano [[1995]]. O nome "Ruby" foi ideado en base á pedra correspondente ó mes de nacemento dun colega. En decembro de [[2007]],a última versión estable era a 1.8.6; o 26 de decembro de 2007 foi publicado Ruby 1.9.0: unha versión de desenvolvemento que incorpora melloras substanciais no rendemento da linguaxe, que se espera queden reflectidas na próxima versión estable de produción da linguaxe, Ruby 2.0. Diferenzas en rendemento entre a actual posta en funcionamento de Ruby (1.8.6) e outras linguaxes de programación más arraigados levaron ó desenvolvemento de varias máquinas virtuais para Ruby. Entre esas 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 virtuais 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.-->.
 
Liña 41:
Ruby é [[orientado a obxectos]]: 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 mesmos. 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]], as clases poden importar [[Módulo (programación)|módulos]] como mixins. A sintaxe procedural esta soportada, pero tódolos métodos definidos fora do ámbito dun obxecto son realmente métodos da clase Object. Como esta clase é pai de todas as demais, os cambios son visibles para tódalas clases e obxectos.
 
Ruby describiuse coma unha [[linguaxe de programación multiparadigma]]: permite programación procedural (definindo funcións e variables fora das clases facéndoas parte do obxecto raíz 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 sentenciassentenzas 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]], ademais de soporte para [[Fío de execución|fíos de execución]] xestionados polo intérprete. Ruby ten [[tipado dinámico]], e soporta [[Polimorfismo (programación orientada a obxectos)|polimorfismo]].
 
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 diferenciadiferenza de deseño entre Python y Ruby/Perl pode que che convenza ou pode que non."
 
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 deseño entre Python y Ruby/Perl pode que che convenza ou pode que non."
== Características ==
* [[orientado a obxectos]].
Liña 50 ⟶ 51:
* [[Iterador (patrón de deseño)|iteradores]] e [[Clausura (informática)|clausuras ou closures]] (pasando bloques de código).
* [[expresión regular|expresións regulares]] nativas similares ás de [[Perl]] a nivel de linguaxe.
* posibilidade de redefinir losos operadores (sobrecarga de operadores).
* [[recolector de lixo|recolección de lixo automática]].
* altamente [[portable]].
Liña 83 ⟶ 84:
== 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 embargoPorén, 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" />
 
A omisión dos parénteses nos argumentos dos métodos poden levar a resultados inesperados se os métodos recollen parámetros múltiples. Nótese que os desenvolvedores de Ruby advertiron que a omisión de parénteses en métodos multi-parametrais será eliminado en futuras versións de Ruby, o intérprete de Ruby actualmente (Feb 2007) volta unha advertencia que advirte ó escritor de ''non'' omitir os <code>()</code>, para evitar significados ambiguos no código. O non emprego dos <code>()</code> así e todo é tamén unha práctica moi común, e pode ser especialmente boa para empregar Ruby coma unha linguaxe de máis lexible polas persoas, ademais do método chamado <code>method_missing()</code>.
Liña 124 ⟶ 125:
A versión 1.8, a actual versión estable do interprete, ten algunhas limitacións, que inclúen:
 
* '''Rendemento''' -- o rendemento do interpreteintérprete de Ruby está por detrasdetrás das linguaxes comparables coma [[Perl]], [[PHP]], and [[Python (programming language)|Python]] [http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=all] [http://www.joelonsoftware.com/items/2006/09/12.html], principalmente debido ó deseño do interprete: para executar código Ruby, o interprete construe un arbore de sintaxe do código fonte e logo avalia o arbore de sintaxe directamente, no canto de compilalo directamente nunha forma executable máis eficiente.
* '''Threading''' -- o modelo de fios de ruby emprega [[fios verdes]] [http://www.headius.com/rubyspec/index.php/Ruby_Threading], e este modelo ten algunhas limitacións inherentes que acarrexan a dificultade de empregalo ou de non ter seguranza en escenarios específicos.[http://www.killersites.com/blog/2007/standalone-ruby-on-rails/].
* '''Unicode''' -- Ruby non ten aínda soporte nativo para [[Unicode]] ou cadeas multibyte [http://headius.blogspot.com/2006/06/unicode-in-ruby-unicode-in-jruby.html].
Liña 142 ⟶ 143:
 
== Licenza ==
O intérprete e as [[biblioteca (programación)|bibliotecas]] están licenciadas de forma dual (inseparable) baixo as licenciaslicenzas [[Software Libre|libres]] e de [[código aberto]] [[GPL]] e [http://www.ruby-lang.org/en/LICENSE.txt Licenza Ruby].
 
== Notas ==
{{listarefListaref}}
 
== Véxase tamén ==
Liña 159 ⟶ 160:
* [http://search.cpan.org/perldoc?Syntax::Highlight::Engine::Kate::Ruby Syntax::Highlight::Engine::Kate::Ruby] módulo Perl en CPAN para o coloreado sintáctico de Ruby dentro de [[Kate]] (en inglés)
* [http://search.cpan.org/perldoc?Inline::Ruby::dRuby::Client Inline::Ruby::dRuby::Client] módulo Perl en CPAN, delegador de obxectos dRuby (en inglés)
 
{{Linguaxes de programación}}
 
{{Control de autoridades}}