• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ruby es un lenguaje de programación interpretado
 

Ruby es un lenguaje de programación interpretado

on

  • 4,916 views

Esta Guia a sido preparada por la Estudiante: Yulgrecia Gomez y Daviana Barreto, con el fin de ayudarles a conocer este lenguaje de programación

Esta Guia a sido preparada por la Estudiante: Yulgrecia Gomez y Daviana Barreto, con el fin de ayudarles a conocer este lenguaje de programación

Statistics

Views

Total Views
4,916
Views on SlideShare
4,912
Embed Views
4

Actions

Likes
0
Downloads
81
Comments
0

1 Embed 4

http://yulgreciaruby.net46.net 4

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ruby es un lenguaje de programación interpretado Ruby es un lenguaje de programación interpretado Document Transcript

    • Ruby es un lenguaje de programación interpretado, reflexivo y orientado a objetos,creado por el programador japonés Yukihiro "Matz" Matsumoto, quien comenzó atrabajar en Ruby en 1993, y lo presentó públicamente en 1995. Combina unasintaxis inspirada en Python y Perl con características de programación orientada aobjetos similares a Smalltalk. Comparte también funcionalidad con otros lenguajesde programación como Lisp, Lua, Dylan y CLU. Ruby es un lenguaje deprogramación interpretado en una sola pasada y su implementación oficial esdistribuida bajo una licencia de software libre.HistoriaEl lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empezó a trabajar enRuby el 24 de febrero de 1993, y lo presentó al público en el año 1995. En el círculode amigos de Matsumoto se le puso el nombre de "Ruby" (en español rubí) comobroma aludiendo al lenguaje de programación "Perl" (perla). La última versiónestable de la rama 1.8 es la 1.8.7_p248, de la rama 1.9 es la 1.9.1_p378 . La versiónen 1.9 que incorpora mejoras sustanciales en el rendimiento del lenguaje, que seespera 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 desarrollode varias máquinas virtuales para Ruby. Entre ésas se encuentra JRuby, un intentode llevar Ruby a la plataforma Java, y Rubinius, un intérprete modelado basado enlas máquinas virtuales de Smalltalk. Los principales desarrolladores han apoyado lamáquina virtual proporcionada por el proyecto YARV, que se fusionó en el árbol decódigo fuente de Ruby el 31 de diciembre de 2006, y se dió a conocer como Ruby1.9ObjetivoEl creador del lenguaje, Yukihiro "Matz" Matsumoto, ha dicho que Ruby estádiseñado para la productividad y la diversión del desarrollador, siguiendo losprincipios de una buena interfaz de usuario.2 Sostiene que el diseño de sistemasnecesita enfatizar las necesidades humanas más que las de la máquina:3A menudo la gente, especialmente los ingenieros en computación, se centran enlas 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 laspersonas, en cómo hacen programas o cómo manejan las aplicaciones en losordenadores. Nosotros somos los jefes. Ellos son los esclavos.
    • Ruby sigue el "principio de la menor sorpresa", lo que significa que el lenguaje debecomportarse de tal manera que minimice la confusión de los usuariosexperimentados. Matz ha dicho que su principal objetivo era hacer un lenguaje quele divirtiera él mismo, minimizando el trabajo de programación y la posibleconfusión. Él ha dicho que no ha aplicado el principio de menor sorpresa al diseñode Ruby,4 pero sin embargo la frase se ha asociado al lenguaje de programaciónRuby. La frase en sí misma ha sido fuente de controversia, ya que los no iniciadospueden tomarla como que la características de Ruby intentar ser similares a lascaracterísticas de otros lenguajes conocidos.En mayo de 2005 en una discusión en el grupo de noticias comp.lang.ruby, Matztrató de distanciar Ruby de la mencionada filosofía, explicando que cualquierelección de diseño será sorprendente para alguien, y que él usa un estándarpersonal de evaluación de la sorpresa. Si ese estándar personal se mantieneconsistente habrá pocas sorpresas para aquellos familiarizados con el estándar.[1]Matz lo definió de esta manera en una entrevista [2]:Todo el mundo tiene un pasado personal. Alguien puede venir de Python, otro dePerl, y ellos pueden verse sorprendidos por distintos aspectos del lenguaje.Entonces ellos podrían decir Estoy sorprendido por esta característica del lenguaje,asi que Ruby viola el principio de la menor sorpresa. Esperad, esperad. El principiode la menor sorpresa no es solo para ti. El principio de la menor sorpresa significael principio de mi menor sorpresa. Y significa el principio de la menor sorpresadespués de que aprendes bien Ruby. Por ejemplo, yo fui un programador de C++antes de empezar a diseñar Ruby. Yo programé solamente en C++ durante dos otres años. Y después de dos años de programar en C++, todavía me sorprendía.SemánticaRuby es orientado a objetos: todos los tipos de datos son un objeto, incluidas lasclases y tipos que otros lenguajes definen como primitivas, (como enteros,booleanos, y "nil"). Toda función es un método. Las variables siempre sonreferencias a objetos, no los objetos mismos. Ruby soporta herencia con enlacedinámico, mixins y métodos singleton (pertenecientes y definidos por un solainstancia más que definidos por la clase). A pesar de que Ruby no soporta herenciamúltiple, la clases pueden importar módulos como mixins. La sintaxis proceduralestá soportada, pero todos los métodos definidos fuera del ámbito de un objetoson realmente métodos de la clase Object. Como esta clase es padre de todas lasdemás, los cambios son visibles para todas las clases y objetos.
    • Ruby ha sido descrito como un lenguaje de programación multiparadigma: permiteprogramación procedural (definiendo funciones y variables fuera de las claseshaciéndolas parte del objeto raíz Object), con orientación a objetos, (todo es unobjeto) o funcionalmente (tiene funciones anónimas, clausuras o closures, ycontinuations; todas las sentencias tiene valores, y las funciones devuelven laúltima evaluación). Soporta introspección, reflexión y metaprogramación, ademásde soporte para hilos de ejecución gestionados por el interprete. Ruby tienetipificado dinámico, y soporta polimorfismo de tipos (permite tratar a subclasesutilizando la interfaz de la clase padre). Ruby no requiere de polimorfismo defunciones (sobrecarga de funciones) al no ser fuertemente tipado (los parámetrospasados a un método pueden ser de distinta clase en cada llamada a dichométodo).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 gustaPython, la enorme diferencia de diseño entre Python y Ruby/Perl puede que teconvenza o puede que no."6Caracterí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 green threads  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 generadoresRuby actualmente no tiene soporte completo de Unicode,7 a pesar de tenersoporte parcial para UTF-8.
    • InteracciónLa distribución oficial de Ruby incluye "irb"(Interactive Ruby Shell), un interpreteinteractivo de línea de comandos que puede ser usado para probar código demanera rápida. El siguiente fragmento de código representa una muestra de unasesión usando irb:$ irbirb(main):001:0> puts "Hola mundo"Hola mundo=> nilirb(main):002:0> 1+2=> 3SintaxisLa sintaxis de Ruby es similar a la de Perl o Python. La definición de clases ymétodos está definida por palabras clave. Sin embargo, en Perl, las variables nollevan prefijos. Cuando se usa, un prefijo indica el ámbito de las variables. La mayordiferencia con C y Perl es que las palabras clave son usadas para definir bloques decódigo sin llaves. Los saltos de línea son significativos y son interpretados como elfinal de una sentencia; el punto y coma tiene el mismo uso. De forma diferente quePython, la indentación no es significativa.Una de las diferencias entre Ruby y Python y Perl es que Ruby mantiene todas susvariables de instancia privadas dentro de las clases y solo la expone a través demétodos de acceso (attr_writer, attr_reader, etc).A diferencia de los métodos "getter" y "setter" 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 parentesis, es trivialcambiar una variable de instancia en una función sin tocar una sola línea de códigoo refactorizar dicho código. Los descriptores de propiedades de Python sonsimilares pero tienen una desventaja en el proceso de desarrollo. Si uno comienzaen Python usando una instancia de variable expuesta públicamente y despuéscambia la implementación para usar una instancia de variable privada expuesta através de un descriptor de propiedades, el código interno de la clase necesitará serajustado para usar la variable privada en vez de la propiedad pública. Ruby eliminaestá 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 miembrosinternos de una clase desde fuera de esta; en lugar de esto se pasa un mensaje (seinvoca un método) a la clase y recibe una respuesta.LicenciaEl intérprete y las bibliotecas están licenciadas de forma dual (inseparable) bajo laslicencias libres y de código abierto GPL y Licencia pública Ruby.8
    • ACERCA DE RUBY:¿Te preguntas por qué Ruby es tan popular? Sus fanáticos lo tienen como unlenguaje hermoso y artístico. Y todavía así, dicen que es práctico y ameno. ¿Porqué?Los ideales del creador de RubyRuby es un lenguaje con un balance cuidado. Su creador, Yukihiro “matz”Matsumoto, mezcló partes de sus lenguajes favoritos (Perl, Smalltalk, Eiffel, Ada, yLisp) para formar un nuevo lenguaje que incorporara tanto la programaciónfuncional como la programación imperativa.A menudo ha manifestado que está “tratando de hacer que Ruby sea natural, nosimple”, de una forma que se asemeje a la vida real.Continuando sobre esto, agrega:Ruby es simple en apariencia, pero complejo por dentro, como el cuerpo humano 1.Acerca del crecimiento de RubyDesde su liberación pública en 1995, Ruby ha atraído devotos desarrolladores detodo el mundo. En el 2006, Ruby alcanzó reconocimiento masivo, formándosegrupos de usuarios activos en las ciudades más importantes del mundo y llenandolas capacidades de las conferencias relacionadas a Ruby.
    • Ruby-Talk, la lista de correo más importante sobre el lenguaje Ruby ha crecidohasta lograr un promedio de 200 mensajes por día.El índice TIOBE, que mide el crecimiento de los lenguajes de programación, ubica aRuby en la posición #13 del ranking mundial. Refiriéndose a su crecimiento,predicen, “Todo indica que Ruby llegará a estar entre los 10 primeros en menos de6 meses”. Gran parte de su crecimiento se atribuye a la popularidad alcanzada poraplicaciones desarrolladas con Ruby, en particular el framework de desarrollo webRuby on Rails2.Ruby es totalmente libre. No sólo gratis, sino también libre para usarlo, copiarlo,modificarlo y distribuirlo.Viendo todo como un objetoInicialmente, Matz buscó en otros lenguajes para encontrar la sintaxis ideal.Recordando su búsqueda, dijo, “quería un lenguaje que fuera más poderoso quePerl, y más orientado a objetos que Python3”.En Ruby, todo es un objeto. Se le puede asignar propiedades y acciones a todainformación y código. La programación orientada a objetos llama a las propiedadesvariables de instancia y las acciones son conocidas como métodos. La orientación aobjetos pura de Ruby se suele demostrar con un simple código que aplica unaacción a un número.5.times { print "Nos *encanta* Ruby -- ¡es fuera de serie!" }En muchos lenguajes, los números y otros tipos primitivos no son objetos. Rubysigue la influencia del lenguaje Smalltalk pudiendo poner métodos y variables deinstancia a todos sus tipos de datos. Esto facilita el uso de Ruby, porque las reglasque se aplican a los objetos son aplicables a todo Ruby.
    • La flexibilidad de RubyRuby es considerado un lenguaje flexible, ya que permite a sus usuarios alterarlolibremente. Las partes esenciales de Ruby pueden ser quitadas o redefinidas aplacer. Se puede agregar funcionalidad a partes ya existentes. Ruby intenta norestringir al desarrollador.Por ejemplo, la suma se realiza con el operador suma (+). Pero si prefieres usar lapalabra sumar, puedes agregar un método llamado sumar a la clase Numeric queviene incorporada.class Numeric def sumar(x) self.+(x) endendy = 5.sumar 6# ahora y vale 11Los operadores de Ruby son simples conveniencias sintácticas para los métodos.Los puedes redefinir como y cuando quieras.Los Bloques, una funcionalidad realmente expresivaLos bloques de Ruby son también vistos como una fuente de gran flexibilidad. Eldesarrollador puede anexar una cláusula a cualquier método, describiendo cómodebe actuar. La cláusula es llamada bloque y se ha convertido en una de las másfamosas funcionalidades para los recién llegados a Ruby que vienen de otroslenguajes imperativos como PHP o Visual Basic.Los bloques están inspirados por los lenguajes funcionales. Matz dijo, “en lascláusulas de Ruby, quise respetar la cultura de Lisp4”.motores_de_busqueda = %w[Google Yahoo MSN].map do |motor| "http://www." + motor.downcase + ".com" endEn este código, el bloque está descrito entre la construcción do ... end. El métodomap aplica el bloque a la lista de palabras provista. Muchos otros métodos en Ruby
    • dejan abierta la posibilidad al desarrollador para que escriba su propio bloquedescribiendo los detalles de qué debe hacer ese método.Ruby y el MixinA diferencia de otros lenguajes de programación orientada a objetos, Ruby secaracteriza por su intencional herencia simple. Sin embargo, Ruby incorpora elconcepto de módulos (llamados categorías en Objective-C), que son colecciones demétodos.Las clases pueden mezclar (mixin) un módulo e incorporar todos sus métodosgratuitamente. Por ejemplo, cualquier clase que implemente el método eachpuede incorporar el módulo Enumerable, que le agrega un conjunto de métodosque usan each para recorrer sus elementos.class MiArray include EnumerableendEn general, los Rubyistas ven esto como una forma mucho más clara de herenciamúltiple, que es compleja e incluso puede ser restrictiva.La apariencia visual de RubyA pesar de que Ruby utiliza la puntuación muy limitadamente y se prefieren laspalabras clave en inglés, se utiliza algo de puntuación para decorar el código. Rubyno necesita declaraciones de variables. Se utilizan convenciones simples paranombrar y determinar el alcance de las mismas.  var puede ser una variable local.  @var es una variable de instancia.  $var es una variable global.Estos detalles mejoran la legibilidad permitiendo que el desarrollador identifiquefácilmente los roles de las variables. También se hace innecesario el uso delmolesto self. como prefijo de todos los miembros de instancia.Más allá de lo básicoRuby tiene un conjunto de otras funcionalidades entre las que se encuentran lassiguientes:
    •  manejo de excepciones, como Java y Python, para facilitar el manejo de errores. un verdadero mark-and-sweep garbage collector para todos los objetos de Ruby. No es necesario mantener contadores de referencias en bibliotecas externas. Como dice Matz, “Esto es mejor para tu salud”. escribir extenciones en C para Ruby es más fácil que hacer lo mismo para Perl o Python, con una API muy elegante para utilizar Ruby desde C. Esto incluye llamadas para embeber Ruby en otros programas, y así usarlo como lenguaje de scripting. También está disponible una interfaz SWIG. puede cargar bibliotecas de extensión dinámicamente si lo permite el sistema operativo. tiene manejo de hilos (threading) independiente del sistema operativo. De esta forma, tienes soporte multi-hilo en todas las plataformas en las que corre Ruby, sin importar si el sistema operativo lo soporta o no, ¡incluso en MS-DOS! Ruby es fácilmente portable: se desarrolla mayoritariamente en GNU/Linux, pero corre en varios tipos de UNIX, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, etc.