SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
Los ideales del creador de Ruby




  Yukhiro “matz” Matsumoto
  Mezcla:
     Perl
     Smalltalk
     Eiffel
     Ada
     Lisp
  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 irb
     Archivos con extension .rb
     Binario ruby
     Ejecutando:
         ruby programa.rb
     LIbrerias (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.new
        dias.empty? => true
        dias = Array.new(7, "today")
        dias = [ "L", "M", "M", "J", "V", "S", "D" ]
        Union, interseccion, diferencia
    Date
    DateTime
    Time
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
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'
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!
Abierto




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

          y = 5.sumar 6
          # ahora y vale 11
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?, ....
Verdades



      En Ruby, todo excepto nil y false es
      considerado true.
        if 0
          true
        else
          false
        end
        # => 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 n
         end

         pares = numeros.select do |n|
          n % 2 == 0
         end
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 / 0
       rescue ZeroDivisionError => e
         puts "Error: #{sum} / 0"
       ensure

       end
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/)
      Ruby + Swing (java)
      Ruby / Qt
      WxRuby
      FxRuby
   Aplicaciones web
      Ruby on Rails
   IDE
      Netbeans
      Aptana (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/)

Más contenido relacionado

Destacado

SCJP, Clase 7: Generics
SCJP, Clase 7: GenericsSCJP, Clase 7: Generics
SCJP, Clase 7: Genericsflekoso
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutosflekoso
 
SCJP, Clase 4: Operadores
SCJP, Clase 4: OperadoresSCJP, Clase 4: Operadores
SCJP, Clase 4: Operadoresflekoso
 
SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classesflekoso
 
Cultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y AlcancesCultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y Alcancesflekoso
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threadsflekoso
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collectionsflekoso
 
Introducción a JavaFX
Introducción a JavaFXIntroducción a JavaFX
Introducción a JavaFXflekoso
 
SCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de FlujoSCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de Flujoflekoso
 
SCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/OSCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/Oflekoso
 
SCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, PooSCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, Pooflekoso
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...flekoso
 
JavaFX 1.2 - Introducción
JavaFX 1.2 - IntroducciónJavaFX 1.2 - Introducción
JavaFX 1.2 - Introducciónflekoso
 
Índice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordÍndice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordTelefónica
 
Introducción a la Programación con Java
Introducción a la Programación con JavaIntroducción a la Programación con Java
Introducción a la Programación con Javaflekoso
 

Destacado (15)

SCJP, Clase 7: Generics
SCJP, Clase 7: GenericsSCJP, Clase 7: Generics
SCJP, Clase 7: Generics
 
De 0 A Python En 40 Minutos
De 0 A Python En 40 MinutosDe 0 A Python En 40 Minutos
De 0 A Python En 40 Minutos
 
SCJP, Clase 4: Operadores
SCJP, Clase 4: OperadoresSCJP, Clase 4: Operadores
SCJP, Clase 4: Operadores
 
SCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner ClassesSCJP, Clase 8: Inner Classes
SCJP, Clase 8: Inner Classes
 
Cultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y AlcancesCultura Libre: Origenes, Definiciones y Alcances
Cultura Libre: Origenes, Definiciones y Alcances
 
SCJP, Clase 9: Threads
SCJP, Clase 9: ThreadsSCJP, Clase 9: Threads
SCJP, Clase 9: Threads
 
SCJP, Clase 6: Collections
SCJP, Clase 6: CollectionsSCJP, Clase 6: Collections
SCJP, Clase 6: Collections
 
Introducción a JavaFX
Introducción a JavaFXIntroducción a JavaFX
Introducción a JavaFX
 
SCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de FlujoSCJP, Clase 5: Control de Flujo
SCJP, Clase 5: Control de Flujo
 
SCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/OSCJP, Clase 10: Strings, I/O
SCJP, Clase 10: Strings, I/O
 
SCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, PooSCJP, Clase 2: Ejemplos De Enum, Poo
SCJP, Clase 2: Ejemplos De Enum, Poo
 
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
SCJP, Clase 1: Introducción al curso, Intro a Java, Declaración y Control de ...
 
JavaFX 1.2 - Introducción
JavaFX 1.2 - IntroducciónJavaFX 1.2 - Introducción
JavaFX 1.2 - Introducción
 
Índice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWordÍndice Libro "macOS Hacking" de 0xWord
Índice Libro "macOS Hacking" de 0xWord
 
Introducción a la Programación con Java
Introducción a la Programación con JavaIntroducción a la Programación con Java
Introducción a la Programación con Java
 

Similar a Ruby: a Programmer's best friend

Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMjavier ramirez
 
Workshop Camp México 09 - Introducción a Ruby
Workshop Camp México 09 - Introducción a RubyWorkshop Camp México 09 - Introducción a Ruby
Workshop Camp México 09 - Introducción a RubyEdgar Suarez
 
Ruby exposición
Ruby exposiciónRuby exposición
Ruby exposiciónrossel2018
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)Oliver Centeno
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011Jano González
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJano González
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVMJano González
 
Ruby Latin Developer20012010
Ruby Latin Developer20012010Ruby Latin Developer20012010
Ruby Latin Developer20012010Miguel Rodriguez
 
En busca de la piedra filosofal
En busca de la piedra filosofalEn busca de la piedra filosofal
En busca de la piedra filosofalFco Javier Lucena
 

Similar a Ruby: a Programmer's best friend (20)

Ruby intro
Ruby introRuby intro
Ruby intro
 
Ruby
RubyRuby
Ruby
 
Ruby para Java Developers
Ruby para Java DevelopersRuby para Java Developers
Ruby para Java Developers
 
Ruby
Ruby Ruby
Ruby
 
Jruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVMJruby On Rails. Ruby on Rails en la JVM
Jruby On Rails. Ruby on Rails en la JVM
 
2 Introducción al lenguaje Ruby
2 Introducción al lenguaje Ruby2 Introducción al lenguaje Ruby
2 Introducción al lenguaje Ruby
 
Ruby
RubyRuby
Ruby
 
Workshop Camp México 09 - Introducción a Ruby
Workshop Camp México 09 - Introducción a RubyWorkshop Camp México 09 - Introducción a Ruby
Workshop Camp México 09 - Introducción a Ruby
 
Ruby exposición
Ruby exposiciónRuby exposición
Ruby exposición
 
Idiomatic Ruby
Idiomatic RubyIdiomatic Ruby
Idiomatic Ruby
 
Perl (practical extraction and report language)
Perl (practical extraction and report language)Perl (practical extraction and report language)
Perl (practical extraction and report language)
 
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
JRuby: Ruby en un mundo enterprise RubyConf Uruguay 2011
 
Jano Gonzalez - jruby
Jano Gonzalez - jrubyJano Gonzalez - jruby
Jano Gonzalez - jruby
 
JRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterpriseJRuby: Ruby en un mundo enterprise
JRuby: Ruby en un mundo enterprise
 
Programación Políglota en la JVM
Programación Políglota en la JVMProgramación Políglota en la JVM
Programación Políglota en la JVM
 
4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala4 Introducción al lenguaje Scala
4 Introducción al lenguaje Scala
 
Ruby Latin Developer20012010
Ruby Latin Developer20012010Ruby Latin Developer20012010
Ruby Latin Developer20012010
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
Taller ruby
Taller rubyTaller ruby
Taller ruby
 
En busca de la piedra filosofal
En busca de la piedra filosofalEn busca de la piedra filosofal
En busca de la piedra filosofal
 

Último

SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersIván López Martín
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxJOSEMANUELHERNANDEZH11
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...FacuMeza2
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...AlanCedillo9
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024GiovanniJavierHidalg
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxpabonheidy28
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 

Último (19)

SalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 TestcontainersSalmorejoTech 2024 - Spring Boot <3 Testcontainers
SalmorejoTech 2024 - Spring Boot <3 Testcontainers
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Hernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptxHernandez_Hernandez_Practica web de la sesion 12.pptx
Hernandez_Hernandez_Practica web de la sesion 12.pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
ATAJOS DE WINDOWS. Los diferentes atajos para utilizar en windows y ser más e...
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
Instrumentación Hoy_ INTERPRETAR EL DIAGRAMA UNIFILAR GENERAL DE UNA PLANTA I...
 
Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024Cortes-24-de-abril-Tungurahua-3 año 2024
Cortes-24-de-abril-Tungurahua-3 año 2024
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
Plan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docxPlan de aula informatica segundo periodo.docx
Plan de aula informatica segundo periodo.docx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 

Ruby: a Programmer's best friend

  • 1.
  • 2. Los ideales del creador de Ruby Yukhiro “matz” Matsumoto Mezcla: Perl Smalltalk Eiffel Ada Lisp Ruby como un lenguaje natural, no simple
  • 3. Los ideales del creador de Ruby Ruby es totalmente libre. No sólo gratis, sino también libre para usarlo, copiarlo, modificarlo y distribuirlo.
  • 4. 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
  • 5. Caracteristicas Interpretado. Portable. Dinamico. Orientado a objetos. Flexible (abierto). Mixines. Manejo de excepciones.
  • 6. Instalación / como empezar Interprete irb Archivos con extension .rb Binario ruby Ejecutando: ruby programa.rb LIbrerias (gemas) gem install <nombre>
  • 7. Orientado a objetos "Todo es un objeto" 5.times { print "Hola mundo" }
  • 8. 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
  • 9. 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
  • 10. 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'
  • 11. 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!
  • 12. Abierto class Integer def sumar(x) self + x end end y = 5.sumar 6 # ahora y vale 11
  • 13. 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?, ....
  • 14. Verdades En Ruby, todo excepto nil y false es considerado true. if 0 true else false end # => true
  • 15. 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
  • 16. 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
  • 17. Manejo de excepciones begin sum / 0 rescue ZeroDivisionError => e puts "Error: #{sum} / 0" ensure end
  • 18. Quedaron afuera... Bloques. Expresiones regulares YAML Reflection
  • 19. Sugerencias Tests, tests, tests. Manejo de versiones "desprolijo"
  • 20. 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)
  • 21. 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/)