1. Ruby on Rails en la Educación 2.0
¿Por qué no tenemos que enseñar
“lo que las empresas piden”?
Svet Ivantchev, eFaber
svet@efaber.net
20 de diciembre de 2007,
2º Congreso Internacional, Software libre y Web 2.0 Educación y Formación
2. Plan
• El futuro y nuestra preparación
• Ruby y Ruby on Rails
• El marcado de trabajo y Lifelong Learning
15. El diseño de lenguajes
€ y :-)
tiempo == €, € != :-)
• Assembler, Fortran, C, ...
• Tcl, Perl, Python
• Lisp, Scheme
• Erlang, Ruby
16. Mike Vanier:
LFM and FLSP
• languages designed for smart people
• languages designed for the masses
http://www.paulgraham.com/vanlfsp.html
17. Java
• "We wanted to build a system that could
be programmed easily without a lot of
esoteric training and which leveraged today's
standard practice."
http://java.sun.com/docs/overviews/java/java-overview-1.html
20. Ruby
• orientado a objetos (ej: -2.abs)
• conjunto completo de structuras de
datos complejas (arrays, hashes)
21. Ruby
• orientado a objetos (ej: -2.abs)
• conjunto completo de structuras de
datos complejas (arrays, hashes)
• tipos dinámicos
22. Ruby
• orientado a objetos (ej: -2.abs)
• conjunto completo de structuras de
datos complejas (arrays, hashes)
• tipos dinámicos
• librerías estándar completas
23. Ruby
• orientado a objetos (ej: -2.abs)
• conjunto completo de structuras de
datos complejas (arrays, hashes)
• tipos dinámicos
• librerías estándar completas
• mejores prácticas (test, estilo)
24. Ruby
• orientado a objetos (ej: -2.abs)
• conjunto completo de structuras de
datos complejas (arrays, hashes)
• tipos dinámicos
• librerías estándar completas
• mejores prácticas (test, estilo)
• metaprogramación, DSL
28. Ej: Ruby OSA
itunes = OSA.app('iTunes')
track = itunes.current_track
puts track.name # "Over The Rainbow"
puts track.artist # "Keith Jarrett"
puts track.duration # 362.368988037109
puts track.date_added.to_s # "2006-06-30"
itunes.play
# Bajar el volumen despacio:
100.times { |i| itunes.sound_volume = i; sleep 0.1 }
# Poner la canción en el estatus del chat:
OSA.app('iChat').status_message = "Playing: #{track.name}"
29. Ej: con Asterisk
internal {
case extension
when 101...200
usuario = User.find_by_extension extension
if usuario.busy? then voicemail extension
else
dial usuario, :for => 10.rings
voicemail unless last_call_successful?
end
when 888
play weather_report("Bilbao Spain")
when 999 then +voicemail
end
}
32. Ruby on Rails
• Web framework
• MVC, ActiveRecord
• Convención sobre configuración
• Sentido común y “vanidad”
• Bajo coste de cambio
• Curva de aprendizaje pensada
84. RoR y Educación 2.0
• La importancia de la barrera de entrada
• Es un buen momento (muchas buenas causas)
• La innovación se acelera (web, voz, móviles)
• Introduce la idea de LLL