On 5/31/07, Aureliano Calvo <[EMAIL PROTECTED]> wrote:
> 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!

> 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).

> 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?

> 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" :)

> 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?

> 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#)

> 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

> 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

Un saludo!


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
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a