Los ideales del creador de Ruby




  Yukhiro “matz” Matsumoto
  Mezcla:
     Perl
     Smalltalk
     Eiffel
     Ada
   ...
Los ideales del creador de Ruby




Ruby es totalmente libre. No sólo gratis, sino también
libre para usarlo, copiarlo, mo...
Historia




    Iniciado en 1993.
    Liberado al público en 1995.
    Version 1.0 a fines de 1996.
    Reconocimiento ma...
Caracteristicas




    Interpretado.
    Portable.
    Dinamico.
    Orientado a objetos.
    Flexible (abierto).
    Mix...
Instalación / como empezar



     Interprete irb
     Archivos con extension .rb
     Binario ruby
     Ejecutando:
     ...
Orientado a objetos




   "Todo es un objeto"



       5.times { print "Hola mundo" }
Clases



    Integer, Fixnum, Bignum, Float, ...
    String
    Array
        dias = Array.new
        dias.empty? => tru...
Clases



    Ranges
       r = (1..10)        # de 1 a 10 inclusive
       r = (1...10)       # de 1 to 9
       r === 4 ...
Simbolos



    Es el elemento mas basico que se puede crear en
    ruby.
    Sintaxis:
        :simbolo
    Diferencia co...
Clases


         class Saludo
            def initialize( quien )
              @quien = quien
              auxiliar = "...
Abierto




          class Integer
           def sumar(x)
             self + x
           end
          end

          ...
Herencia - Mixins - Modulos


     Herencia simple
     Modulos que se "mezclan"
        Colecciones de metodos
        Ej...
Verdades



      En Ruby, todo excepto nil y false es
      considerado true.
        if 0
          true
        else
  ...
Iteradores



       Cada objeto debe saber como "iterarse"

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



       Iteraciones estilo ruby

         5.times do
           puts "hola"
         end

         5.upto(10)...
Manejo de excepciones




       begin
         sum / 0
       rescue ZeroDivisionError => e
         puts "Error: #{sum} ...
Quedaron afuera...




   Bloques.
   Expresiones regulares
   YAML
   Reflection
Sugerencias




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



   Aplicaciones de escritorio
      Ruby Tk
      Ruby-gnome2 (ruby-gnome2.sourceforge.jp/)
...
Ejemplos




  Twitter (http://www.twitter.com/)
  Github (http://www.github.com/)
  Justin.tv (http://www.justin.tv/)
  S...
Ruby: a Programmer's best friend
Upcoming SlideShare
Loading in …5
×

Ruby: a Programmer's best friend

1,548 views
1,399 views

Published on

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

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,548
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Ruby: a Programmer's best friend

  1. 1. Los ideales del creador de Ruby Yukhiro “matz” Matsumoto Mezcla: Perl Smalltalk Eiffel Ada Lisp Ruby como un lenguaje natural, no simple
  2. 2. Los ideales del creador de Ruby Ruby es totalmente libre. No sólo gratis, sino también libre para usarlo, copiarlo, modificarlo y distribuirlo.
  3. 3. 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
  4. 4. Caracteristicas Interpretado. Portable. Dinamico. Orientado a objetos. Flexible (abierto). Mixines. Manejo de excepciones.
  5. 5. Instalación / como empezar Interprete irb Archivos con extension .rb Binario ruby Ejecutando: ruby programa.rb LIbrerias (gemas) gem install <nombre>
  6. 6. Orientado a objetos "Todo es un objeto" 5.times { print "Hola mundo" }
  7. 7. Clases Integer, Fixnum, Bignum, Float, ... String Array dias = Array.new dias.empty? => true dias = Array.new(7, "today") dias = [ "L", "M", "M", "J", "V", "S", "D" ] Union, interseccion, diferencia Date DateTime Time
  8. 8. Clases Ranges r = (1..10) # de 1 a 10 inclusive r = (1...10) # de 1 to 9 r === 4 # => true ('k'..'z') === 'm' # => true Hash h = {'uno' => 1, 'dos' => 2} h['uno'] # => 1 h['tres'] = 3
  9. 9. Simbolos Es el elemento mas basico que se puede crear en ruby. Sintaxis: :simbolo Diferencia con String puts "hola".object_id # 21066960 puts "hola".object_id # 21066730 puts :hola.object_id # 132178 puts :hola.object_id # 132178 Particularmente utiles para claves en Hash persona[:nombre] = 'Pedro'
  10. 10. Clases class Saludo def initialize( quien ) @quien = quien auxiliar = "local" @@variable_de_clase = "prueba" end def deci_hola "Hola #{@quien}!" end end unSaludo = Saludo.new("Lucas") unSaludo.deci_hola # Hola Lucas!
  11. 11. Abierto class Integer def sumar(x) self + x end end y = 5.sumar 6 # ahora y vale 11
  12. 12. Herencia - Mixins - Modulos Herencia simple Modulos que se "mezclan" Colecciones de metodos Ejemplo: implementando each y/o <=> puedo mezclar Enumerable class Perro < Animal end class MiArreglo include Enumerable end min, max, sort, include?, ....
  13. 13. Verdades En Ruby, todo excepto nil y false es considerado true. if 0 true else false end # => true
  14. 14. 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 n end pares = numeros.select do |n| n % 2 == 0 end
  15. 15. 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
  16. 16. Manejo de excepciones begin sum / 0 rescue ZeroDivisionError => e puts "Error: #{sum} / 0" ensure end
  17. 17. Quedaron afuera... Bloques. Expresiones regulares YAML Reflection
  18. 18. Sugerencias Tests, tests, tests. Manejo de versiones "desprolijo"
  19. 19. Desarrollo de aplicaciones Aplicaciones de escritorio Ruby Tk Ruby-gnome2 (ruby-gnome2.sourceforge.jp/) Ruby + Swing (java) Ruby / Qt WxRuby FxRuby Aplicaciones web Ruby on Rails IDE Netbeans Aptana (Eclipse plugin)
  20. 20. 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/)

×