ruby: a programmer's best friend

Post on 21-Jun-2015

1.319 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Charla introductoria al lenguaje Ruby dictada por Manuel Corrales, en el marco de los festejos del Software Freedom Day 2009 en la ciudad de Tandil, Argentina

TRANSCRIPT

Los ideales del creador de Ruby

Yukhiro “matz” MatsumotoMezcla:

PerlSmalltalkEiffelAdaLisp

Ruby como un lenguaje natural, no simple

Los ideales del creador de Ruby

Ruby es totalmente libre. No sólo gratis, sino también libre para usarlo, copiarlo, modificarlo y distribuirlo.

Historia

Iniciado en 1993. Liberado al público en 1995. Version 1.0 a fines de 1996.Reconocimiento masivo en 2006. Version actual 1.9.x

Caracteristicas

Interpretado.Portable. Dinamico. Orientado a objetos.Flexible (abierto).Mixines.Manejo de excepciones.

Instalación / como empezar

Interprete irbArchivos con extension .rbBinario rubyEjecutando:

ruby programa.rbLIbrerias (gemas)

gem install <nombre>

Orientado a objetos

"Todo es un objeto"

5.times { print "Hola mundo" }

Clases

Integer, Fixnum, Bignum, Float, ...String Array

dias = Array.newdias.empty? => truedias = Array.new(7, "today")dias = [ "L", "M", "M", "J", "V", "S", "D" ]Union, interseccion, diferencia

DateDateTimeTime

Clases

Ranges r = (1..10) # de 1 a 10 inclusive r = (1...10) # de 1 to 9 r === 4 # => true ('k'..'z') === 'm' # => true

Hashh = {'uno' => 1, 'dos' => 2}h['uno'] # => 1h['tres'] = 3

Simbolos

Es el elemento mas basico que se puede crear en ruby.Sintaxis:

:simboloDiferencia con String

puts "hola".object_id # 21066960puts "hola".object_id # 21066730puts :hola.object_id # 132178puts :hola.object_id # 132178

Particularmente utiles para claves en Hash persona[:nombre] = 'Pedro'

Clases

class Saludo def initialize( quien ) @quien = quien auxiliar = "local" @@variable_de_clase = "prueba" end

def deci_hola "Hola #{@quien}!" endend

unSaludo = Saludo.new("Lucas")unSaludo.deci_hola# Hola Lucas!

Abierto

class Integer def sumar(x) self + x endend

y = 5.sumar 6# ahora y vale 11

Herencia - Mixins - Modulos

class Perro < Animalend class MiArreglo include Enumerable end

Herencia simpleModulos que se "mezclan"

Colecciones de metodosEjemplo: implementando each y/o <=> puedo mezclar Enumerable

min, max, sort, include?, ....

Verdades

En Ruby, todo excepto nil y false es considerado true.

if 0 trueelse falseend# => true

Iteradores

Cada objeto debe saber como "iterarse"

# numeros = [1,2,3,4,5,6,7,8, 9,10] numeros = (1..10).to_a

numeros.each do |n| puts nend pares = numeros.select do |n| n % 2 == 0end

Iteradores

Iteraciones estilo ruby

5.times do puts "hola"end 5.upto(10) do |index| puts "hola #{index}"end

15.downto(10) do puts "hola"end

Manejo de excepciones

begin sum / 0rescue ZeroDivisionError => e puts "Error: #{sum} / 0"ensure end

Quedaron afuera...

Bloques.Expresiones regularesYAMLReflection

Sugerencias

Tests, tests, tests.Manejo de versiones "desprolijo"

Desarrollo de aplicaciones

Aplicaciones de escritorio Ruby Tk Ruby-gnome2 (ruby-gnome2.sourceforge.jp/)Ruby + Swing (java)Ruby / QtWxRubyFxRuby

Aplicaciones webRuby on Rails

IDENetbeansAptana (Eclipse plugin)

Ejemplos

Twitter (http://www.twitter.com/)Github (http://www.github.com/)Justin.tv (http://www.justin.tv/)SUSE Studio (http://susestudio.com) Watir (http://rubyforge.org/projects/wtr/)

top related