Leyendo mis feeds acabo de llegar a la página de Apple, que últimamente es noticia porque se está desarrollando la WWDC'07, como ya dije en el post anterior. Navegando por la página de Apple sobre Leopard, llegué a donde hablan sobre la base UNIX de Mac OS X .

En esta página hay una sección que habla sobre la introducción de Python 2.5 en Mac OS X, algo que iba siendo realmente necesario porque la versión que viene de fábrica en Tiger, la versión actual de OS X, es la anticuada 2.3. Me llamó la atención esta sección de Scripting Bridge porque prometen integración con lenguajes de scripting, como Ruby o Python, y todo al día. Estamos hablando de integración, y en la página comentan, según lo que entendí, que estos lenguajes de scripting se podrán usar para desarrollar aplicaciones totalmente integradas con Mac OS X (mediante los bindings que nombran y que llaman Scripting Bridge). Hace algún tiempo conocí PyObjC, un binding de Python para Cocoa, la API de programación de Mac OS X, pero tuve problemas al intentar ejecutar el programa de este tutorial, lo que me desalentó, ya que me hubiera gustado poder desarrollar para Mac OS X sin necesidad de meterme con el Objective-C.

Yo soy un gran fan de Python. Es un lenguaje de muy alto nivel, orientado a objetos, muy potente gracias a su biblioteca de funciones y de sintaxis sencilla. Incluso la documentación es realmente clara y fácil de navegar. Sin embargo, conozco de la existencia de Ruby desde hace algún tiempo, pero nunca me había atrevido a adentrarme porque la sintaxis, aunque es sencilla, no me resultaba tan atractiva, porque en el código que yo había visto la sintaxis me pareció que tenía cierto grado de complejidad.

Pero ahora, desde la página de Apple, enlacé con la de Ruby y, para mi sorpresa, me redirigió a la traducción de la página al español. Me llamó mucho la atención el ejemplo de código que ahí se encuentra:

 # Ruby knows what you
 # mean, even if you
 # want to do math on
 
 # an entire Array
 cities  = %w[ London
               Oslo
               Paris
               Amsterdam
               Berlin ]
 visited = %w[Berlin Oslo]
 
 puts "I still need " +
      "to visit the " +
      "following cities:",
      cities - visited



Lo que me sorprendió de ésto es la operación que se hace sobre los arrays. En concreto, este código declara una lista de ciudades y otra de ciudades visitas y luego imprime por pantalla la lista de ciudades que quedan por visitar... ¡Haciendo una operación de resta entre los dos arrays! No sé si en Python se podrá hacer esto, pero al ver este ejemplo de código, sin siquiera haberlo probado, ya me flipó. Y he aquí el comentario que acompaña a este fragmento de código:

Ruby sabe lo que quieres hacer, incluso si quieres hacer operaciones matemáticas sobre un array completo.

Y desde la página de Ruby llegué a una web de demostración de Ruby: ¡prueba Ruby en tu navegador!. Esto me recuerda mucho a la web de Flyakite OSX o a la web Wubuntu que también descubrí hoy.

Enlaces:

Mac OS X 10.4 Tiger

Mac OS X 10.5 Leopard

Python

PyObjC

Creating your first PyObjC application

Using PyObjC for developing Cocoa applications with Python

Ruby

Acerca de Ruby
¡Prueba Ruby en tu navegador!