Rubí | ||
Fecha de la primera versión | 1995 | |
---|---|---|
Paradigmas | Interpretado , objeto , imperativo , concurrente , funcional | |
Autor | Yukihiro matsumoto | |
Desarrolladores | Yukihiro Matsumoto y colaboradores | |
Última versión | 3.0.1 (5 de abril de 2021) | |
Mecanografía | Fuerte , dinámico | |
Influenciado por | Eiffel , Lisp , Smalltalk , Perl , Python , Dylan , Ada y CLU | |
Influenciado | Lenguaje D , Groovy , Perl 6 | |
Implementaciones | Ruby, YARV , rubí MRI , JRuby , XRuby, Rubinius , cardenal, Jardines Point Ruby.NET, IronRuby , MacRuby, mruby android-rubí | |
Escrito en | VS | |
Sistema de explotación | Multiplataforma | |
Licencia | Licencia Ruby , Licencia pública general GNU versión 2 y cláusulas BSD 2 ( d ) | |
Sitio web | www.ruby-lang.org | |
Extensión de archivo | rb y rbw | |
Ruby es un lenguaje de programación gratuito . Se interpreta , orientado a objetos y multi- paradigma . El idioma se estandarizó en Japón en 2011 ( JIS X 3017: 2011) y en 2012 por la Organización Internacional de Normalización (ISO 30170: 2012).
Yukihiro "Matz" Matsumoto es el creador de Ruby. Frustrado por su experiencia en el desarrollo de Smalltalk y Lisp , comenzó a diseñar un nuevo lenguaje en 1993 bajo Emacs , luego lanzó una primera versión en 1995 bajo una licencia libre . Continúa desde las nuevas versiones.
Se han producido cambios importantes en la versión:
Desde la llegada de una documentación de habla inglesa y el marco web Ruby on Rails en 2004, Ruby ha experimentado una cierta locura que continuó creciendo hasta 2008 en el mundo de la programación, luego una lenta erosión si juzgamos por su índice de Tiobe .
Ruby está fuertemente orientado a objetos y, por lo tanto, se acerca al paradigma de objetos de Smalltalk :
A pesar de este aspecto exclusivamente de objeto , la programación procedimental es posible y frecuente. Ruby usa una sintaxis simple, inspirada en Eiffel y Ada .
A menudo, el lenguaje se presenta evitando en la medida de lo posible las sorpresas desagradables, de acuerdo con el principio de la menor sorpresa . Pero como no es posible evitar la sorpresa de todos los usuarios, Yukihiro Matsumoto especifica que busca sobre todo evitar su propia sorpresa. Así, cuanto más conocemos el lenguaje, más conocemos la lógica de su autor, y menos nos sorprende las funcionalidades que descubrimos.
Las principales funcionalidades son:
El intérprete oficial, Ruby MRI , funciona en muchos sistemas operativos : UNIX , Linux , Microsoft Windows , MS-DOS , OS X , OS / 2 , ReactOS , AmigaOS , etc. Se publica bajo la licencia dual libre GNU GPL y la licencia Ruby.
Ruby viene con irb , un intérprete de comandos interactivo para probar a fondo cómo funciona el lenguaje. Existe una versión web de irb para probar Ruby en un navegador.
Desde el 1 st de enero de de 2007, el desarrollo de Ruby (1.9) se basa en el intérprete YARV escrito por Koichi Sasada . Este nuevo intérprete aporta una mejora notable en el rendimiento.
Además de YARV , hay varios otros intérpretes de Ruby:
JRuby está escrito en Java e interpreta directamente el código fuente escrito en Ruby. XRuby Convierte código Ruby a código de bytes Java y es más rápido en algunos puntos de referencia que la versión 1.8.5 del intérprete oficial. Rubinius Una máquina virtual simplificada, inspirada en Smalltalk-80 , implementada en Ruby. Cardenal un intérprete corriendo en Parrot . Gardens Point Ruby.NET Un intérprete que se ejecuta en el marco .NET . IronRuby un compilador que se ejecuta en el DLR del marco .NET . Ruby para .Net un compilador que se ejecuta en CLR del marco .NET que ha sido abandonado a favor de IronRuby . MacRuby Implementación de Ruby 1.9 específica para OS X , que se ejecuta sobre el tiempo de ejecución de Objective-C , lo que permite el uso nativo de los componentes de Cocoa , a diferencia de los enlaces de RubyCocoa.: Truffleruby Apoyado y desarrollado por Oracle, es una implementación del lenguaje Ruby en GraalVM, lo que permite un rendimiento superior al MRI. Sin embargo, las fallas de implementación impiden la instalación de algunas gemas populares.
También existe una solución no gratuita, comercializada por HipByte basada en el trabajo del proyecto MacRuby , llamada RubyMotion creada por Laurent Sansonetti
La versión 2.0 le permite crear aplicaciones gráficas para macOS e iOS .
Ruby tiene una interfaz de programación en lenguaje C que le permite integrarse en otro software . Ruby se puede utilizar en particular en:
El software de creación de videojuegos RPG Maker incluye en sus versiones XP y VX una librería denominada RGSS, Ruby Game Scripting System que permite el uso de scripts en Ruby.
Hay muchas bibliotecas de funciones que se pueden agregar al lenguaje. El repositorio histórico de estas bibliotecas es Ruby Application Archive (RAA). Contiene características adicionales para Ruby, como bibliotecas de clases y módulos, pero también extensiones para usar bibliotecas de terceros.
El RAA también contiene software escrito en Ruby. Entre estos software encontramos en particular Rubygems, que es una herramienta de empaquetado e instalación para extensiones de Ruby. Permite la implementación rápida de bibliotecas y programas de Ruby.
Con el tiempo, la base de datos de gemas de Rubygems se ha convertido en el punto de referencia en el almacenamiento de bibliotecas para Ruby (más de 49 mil millones de descargas); a través de la herramienta Bundle r (también desarrollada en Ruby), las dependencias del proyecto se descargan de forma predeterminada desde Rubygems .
El sitio web de Rubyforge también fue una gran cantidad de programas y bibliotecas escritos en Ruby, sin embargo, fue cerrado por su desarrollador en 2014.
El clásico Hola mundo :
puts 'Hello World!'Uso de objetos:
# Tout est objet, même les nombres: -199.abs # 199 'ruby is cool'.length # 12 'Rick'.index 'c' # 2 "Nice Day Isn't It?".downcase.split(//).sort.uniq.join # " '?acdeinsty" module AnimalSkills def eat puts "I'm eating !" end def move puts "I'm moving !" end def express; puts "I'm expressing !" end end class Animal include AnimalSkills # mixin @@name = 'an animal' # variable de classe def initialize(size, weight, color) # initialisation des variables d'instance @size = size.to_i @weight, @color = weight.to_i, color.to_s end def describe puts "I'm #{@@name} !" puts "I'm #{@size} meter tall, I weigh #{@weight} kilograms and I'm " + @color end end class Zebra < Animal # héritage @@name = 'a zebra' # rédéfinition de la variable de classe: maintenant tous les animaux sont des zèbres ! def initialize(size, weight, color = 'black and white') # surcharge super # appel de la méthode de la classe mère (Animal) end end z = Zebra.new(1, 50) z.describe # => I'm a zebra ! / I'm 1 meter tall, I weigh 50 kilograms and I'm black and white z.eat # => I'm eating !