Rubí

Rubí
Logo.
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).

Histórico

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 .

Filosofía

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.

Características

Las principales funcionalidades son:

Implementaciones

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 .

Intérpretes integrados

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.

Bibliotecas

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.

Ejemplos de

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"

Usando mixin y herencia  :

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 !

Notas y referencias

Notas

  1. La principal diferencia es que las estructuras de control (if-then-else, while, etc.) no son objetos.

Referencias

  1. "  https://www.ruby-lang.org/en/news/2021/04/05/ruby-3-0-1-released/  "
  2. Intro - D Programming Language 1.0 - Digital Mars .
  3. "  https://www.ruby-lang.org/ja/news/2013/06/30/we-retire-1-8-7/  "
  4. "  https://www.ruby-lang.org/ja/news/2011/10/31/ruby-1-9-3-p0-is-released/  "
  5. JIS X 3017: 2011 - Lenguajes de programación - Ruby .
  6. ISO / IEC 30170: 2012 Tecnología de la información - Lenguajes de programación - Ruby .
  7. Sitio oficial de descarga de FTP .
  8. (in) Anuncio de la versión 1.9.1 .
  9. Lanzamiento de Ruby 1.9.3-p0 .
  10. (en) Lanzamiento de Ruby 2.0.0-p0 .
  11. (en) Lanzamiento de Ruby 2.1.0 .
  12. Explicación del crecimiento en el sitio web oficial.
  13. (in) Ruby en HOPL , la historia de los lenguajes de programación .
  14. Definición de PoLS en la wiki de Ruby Garden .
  15. (en) correo electrónico Re: Una perspectiva diferente es Ruby enviado por matz el 26 de mayo de 2005 en ruby-talk .
  16. (in) Ruby-A Diamond of a Programming Language, Parte 2 , artículo publicado en devx.com .
  17. Texto de la licencia en el sitio web oficial .
  18. (en) ¡ Prueba Ruby! en hobix.com.
  19. (en) The Ruby VM: Episodio I , entrevista a matz y ko1, la máquina virtual Ruby.
  20. (en) El gran rubí tiroteo , comparación de rendimiento de los principales intérpretes de Ruby.
  21. Sitio web oficial de JRuby
  22. (en) XRuby es más rápido que Ruby 1.8.5 MOST .
  23. (in) Entrevista con Rubinius .
  24. Sitio web del proyecto Cardinal .
  25. (en) Ruby.NET - Integración del compilador Gardens Point de Huw Collingbourne.
  26. (en) http://www.ironruby.net/ .
  27. (en) Sitio web oficial de MacRuby .
  28. (en) PragTob , "  Evaluación comparativa de una IA de Go en Ruby: CRuby vs. Rubinius vs. JRuby vs. Truffle: un año después  ” , en los viajes de un ingeniero de software que ya no es tan joven ,24 de enero de 2017(consultado el 4 de abril de 2020 )
  29. Archivo de aplicaciones Ruby .
  30. Sitio web oficial de Rubygems .
  31. “  RubyGems.org | your gem hosting community  ” , en rubygems.org (consultado el 3 de abril de 2020 )
  32. RubyForge .
  33. (en) Mx Evan Phoenix , "  Anunció hoy que vamos a poner fin a RubyForge. El último día será el 15 de mayo. ¡Comience su migración de datos ahora!  » , En @evanphx ,10 de noviembre de 2013(consultado el 4 de abril de 2020 )

Apéndices

Bibliografía

  • (en) Dave Thomas y Andrew Hunt , Programming Ruby: The Pragmatic Programmer's Guide ,2000, 564  p. ( ISBN  0-201-71089-7 , leer en línea )
  • Yukihiro Matsumoto ( traducción del  inglés), Ruby in a Nutshell , Cambridge / Cologne / Paris, etc. O'Reilly2002, 242  p. ( ISBN  2-84177-210-1 )
  • (en) Dave Thomas , Chad Fowler y Andy Hunt , Programming Ruby: The Pragmatic Programmer's Guide ,2004( ISBN  0-9745140-5-5 )
  • Chris Pine ( trad.  De Inglés), Programación de inicio con Ruby , París, CampusPress,2006, 165  p. ( ISBN  2-7440-2078-8 )
  • Lucas Carlson y Leonard Richardson , Ruby por ejemplo ,2006, 867  p. ( ISBN  978-2-84177-347-3 )
  • (en) Hal Fulton , The Ruby Way, Segunda edición: Soluciones y técnicas de programación Ruby (segunda edición) ,2006( ISBN  0-672-32884-4 )
  • (en) Maik Schmidt , Integración empresarial con Ruby: una guía pragmática ,2006, 346  p. ( ISBN  0-9766940-6-9 )
  • (es) Brian Marick , Everyday Scripting con Ruby: para equipos, evaluadores y para usted ,2007, 301  p. ( ISBN  978-0-9776166-1-9 )
  • (es) Peter Cooper , Beginning Ruby: De novato a profesional ,2007( ISBN  978-1-59059-766-8 )

Artículos relacionados

enlaces externos