ruby

57
RUBY @janogonzalez http://janogonzalez.com

Upload: jano-gonzalez

Post on 20-Jun-2015

609 views

Category:

Technology


1 download

DESCRIPTION

Presentación de Ruby para los alumnos de Inacap, realizada el 19 de noviembre de 2011 junto al grupo 7Talks

TRANSCRIPT

Page 1: Ruby

RUBY@janogonzalez

http://janogonzalez.com

Page 2: Ruby

@janogonzalez

Page 3: Ruby

jano gonzález

Page 4: Ruby

parte de

@7talks

Page 5: Ruby

desarrolla apps en

continuum

Page 6: Ruby

escribe el blog

gemaroja.com

Page 7: Ruby

organiza el meetup

@dynlangchile

Page 8: Ruby

QUÉ ES RUBY

Page 9: Ruby

lenguaje

dinámico

Page 10: Ruby

orientado a

objetos

Page 11: Ruby

poderosa

metaprogramación

Page 12: Ruby

sintaxis

concisa

Page 13: Ruby

es como

perl+smalltalk

Page 14: Ruby

historia

Page 15: Ruby

まつもとゆきひろ

Page 16: Ruby

Yukihiro Matsumoto

Page 17: Ruby

Matz

Page 18: Ruby

24/02/1993

idea

Page 19: Ruby

optimizar la

felicidad del desarrollador

Page 20: Ruby

21/12/1995

publicación

Page 21: Ruby

25/12/1996

versión 1.0

Page 22: Ruby

15/12/2001

pickaxe

Page 23: Ruby

david heinemeier hansson

Page 24: Ruby

DHH

Page 25: Ruby

2005

RAILS 1.0

Page 26: Ruby

ruby se hizo realmente

popular

Page 27: Ruby

alguna implementaciones:

mri, jruby, rubinius

Page 28: Ruby

el lenguaje

Page 29: Ruby

todo es un

objeto

Page 30: Ruby

objetos,

objetos en todos lados

Page 31: Ruby

objetos

# El clásicaico string“Hola Mundo”.upcase

# No hay "tipos primitivos"!5.zero?

# Hasta el nulo es un objetonil.nil?

Page 32: Ruby

objetos

# Arreglos[1, 2, 3, 4, 5]

# Hashes{:jano => "Alejandro", :cote => "José"}

# Rangos(1..10)

Page 33: Ruby

objetos

# Expresiones regulares/^[a-z]+$/

# Lambdaslambda { |n| n * 2 }

Page 34: Ruby

particularidades de los

métodos

Page 35: Ruby

métodos

# En realidad + es un método, noun operador1.+(9)

# Con un poco de azucar sintáctico1 + 9

# En otros objetos"Hola " + "Mundo"

# Con una gran cantidad de objetos![1, 2, 3] + [4, 5]

Page 36: Ruby

métodos

• Paréntesis opcionales

• ?

• !

Page 37: Ruby

usando

arrays

Page 38: Ruby

usando

hashes

Page 39: Ruby

otros

objetos

Page 40: Ruby

sentencias de

control

Page 41: Ruby

creando

claseS

Page 42: Ruby

CLASES

class Persona attr_reader :nombre, :apellido

def initialize(nombre, apellido) @nombre = nombre @apellido = apellido endend

jano = Persona.new("Jano", "González")jano.nombre

Page 43: Ruby

clases

# Monkey patchingclass Range def even self.select { |n| n % 2 == 0 } endend

(1..100).even

Page 44: Ruby

usando

bloques

Page 45: Ruby

bloques

# Un método puede recibir un bloque de código5.times do |n| puts nend

# Para casos cortos como el anterior...5.times { |n| puts n }

Page 46: Ruby

bloques

# El clásico map(1..100).map { |n| n * 2 }

# El clásico select(1..100).select { |n| n % 3 == 0 }

# El clásico reduce(1..100).reduce { |sum, n| sum + n }

# Incluso más corto(1..100).reduce(:+)

Page 47: Ruby

gemas

Page 48: Ruby

miles de

componentes

Page 49: Ruby

gemas

$ gem list

$ gem install sinatra

Page 50: Ruby
Page 51: Ruby

para aprender

Page 52: Ruby

ruby koans

rubykoans.com

Page 53: Ruby

ruby monk

rubymonk.com

Page 54: Ruby
Page 55: Ruby
Page 56: Ruby
Page 57: Ruby

visita

gemaroja.com