Ruby lenguaje de programació - Lenguajes De Programación

Breaking

Flickr Photos

BANNER 728X90

lunes, 30 de abril de 2018

Ruby lenguaje de programació

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.


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 ésas 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.

Características


Orientado a objetos
Cuatro niveles de ámbito de variable: global, clase, instancia y local.
Manejo de excepciones
iteradores y clausuras o closures (pasando bloques de código)
expresiones regulares nativas similares a las de Perl a nivel del lenguaje
Posibilidad de redefinir los operadores (sobrecarga de operadores)
recolección de basura automática
Altamente portable
Hilos de ejecución simultáneos en todas las plataformas usando hilos verdes, o no gestionados por el sistema operativo.
Carga dinámica de DLL/bibliotecas compartidas en la mayoría de las plataformas
Introspección, reflexión y metaprogramación
Amplia librería estándar
Soporta inyección de dependencias
Soporta alteración de objetos en tiempo de ejecución
continuaciones y generadores
Ruby actualmente no tiene soporte completo de Unicode,6​ a pesar de tener soporte parcial para UTF-8.

Los símbolos


En Ruby tenemos símbolos, se escriben así :nombre_simbolo y son, cadenas no mutables, es decir que las diferencias con un String son:
Empiezan con :
No pueden cambiar su valor, a diferencia de las cadenas, que sí pueden.
Los símbolos son una característica muy particular de Ruby y no sé si sean utilizados en otros lenguajes como tal. ¿Para qué sirven? En primer lugar se utilizan cuando estás declarando una cadena que no va a cambiar, en segundo lugar tienen un performance mucho mayor que un String normal por... veamos algo de código antes de explicar por qué:
:hola_mundo.object_id == :hola_mundo.object_id #True
"hola mundo".object_id == "hola mundo".object_id # False
Analicemos el código que acabamos de escribir, en primer lugar no estamos comparando las cadenas como tal, por que en ese caso "hola mundo" == "hola_mundo"es verdadero. Estamos en cambio comparando el ID del objecto, un ID que Ruby utiliza para identificar el objeto en la memoria.
¿Por qué uno da verdadero y el otro falso? Porque cuando Ruby ve 2 símbolos iguales no crea otro objeto, si no referencía al ya creado, mientras que en cadenas, Ruby no sabe si 2 cadenas "dicen lo mismo" así que sigue creando en memoria más objetos por cadena que creamos.
Esto se traduce en mejor performance del lenguaje, básicamente ejecuciones con cadenas son más lentas que con símbolos.