Ruby: La Joya de los lenguajes

Abstract

Ruby creado por Yukihiro Matsumoto es otro lenguaje de programación orientado a objetos. Nació en 1993 cuando el autor no pudo encontrar un lenguaje de guiones (scripting) orientado a objetos y decidió escribir uno. El nombre de Ruby se eligió porque el autor buscaba otro nombre de joya que simbolizase la cercanía del lenguaje a Perl (" La perla de los lenguajes").


Tabla de contenidos
Introducción
Todo es un Objeto
Conclusiones y más documentación

Introducción

¿ Que es Ruby ?

Ruby es orientado a objetos desde su concepción :

Ruby toma la orientación a objetos pura de Smalltalk, pero quíta la desigual sintaxis y la confianza en un espacio de trabajo. Añade la conveniencia y el poder de Perl, pero sin todos esos casos especiales y mágicas conversiones. Envuélve en una sintaxis limpia basada en parte en Eiffel, y añade unos cuantos conceptos de Scheme, CLU, Sather, y Common Lisp. Ruby es un lenguaje que ya es más popular que Python en su Japón nativo.

Ruby es tan fuerte en las características de "scripting" como lo es Perl ya que tiene construidas las expresiones regulares compatibles a Perl 5. Tiene prácticamente todas las funciones de Perl con una sintaxis más simple.

Puede acceder a todas las llamadas "system calls" de Unix (vía las syscall al menos). Puede acceder a todas las "system calls" en Win32 (vía la Win32API)

Ruby es "transparente" como lenguaje ya que permite enfocarse directamente en el problema a resolver ya que permite iniciar la solución desde los níveles más altos de la abstracción. Ruby permite iniciar la codificación con las mínimas situaciones de error .

Ruby al menos es adecuado para las siguientes tareas:

Veamos ahora algunos ejemplos :

Primer Ejemplo

       #! /usr/local/bin/ruby -w
       a = %w( gato perro perico tamagochi )    # se crea un arreglo
       a.each { |mascota| puts mascota }             # se iterate sobre el contenido
    

Segundo Ejemplo

       #! /usr/local/bin/ruby -w
       f = open("/etc/passwd")
       while renglon = f.gets()
          print renglon if /emeza/ =~ renglon
       end
    

Re-escribimos el Segundo Ejemplo

       #! /usr/local/bin/ruby -w
       File.foreach("/etc/passwd") do |renglon|
          print renglon if /emeza/ =~ renglon
	end       
    

Re-escribimos el Segundo Ejemplo

       #! /usr/local/bin/ruby -w
        puts File.open("/etc/passwd").grep(/emeza/)
    

Ejemplo de un Reporte

      
# data.txt
UK , 44 , Pound , 1.85 , 100
BELGIUM , 32 , Franc , 32.0 , 200
DENMARK , 45 , Krone , 6.0 , 2000
FINLAND , 358 , Markka , 4.69, 1000
FRAncE , 33 , Franc , 5.28, 50
ELSALVADOR , 503 , Colon , 8.74, 340
PHILIPPINES , 63 , Peso , 24.8, 1000
PAKISTAN , 92 , Rupee , 38.0, 1200
BAHRAIN , 973 , Dinar , 0.38 , 45
IRAQ , 964 , Dinar , 0.60, 10
JORDAN , 962 , Dinar , 0.70, 100
SAUDIARABIA , 966 , Riyal , 3.75, 1000

# Report.rb
#!/usr/local/bin/ruby -w

f = open("data.txt")
sum=0
par = "=================================================\n"
aString = " Id		Pais 		Moneda  	Taza   	Cantidad	Valor 
============================================================================\n"

print aString

while line = f.gets()
 pais, idi,moneda, taza, cantidad  = line.split(",")
 sum += cantidad.to_i/taza.to_f
 printf "%3i	  %15s	 %8s	 %5.3f	%4.2f		%4.2f\n",idi,pais,moneda,taza,cantidad,cantidad.to_i/taza.to_f
end
print par
print "Valor Total = $",sum,"\n"
print par