CP, Capítulo 2: Generador de números aleatorios
Bueno, pongámonos a ello. Tal como dije en el post anterior, hacer este ejempo con Objective-C es algo que no tiene más interés que empezar a ver las herramientas, así que lo reimplementaremos usando Ruby.
Siguiendo el texto, lo primero que hay que hacer es iniciar Xcode y crear un nuevo proyecto. Como hemos instalado RubyCocoa, dispondremos de un nuevo tipo de proyecto, Cocoa-Ruby Application:

Instalación de RubyCocoa
Como el primer ejercicio del libro -en el capítulo 2- consiste simplemente en seguir las instrucciones y construir una sencillita aplicación, voy a empezar haciendo ese mismo ejercicio con Ruby. Para ello, es necesario tener instalado el bridge RubyCocoa, así que lo primero de todo es instalárselo.
Yo utilizo el ruby que viene con los MacPorts (antiguamente llamados DarwinPorts), así que el binario que puede descargarse desde el site de RubyCocoa no me sirve, ya que es para el ruby que viene instalado por defecto con Mac OS X Tiger. Si ese fuera tu caso, simplemente descárgate ese binario, pero ten en cuenta que la versión de ruby instalada por Apple tiene un bug.
Instalar el bridge desde Mac Ports es tan sencillo como:
sudo port install rb-cocoa
El sistema de ports descargará e instalará entonces la versión más reciente del bridge. Si apareciese un mensaje como:
Error: Target com.apple.activate returned: Image error: /Developer/Documentation/RubyCocoa/build.en.html already exists and does not belong to a registered port. Unable to activate port rb-cocoa.
significa que ya teníamos el paquete instalado para el ruby de Apple y al tratar de instalarlo se encuentra que algunos ficheros ya existen (los ejecutables y librerías se instalan en sitios diferentes, pero la documentación y las plantillas para Xcode van en el mismo sitio y, por tanto, hay conflicto). En ese caso, simplemente tendríamos que usar el siguiente comando para activar el port:
sudo port -f activate rb-cocoa
Para comprobar que funciona, invocaremos el intérprete interactivo:
$ irb
irb(main):001:0> require 'osx/cocoa'
=> true
Aprendiendo Cocoa
Mientras hago tiempo hasta la entrega de mi flamante nuevo iMac G5 (que me he animado a adquirir tras la gota que colma el vaso en el mundo Wintel), me he puesto a aprender Objective-C y Cocoa. La verdad, aparte de la gestión de memoria, no parece muy complicado, más bien es bastante asequible, y las APIs de Apple (y NeXT) parecen estar bien pensadas, si bien, a los ojos de alguien más acostumbrado a Java o a .NET, a veces parecen un poco desconcertantes.
Objective-C es mucho más dinámico que C++, en el sentido en que tiene tipado dinámico y late-binding. Y a pesar de eso, está más cerca del C pelado, y se pueden usar bibliotecas en C puro con bastante facilidad. Los libros que he estado consultando son, básicamente, Cocoa Programming for Mac OS X y Programming in Objective-C. El primero va bastante al grano y enseguida enseña como usar Xcode e Interface Builder. El segundo es una completa introducción desde cero -no presupone conocimientos previos de C- y aún no he llegado a las partes más interesantes. Espero postear código interesante para algún widget o algo en breve :)
Por cierto, si quieres contribuir de alg!n modo a Principia Programmatica y estás interesado en estos libros, puedes comprarlos en Amazon desde aqui.
Cocoa! Programming for Mac! OS X (2nd Edition)
Programming in Objective-C