SlideShare una empresa de Scribd logo
¿Por qué Ruby?
Descubre su expresividad
(y peculiaridades)
Sobre mi
(muy brevemente)
Ruby idiomatico
¿idiomatico?
Ruby

Yukihiro
Matsumoto

“Matz”
Ruby
●

Orientado a objetos

●

Interpretado

●

(Muy) Dinámico

●

Alto nivel

●

Basado en Perl, Smalltalk, Lisp, C, ...

●

Metaprogramación

●

….
Ruby
●

Orientado a objetos

●

Interpretado

●

(Muy) Dinámico

●

Alto nivel

●

Basado en Perl, Smalltalk, Lisp, C, ...

●

Metaprogramación

●

….
Ruby
●

Cercano al lenguaje natural

●

Fácil de leer y escribir

●

Eficiente

●

¡DIVERTIDO! :-)))
¿Paréntesis?

puts(“¿Los ponemos co?”)
¿Paréntesis?

puts “No es necesario”
Orientado a objetos
(de verdad de la buena)
Orientado a objetos
"D-Labs mola mucho".class
42.class
nil.class
[1, 2, 3].class
(1..9).class

#
#
#
#
#

=>
=>
=>
=>
=>

String
Fixnum
NilClass
Array
Range
Orientado a objetos
"zARAGOZA-rb".swapcase

# => "Zaragoza-RB"

-12345.abs

# => 12345

5 * 10

# => 50
Orientado a objetos
"zARAGOZA-rb".swapcase

# => "Zaragoza-RB"

-12345.abs

# => 12345

5 * 10

# => 50

5.*(10)

# => Syntactic sugar
Orientado a objetos
Time.now
Time.now.thursday?

# => 2013-06-27...
# => true

2013.even?
5.times{ puts "DRY" }

# => false
# => 5
Orientado a objetos

"DAba Le ArrOz Al A ZoRrA ELaBAd".downcase.reverse

# => "dabale arroz a la zorra el abad"
True / nil / false
if 0
"0 es verdadero"
else
"0 es falso"
end
True / nil / false
if 0
"0 es verdadero"
else
"0 es falso"
end # => "0 es verdadero"

Todo es true excepto nil y false
If / unless
if !order.valid?
order.block
end
If / unless
if !order.valid?
order.block
end
order.block unless order.valid?
¿¡ Exclamaciones e
interrogaciones en
métodos !?
Convenio
Interrogación retorna booleano

[1, 2, 3, 5].empty?

# => false
Convenio
Exclamación acción destructiva

array = [1, 2, 3]
array.reverse
array

# => [1, 2, 3]
# => [3, 2, 1]
# => [1, 2, 3]

array = [1, 2, 3]
array.reverse!
array

# => [1, 2, 3]
# => [3, 2, 1]
# => [3, 2, 1]
Return o no return
●

Cualquier expresión retorna un valor

●

Rara vez usas return*

* Es una opinión personal
Return o no return
class UserKarma
def reset
# Do stuff
total = 0
end
end
Estructuras
condicionales
@user = nil
if params[:id]
@user = User.find(params[:id])
else
@user = User.new
end

De “Ruby mola y por qué” de Sergio Gil - http://www.slideshare.net/sergio.gil/ruby-mola-y-por-qu
Estructuras
condicionales
@user = if params[:id]
User.find(params[:id])
else
User.new
end

De “Ruby mola y por qué” de Sergio Gil - http://www.slideshare.net/sergio.gil/ruby-mola-y-por-qu
Estructuras
condicionales
Operador ternario:
@user = params[:id] ? User.find(params[:id]) : User.new

De “Ruby mola y por qué” de Sergio Gil - http://www.slideshare.net/sergio.gil/ruby-mola-y-por-qu
Estructuras
condicionales
if my_var
return my_var
else
return another_value
end

http://www.zepho.com/download/ruby-idioms.pdf
Estructuras
condicionales
if my_var
return my_var
else
return another_value
end

if my_var
my_var
else
another_value
end

http://www.zepho.com/download/ruby-idioms.pdf
Estructuras
condicionales
if my_var
return my_var
else
return another_value
end

if my_var
my_var
else
another_value
end

my_var || another_value

http://www.zepho.com/download/ruby-idioms.pdf
Asignaciones
@post = Post.find(params[:id])
if @post
@post.destroy
end

De “Ruby mola y por qué” de Sergio Gil - http://www.slideshare.net/sergio.gil/ruby-mola-y-por-qu
Asignaciones
@post = Post.find(params[:id])
if @post
@post.destroy
end
if @post = Post.find(params[:id])
@post.destroy
end

De “Ruby mola y por qué” de Sergio Gil - http://www.slideshare.net/sergio.gil/ruby-mola-y-por-qu
Asignaciones
En paralelo:
first, last, street = "Pi", "Filemon", "13 rue del percebe"
# => ["Pi", "Filemon", "13 rue del percebe"]

first, last = last, first
# => ["Filemon", "Pi"]
Asignaciones
@name = "Default name" unless @name

http://www.zepho.com/download/ruby-idioms.pdf
Asignaciones
@name = "Default name" unless @name

@name ||= "Default name"

http://www.zepho.com/download/ruby-idioms.pdf
Asignaciones
Variaciones:
a = 1
a += 1
a *= 5

# => 1
# => 2
# => 10

http://www.zepho.com/download/ruby-idioms.pdf
Clase Array
(módulo enumerable)

De “Ruby mola y por qué” de Sergio Gil - http://www.slideshare.net/sergio.gil/ruby-mola-y-por-qu
Operaciones
foo = [1, 2, 3]
bar = [3, 4, 5]
foo
foo
foo
foo

+
*
&
|

bar
2
bar
bar

#
#
#
#

=>
=>
=>
=>

[1, 2, 3, 3, 4, 5]
[1, 2, 3, 1, 2, 3]
[3]
[1, 2, 3, 4, 5]
Iteradores - each
foo.each do |item|
puts item
end
foo.each{|item| puts item } # => [1, 2, 3]
Iteradores - map
foo.map do |item|
item*2
end
foo.map{|item| item*2 }

# => [2, 4, 6]
Iteradores - inject
foo.inject do |sum, n|
sum + n
end
foo.inject{|sum, n| sum + n } # => 6
Otros métodos
[1, 1, 1, 2].uniq

# => [1, 2]

[1, [2, 3, [4]], 5].flatten # => [1, 2, 3, 4, 5]
[nil, 1, nil, 2, 3].compact # => [1, 2, 3]
[1, 2, 3].reverse

# => [3, 2, 1]

[2, 10, 1].sort

# => [1, 2, 10]
Otros métodos
[1, 2, 3, 4].find {|n| n % 3 == 0}
# => 3
[1, 2, 3, 4].find_all {|n| n % 2 == 0}
# => [2, 4]
Ejemplos prácticos

De “Ruby mola y por qué” de Sergio Gil - http://www.slideshare.net/sergio.gil/ruby-mola-y-por-qu
Ejemplo 1
●

Calcular el precio con IVA de la lista de precios:

precios = [10, 12, 20, 50]
pvp
= []
precios.each do |precio|
pvp << precio * 0.21
end
pvp

# => [2.1, 2.52, 4.2, 10.5]
Ejemplo 1
●

Calcular el precio con IVA de la lista de
precios:

precios = [10, 12, 20, 50]
pvp = precios.map {|precio| precio * 0.21 }
Ejemplo 2
●

Calcula la suma total de una lista de precios:

precios = [2.1, 2.52, 4.2, 10.5]
total
= 0
precios.each do |precio|
total += precio
end
total

# => 19.32
Ejemplo 2
●

Calcula la suma total de una lista de
precios:

precios = [2.1, 2.52, 4.2, 10.5]
total

= precios.inject{|sum, precio| sum + precio}
Clases y métodos
Clases y métodos
●

Típica clase coche con su marca,
modelo y color
Clases y métodos
class Car
def initialize(brand=nil, model=nil)
@brand = brand
@model = model
end
def brand
@brand
end
def model
@model
end
def color
@color
end
def color=(new_color)
@color = new_color
end
def brand=(new_brand)
@brand = new_brand
end
def model=(new_model)
@model= new_model
end
end
Clases y métodos
class Car
def initialize(brand=nil, model=nil)
@brand = brand
@model = model
end
...
end
Clases y métodos
...
def color
@color
end
def color=(new_color)
@color = new_color
end
...
end
Clases y métodos
class Car
attr_accessor :brand, :model, :color
def initialize(brand=nil, model=nil)
@brand = brand
@model = model
end
end
Clases y métodos
Los métodos sus parámetros:
●

Obligatorios

●

Con valor por defecto

●

Aceptar hashes, arrays y bloques
Clases y métodos
Ejemplo de parámetro opcional:
def foo(a=nil)
# do someting
end
Clases y métodos
Ejemplo de parámetros obligatorios:
def foo(a, b)
# do someting
end
Clases y métodos
Ejemplo de parámetros obligatorios:
def foo(a, b, *c)
# do someting
end
Clases y métodos
Ejemplo de parámetros obligatorios:
def foo(a, options={})
# do someting
end
Clases y métodos
Ejemplo:
def foo(mandatory, value_not_needed=42, options={})
puts "#{mandatory} - #{value_not_needed}"
puts "Options value: #{options}" unless options.empty?
end
Muchas cosas quedan
en el tintero :(
¿Preguntas?
¡Gracias! :)
Sobre mi
Rafa García
Ando por:
- Twitter: @leptom
- Email: contacto@rafagarcia.net
- Github: rgo

Más contenido relacionado

Similar a ¿Por qué Ruby? Descubre su expresividad (y peculiaridades)

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
Jano González
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
Jorge Alberto Rodríguez Suárez
 
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 González
 
Ruby intro
Ruby introRuby intro
Ruby intro
Miguel Fernández
 
JRuby Al Rescate J2EE
JRuby Al Rescate J2EEJRuby Al Rescate J2EE
JRuby Al Rescate J2EE
Jorge Alberto Rodríguez Suárez
 
Codemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilCodemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícil
Javier Abadía
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRails
Pablo Marrero
 
Sesión 03: Ruby y SAP
Sesión 03: Ruby y SAPSesión 03: Ruby y SAP
Sesión 03: Ruby y SAP
Biz Partner
 
SAP Inside Track Lima 09 - Ruby y SAP
SAP Inside Track Lima 09 - Ruby y SAPSAP Inside Track Lima 09 - Ruby y SAP
SAP Inside Track Lima 09 - Ruby y SAPAlvaro Tejada
 
JavaScript para desarrolladores c#
JavaScript para desarrolladores c#JavaScript para desarrolladores c#
JavaScript para desarrolladores c#
Luis Ruiz Pavón
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
David Arango
 
Código Bonito con PHP
Código Bonito con PHPCódigo Bonito con PHP
Código Bonito con PHP
Mauricio Gelves
 
Introducción a Ruby on Rails
Introducción a Ruby on RailsIntroducción a Ruby on Rails
Introducción a Ruby on Rails
guest638090
 
Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007
JuancaPompilla
 
Taller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on RailsTaller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on Rails
Diacode
 
Programacion orientada-a-objetos-poo
Programacion orientada-a-objetos-poo Programacion orientada-a-objetos-poo
Programacion orientada-a-objetos-poo
LuigyDeLaTorre
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
Platzi
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Irontec
 

Similar a ¿Por qué Ruby? Descubre su expresividad (y peculiaridades) (20)

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
 
JRuby al Rescate de J2EE
JRuby al Rescate de J2EEJRuby al Rescate de J2EE
JRuby al Rescate de J2EE
 
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
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Nosqlcp
NosqlcpNosqlcp
Nosqlcp
 
Ruby intro
Ruby introRuby intro
Ruby intro
 
JRuby Al Rescate J2EE
JRuby Al Rescate J2EEJRuby Al Rescate J2EE
JRuby Al Rescate J2EE
 
Codemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícilCodemotion 2016 - d3.js un taller divertido y difícil
Codemotion 2016 - d3.js un taller divertido y difícil
 
Introducción a RubyOnRails
Introducción a RubyOnRailsIntroducción a RubyOnRails
Introducción a RubyOnRails
 
Sesión 03: Ruby y SAP
Sesión 03: Ruby y SAPSesión 03: Ruby y SAP
Sesión 03: Ruby y SAP
 
SAP Inside Track Lima 09 - Ruby y SAP
SAP Inside Track Lima 09 - Ruby y SAPSAP Inside Track Lima 09 - Ruby y SAP
SAP Inside Track Lima 09 - Ruby y SAP
 
JavaScript para desarrolladores c#
JavaScript para desarrolladores c#JavaScript para desarrolladores c#
JavaScript para desarrolladores c#
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 
Código Bonito con PHP
Código Bonito con PHPCódigo Bonito con PHP
Código Bonito con PHP
 
Introducción a Ruby on Rails
Introducción a Ruby on RailsIntroducción a Ruby on Rails
Introducción a Ruby on Rails
 
Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007Presentacion Ruby on Rails CTIC-Cusco2007
Presentacion Ruby on Rails CTIC-Cusco2007
 
Taller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on RailsTaller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on Rails
 
Programacion orientada-a-objetos-poo
Programacion orientada-a-objetos-poo Programacion orientada-a-objetos-poo
Programacion orientada-a-objetos-poo
 
Curso Swift
Curso SwiftCurso Swift
Curso Swift
 
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAXJavascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
Javascript: Particularidades del Lenguaje, DOM, Eventos y AJAX
 

Último

algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1
yuki22434
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
SofiaCollazos
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
AlejandraCasallas7
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
sofiahuarancabellido
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
durangense277
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
juanchogame18
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
cristianrb0324
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.pptTEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
SandroNava1
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
ItsSofi
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Festibity
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
JuanAlvarez413513
 
Todo sobre Minirobotica. Revista Saber Electronica
Todo sobre  Minirobotica. Revista Saber ElectronicaTodo sobre  Minirobotica. Revista Saber Electronica
Todo sobre Minirobotica. Revista Saber Electronica
Carlos Carlosnoemi
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
evelinglilibethpeafi
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Festibity
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
julio05042006
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
NajwaNimri1
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
maralache30
 

Último (20)

algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1algebra de boole teoria.pdf texto guia.1
algebra de boole teoria.pdf texto guia.1
 
Trabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De ProgramaciónTrabajo tecnología sobre Conceptos Básicos De Programación
Trabajo tecnología sobre Conceptos Básicos De Programación
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.Desarrollo de Habilidades de Pensamiento.
Desarrollo de Habilidades de Pensamiento.
 
Computacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajasComputacion cuántica y sus ventajas y desventajas
Computacion cuántica y sus ventajas y desventajas
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
 
Presentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The CleanPresentacion de Estado del Arte del The Clean
Presentacion de Estado del Arte del The Clean
 
Estructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdfEstructuras Básicas_Tecnología_Grado10-7.pdf
Estructuras Básicas_Tecnología_Grado10-7.pdf
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.pptTEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
TEMA 2-CARPAS SOLARES PARA PRODUCCION DE HORTALIZAS.ppt
 
Estructuras básicas_ conceptos básicos de programación.pdf
Estructuras básicas_  conceptos básicos de programación.pdfEstructuras básicas_  conceptos básicos de programación.pdf
Estructuras básicas_ conceptos básicos de programación.pdf
 
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdfProjecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
Projecte Iniciativa TIC 2024 KAWARU CONSULTING. inCV.pdf
 
absorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratoriosabsorcion de gases y practicas de laboratorios
absorcion de gases y practicas de laboratorios
 
Todo sobre Minirobotica. Revista Saber Electronica
Todo sobre  Minirobotica. Revista Saber ElectronicaTodo sobre  Minirobotica. Revista Saber Electronica
Todo sobre Minirobotica. Revista Saber Electronica
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
modelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptxmodelosdeteclados-230114024527-aa2c9553.pptx
modelosdeteclados-230114024527-aa2c9553.pptx
 
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdfProjecte Iniciativa TIC 2024 HPE. inCV.pdf
Projecte Iniciativa TIC 2024 HPE. inCV.pdf
 
herramientas de sitio web 3.0 2024
herramientas de sitio web 3.0  2024herramientas de sitio web 3.0  2024
herramientas de sitio web 3.0 2024
 
Actividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdfActividad Conceptos básicos de programación.pdf
Actividad Conceptos básicos de programación.pdf
 
HERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptxHERRAMIENTAS WEB--------------------.pptx
HERRAMIENTAS WEB--------------------.pptx
 

¿Por qué Ruby? Descubre su expresividad (y peculiaridades)