> > En mi laburo la semana que viene voy a hacer una presentación de Ruby
> > de aproximadamente una hora. El público son principalmente gente que
> > sea programar bien en C++ y/o Python, incluyendo algunos viejos
> > smalltalkers.
>
> Buenísimo!

Gracias

> > Mi idea es organizarlo así:
> >
> > Minuto 0: Me presento, doy la agenda de la presentación.
> > Minuto 1: Historia de ruby y comparación con Perl, Smalltalk y Python.
> > Minuto 5: Abro el irb y muestro el uso básico del lenguaje.
> > Operaciones con enteros y strings. Muestro un toque que es un symbol.
>
> Cómo lo explicás?
> Quizás acordate de mencionar (si aclara y no oscurece) que en las
> próximas versiones de Ruby los Symbols van a ser interned strings
> (class Symbol < String).

No pensaba decir nada de eso, solo que si hago simbolo.to_s me da el
string y que si hago  :symbol.object_id me da siempre el mismo y que
"string".object_id no.

> > Minuto 10: Abro un editor de texto (quizás rubyeclipse) y codeo la
> > primera clase. Muestro herencia. Muestro el acceso de variables de
> > instancia con @var.
>
> Creo que un 30% del hecho de que "Creating a weblog in 15 minutes" te
> vuele la cabeza es  que DHH esté usando TextMate con los snippets :-)
> Pero un vi quizás también resulte atractivo al público local... no?

Textmate está fuera de opción porque voy a usar una PC para mostrarlo.
Y hay gente en el laburo que está empezando a querer al eclipse y no
quiero coartar eso. Joder, hoy estuve programando en PHP en eclipse.

> > Minuto 15: Hago un modulo y lo incluyo en una clase (mixin).
> > Minuto 20: Abro el irb de nuevo y agrego/overrideo un método en un
> > objeto de la clase de recién. Hablo sobre como se pueden overridear
> > objetos sin necesariamente tener que definir clases nuevas.
>
> Excelente!
> Quizás hace override al método del módulo? Como para que quede claro
> que no es un "include" de código a la PHP...
> Y a mí me encantó cuando escuché la relación entre el hecho de que
> Ruby sea Open Source y que en ese mismo espíritu las clases son
> "abiertas" :)

¡Es buena! Me encantó la comparación.

> > Minuto 25: Muestro como usar un closure con los Enumerables (each,
> > inject, filter y sus amigos).
> > Minuto 30: Empieza el show de verdad. Empiezo a mostrar la
> > maleabilidad del lenguaje. En la clase Object defino el método self
> > así:
> >   def self
> >     this
> >   end
> > Digo que extraño java :D (voy a mentir un poquito) y lo uso 2 minutos
> > en vez de self.
>
> Es un typo no? Querías decir hacer un def this?

sip :(.

> > Minuto 35: Muestro los métodos attr_* y los uso en mi clase.
> > Minuto 38: Empiezo a definir métodos nuevos y overrideados en String,
> > Object y sus amigos.
>
> Si te hace falta tiempo, podés obviar esto último porque... como que
> ya lo hiciste antes?
> Lo que sí demuestra y está muy bueno es que incluso las clases "base"
> se pueden sobrescribir y heredar... (*cough* java *cough* c#)

Tenés razón, creo que voy a mover def this después de los attr_*

> > Minuto 43: Defino mis propios métodos similares a los attr_* en Module
> > y los uso en la clase (hablo de metaprogramación, digo que rails hace
> > algo parecido para un montón de cosas).
> > Minuto 48: Uso method_missing y hago algo que muestre como se llaman
> > los métodos que llamo y no están definidos. Hablo de markaby y lo
> > muestro. Hablo de los dsls.
>
> Muy bueno!
>
> No sé si te parece, quizás podrías hacer un proxy con method_missing.
>
> class Foo
>   def hacer_una_cosa
>     puts "Hice una cosa"
>   end
>
>   def hacer_otra_cosa
>     puts "Hice otra cosa"
>   end
> end
>
> class Bar
>   def initialize
>     @foo = Foo.new
>   end
>
>   def method_missing(method_id, *args)
>     proxy_method = "hacer_#{method_id}".to_sym
>     @foo.send(proxy_method, *args) if @foo.respond_to?(proxy_method)
>   end
> end

Está bueno, pensaba hacer algo que devolviera el nombre del método y
listo, pero esto es más lindo y muestro send también (para hacer todo
completo).

> > Minuto 53: Muestro como usar una biblioteca que tiene 200 líneas de
> > código (está en http://snippets.dzone.com/posts/show/2190) como para
> > reemplazar el yacc. Digo que Ruby es más poderoso que C/C++ porque en
> > C/C++ necesitás salir fuera del lenguaje para hacer eso.
> > Minuto 58: Hablo de rake (quizás muestro un ejemplito de como compilar
> > un Hello World en C con rake).
> > Minuto 60: Descanso.
>
> Poquísima experiencia con rake... no puedo opinar :-)
>
>
> Muy buena la idea y los contenidos

Muchas gracias.

> PD: Mmm... no te tienta escribir un Singleton en Java, mostrar las
> 10-15 líneas que llevaría, y esto? :-)
>
> class Dios
>   include Singleton
> end

Podría ser, pero me parece que la hora que tengo planificada van a ser
como 2. ¿Qué sacarían para agregar esto? ¿Alguien sabe como escribir
un singleton en python? (para comparar con algo que ellos usan).
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a