SlideShare una empresa de Scribd logo
Lenguaje de Programación
Ruby
Presentado por:
Alexander Echeverría
Adriana Medina
Felipe De León
Juana Guevara
Introducción
Los lenguajes de programación es la manera de que el
programador le diga al computador, las ordenes para que
la misma ejecute. Existen un sinfín de lenguajes de
programación con distintos paradigmas y en esta
presentación nos enfocaremos en Ruby, un lenguaje que
tiene una gran demanda actualmente.
¡Conociendo Ruby!
¿Qué es Ruby?
 Ruby es un lenguaje de programación interpretado, reflexivo y orientado a
objetos, creado por el programador japonés Yukihiro "Matz" Matsumoto.
 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.
 El nombre Ruby (Rubí en español) es una parodia aludiendo al lenguaje de
programación Perl, de la cual Ruby fue desarrollado.
Creador de Ruby
Yukihiro “Matz” Matsumoto
Sintaxis en el lenguaje Ruby
• La sintaxis de Ruby es similar a la de Perl y Python.
• La definición de clases y métodos está definida por palabras claves.
• Ruby mantiene todas sus variables de instancia privadas dentro de las
clases y solo la expone atreves de métodos de acceso (attr_writer,
attr_reader,etc) los métodos de acceso en Ruby pueden ser escritos
con una sola línea de código.
• Ruby impone algunas convenciones de sintaxis:
• Si un identificador comienza con una letra mayúscula, es una
constante.
• Si comienza con un símbolo de moneda ($), es una variable global.
• Si comienza con @ es una variable de instancia.
• Si comienza con @@ es una variable de clase.
Ejemplo de sintaxis
 Constantes: PDF_KEY, R2D2, PERSONA_VIAJE
Las constantes solo se pueden definir una vez. Estas deben ser
escritas en letras mayúsculas.
 Variables de objeto: @nombre, @maximo, @hora_comer
Las variables de objeto (o variables de instancia) solo pueden ser
leida/ escritas por el propio objeto.
 Variables de clase: objeto, llave_maestra
Las variables de clase no pertenecen a los objetos, si no a la
clase. Existen únicamente en la clase, y son compartidas por
todos los objetos.
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, nil,
etc.).
Este lenguaje 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).
Ruby ha sido descrito como un lenguaje de programación multiparadigma:
permite programación procedural, con orientada a objetos o funcionalmente. Además
de soporte para hilos de ejecución gestionados por el intérprete.
Este lenguaje tiene tipado dinámico y soporta polimorfismo de tipos (permite tratar a
subclases utilizando la interfaz de la clase padre). No requiere polimorfismo de
funciones al no ser fuertemente tipado.
Sistema de tipos y semánticas de RUBY:
Ejemplo de semántica:
Irb(main):002:0>puts“hola
mundo”
Hola mundo
=>nil
 Puts es el comando básico para
escribir algo en Ruby.
 =>Nil? Es el resultado de la
expresión.
Puts siempre retorna nil, que
es el valor que significa
“absolutamente nada” en
Ruby.
 Sistema de tipos:
• Orientada a objetos
• Cuatro niveles de ámbito de variable:
global, clase, instancia y local
• Manejo de excepciones
• Altamente por table
• Amplia librería estándar
• Soporta alteración de objetos en
tiempo de ejecución
El uso de memoria de Ruby tampoco está del todo optimizado ya
que su garbage collector no es para nada perfecto. Por lo que
tenemos un costo adicional en memoria.
La versatilidad del lenguaje el cual permite ser implementado
usando la máquina virtual de otros lenguajes como la máquina
virtual de java en jruby
Gestión de memoria en Ruby
Una excepción es un tipo especial de objeto de la clase
excepción. Lanzar una excepción significa parar la ejecución
de un programa para salir del mismo o para tratar con el
problema que se ha producido. Para tratar el problema hace
falta raise; de no ser así el programa termina y avisa del error.
Lo que hará raise (lanzar), será lanzar una “excepción” para
manejar el error.
Manipulación de excepciones en Ruby
Ejemplo de excepciones en Ruby
Paradigmas de Ruby
 Ruby ha sido descrito como un lenguaje de programación multiparadigma: permite programación
procedural (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 o closures, y continuations; todas las sentencias tiene valores, y las
funciones devuelven la última evaluación).
 Soporta introspección, reflexión y meta programació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 al no ser fuertemente tipado (los parámetros pasados a un método
pueden ser de distinta clase en cada llamada a dicho método).
Paradigmas del Lenguaje Ruby
• Reflexivo
• Es una característica de algunos lenguajes para determinar y modificar su comportamiento.
Ruby no posee la capacidad de controlar estos objetos pero si puede controlar estructuras y
bloques.
Es lenguaje de programación de alto nivel o procedimental.
Es capaz de expresar el algoritmo de una manera correcta a la capacidad cognitiva humana.
Puede tratar con variables, objetivos, expresiones booleanas
Paradigmas del Lenguaje Ruby
Reflexividad en Ruby
• Programación Imperativa
Son un conjunto de instrucciones que le indican al computador cómo realizar una tarea.
Esto quiere decir que se describen sentencias que modifican el estado de un programa.
• Programación Orientada a Objetos
Es la utilización de funciones aritméticas que no maneja datos mutables o de estado.
• Paradigma de Programación Funcional
Los lenguajes de programación funcional han sido enfatizados en el ambiente académico
principalmente y no tanto en el desarrollo de software comercial. También es utilizada en la
industria a través de lenguajes de dominio específico como R (estadística), Mathematica
(matemáticas simbólicas), J y K (análisis financiero).
Paradigmas del Lenguaje Ruby
Dominio del lenguaje Ruby
Dominio del lenguaje Ruby
Programación Web
• Aplicaciones como Twitter, GitHub, sistemas de i-cloud lo incluyen en su catálogo como
Amazon EC2 o Rackspace.
• Ruby se utiliza también para administración de Sistemas. La herramienta Puppet o Chef sirve
para automatizar tareas administrativas en una red de ordenadores.
• La plataforma de Ruby se trabaja para realizar desarrollos web. Podemos definirlo como un
framework de software libre.
(Por framework entendemos un entorno o conjunto de programas o herramientas agrupadas.
Por software libre entendemos software que cualquier usuario puede ejecutar, copiar,
modificar, distribuir, cambiar o mejorar. )
• Ruby on Rails fue la inspiración para desarrolladores en otros lenguajes como Java, Groovy,
PHP, etc. para crear marcos de desarrollo parecidos o modelados bajo las ideas de Ruby on
Rails.
Dominio de lenguaje Ruby
 Soporte de Servidores
Para desarrollo y pruebas, se utiliza Mongrel o
WEBrick, incluido con Ruby. Para utilizar Rails en
servidores en producción se está extendiendo el uso
de Passenger, una suerte de mod_rails para Apache
desarrollado en 2008 por la empresa holandesa
Phusion. Otras opciones para producción son Nginx,
Mongrel, Apache, Lighttpd con FastCGI o alguna
combinación de ambos(por ejemplo utilizando
Apache como proxy para los procesos Mongrel).
Sobre Apache, mod ruby puede mejorar
considerablemente el rendimiento, aunque su uso no
se recomienda porque no es seguro utilizar múltiples
aplicaciones RoR sobre Apache.
Dominio de lenguaje Ruby
 Soporte de Base de Datos
 Dada que la arquitectura Rails favorece el uso de bases de datos se recomienda usar un SGBDR
para almacenamiento de datos. Rails soporta la biblioteca SQLite por defecto. El acceso a la
base de datos es totalmente abstracto desde el punto de vista del programador, es decir que
es agnóstico a la base de datos, y Rails gestiona los accesos a la base de datos
automáticamente (aunque, si se necesita, se pueden hacer consultas directas en SQL) Rails
intenta mantener la neutralidad con respecto a la base de datos, la portatibilidad de la
aplicación a diferentes sistemas de base de datos y la reutilización de bases de datos
preexistentes. Sin embargo, debido a la diferente naturaleza y prestaciones de los SGBDRs el
framework no puede garantizar la compatibilidad completa. Se soportan diferentes SGBDRs,
incluyendo MySQL, PostgreSQL, SQLite, IBM DB2 y Oracle.
Restricciones de Arquitectura de Ruby
Restricciones de Arquitectura de Ruby
 Ruby y su framework Ruby on Rails (RoR) están desarrollados para tener portabilidad en
distintos sistemas operativos.
 A diferencia de otros lenguajes de programación, como Java, Visual Basic e incluso C, Ruby
no requiere tantos requisitos para poder ser ejecutado.
 Ruby al ser un lenguaje interpretado, no necesita compiladores para programar en este
lenguaje, no obstante para codificar se necesita un editor de texto y su intérprete para
crear programas. Sin embargo, existen algunos compiladores que se han desarrollado para
facilitar la programación en este lenguaje de programación
¿Qué necesito para programar en Ruby?
 Es compatible en su mayoría en sistemas GNU/Linux y también corre en sistemas
Unix como Mac OS X, Windows (32 y 64 bits), BeOS, OS/2.
 Tener instalado Interactive Ruby, que es el intérprete del lenguaje.
 En Windows, descargar el instalador de Interactive Ruby desde la pagina oficial de
Ruby https://www.ruby-lang.org/es/documentation/installation/
 Si usas Mac OS X, Ruby 2.0.0 ya viene instalado en OS X Yosemite y Mavericks. OS X
Mountain Lion, Lion, y Snow Leopard vienen con Ruby 1.8.7 instalado.
 Para las distribuciones Linux, se descarga Ruby desde el gestor de paquetes (apt,
yum, etc.)
 Tener instalado cualquier editor de texto para crear archivos extensión .rb (notepad
++, sublime text).
Programas necesarios para programar en
Ruby
Interactive Ruby, intérprete de Ruby Editor de texto
Restricciones contextuales
Restricciones contextuales
 Igual que Python, Perl, PHP, etc. Ruby es un lenguaje interpretado. Este tipo de lenguajes
de programación, no requieren un código a ser compilado, ya que consisten en scripts que
son interpretados en tiempo real por un intérprete, lo cual permite maximizar la eficiencia
de los programas, en la mayoría de los casos.
 Por lo general, los lenguajes interpretados son de alto nivel y están orientados a objetos y
eventos, lo que facilita la programación web y la programación cliente/servidor, por lo cual,
actualmente son lenguajes con mucho auge en el ámbito informático.
Proceso de ejecución de un programa en
Ruby
Cuando un programa es interpretado, el proceso que se
sigue es el siguiente:
 El intérprete (Interactive Ruby) obtiene una
instrucción del fichero fuente y la realiza
inmediatamente. Para ello, ejecuta en secuencia
varias de esas porciones de código máquina que
comentábamos antes, y que residen en el interior
del intérprete.
 Cuando la CPU termina la ejecución de esa
secuencia, el resultado es que la CPU habrá hecho
lo que la línea de código fuente expresaba.
 Repitiendo esta secuencia para todas las líneas, el
intérprete realiza lo que los ficheros fuente
expresan... es decir, ejecuta el programa.
Diagrama de ejecución en Ruby
Código Fuente
Interactive Ruby
(Intérprete)
Traducción y
ejecución
Mensajes de error
Editar y corregir
Intérpretes y equipos virtuales en Ruby
¿Es Ruby un lenguaje flexible?
 Por supuesto que sí. Ruby es considerado un
lenguaje flexible, ya que permite a sus usuarios
alterarlo libremente. Las partes esenciales de
Ruby pueden ser quitadas o redefinidas a placer.
Se puede agregar funcionalidad a partes ya
existentes. Ruby intenta no restringir al
desarrollador.
 Por ejemplo, la suma se realiza con el operador
suma (+). Pero si prefieres usar la palabra sumar,
puedes agregar un método llamado sumar a la
clase Numeric que viene incorporada.
¿Ruby es portable?
 El hecho de que estos lenguajes se ejecuten directamente en un intérprete o
mediante una máquina virtual hace que sean completamente portables. Si existe un
intérprete o una máquina virtual para una arquitectura y un sistema operativo (SO)
específico, entonces el programa puede correr en dicha combinación de arquitectura
y SO.
 La portabilidad de Ruby lo hace muy atractivo a los desarrolladores, que pueden
programar aplicaciones sin preocuparse del SO en el que se va a ejecutar.
 Esto difiere con la poca portabilidad de otros lenguajes como C, donde la
compilación del programa para una arquitectura diferente de aquella para la que se
diseñó puede obligar a cambiar librerías y parte del código fuente original.
Normalizaciones generales
Normalización del lenguaje Ruby
 Cuando un lenguaje de programación recibe suficiente atención y uso entre
los programadores, suele comenzar el proceso de normalización.
 Las organizaciones más importantes que supervisan y mantienen las
normalizaciones de los lenguajes de programación son el Instituto de
Normalización Nacional Americano (ANSI) y la Organización Internacional de
Normalización (ISO).
 Se ha revisado el estado en el que se encuentra la normalización del lenguaje
Ruby que ya es una norma nacional en Japón y que previsiblemente se
convertirá pronto en una norma internacional.
 En Japón, IPA (Information-Technology Promotion Agency) mantiene la
normalización del estándar sobre el lenguaje Ruby
Sistemas heredados
Sistemas heredados
 Ruby es un lenguaje de programación muy reciente, data del año 1995 y para su
desarrollo, este lenguaje tuvo origen a partir de otros lenguajes ejemplo: Perl, SmallTalk,
Python, Lisp, Eiffel, Scheme, Ada, Dylan, CLU.
 La sintaxis de Ruby, proviene totalmente de Python y Perl; su paradigma orientado a
objetos la hereda de Smalltalk, y comparte su funcionalidad con otros lenguajes como
Lisp, Lua, Dylan, CLU.
 Ruby ha influido en el desarrollo de nuevos lenguajes de programación entre ellos
podemos mencionar: D, Groovy, Falcon y Swift.
Lenguajes derivados de Ruby
 D: Lenguaje de programación de uso general desarrollado por Walter Bright cuya primera
versión apareció en 1999. Se origina como un rediseño de C++, con un enfoque más
pragmático, pero no es un lenguaje puramente derivado del anterior. D ha mantenido
algunas características de C++ y también está influido por otros conceptos de otros
lenguajes como Java, C# y Eiffel. Una versión estable fue lanzada el 2 de enero de 2007.
 Groovy: Lenguaje de programación orientado a objetos implementado sobre la
plataforma Java. Tiene características similares a Python, Ruby, Perl y Smalltalk. Groovy
usa una sintaxis muy parecida a Java, comparte el mismo modelo de objetos, de hilos y
de seguridad. Desde Groovy se puede acceder directamente a todas las API existentes en
Java.
Lenguajes derivados de Ruby
 Falcon: Lenguaje de programación interpretado de código abierto multiparadigma
diseñado por Giancarlo Niccolai. Se basa en una máquina virtual de propiedad y está
disponible para las plataformas Microsoft Windows, GNU/Linux, Mac, Solaris y en el
futuro BSD. Se propone como una herramienta para crear aplicaciones completas y
aplicaciones web en relación con apache2.
 Swift: Lenguaje de programación multiparadigma creado por Apple enfocado en el
desarrollo de aplicaciones para iOS y Mac OS X. Fue presentado en WWDC 2014 y está
diseñado para integrarse con los Frameworks Cocoa y Cocoa Touch, puede usar cualquier
biblioteca programada en Objective-C y llamar a funciones de C. También es posible
desarrollar código en Swift compatible con Objective-C bajo ciertas condiciones
Árbol genealógico de los lenguajes de
programación
Cualidades de un lenguaje de
programación
Simplicidad y Claridad
¿Es fácil
para un
programador
, escribir en
este
lenguaje?
Si un programador anteriormente ha codificado
en Python, Perl u otro lenguaje interpretado, Ruby
le resultará fácil debido a que mezcla la sintaxis y
características de los lenguajes antes
mencionados. Además Ruby ofrece una sintaxis sin
tantos caracteres, haciendo que la lectura,
codificación y depuración sea más ameno para el
desarrollador. Esto cumpliría el eslogan de
Ruby…”El mejor amigo de un desarrollador”
¿Es fácil para un programador, escribir
en este lenguaje?
Factorial en Perl Factorial en Ruby
Si vemos ambos programas, podemos notar que Ruby conservar métodos y palabras
reservadas de los lenguajes en el cual está basado.
¿Hasta que punto es inteligible este lenguaje
para un lector medio?
Matz, el creador de Ruby dijo que este lenguaje sigue el principio de la menor sorpresa.
Esto significa que el lenguaje debe comportarse de tal manera que minimice la
confusión de los usuarios experimentados.
Ruby tiene la particularidad de no utilizar un lenguaje oscuro en sus funciones, y los
nombres de las funciones de este lenguaje, proviene del inglés, facilitando
grandemente al programador. Además en Ruby, los puntos y comas (;), corchetes ({})
prácticamente no existen.
Como Ruby proviene de Python, Ada, Perl, Smalltalk, etc. Muchos de sus métodos
heredados tienen la misma funcionalidad, provocando una mayor familiarización y que
el lenguaje sea legible para cualquier lector.
¿Hasta que punto es inteligible este lenguaje
para un lector medio?
Calculadora en Java Calculadora en Ruby
En estos programas, se aprecia una ausencia de puntos comas en el código de Ruby y
muchos de los métodos utilizados fueron heredados de Perl, y Python, a diferencia del
código en Java, que si utiliza llaves, corchetes y puntos comas.
¿Es fácil aprender y enseñar el lenguaje?
Al igual que cualquier otro lenguaje, Ruby resultará fácil de aprender o enseñar, siempre
y cuando se entienda la lógica de lo que se desea programar. Si entiendes Perl o Python;
Ruby le resultará muy fácil, no sólo por las palabras de heredadas de estos lenguajes,
sino por la sencillez que Ruby muestra en su sintaxis. Matz citó “Ruby es simple en
apariencia, pero complejo por dentro, como el cuerpo humano”. Esta frase hace
referencia a la apariencia sintáctica de Ruby, ya que esto puede ser de gran ayuda para
personas que están aprendiendo a programar y también es excelente para enseñar a
programar. Ruby no tendrá tantos caracteres como Java, C++ o C#, pero es un lenguaje
muy potente que puede hacer todo tipo de tareas.
¿Es fácil aprender y enseñar el lenguaje?
Aquí tenemos el famosísimo Hola Mundo en Ruby y en C#. Viendo la sintaxis de ambos
lenguajes se demuestra que Ruby es un excelente lenguaje para aprender y para enseñar a
programar.
 "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."
 Yukihiro “Matz” Matsumoto, creador de Ruby
Uniones
Concatenaciones y uniones
 Concatenar significa unir 2 cadenas, en el caso de programación pueden unirse
enteros o reales a un cadena, incluso objetos complejos que pueden representarse en
una cadena pueden concatenarse. El manejo de las cadenas en Ruby es más
inteligente e intuitivo que en C. Por ejemplo, se pueden concatenar cadenas con
+(como en la imagen anterior) y se puede repetir una cadena varias veces con *,
ejemplo
Concatenaciones y uniones
 En Ruby también podemos unir cadenas con el operador #{}. Al igual que +, este
operador incluye una variable dentro de la cadena a encerrándola en el
operador.
Ortogonalidad
 La sintaxis de Ruby es muy ortogonal, lo que
ayuda a que la programación sea elegante y
divertida.
 Su framework Ruby on Rails se esfuerza por
mantener la ortogonalidad entre cada capa
de la aplicación, de esta forma reduce el
acople entre elementos y a su vez disminuye
el tiempo y esfuerzo de mantenimiento.
 La filosofía de Matz con su creación, Ruby,
prefiere armonía en el rendimiento de su
lenguaje, en lugar de ortogonalidad.
Fiabilidad de programas
 En Ruby, el lenguaje de
programación se comporta de
manera igual cada vez que se
ejecuta un programa su ejecución
en las plataformas se mantiene
fiable.
 Es decir, si ejecutamos un
programa de Ruby en Windows, se
ejecutará igual en Linux, en Mac
OS X. Esto se debe a la portabilidad
del lenguaje, debido a que no
necesita librerías específicas para
ejecutar, igual que Python, Perl,
etc.
Aplicabilidad
¿El lenguaje proporciona un soporte
adecuado para las aplicaciones del dominio
en el que lo estamos utilizando
 Ruby y su framework Ruby on Rails
(RoR), están centrados en la
programación web. Este lenguaje
proporciona el soporte de los
servidores web de páginas web
entre ellos Twitter, GitHub,
SoundCloud,Twitch etc.
 También da soporte a base de
datos (BD). Muchas bancos y
empresas en Panamá, utilizan RoR
por su flexibilidad entre
plataformas y potencia.
Abstracción
Una abstracción en Ruby es la agrupación de conjunto de elementos (datos y
procedimientos) que se le da un nombre.
Existen abstracciones propias de la computación, que se utilizan en múltiples
dominios. Por ejemplo abstracciones de datos como listas, árboles, grafos, tablas
hash.
Ejemplo de hashes:
h={‘perro’=>’canino’,’gato’=>’felino’,’burro’=>’asno’,12=>’docena’}
puts h.length #4
puts h[‘perro’]#’canino’
puts h
Puts h[12]
Implementación
 ¿Nos permite las construcciones y las características de
un lenguaje su implementación práctica y eficiente en
las plataformas coetáneas?
 La arquitectura de Ruby fue desarrollada pensando en la productividad y la
diversión del desarrollador, siguiendo los principios de una buena interfaz de
usuario. Sostiene que el diseño de sistemas necesita enfatizar las necesidades
humanas más que las de la máquina. No importa que equipo informático uses
o que sistema operativo tengas instalado, la implementación de Ruby no
cambiará en nada, al contrario de otros lenguajes como C# o Java que para
poder se ejecutado, necesita librerías orientadas a ese SO. Ruby por decir,
ese un sistema universalmente portable.
Infografía
http://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=73:ruby-on-rails-
plataforma-de-software-libre-para-desarrollos-web-bajo-mvc&catid=46:lenguajes-y-entornos&Itemid=163
http://jdgarcia-vision.blogspot.com/2011/09/noticias-desde-la-normalizacion-de.html
http://www.alvaroreig.com/arquitectura-marco-para-proyectos-ruby-rails/
https://es.wikipedia.org/wiki/Ruby_on_Rails
http://librosweb.es/tutorial/las-novedades-de-ruby-on-rails-42/
http://www.railsenespanol.co/capitulos/capitulo1
http://www.tufuncion.com/programacion-lenguaje-ruby
http://latecladeescape.com/h/2015/09/compiladores-interpretes-y-maquinas-virtuales
https://www.ruby-lang.org/es/about/
http://rafinguer.blogspot.com/2014/04/clases-y-objetos-en-ruby-i.html

Más contenido relacionado

La actualidad más candente

Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
INSTITUTO TECNOLOGICO SUPERIOR DE LERDO
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
Rennytox Hernandez
 
Tipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relacionesTipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relaciones
basilioj
 
Lenguaje de programacion ruby
Lenguaje de programacion rubyLenguaje de programacion ruby
Lenguaje de programacion ruby
Sonia Mamani Quispe
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
Borreguito Inolvidable
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Hugo Alberto Rivera Diaz
 
Rational rose
Rational roseRational rose
Rational rose
Israel Chava Gonzales
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
Alvaro Enrique Ruano
 
Vistas
VistasVistas
Cuadro comparativo. sgbd
Cuadro comparativo. sgbdCuadro comparativo. sgbd
Cuadro comparativo. sgbd
Moi And-gon
 
Estructura Básica de PHP
Estructura Básica de PHPEstructura Básica de PHP
Estructura Básica de PHP
Marysabel Morillo Ararat
 
Lenguaje de programación MySQL
Lenguaje de programación MySQLLenguaje de programación MySQL
Lenguaje de programación MySQL
Alfredito Aguayo
 
Modelo Entidad Relacion E-R
Modelo Entidad Relacion E-RModelo Entidad Relacion E-R
Modelo Entidad Relacion E-R
Robert Rodriguez
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
Maria Garcia
 
Infografia xp Pequeñas versiones incrementales
Infografia xp Pequeñas versiones incrementalesInfografia xp Pequeñas versiones incrementales
Infografia xp Pequeñas versiones incrementales
María Álvarez Malo
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
Anel Sosa
 
Modelo de computacion distribuida
Modelo de computacion distribuidaModelo de computacion distribuida
Modelo de computacion distribuida
Fabian Ortiz
 
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrolloFundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
José Antonio Sandoval Acosta
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
Jesus Cuellar Sanchez
 
Paradigmas de la programación
Paradigmas de la programación Paradigmas de la programación
Paradigmas de la programación
Daniel Gomez Jaramillo
 

La actualidad más candente (20)

Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
 
Expresiones regulares
Expresiones regularesExpresiones regulares
Expresiones regulares
 
Tipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relacionesTipos de atributos y tipos de relaciones
Tipos de atributos y tipos de relaciones
 
Lenguaje de programacion ruby
Lenguaje de programacion rubyLenguaje de programacion ruby
Lenguaje de programacion ruby
 
Investigacion errores lexicos
Investigacion errores lexicosInvestigacion errores lexicos
Investigacion errores lexicos
 
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...Conceptos Unidad 1 Lenguajes Automatas Introducción  a  la Teoría de Lenguaje...
Conceptos Unidad 1 Lenguajes Automatas Introducción a la Teoría de Lenguaje...
 
Rational rose
Rational roseRational rose
Rational rose
 
Programación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismoProgramación Orientada a Objetos - herencia y polimorfismo
Programación Orientada a Objetos - herencia y polimorfismo
 
Vistas
VistasVistas
Vistas
 
Cuadro comparativo. sgbd
Cuadro comparativo. sgbdCuadro comparativo. sgbd
Cuadro comparativo. sgbd
 
Estructura Básica de PHP
Estructura Básica de PHPEstructura Básica de PHP
Estructura Básica de PHP
 
Lenguaje de programación MySQL
Lenguaje de programación MySQLLenguaje de programación MySQL
Lenguaje de programación MySQL
 
Modelo Entidad Relacion E-R
Modelo Entidad Relacion E-RModelo Entidad Relacion E-R
Modelo Entidad Relacion E-R
 
Algebra relacional
Algebra relacionalAlgebra relacional
Algebra relacional
 
Infografia xp Pequeñas versiones incrementales
Infografia xp Pequeñas versiones incrementalesInfografia xp Pequeñas versiones incrementales
Infografia xp Pequeñas versiones incrementales
 
automatas finitos
 automatas finitos automatas finitos
automatas finitos
 
Modelo de computacion distribuida
Modelo de computacion distribuidaModelo de computacion distribuida
Modelo de computacion distribuida
 
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrolloFundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
Fundamentos de ingenieria de Sosftware - Unidad 2 metodologias de desarrollo
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Paradigmas de la programación
Paradigmas de la programación Paradigmas de la programación
Paradigmas de la programación
 

Destacado

Lenguaje phython
Lenguaje phythonLenguaje phython
Java script
Java scriptJava script
Java script
Carlos Solano
 
Sistema locomotor expo trabajo escritp
Sistema locomotor expo trabajo escritpSistema locomotor expo trabajo escritp
Sistema locomotor expo trabajo escritp
Almadalista
 
Antracnosis y Lasiodiplodia en Mango
Antracnosis y Lasiodiplodia en MangoAntracnosis y Lasiodiplodia en Mango
Antracnosis y Lasiodiplodia en Mango
ANGEL GAMARRA
 
Certificat de soudage SN EN 287-1 Martins
Certificat de soudage SN EN 287-1 MartinsCertificat de soudage SN EN 287-1 Martins
Certificat de soudage SN EN 287-1 Martins
Miro Martins
 
Presentación1
Presentación1Presentación1
Presentación1
andtrsrrs1212
 
TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++
Idalia Tristan
 
Todo sobre C#
Todo sobre C#Todo sobre C#
Todo sobre C#
Ale_Hernandez
 
Lenguaje de Programación PHP
Lenguaje de Programación PHPLenguaje de Programación PHP
Lenguaje de Programación PHP
Jomicast
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
Salvador Fernández Fernández
 

Destacado (10)

Lenguaje phython
Lenguaje phythonLenguaje phython
Lenguaje phython
 
Java script
Java scriptJava script
Java script
 
Sistema locomotor expo trabajo escritp
Sistema locomotor expo trabajo escritpSistema locomotor expo trabajo escritp
Sistema locomotor expo trabajo escritp
 
Antracnosis y Lasiodiplodia en Mango
Antracnosis y Lasiodiplodia en MangoAntracnosis y Lasiodiplodia en Mango
Antracnosis y Lasiodiplodia en Mango
 
Certificat de soudage SN EN 287-1 Martins
Certificat de soudage SN EN 287-1 MartinsCertificat de soudage SN EN 287-1 Martins
Certificat de soudage SN EN 287-1 Martins
 
Presentación1
Presentación1Presentación1
Presentación1
 
TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++TIPOS DE DATOS PARA C++
TIPOS DE DATOS PARA C++
 
Todo sobre C#
Todo sobre C#Todo sobre C#
Todo sobre C#
 
Lenguaje de Programación PHP
Lenguaje de Programación PHPLenguaje de Programación PHP
Lenguaje de Programación PHP
 
Java orientado a objetos
Java orientado a objetosJava orientado a objetos
Java orientado a objetos
 

Similar a Lenguaje de Programación Ruby

Presentaciones ruby
Presentaciones rubyPresentaciones ruby
Presentaciones ruby
Pedro1808
 
Upel ruby
Upel rubyUpel ruby
Upel ruby
Omar Landaeta
 
Ruby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretadoRuby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretado
Yulgrecia2011
 
Acerca de ruby
Acerca de rubyAcerca de ruby
Acerca de ruby
Carlosweb2011
 
Lenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetosLenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetos
RicardoAlbertoSalmor
 
Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con RubyTaller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
TestingUy
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
Rafael Franco
 
Compiladores
CompiladoresCompiladores
Compiladores
CompiladoresCompiladores
Compiladores
LuisMolina269
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
vilna2011
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
vilna2011
 
Tabla
TablaTabla
Tabla
TablaTabla
Principales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacionPrincipales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacion
Marco Muñoz
 
Lenguajes de programacion1
Lenguajes de programacion1Lenguajes de programacion1
Lenguajes de programacion1
DanielRosero23
 
Lenguajes de Programación
Lenguajes de ProgramaciónLenguajes de Programación
Lenguajes de Programación
GLORIABELEN3
 
Lenguaje ruby
Lenguaje rubyLenguaje ruby
Lenguaje ruby
OrlaNdo DíAz
 
Java vs. Ruby
Java vs. RubyJava vs. Ruby
Java vs. Ruby
Bryan Rojas
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACION
JorgeAndresRomeroSat
 
lenguaje de programación
lenguaje de programación lenguaje de programación
lenguaje de programación
DimasArgenisMorenoMu
 

Similar a Lenguaje de Programación Ruby (20)

Presentaciones ruby
Presentaciones rubyPresentaciones ruby
Presentaciones ruby
 
Upel ruby
Upel rubyUpel ruby
Upel ruby
 
Ruby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretadoRuby es un lenguaje de programación interpretado
Ruby es un lenguaje de programación interpretado
 
Acerca de ruby
Acerca de rubyAcerca de ruby
Acerca de ruby
 
Lenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetosLenguajes de programacion orientada a objetos
Lenguajes de programacion orientada a objetos
 
Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con RubyTaller evento TestingUY 2016 - Automatización de Pruebas con Ruby
Taller evento TestingUY 2016 - Automatización de Pruebas con Ruby
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Compiladores
CompiladoresCompiladores
Compiladores
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
 
Ruby en linux
Ruby en linuxRuby en linux
Ruby en linux
 
Tabla
TablaTabla
Tabla
 
Tabla
TablaTabla
Tabla
 
Principales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacionPrincipales características de 10 lenguajes de programacion
Principales características de 10 lenguajes de programacion
 
Lenguajes de programacion1
Lenguajes de programacion1Lenguajes de programacion1
Lenguajes de programacion1
 
Lenguajes de Programación
Lenguajes de ProgramaciónLenguajes de Programación
Lenguajes de Programación
 
Lenguaje ruby
Lenguaje rubyLenguaje ruby
Lenguaje ruby
 
Java vs. Ruby
Java vs. RubyJava vs. Ruby
Java vs. Ruby
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACION
 
lenguaje de programación
lenguaje de programación lenguaje de programación
lenguaje de programación
 

Lenguaje de Programación Ruby

  • 1. Lenguaje de Programación Ruby Presentado por: Alexander Echeverría Adriana Medina Felipe De León Juana Guevara
  • 2. Introducción Los lenguajes de programación es la manera de que el programador le diga al computador, las ordenes para que la misma ejecute. Existen un sinfín de lenguajes de programación con distintos paradigmas y en esta presentación nos enfocaremos en Ruby, un lenguaje que tiene una gran demanda actualmente.
  • 4. ¿Qué es Ruby?  Ruby es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el programador japonés Yukihiro "Matz" Matsumoto.  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.  El nombre Ruby (Rubí en español) es una parodia aludiendo al lenguaje de programación Perl, de la cual Ruby fue desarrollado.
  • 5. Creador de Ruby Yukihiro “Matz” Matsumoto
  • 6. Sintaxis en el lenguaje Ruby • La sintaxis de Ruby es similar a la de Perl y Python. • La definición de clases y métodos está definida por palabras claves. • Ruby mantiene todas sus variables de instancia privadas dentro de las clases y solo la expone atreves de métodos de acceso (attr_writer, attr_reader,etc) los métodos de acceso en Ruby pueden ser escritos con una sola línea de código. • Ruby impone algunas convenciones de sintaxis: • Si un identificador comienza con una letra mayúscula, es una constante. • Si comienza con un símbolo de moneda ($), es una variable global. • Si comienza con @ es una variable de instancia. • Si comienza con @@ es una variable de clase.
  • 7. Ejemplo de sintaxis  Constantes: PDF_KEY, R2D2, PERSONA_VIAJE Las constantes solo se pueden definir una vez. Estas deben ser escritas en letras mayúsculas.  Variables de objeto: @nombre, @maximo, @hora_comer Las variables de objeto (o variables de instancia) solo pueden ser leida/ escritas por el propio objeto.  Variables de clase: objeto, llave_maestra Las variables de clase no pertenecen a los objetos, si no a la clase. Existen únicamente en la clase, y son compartidas por todos los objetos.
  • 8. 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, nil, etc.). Este lenguaje 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). Ruby ha sido descrito como un lenguaje de programación multiparadigma: permite programación procedural, con orientada a objetos o funcionalmente. Además de soporte para hilos de ejecución gestionados por el intérprete. Este lenguaje tiene tipado dinámico y soporta polimorfismo de tipos (permite tratar a subclases utilizando la interfaz de la clase padre). No requiere polimorfismo de funciones al no ser fuertemente tipado. Sistema de tipos y semánticas de RUBY:
  • 9. Ejemplo de semántica: Irb(main):002:0>puts“hola mundo” Hola mundo =>nil  Puts es el comando básico para escribir algo en Ruby.  =>Nil? Es el resultado de la expresión. Puts siempre retorna nil, que es el valor que significa “absolutamente nada” en Ruby.  Sistema de tipos: • Orientada a objetos • Cuatro niveles de ámbito de variable: global, clase, instancia y local • Manejo de excepciones • Altamente por table • Amplia librería estándar • Soporta alteración de objetos en tiempo de ejecución
  • 10. El uso de memoria de Ruby tampoco está del todo optimizado ya que su garbage collector no es para nada perfecto. Por lo que tenemos un costo adicional en memoria. La versatilidad del lenguaje el cual permite ser implementado usando la máquina virtual de otros lenguajes como la máquina virtual de java en jruby Gestión de memoria en Ruby
  • 11. Una excepción es un tipo especial de objeto de la clase excepción. Lanzar una excepción significa parar la ejecución de un programa para salir del mismo o para tratar con el problema que se ha producido. Para tratar el problema hace falta raise; de no ser así el programa termina y avisa del error. Lo que hará raise (lanzar), será lanzar una “excepción” para manejar el error. Manipulación de excepciones en Ruby
  • 14.  Ruby ha sido descrito como un lenguaje de programación multiparadigma: permite programación procedural (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 o closures, y continuations; todas las sentencias tiene valores, y las funciones devuelven la última evaluación).  Soporta introspección, reflexión y meta programació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 al no ser fuertemente tipado (los parámetros pasados a un método pueden ser de distinta clase en cada llamada a dicho método). Paradigmas del Lenguaje Ruby
  • 15. • Reflexivo • Es una característica de algunos lenguajes para determinar y modificar su comportamiento. Ruby no posee la capacidad de controlar estos objetos pero si puede controlar estructuras y bloques. Es lenguaje de programación de alto nivel o procedimental. Es capaz de expresar el algoritmo de una manera correcta a la capacidad cognitiva humana. Puede tratar con variables, objetivos, expresiones booleanas Paradigmas del Lenguaje Ruby
  • 17. • Programación Imperativa Son un conjunto de instrucciones que le indican al computador cómo realizar una tarea. Esto quiere decir que se describen sentencias que modifican el estado de un programa. • Programación Orientada a Objetos Es la utilización de funciones aritméticas que no maneja datos mutables o de estado. • Paradigma de Programación Funcional Los lenguajes de programación funcional han sido enfatizados en el ambiente académico principalmente y no tanto en el desarrollo de software comercial. También es utilizada en la industria a través de lenguajes de dominio específico como R (estadística), Mathematica (matemáticas simbólicas), J y K (análisis financiero). Paradigmas del Lenguaje Ruby
  • 19. Dominio del lenguaje Ruby Programación Web • Aplicaciones como Twitter, GitHub, sistemas de i-cloud lo incluyen en su catálogo como Amazon EC2 o Rackspace. • Ruby se utiliza también para administración de Sistemas. La herramienta Puppet o Chef sirve para automatizar tareas administrativas en una red de ordenadores. • La plataforma de Ruby se trabaja para realizar desarrollos web. Podemos definirlo como un framework de software libre. (Por framework entendemos un entorno o conjunto de programas o herramientas agrupadas. Por software libre entendemos software que cualquier usuario puede ejecutar, copiar, modificar, distribuir, cambiar o mejorar. ) • Ruby on Rails fue la inspiración para desarrolladores en otros lenguajes como Java, Groovy, PHP, etc. para crear marcos de desarrollo parecidos o modelados bajo las ideas de Ruby on Rails.
  • 20. Dominio de lenguaje Ruby  Soporte de Servidores Para desarrollo y pruebas, se utiliza Mongrel o WEBrick, incluido con Ruby. Para utilizar Rails en servidores en producción se está extendiendo el uso de Passenger, una suerte de mod_rails para Apache desarrollado en 2008 por la empresa holandesa Phusion. Otras opciones para producción son Nginx, Mongrel, Apache, Lighttpd con FastCGI o alguna combinación de ambos(por ejemplo utilizando Apache como proxy para los procesos Mongrel). Sobre Apache, mod ruby puede mejorar considerablemente el rendimiento, aunque su uso no se recomienda porque no es seguro utilizar múltiples aplicaciones RoR sobre Apache.
  • 21. Dominio de lenguaje Ruby  Soporte de Base de Datos  Dada que la arquitectura Rails favorece el uso de bases de datos se recomienda usar un SGBDR para almacenamiento de datos. Rails soporta la biblioteca SQLite por defecto. El acceso a la base de datos es totalmente abstracto desde el punto de vista del programador, es decir que es agnóstico a la base de datos, y Rails gestiona los accesos a la base de datos automáticamente (aunque, si se necesita, se pueden hacer consultas directas en SQL) Rails intenta mantener la neutralidad con respecto a la base de datos, la portatibilidad de la aplicación a diferentes sistemas de base de datos y la reutilización de bases de datos preexistentes. Sin embargo, debido a la diferente naturaleza y prestaciones de los SGBDRs el framework no puede garantizar la compatibilidad completa. Se soportan diferentes SGBDRs, incluyendo MySQL, PostgreSQL, SQLite, IBM DB2 y Oracle.
  • 23. Restricciones de Arquitectura de Ruby  Ruby y su framework Ruby on Rails (RoR) están desarrollados para tener portabilidad en distintos sistemas operativos.  A diferencia de otros lenguajes de programación, como Java, Visual Basic e incluso C, Ruby no requiere tantos requisitos para poder ser ejecutado.  Ruby al ser un lenguaje interpretado, no necesita compiladores para programar en este lenguaje, no obstante para codificar se necesita un editor de texto y su intérprete para crear programas. Sin embargo, existen algunos compiladores que se han desarrollado para facilitar la programación en este lenguaje de programación
  • 24. ¿Qué necesito para programar en Ruby?  Es compatible en su mayoría en sistemas GNU/Linux y también corre en sistemas Unix como Mac OS X, Windows (32 y 64 bits), BeOS, OS/2.  Tener instalado Interactive Ruby, que es el intérprete del lenguaje.  En Windows, descargar el instalador de Interactive Ruby desde la pagina oficial de Ruby https://www.ruby-lang.org/es/documentation/installation/  Si usas Mac OS X, Ruby 2.0.0 ya viene instalado en OS X Yosemite y Mavericks. OS X Mountain Lion, Lion, y Snow Leopard vienen con Ruby 1.8.7 instalado.  Para las distribuciones Linux, se descarga Ruby desde el gestor de paquetes (apt, yum, etc.)  Tener instalado cualquier editor de texto para crear archivos extensión .rb (notepad ++, sublime text).
  • 25. Programas necesarios para programar en Ruby Interactive Ruby, intérprete de Ruby Editor de texto
  • 27. Restricciones contextuales  Igual que Python, Perl, PHP, etc. Ruby es un lenguaje interpretado. Este tipo de lenguajes de programación, no requieren un código a ser compilado, ya que consisten en scripts que son interpretados en tiempo real por un intérprete, lo cual permite maximizar la eficiencia de los programas, en la mayoría de los casos.  Por lo general, los lenguajes interpretados son de alto nivel y están orientados a objetos y eventos, lo que facilita la programación web y la programación cliente/servidor, por lo cual, actualmente son lenguajes con mucho auge en el ámbito informático.
  • 28. Proceso de ejecución de un programa en Ruby Cuando un programa es interpretado, el proceso que se sigue es el siguiente:  El intérprete (Interactive Ruby) obtiene una instrucción del fichero fuente y la realiza inmediatamente. Para ello, ejecuta en secuencia varias de esas porciones de código máquina que comentábamos antes, y que residen en el interior del intérprete.  Cuando la CPU termina la ejecución de esa secuencia, el resultado es que la CPU habrá hecho lo que la línea de código fuente expresaba.  Repitiendo esta secuencia para todas las líneas, el intérprete realiza lo que los ficheros fuente expresan... es decir, ejecuta el programa.
  • 29. Diagrama de ejecución en Ruby Código Fuente Interactive Ruby (Intérprete) Traducción y ejecución Mensajes de error Editar y corregir
  • 30. Intérpretes y equipos virtuales en Ruby
  • 31. ¿Es Ruby un lenguaje flexible?  Por supuesto que sí. Ruby es considerado un lenguaje flexible, ya que permite a sus usuarios alterarlo libremente. Las partes esenciales de Ruby pueden ser quitadas o redefinidas a placer. Se puede agregar funcionalidad a partes ya existentes. Ruby intenta no restringir al desarrollador.  Por ejemplo, la suma se realiza con el operador suma (+). Pero si prefieres usar la palabra sumar, puedes agregar un método llamado sumar a la clase Numeric que viene incorporada.
  • 32. ¿Ruby es portable?  El hecho de que estos lenguajes se ejecuten directamente en un intérprete o mediante una máquina virtual hace que sean completamente portables. Si existe un intérprete o una máquina virtual para una arquitectura y un sistema operativo (SO) específico, entonces el programa puede correr en dicha combinación de arquitectura y SO.  La portabilidad de Ruby lo hace muy atractivo a los desarrolladores, que pueden programar aplicaciones sin preocuparse del SO en el que se va a ejecutar.  Esto difiere con la poca portabilidad de otros lenguajes como C, donde la compilación del programa para una arquitectura diferente de aquella para la que se diseñó puede obligar a cambiar librerías y parte del código fuente original.
  • 34. Normalización del lenguaje Ruby  Cuando un lenguaje de programación recibe suficiente atención y uso entre los programadores, suele comenzar el proceso de normalización.  Las organizaciones más importantes que supervisan y mantienen las normalizaciones de los lenguajes de programación son el Instituto de Normalización Nacional Americano (ANSI) y la Organización Internacional de Normalización (ISO).  Se ha revisado el estado en el que se encuentra la normalización del lenguaje Ruby que ya es una norma nacional en Japón y que previsiblemente se convertirá pronto en una norma internacional.  En Japón, IPA (Information-Technology Promotion Agency) mantiene la normalización del estándar sobre el lenguaje Ruby
  • 36. Sistemas heredados  Ruby es un lenguaje de programación muy reciente, data del año 1995 y para su desarrollo, este lenguaje tuvo origen a partir de otros lenguajes ejemplo: Perl, SmallTalk, Python, Lisp, Eiffel, Scheme, Ada, Dylan, CLU.  La sintaxis de Ruby, proviene totalmente de Python y Perl; su paradigma orientado a objetos la hereda de Smalltalk, y comparte su funcionalidad con otros lenguajes como Lisp, Lua, Dylan, CLU.  Ruby ha influido en el desarrollo de nuevos lenguajes de programación entre ellos podemos mencionar: D, Groovy, Falcon y Swift.
  • 37. Lenguajes derivados de Ruby  D: Lenguaje de programación de uso general desarrollado por Walter Bright cuya primera versión apareció en 1999. Se origina como un rediseño de C++, con un enfoque más pragmático, pero no es un lenguaje puramente derivado del anterior. D ha mantenido algunas características de C++ y también está influido por otros conceptos de otros lenguajes como Java, C# y Eiffel. Una versión estable fue lanzada el 2 de enero de 2007.  Groovy: Lenguaje de programación orientado a objetos implementado sobre la plataforma Java. Tiene características similares a Python, Ruby, Perl y Smalltalk. Groovy usa una sintaxis muy parecida a Java, comparte el mismo modelo de objetos, de hilos y de seguridad. Desde Groovy se puede acceder directamente a todas las API existentes en Java.
  • 38. Lenguajes derivados de Ruby  Falcon: Lenguaje de programación interpretado de código abierto multiparadigma diseñado por Giancarlo Niccolai. Se basa en una máquina virtual de propiedad y está disponible para las plataformas Microsoft Windows, GNU/Linux, Mac, Solaris y en el futuro BSD. Se propone como una herramienta para crear aplicaciones completas y aplicaciones web en relación con apache2.  Swift: Lenguaje de programación multiparadigma creado por Apple enfocado en el desarrollo de aplicaciones para iOS y Mac OS X. Fue presentado en WWDC 2014 y está diseñado para integrarse con los Frameworks Cocoa y Cocoa Touch, puede usar cualquier biblioteca programada en Objective-C y llamar a funciones de C. También es posible desarrollar código en Swift compatible con Objective-C bajo ciertas condiciones
  • 39. Árbol genealógico de los lenguajes de programación
  • 40. Cualidades de un lenguaje de programación
  • 42. ¿Es fácil para un programador , escribir en este lenguaje? Si un programador anteriormente ha codificado en Python, Perl u otro lenguaje interpretado, Ruby le resultará fácil debido a que mezcla la sintaxis y características de los lenguajes antes mencionados. Además Ruby ofrece una sintaxis sin tantos caracteres, haciendo que la lectura, codificación y depuración sea más ameno para el desarrollador. Esto cumpliría el eslogan de Ruby…”El mejor amigo de un desarrollador”
  • 43. ¿Es fácil para un programador, escribir en este lenguaje? Factorial en Perl Factorial en Ruby Si vemos ambos programas, podemos notar que Ruby conservar métodos y palabras reservadas de los lenguajes en el cual está basado.
  • 44. ¿Hasta que punto es inteligible este lenguaje para un lector medio? Matz, el creador de Ruby dijo que este lenguaje sigue el principio de la menor sorpresa. Esto significa que el lenguaje debe comportarse de tal manera que minimice la confusión de los usuarios experimentados. Ruby tiene la particularidad de no utilizar un lenguaje oscuro en sus funciones, y los nombres de las funciones de este lenguaje, proviene del inglés, facilitando grandemente al programador. Además en Ruby, los puntos y comas (;), corchetes ({}) prácticamente no existen. Como Ruby proviene de Python, Ada, Perl, Smalltalk, etc. Muchos de sus métodos heredados tienen la misma funcionalidad, provocando una mayor familiarización y que el lenguaje sea legible para cualquier lector.
  • 45. ¿Hasta que punto es inteligible este lenguaje para un lector medio? Calculadora en Java Calculadora en Ruby En estos programas, se aprecia una ausencia de puntos comas en el código de Ruby y muchos de los métodos utilizados fueron heredados de Perl, y Python, a diferencia del código en Java, que si utiliza llaves, corchetes y puntos comas.
  • 46. ¿Es fácil aprender y enseñar el lenguaje? Al igual que cualquier otro lenguaje, Ruby resultará fácil de aprender o enseñar, siempre y cuando se entienda la lógica de lo que se desea programar. Si entiendes Perl o Python; Ruby le resultará muy fácil, no sólo por las palabras de heredadas de estos lenguajes, sino por la sencillez que Ruby muestra en su sintaxis. Matz citó “Ruby es simple en apariencia, pero complejo por dentro, como el cuerpo humano”. Esta frase hace referencia a la apariencia sintáctica de Ruby, ya que esto puede ser de gran ayuda para personas que están aprendiendo a programar y también es excelente para enseñar a programar. Ruby no tendrá tantos caracteres como Java, C++ o C#, pero es un lenguaje muy potente que puede hacer todo tipo de tareas.
  • 47. ¿Es fácil aprender y enseñar el lenguaje? Aquí tenemos el famosísimo Hola Mundo en Ruby y en C#. Viendo la sintaxis de ambos lenguajes se demuestra que Ruby es un excelente lenguaje para aprender y para enseñar a programar.
  • 48.  "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."  Yukihiro “Matz” Matsumoto, creador de Ruby
  • 50. Concatenaciones y uniones  Concatenar significa unir 2 cadenas, en el caso de programación pueden unirse enteros o reales a un cadena, incluso objetos complejos que pueden representarse en una cadena pueden concatenarse. El manejo de las cadenas en Ruby es más inteligente e intuitivo que en C. Por ejemplo, se pueden concatenar cadenas con +(como en la imagen anterior) y se puede repetir una cadena varias veces con *, ejemplo
  • 51. Concatenaciones y uniones  En Ruby también podemos unir cadenas con el operador #{}. Al igual que +, este operador incluye una variable dentro de la cadena a encerrándola en el operador.
  • 52. Ortogonalidad  La sintaxis de Ruby es muy ortogonal, lo que ayuda a que la programación sea elegante y divertida.  Su framework Ruby on Rails se esfuerza por mantener la ortogonalidad entre cada capa de la aplicación, de esta forma reduce el acople entre elementos y a su vez disminuye el tiempo y esfuerzo de mantenimiento.  La filosofía de Matz con su creación, Ruby, prefiere armonía en el rendimiento de su lenguaje, en lugar de ortogonalidad.
  • 53. Fiabilidad de programas  En Ruby, el lenguaje de programación se comporta de manera igual cada vez que se ejecuta un programa su ejecución en las plataformas se mantiene fiable.  Es decir, si ejecutamos un programa de Ruby en Windows, se ejecutará igual en Linux, en Mac OS X. Esto se debe a la portabilidad del lenguaje, debido a que no necesita librerías específicas para ejecutar, igual que Python, Perl, etc.
  • 55. ¿El lenguaje proporciona un soporte adecuado para las aplicaciones del dominio en el que lo estamos utilizando  Ruby y su framework Ruby on Rails (RoR), están centrados en la programación web. Este lenguaje proporciona el soporte de los servidores web de páginas web entre ellos Twitter, GitHub, SoundCloud,Twitch etc.  También da soporte a base de datos (BD). Muchas bancos y empresas en Panamá, utilizan RoR por su flexibilidad entre plataformas y potencia.
  • 56. Abstracción Una abstracción en Ruby es la agrupación de conjunto de elementos (datos y procedimientos) que se le da un nombre. Existen abstracciones propias de la computación, que se utilizan en múltiples dominios. Por ejemplo abstracciones de datos como listas, árboles, grafos, tablas hash. Ejemplo de hashes: h={‘perro’=>’canino’,’gato’=>’felino’,’burro’=>’asno’,12=>’docena’} puts h.length #4 puts h[‘perro’]#’canino’ puts h Puts h[12]
  • 57. Implementación  ¿Nos permite las construcciones y las características de un lenguaje su implementación práctica y eficiente en las plataformas coetáneas?  La arquitectura de Ruby fue desarrollada pensando en la productividad y la diversión del desarrollador, siguiendo los principios de una buena interfaz de usuario. Sostiene que el diseño de sistemas necesita enfatizar las necesidades humanas más que las de la máquina. No importa que equipo informático uses o que sistema operativo tengas instalado, la implementación de Ruby no cambiará en nada, al contrario de otros lenguajes como C# o Java que para poder se ejecutado, necesita librerías orientadas a ese SO. Ruby por decir, ese un sistema universalmente portable.