Hola,
Si ya conocen otros lenguajes supongo que lo que más les interesará es
qué aporta Ruby con respecto a las alternativas.
Coincido con David en ese enfoque comparativo.
A mà me ha tocado dar alguna charla “formal” y varias charlas/sesiones
informales de introducción a ruby para amigueyes y lo de la comparación
viene muy bien más que nada para saber de dónde partes (ya saben lo que
es una variable, una clase, un objeto, etc…), pero no me quedarÃa sólo
en eso.
Hay ciertamente puntos en los que Ruby compara bien con otros lenguajes,
pero hay algunas cosas que son propias de él (o de un subconjunto de
lenguajes) y que no son fácil de explicar solamente como comparativa.
Además, alguna vez me ha pasado que cuando intento hacer comparativas
con otros lenguajes me encuentro con que hay conceptos del lenguaje con
el que comparo que los desarrolladores para los que estoy explicando no
conocen bien, y es peor el remedio que la enfermedad porque entonces te
empiezan a preguntar del lenguaje del que no has ido a hablar
Te cuento un poco de lo que suelo hablar yo por si te vale. Este guión
es subjetivo y seguro que hay cosas mejorables, pero como dice el gañán
“A MÃ ME FUNCIONA!!”
Primero siempre cuento un poquito de la filosofÃa de ruby. Simplicidad
en el código, menos lÃneas hacen el código más legible y menos sujeto a
errores, principio de la mÃnima sorpresa y la máxima heredada de “lo
fácil deberÃa ser fácil y lo difÃcil deberÃa ser posible”. En este punto
hablo de la arquitectura general de ruby, de su sistema de tipos
dinámico y del mito de que es muy lento (ciertamente es más lento que
otros lenguajes pero en la mayorÃa de casos de la vida real no importa).
También aprovecho para comentar el incremento en la velocidad de
desarrollo a cambio.
La sintáxis genérica la paso muy rápido dejando solamente algo de sitio
para comentar los case y los modificadores if y unless en la lÃnea,
además de comentar aquello de que todo devuelve un valor de retorno… y
luego dedico algo de tiempo al uso de bloques/closures.
Todo esto lo hago sobre algún fuente que tenga por ahà de la vida real y
con apoyo de irb (normalmente lo hago con script/console en realidad
porque suelo meter rails) para ilustrar cómo se pueden ir probando las
cosas sobre la marcha sin necesidad de compilar ni nada parecido.
Luego me tiro a explicar más o menos el modelo de objetos que tiene (por
ejemplo, que nil es un objeto y que no hay primitivas), las
posibilidades dinámicas en cuanto a reabrir clases sobre la marcha,
añadir/quitar métodos y propiedades dinámicamente y hacer introspección
de forma sencilla.
Si me sobra tiempo me detengo en detalle a ver cosa curiosas del modelo
como que puedas jugar con la definición de la clase o incluso de una
instancia a nivel individual y que puedas utilizar el ObjectSpace para
examinar/manipular es estado de tu aplicación en cualquier momento.
Y como además suelo comentar rails, luego ya paso a alguna cosita de AR
sobre alguna aplicación que tenga en marcha y de ahà ya al repaso
obligatorio al modelo MVC parando sobre todo en la potencia de los
filtros.
Sé que quedan muchas cosas sin contar en una visión tan rápida, pero
como intro ya suele ir bien. En algún caso que he tenido mucho tiempo o
que he contado las cosas en varias sesiones ya se entra más, pero para
una primera toma de contacto con todo eso quedas como un señor
saludos,
javier ramÃrez