fbpx
Wikipedia

Ruby

Ruby es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el programador japonés Yukihiro "Matz" Matsumoto, quien comenzó a trabajar en Ruby en 1993, y lo presentó públicamente en 1995. Combina una sintaxis inspirada en Python y Perl con características de programación orientada a objetos similares a Smalltalk. Comparte también funcionalidad con otros lenguajes de programación como Lisp, Lua, Dylan y CLU. Ruby es un lenguaje de programación interpretado en una sola pasada y su implementación oficial es distribuida bajo una licencia de software libre.

Ruby
Desarrollador(es)
Comunidad de desarrolladores de Ruby
https://www.ruby-lang.org/
Información general
Extensiones comunes .rb, .rbw
Paradigma multiparadigma: orientado a objetos, reflexivo
Apareció en 1995
Diseñado por Yukihiro Matsumoto
Última versión estable 3.0.2[1](7 de julio de 2021 (6 meses y 29 días))
Sistema de tipos fuertemente tipado, dinámico
Implementaciones Ruby MRI, YARV, JRuby, Rubinius, IronRuby, MacRuby, HotRuby
Influido por Perl, Smalltalk, Python, Lisp, Eiffel, Scheme, Ada, Dylan, CLU
Ha influido a D, Groovy, Falcon
Sistema operativo Multiplataforma
Licencia Licencia Ruby

Historia

El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empezó a trabajar en Ruby el 24 de febrero de 1993, y lo presentó al público en el año 1995. En el círculo de amigos de Matsumoto se le puso el nombre de Ruby (en español rubí) como broma aludiendo al lenguaje de programación Perl (perla en inglés). La última versión estable de la rama 1.8 es la 1.8.7_p248, de la rama 1.9 es la 1.9.2_p180 . La versión en 1.9 que incorpora mejoras sustanciales en el rendimiento del lenguaje, que se espera queden reflejadas en la próxima versión estable de producción del lenguaje, Ruby 1.9.0.1 Diferencias en rendimiento entre la actual implementación de Ruby (1.8.6) y otros lenguajes de programación más arraigados han llevado al desarrollo de varias máquinas virtuales para Ruby. Entre esas se encuentra JRuby, un intento de llevar Ruby a la plataforma Java, y Rubinius, un intérprete modelado basado en las máquinas virtuales de Smalltalk. Los principales desarrolladores han apoyado la máquina virtual proporcionada por el proyecto YARV, que se fusionó en el árbol de código fuente de Ruby el 31 de diciembre de 2006, y se dio a conocer como Ruby 1.9

Filosofía

 
Yukihiro Matsumoto, el creador de Ruby

El creador del lenguaje, Yukihiro "Matz" Matsumoto, ha dicho que Ruby está diseñado para la productividad y la diversión del desarrollador, siguiendo los principios de una buena interfaz de usuario.[2]​ Sostiene que el diseño de sistemas necesita enfatizar las necesidades humanas más que las de la máquina:[3]

A menudo la gente, especialmente los ingenieros en computación, se centran en las máquinas. Ellos piensan, "Haciendo esto, la máquina funcionará más rápido. Haciendo esto, la máquina funcionará de manera más eficiente. Haciendo esto..." Están centrados en las máquinas, pero en realidad necesitamos centrarnos en las personas, en cómo hacen programas o cómo manejan las aplicaciones en los ordenadores. Nosotros somos los jefes. Ellos son los esclavos.

Ruby sigue el principio de la menor sorpresa, lo que significa que el lenguaje debe comportarse de tal manera que minimice la confusión de los usuarios experimentados. Matz ha dicho que su principal objetivo era hacer un lenguaje que le divirtiera a él mismo, minimizando el trabajo de programación y la posible confusión. Él ha dicho que no ha aplicado el principio de menor sorpresa al diseño de Ruby,[3]​ sin embargo, la frase se ha asociado al lenguaje de programación Ruby. La frase en sí misma ha sido fuente de controversia, ya que los no iniciados pueden tomarla como que las características de Ruby intentan ser similares a las características de otros lenguajes conocidos. En mayo de 2005 en una discusión en el grupo de noticias comp.lang.ruby, Matz trató de distanciar Ruby de la mencionada filosofía, explicando que cualquier elección de diseño será sorprendente para alguien, y que él usa un estándar personal de evaluación de la sorpresa. Si ese estándar personal se mantiene consistente habrá pocas sorpresas para aquellos familiarizados con el estándar.[4]

Matz lo definió de esta manera en una entrevista:[3]

Todo el mundo tiene un pasado personal. Alguien puede venir de Python, otro de Perl, y pueden verse sorprendidos por distintos aspectos del lenguaje. Entonces podrían decir 'Estoy sorprendido por esta característica del lenguaje, así que Ruby viola el principio de la menor sorpresa.' Espera, espera. El principio de la menor sorpresa no es sólo para ti. El principio de la menor sorpresa significa el principio de 'mi' menor sorpresa. Y significa el principio de la menor sorpresa después de que aprendes bien Ruby. Por ejemplo, fui programador de C++ antes de empezar a diseñar Ruby. Programé exclusivamente en C++ durante dos o tres años. Y después de dos años de programar en C++, todavía me sorprendía.

Semántica

Ruby es orientado a objetos: todos los tipos de datos son un objeto, incluidas las clases y tipos que otros lenguajes definen como primitivas, (como enteros, booleanos, y nil). Toda función es un método. Las variables siempre son referencias a objetos, no los objetos mismos. Ruby soporta herencia con enlace dinámico, mixins y métodos singleton (pertenecientes y definidos por una sola instancia más que definidos por la clase). A pesar de que Ruby no soporta herencia múltiple, la clases pueden importar módulos como mixins. Es compatible con la sintaxis procedimental, pero todos los métodos definidos fuera del ámbito de un objeto son realmente métodos de la clase Object. Como esta clase es padre de todas las demás, los cambios son visibles para todas las clases y objetos.

Ruby ha sido descrito como un lenguaje de programación multiparadigma: permite programación procedimental (definiendo funciones y variables fuera de las clases haciéndolas parte del objeto raíz Object), con orientación a objetos, (todo es un objeto) o funcionalmente (tiene funciones anónimas, clausuras y continuaciones; todas las sentencias tiene valores, y las funciones devuelven la última evaluación). Soporta introspección, reflexión y metaprogramación, además de soporte para hilos de ejecución gestionados por el intérprete. Ruby tiene tipado dinámico, y soporta polimorfismo de tipos (permite tratar a subclases utilizando la interfaz de la clase padre). Ruby no requiere de polimorfismo de funciones (sobrecarga de funciones) al ser dinámicamente tipado (los parámetros de una función pueden ser de distinto tipo en cada llamada, encargándose dicha función de determinar el tipo y actuar en consecuencia).

De acuerdo con las preguntas frecuentes de Ruby,[5]​ "Si te gusta Perl, te gustará Ruby y su sintaxis. Si te gusta Smalltalk, te gustará Ruby y su semántica. Si te gusta Python, la enorme diferencia de diseño entre Python y Ruby/Perl puede que te convenza o puede que no".[6]

Características

Ruby actualmente no tiene soporte completo de Unicode,[7]​ a pesar de tener soporte parcial para UTF-8.

Interacción

La distribución oficial de Ruby incluye irb (Interactive Ruby Shell), un intérprete interactivo de línea de comandos que puede ser usado para probar código de manera rápida. El siguiente fragmento de código representa una muestra de una sesión usando irb:

$ irb irb(main):001:0> puts "Hola mundo" Hola mundo => nil irb(main):002:0> 1+2 => 3 

Sintaxis

La sintaxis de Ruby es similar a la de Perl o Python. La definición de clases y métodos está definida por palabras clave. Sin embargo, en Perl, las variables no llevan prefijos. Cuando se usa, un prefijo indica el ámbito de las variables. La mayor diferencia con C y Perl es que las palabras clave son usadas para definir bloques de código sin llaves. Los saltos de línea son significativos y son interpretados como el final de una sentencia; el punto y coma tiene el mismo uso. A diferencia de Python, la sangría no es significativa.

Una de las diferencias entre Ruby y Python y Perl es que Ruby mantiene todas sus variables de instancia privadas dentro de las clases y solo la expone a través de métodos de acceso (attr_writer, attr_reader, etc.). A diferencia de los métodos get y set de otros lenguajes como C++ o Java, los métodos de acceso en Ruby pueden ser escritos con una sola línea de código. Como la invocación de estos métodos no requiere el uso de paréntesis, es trivial cambiar una variable de instancia en una función sin tocar una sola línea de código o refactorizar dicho código. Los descriptores de propiedades de Python son similares pero tienen una desventaja en el proceso de desarrollo. Si uno comienza en Python usando una instancia de variable expuesta públicamente y después cambia la implementación para usar una instancia de variable privada expuesta a través de un descriptor de propiedades, el código interno de la clase necesitará ser ajustado para usar la variable privada en vez de la propiedad pública. Ruby elimina está decisión de diseño obligando a todas las variables de instancia a ser privadas, pero también proporciona una manera sencilla de declarar métodos set y get. Esto mantiene el principio de que en Ruby no se puede acceder a los miembros internos de una clase desde fuera de esta; en lugar de esto se pasa un mensaje (se invoca un método) a la clase y recibe una respuesta.

Licencia

El intérprete y las bibliotecas están licenciadas de forma dual (inseparable) bajo las licencias de software libre GPL y Licencia Ruby.[8]

A partir de la versión 1.9.3 se opta por una licencia dual bajo las licencias BSD de dos cláusulas y Licencia pública Ruby.[9]

Véase también

Referencias

  1. https://www.ruby-lang.org/es/news/2021/07/07/ruby-3-0-2-released/
  2. «El lenguaje de programación Ruby, por Yukihiro Matsumoto». informit.com (en inglés). Consultado el 7 de octubre de 2016. 
  3. Bill Venners (29 de septiembre de 2003). Artima, ed. «La filosofía de Ruby, una conversación con Yukihiro Matsumoto, Parte I» (en inglés). Consultado el 2 de mayo de 2015. 
  4. . Archivado desde el original el 29 de septiembre de 2007. Consultado el 5 de enero de 2008. 
  5. . Archivado desde el original el 9 de diciembre de 2007. Consultado el 6 de enero de 2008. 
  6. Licencia Ruby
  7. Novedades de Ruby 1.9.3

Enlaces externos

  •   Wikimedia Commons alberga una categoría multimedia sobre Ruby.
  •   Wikilibros alberga un manual sobre Programación en Ruby.
  • Sitio web principal de Ruby, en español
  • Recursos sobre Ruby en Inglés
  • Ruby Tutorial tutorial en castellano de Ruby
  • rubysur sitio de los usuarios de Ruby y Ruby On Rails de Latinoamérica
  • Ruby Argentina Comunidad Argentina de Ruby
  • Comunidad del Litoral Argentino de Ruby
  • Full Ruby on Rails Tutorial
  • NetBEANS IDE
  • Instalador de Ruby On Rails de BitNami
  •   Datos: Q161053
  •   Multimedia: Ruby programming language
  •   Libros y manuales: Programación en Ruby

ruby, este, artículo, trata, sobre, lenguaje, programación, para, notación, ayuda, lectura, véase, carácter, ruby, para, otros, usos, este, término, véase, desambiguación, lenguaje, programación, interpretado, reflexivo, orientado, objetos, creado, programador. Este articulo trata sobre el lenguaje de programacion Para la notacion de ayuda a la lectura vease Caracter ruby Para otros usos de este termino vease Ruby desambiguacion Ruby es un lenguaje de programacion interpretado reflexivo y orientado a objetos creado por el programador japones Yukihiro Matz Matsumoto quien comenzo a trabajar en Ruby en 1993 y lo presento publicamente en 1995 Combina una sintaxis inspirada en Python y Perl con caracteristicas de programacion orientada a objetos similares a Smalltalk Comparte tambien funcionalidad con otros lenguajes de programacion como Lisp Lua Dylan y CLU Ruby es un lenguaje de programacion interpretado en una sola pasada y su implementacion oficial es distribuida bajo una licencia de software libre RubyDesarrollador es Comunidad de desarrolladores de Rubyhttps www ruby lang org Informacion generalExtensiones comunes rb rbwParadigmamultiparadigma orientado a objetos reflexivoAparecio en1995Disenado porYukihiro MatsumotoUltima version estable3 0 2 1 7 de julio de 2021 6 meses y 29 dias Sistema de tiposfuertemente tipado dinamicoImplementacionesRuby MRI YARV JRuby Rubinius IronRuby MacRuby HotRubyInfluido porPerl Smalltalk Python Lisp Eiffel Scheme Ada Dylan CLUHa influido aD Groovy FalconSistema operativoMultiplataformaLicenciaLicencia Ruby editar datos en Wikidata Indice 1 Historia 2 Filosofia 3 Semantica 4 Caracteristicas 4 1 Interaccion 5 Sintaxis 6 Licencia 7 Vease tambien 8 Referencias 9 Enlaces externosHistoria EditarEl lenguaje fue creado por Yukihiro Matz Matsumoto quien empezo a trabajar en Ruby el 24 de febrero de 1993 y lo presento al publico en el ano 1995 En el circulo de amigos de Matsumoto se le puso el nombre de Ruby en espanol rubi como broma aludiendo al lenguaje de programacion Perl perla en ingles La ultima version estable de la rama 1 8 es la 1 8 7 p248 de la rama 1 9 es la 1 9 2 p180 La version en 1 9 que incorpora mejoras sustanciales en el rendimiento del lenguaje que se espera queden reflejadas en la proxima version estable de produccion del lenguaje Ruby 1 9 0 1 Diferencias en rendimiento entre la actual implementacion de Ruby 1 8 6 y otros lenguajes de programacion mas arraigados han llevado al desarrollo de varias maquinas virtuales para Ruby Entre esas se encuentra JRuby un intento de llevar Ruby a la plataforma Java y Rubinius un interprete modelado basado en las maquinas virtuales de Smalltalk Los principales desarrolladores han apoyado la maquina virtual proporcionada por el proyecto YARV que se fusiono en el arbol de codigo fuente de Ruby el 31 de diciembre de 2006 y se dio a conocer como Ruby 1 9Filosofia Editar Yukihiro Matsumoto el creador de Ruby El creador del lenguaje Yukihiro Matz Matsumoto ha dicho que Ruby esta disenado para la productividad y la diversion del desarrollador siguiendo los principios de una buena interfaz de usuario 2 Sostiene que el diseno de sistemas necesita enfatizar las necesidades humanas mas que las de la maquina 3 A menudo la gente especialmente los ingenieros en computacion se centran en las maquinas Ellos piensan Haciendo esto la maquina funcionara mas rapido Haciendo esto la maquina funcionara de manera mas eficiente Haciendo esto Estan centrados en las maquinas pero en realidad necesitamos centrarnos en las personas en como hacen programas o como manejan las aplicaciones en los ordenadores Nosotros somos los jefes Ellos son los esclavos Ruby sigue el principio de la menor sorpresa lo que significa que el lenguaje debe comportarse de tal manera que minimice la confusion de los usuarios experimentados Matz ha dicho que su principal objetivo era hacer un lenguaje que le divirtiera a el mismo minimizando el trabajo de programacion y la posible confusion El ha dicho que no ha aplicado el principio de menor sorpresa al diseno de Ruby 3 sin embargo la frase se ha asociado al lenguaje de programacion Ruby La frase en si misma ha sido fuente de controversia ya que los no iniciados pueden tomarla como que las caracteristicas de Ruby intentan ser similares a las caracteristicas de otros lenguajes conocidos En mayo de 2005 en una discusion en el grupo de noticias comp lang ruby Matz trato de distanciar Ruby de la mencionada filosofia explicando que cualquier eleccion de diseno sera sorprendente para alguien y que el usa un estandar personal de evaluacion de la sorpresa Si ese estandar personal se mantiene consistente habra pocas sorpresas para aquellos familiarizados con el estandar 4 Matz lo definio de esta manera en una entrevista 3 Todo el mundo tiene un pasado personal Alguien puede venir de Python otro de Perl y pueden verse sorprendidos por distintos aspectos del lenguaje Entonces podrian decir Estoy sorprendido por esta caracteristica del lenguaje asi que Ruby viola el principio de la menor sorpresa Espera espera El principio de la menor sorpresa no es solo para ti El principio de la menor sorpresa significa el principio de mi menor sorpresa Y significa el principio de la menor sorpresa despues de que aprendes bien Ruby Por ejemplo fui programador de C antes de empezar a disenar Ruby Programe exclusivamente en C durante dos o tres anos Y despues de dos anos de programar en C todavia me sorprendia Semantica EditarRuby es orientado a objetos todos los tipos de datos son un objeto incluidas las clases y tipos que otros lenguajes definen como primitivas como enteros booleanos y nil Toda funcion es un metodo Las variables siempre son referencias a objetos no los objetos mismos Ruby soporta herencia con enlace dinamico mixins y metodos singleton pertenecientes y definidos por una sola instancia mas que definidos por la clase A pesar de que Ruby no soporta herencia multiple la clases pueden importar modulos como mixins Es compatible con la sintaxis procedimental pero todos los metodos definidos fuera del ambito de un objeto son realmente metodos de la clase Object Como esta clase es padre de todas las demas los cambios son visibles para todas las clases y objetos Ruby ha sido descrito como un lenguaje de programacion multiparadigma permite programacion procedimental definiendo funciones y variables fuera de las clases haciendolas parte del objeto raiz Object con orientacion a objetos todo es un objeto o funcionalmente tiene funciones anonimas clausuras y continuaciones todas las sentencias tiene valores y las funciones devuelven la ultima evaluacion Soporta introspeccion reflexion y metaprogramacion ademas de soporte para hilos de ejecucion gestionados por el interprete Ruby tiene tipado dinamico y soporta polimorfismo de tipos permite tratar a subclases utilizando la interfaz de la clase padre Ruby no requiere de polimorfismo de funciones sobrecarga de funciones al ser dinamicamente tipado los parametros de una funcion pueden ser de distinto tipo en cada llamada encargandose dicha funcion de determinar el tipo y actuar en consecuencia De acuerdo con las preguntas frecuentes de Ruby 5 Si te gusta Perl te gustara Ruby y su sintaxis Si te gusta Smalltalk te gustara Ruby y su semantica Si te gusta Python la enorme diferencia de diseno entre Python y Ruby Perl puede que te convenza o puede que no 6 Caracteristicas EditarOrientado a objetos Cuatro niveles de ambito de variable global clase instancia y local Manejo de excepciones iteradores y clausuras o closures pasando bloques de codigo expresiones regulares nativas similares a las de Perl a nivel del lenguaje Posibilidad de redefinir los operadores sobrecarga de operadores recoleccion de basura automatica Altamente portable Hilos de ejecucion simultaneos en todas las plataformas usando hilos verdes o no gestionados por el sistema operativo Carga dinamica de DLL bibliotecas compartidas en la mayoria de las plataformas Introspeccion reflexion y metaprogramacion Amplia libreria estandar Soporta inyeccion de dependencias Soporta alteracion de objetos en tiempo de ejecucion continuaciones y generadoresRuby actualmente no tiene soporte completo de Unicode 7 a pesar de tener soporte parcial para UTF 8 Interaccion Editar La distribucion oficial de Ruby incluye irb Interactive Ruby Shell un interprete interactivo de linea de comandos que puede ser usado para probar codigo de manera rapida El siguiente fragmento de codigo representa una muestra de una sesion usando irb irb irb main 001 0 gt puts Hola mundo Hola mundo gt nil irb main 002 0 gt 1 2 gt 3Sintaxis EditarLa sintaxis de Ruby es similar a la de Perl o Python La definicion de clases y metodos esta definida por palabras clave Sin embargo en Perl las variables no llevan prefijos Cuando se usa un prefijo indica el ambito de las variables La mayor diferencia con C y Perl es que las palabras clave son usadas para definir bloques de codigo sin llaves Los saltos de linea son significativos y son interpretados como el final de una sentencia el punto y coma tiene el mismo uso A diferencia de Python la sangria no es significativa Una de las diferencias entre Ruby y Python y Perl es que Ruby mantiene todas sus variables de instancia privadas dentro de las clases y solo la expone a traves de metodos de acceso attr writer attr reader etc A diferencia de los metodos get y set de otros lenguajes como C o Java los metodos de acceso en Ruby pueden ser escritos con una sola linea de codigo Como la invocacion de estos metodos no requiere el uso de parentesis es trivial cambiar una variable de instancia en una funcion sin tocar una sola linea de codigo o refactorizar dicho codigo Los descriptores de propiedades de Python son similares pero tienen una desventaja en el proceso de desarrollo Si uno comienza en Python usando una instancia de variable expuesta publicamente y despues cambia la implementacion para usar una instancia de variable privada expuesta a traves de un descriptor de propiedades el codigo interno de la clase necesitara ser ajustado para usar la variable privada en vez de la propiedad publica Ruby elimina esta decision de diseno obligando a todas las variables de instancia a ser privadas pero tambien proporciona una manera sencilla de declarar metodos set y get Esto mantiene el principio de que en Ruby no se puede acceder a los miembros internos de una clase desde fuera de esta en lugar de esto se pasa un mensaje se invoca un metodo a la clase y recibe una respuesta Licencia EditarEl interprete y las bibliotecas estan licenciadas de forma dual inseparable bajo las licencias de software libre GPL y Licencia Ruby 8 A partir de la version 1 9 3 se opta por una licencia dual bajo las licencias BSD de dos clausulas y Licencia publica Ruby 9 Vease tambien Editar Portal Software libre Contenido relacionado con Software libre RubyGems gestor de paquetes para Ruby Ruby on Rails entorno de trabajo orientado a aplicaciones web en Ruby JRuby implementacion en Java del interprete de Ruby Rubinius implementacion en Ruby del interprete de Ruby Orientado a objetos Programacion orientada a objetos Referencias Editar https www ruby lang org es news 2021 07 07 ruby 3 0 2 released El lenguaje de programacion Ruby por Yukihiro Matsumoto informit com en ingles Consultado el 7 de octubre de 2016 a b c Bill Venners 29 de septiembre de 2003 Artima ed La filosofia de Ruby una conversacion con Yukihiro Matsumoto Parte I en ingles Consultado el 2 de mayo de 2015 Ruby Weekly News 23rd 29th May 2005 Archivado desde el original el 29 de septiembre de 2007 Consultado el 5 de enero de 2008 Ruby FAQ Archivado desde el original el 9 de diciembre de 2007 Consultado el 6 de enero de 2008 Como se compara Ruby con Python FAQ en ingles Feature 2034 Consider the ICU Library for Improving and Expanding Unicode Support Licencia Ruby Novedades de Ruby 1 9 3Enlaces externos Editar Wikimedia Commons alberga una categoria multimedia sobre Ruby Wikilibros alberga un manual sobre Programacion en Ruby Sitio web principal de Ruby en espanol Ruby central Recursos sobre Ruby en Ingles Ruby Tutorial tutorial en castellano de Ruby rubysur sitio de los usuarios de Ruby y Ruby On Rails de Latinoamerica Ruby Argentina Comunidad Argentina de Ruby RubyLit Comunidad del Litoral Argentino de Ruby Full Ruby on Rails Tutorial NetBEANS IDE Instalador de Ruby On Rails de BitNami Datos Q161053 Multimedia Ruby programming language Libros y manuales Programacion en Ruby Obtenido de https es wikipedia org w index php title Ruby amp oldid 140696728, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos