Ruby: un lenguaje dinámico moderno
Esteban Manchado Velázquez
[email protected]
22 de noviembre de 2005
Índice
1 Introducción
Sobre el lenguaje
Ruby a grandes rasgos
2 El lenguaje
Características no tan básicas
Mixin
Reflexión
3 Conclusiones
Aspectos negativos
Aspectos positivos
Índice
1 Introducción
Sobre el lenguaje
Ruby a grandes rasgos
2 El lenguaje
Características no tan básicas
Mixin
Reflexión
3 Conclusiones
Aspectos negativos
Aspectos positivos
Nacimiento de Ruby
• Diseñado por Yukihiro Matsumoto (matz)
• ((Ruby)) viene de Perl → Pearl
• I wanted a scripting language that was more powerful
than Perl, and more object-oriented than Python
• They are focusing on machines. But in fact we need to
focus on humans, on how humans care about doing
programming or operating the application of the
machines. We are the masters. They are the slaves
• Don’t underestimate the human factor. Even though we
are in front of computers, they are media. We are
working for human, with human
• You want to enjoy life, don’t you? If you get your job
done quickly and your job is fun, that’s good, isn’t it?
That’s the purpose of life, partly. Your life is better
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
• Completamente orientado a objetos (¡hasta nil!)
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poético, ((sufijos)) de sentencias
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poético, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poético, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayúsculas y minúsculas (constantes, variables)
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poético, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayúsculas y minúsculas (constantes, variables)
• Se usan mucho los bloques (funciones anónimas)
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poético, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayúsculas y minúsculas (constantes, variables)
• Se usan mucho los bloques (funciones anónimas)
• Documentación empotrada
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poético, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayúsculas y minúsculas (constantes, variables)
• Se usan mucho los bloques (funciones anónimas)
• Documentación empotrada
• Inmaduro (cambios, pocos módulos de desarrollo activo)
Características generales
• ((Perl orientado a objetos)), ((Smalltalk con sintaxis familiar))
• Completamente orientado a objetos (¡hasta nil!)
• Sintaxis limpia, modo poético, ((sufijos)) de sentencias
• Sangrado libre, marcas de fin de estructura
• Uso de mayúsculas y minúsculas (constantes, variables)
• Se usan mucho los bloques (funciones anónimas)
• Documentación empotrada
• Inmaduro (cambios, pocos módulos de desarrollo activo)
• Comunidad abierta (muchos ((refugiados)))
Para aprender...
• Entre Perl y Python en cuanto a integración
Para aprender...
• Entre Perl y Python en cuanto a integración
• Consola interactiva: irb
Para aprender...
• Entre Perl y Python en cuanto a integración
• Consola interactiva: irb
• Documentación empotrada de referencia: rdoc
Para aprender...
• Entre Perl y Python en cuanto a integración
• Consola interactiva: irb
• Documentación empotrada de referencia: rdoc
• Consulta de documentación, ayuda interactiva: ri e ihelp
Para aprender...
• Entre Perl y Python en cuanto a integración
• Consola interactiva: irb
• Documentación empotrada de referencia: rdoc
• Consulta de documentación, ayuda interactiva: ri e ihelp
• Consulta de documentación en web:
http://www.ruby-doc.org/find/pickaxe/string
Para aprender...
• Entre Perl y Python en cuanto a integración
• Consola interactiva: irb
• Documentación empotrada de referencia: rdoc
• Consulta de documentación, ayuda interactiva: ri e ihelp
• Consulta de documentación en web:
http://www.ruby-doc.org/find/pickaxe/string
• En el caso de Rails y otros, de moda los vídeos
Índice
1 Introducción
Sobre el lenguaje
Ruby a grandes rasgos
2 El lenguaje
Características no tan básicas
Mixin
Reflexión
3 Conclusiones
Aspectos negativos
Aspectos positivos
Micro-intro a la OO
• Clases de objetos
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a métodos
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a métodos
• Los objetos tienen atributos
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a métodos
• Los objetos tienen atributos
• Las clases heredan de otras
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a métodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teóricamente, la OO nos hace natural pensar en
términos que facilitan reducir el acoplamiento entre conceptos
diferentes
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a métodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teóricamente, la OO nos hace natural pensar en
términos que facilitan reducir el acoplamiento entre conceptos
diferentes
• No les culparé si no se lo tragan
Micro-intro a la OO
• Clases de objetos
• Los objetos responden a métodos
• Los objetos tienen atributos
• Las clases heredan de otras
• Al menos teóricamente, la OO nos hace natural pensar en
términos que facilitan reducir el acoplamiento entre conceptos
diferentes
• No les culparé si no se lo tragan (o no lo entienden)
OO en Ruby
• Simple, cómoda de escribir (más vale)
OO en Ruby
• Simple, cómoda de escribir (más vale)
• Es la forma natural de resolver los problemas
OO en Ruby
• Simple, cómoda de escribir (más vale)
• Es la forma natural de resolver los problemas
• Se puede escribir en estilo no OO, pero en realidad es OO
OO en Ruby
• Simple, cómoda de escribir (más vale)
• Es la forma natural de resolver los problemas
• Se puede escribir en estilo no OO, pero en realidad es OO
• Herencia simple
OO en Ruby
• Simple, cómoda de escribir (más vale)
• Es la forma natural de resolver los problemas
• Se puede escribir en estilo no OO, pero en realidad es OO
• Herencia simple
• No existen los atributos (desde fuera)
OO en Ruby
• Simple, cómoda de escribir (más vale)
• Es la forma natural de resolver los problemas
• Se puede escribir en estilo no OO, pero en realidad es OO
• Herencia simple
• No existen los atributos (desde fuera)
• Métodos terminados en ((!)) y ((?))
OO en Ruby
• Simple, cómoda de escribir (más vale)
• Es la forma natural de resolver los problemas
• Se puede escribir en estilo no OO, pero en realidad es OO
• Herencia simple
• No existen los atributos (desde fuera)
• Métodos terminados en ((!)) y ((?))
• Métodos especiales ((=)) para caramelos sintácticos
OO en Ruby
• Simple, cómoda de escribir (más vale)
• Es la forma natural de resolver los problemas
• Se puede escribir en estilo no OO, pero en realidad es OO
• Herencia simple
• No existen los atributos (desde fuera)
• Métodos terminados en ((!)) y ((?))
• Métodos especiales ((=)) para caramelos sintácticos
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
OO en Ruby
• Simple, cómoda de escribir (más vale)
• Es la forma natural de resolver los problemas
• Se puede escribir en estilo no OO, pero en realidad es OO
• Herencia simple
• No existen los atributos (desde fuera)
• Métodos terminados en ((!)) y ((?))
• Métodos especiales ((=)) para caramelos sintácticos
• Se usa ((@)) y ((@@)) para los atributos de objeto/clase
• Se usa (($)) para variables globales (vale, no OO)
Ejemplo algo más ((real)) (I)
class Persona
attr_accessor :nombre
attr_reader :edad
def initialize(nombre, edad)
@nombre = nombre
@edad
@humana = false
= edad
end
def saludar
puts "Me llamo #{@nombre}. Saludo..."
end
def humana?; @humana end
def humanizar!; @humana = true end
def edad=(nuevaEdad) @edad = nuevaEdad.to_i end
end
Ejemplo algo más ((real)) (I)
class Persona
attr_accessor :nombre
attr_reader :edad
def initialize(nombre, edad)
@nombre = nombre
@edad
@humana = false
= edad
end
def saludar
puts "Me llamo #{@nombre}. Saludo..."
end
def humana?; @humana end
def humanizar!; @humana = true end
def edad=(nuevaEdad) @edad = nuevaEdad.to_i end
end
Ejemplo algo más ((real)) (I)
class Persona
attr_accessor :nombre
attr_reader :edad
def initialize(nombre, edad)
@nombre = nombre
@edad
@humana = false
= edad
end
def saludar
puts "Me llamo #{@nombre}. Saludo..."
end
def humana?; @humana end
def humanizar!; @humana = true end
def edad=(nuevaEdad) @edad = nuevaEdad.to_i end
end
Ejemplo algo más ((real)) (I)
class Persona
attr_accessor :nombre
attr_reader :edad
def initialize(nombre, edad)
@nombre = nombre
@edad
@humana = false
= edad
end
def saludar
puts "Me llamo #{@nombre}. Saludo..."
end
def humana?; @humana end
def humanizar!; @humana = true end
def edad=(nuevaEdad) @edad = nuevaEdad.to_i end
end
Ejemplo algo más ((real)) (I)
Comentarios de: Ruby: un lenguaje dinámico moderno (0)
No hay comentarios