lunes, 23 de noviembre de 2009

XCode vs. Visual Studio


Hace unos días empecé mis primeras pruebas para desarrollar aplicaciones para el iPhone, con lo cual tuve que estudiar un poco de Objective-C (el lenguaje de programación) y XCode (el ambiente de desarrollo).

No puedo evitar la comparación con C#/Visual Studio, que es el otro lenguaje de propósito general que manejo... Si bien tal vez la comparación no sea del todo justa, ya que en Visual Studio nunca desarrollé aplicaciones móviles, creo que como ambientes de desarrollo deberían ser bastante comparables.

Intellitips

Se extrañan... En Visual Studio cuando escribo "variable." muestra una lista de todas las propiedades, métodos y eventos que están disponibles para esa variable. Esto es muy útil cuando uno no se acuerda exáctamente el nombre de una función.

En XCode no encontré que tuviera intellitips, lo más parecido que tiene es una especie de "autocomplete", que muestra el primér método que coincide con lo que voy escribiendo.

Por lo tanto, si quiero buscar un método que no me acuerdo exáctamente del nombre, no tengo más remedio que salir del editor y buscarlo en la API en el navegador.

Propiedades "automáticas"

En los dos lenguajes se tienen propiedades automáticas (desde C# 3.0), pero la forma que se definen son distintas.

En C#, es una sola línea de código:
public int Prop { get; set; }
 En Objective-C, hay que definirla en tres lugares distintos...
  1. en el .h, en la definición de la clase
  2. en el .h con una directiva @property
  3. en el .m con una directiva @synthetize
Interfaz de usuario

En Visual Studio al agregar un elemento a la interfaz de usuario de la aplicación, el IDE se encarga de generar todo el código necesario para que ese elemento funcione. Después hay que definir el comportamiento, pero por lo menos el elemento está ahí.

En XCode, la definición de la interfaz se hace en otra aplicación, Interface Builder, y para poder utilizar los componentes que se agregaron con drag&drop, hay que definir outlets, delegates y alguna cosa más, que lo hace bastante complicado para novatos.

Conclusión

Si bien XCode tiene unas cuantas cosas interesantes, creo que como IDE se queda un poco corto. La productividad, al menos para los que recién estamos empezando, es mucho menor que la que se puede lograr con otras herramientas, como ser Visual Studio.

Habrá que seguir experimentando para agarrarle la mano.

martes, 17 de noviembre de 2009

Supercomputadoras


TOP500 es un sitio que se encarga de llevar estadísticas de las 500 supercomputadoras más rápidas que existen. Publican dos listas al año, una junio y otra en noviembre.

En el sitio ya está publicada la lista de noviembre de 2009.

La supercomputadora que está en el puesto número 1, tiene una capacidad de procesamiento de 1.76 tera-flops (= 1.76x1012 operaciones de punto flotante por segundo = 1760000000000 operaciones de punto flotante por segundo).

Cuenta con 224.162 CPU cores. Los procesadores que usa son AMD x86_64 Opteron Six Core de 2600 MHz.

Pero más allá de cual sea la lista ahora, lo que más me llamó la atención fue la siguiente gráfica, con la proyección para los próximos años.



Tres cosas que me parece vale la pena destacar:
  1. Es increible como se mantienen en una recta(1) la suma de performance de las 500 de la lista, y también como se mantiene en una recta(1) la performance de la número 500.
  2. La que hoy es número 500, hubiera sido la número 1 en el 2001, hace 8 años.
  3. Según la proyección, para junio de 2016 (6 años y medio), la que ahora es número 1 va a estar en el número 500.
(1)  Si bien en la gráfica se ve como una recta, tener en cuenta que es una escala logarítmica, por lo que la curva es en realidad exponencial...

viernes, 13 de noviembre de 2009

Impresiones sobre Google Wave


Desde hace unos días tengo una cuenta en Google Wave, con lo que pude hacer unas pruebas.

Primero que nada, ¿qué es Wave? Según la Wikipedia:
Google Wave es una herramienta en línea que permite a sus usuarios comunicarse y colaborar en tiempo real. El proyecto fue anunciado por Google en la última conferencia Google I/O, el 28 de mayo de 2009. Es una aplicación web y una plataforma de computación diseñada para unir los servicios de e-mail, mensajería instantánea, wiki, y redes sociales.
Básicamente, es como un mail en el que tengo mensajes (waves), pero sobre los que se puede colaborar en tiempo real, como si fuera un chat, comentando y editando lo que otros escriben.

Está interesante el artículo de Enrique Dans al respecto, con el cual comparto algunas cosas:
  • a simple vista, es un lindo chiche para hacre algunas pruebas
  • puede ser una herramienta muy potente si realmente se le da el uso apropiado.
Hay que tener en cuenta que la versión actual es un Preview, por lo que tampoco se debería poner nada crítico ahí sin respaldarlo.

En mi caso, quise empezar con la documentación del proyecto colaborativo, para poder trabajar sobre ella con el resto del equipo, y parece ser bastante útil. Lo dejamos de usar porque dio un problema y estuvimos a punto de perder todo lo que habíamos escrito (pensamos que lo habíamos perdido pero después se pudo recuperar...)

La pricipal contra que le veo, al menos por el momento, es que representa tener otra bandeja de entrada a la cual tengo que ir para ver si hay algo nuevo. Ya son demasiadas: mail personal y de trabajo, Facebook, Twitter, Google Reader, y ahora Wave... En algún momento debería surgir algo que permite tener una sola bandeja de entrada para todas estas cosas (¿Mozilla Raindrop?)

Como resumen, podría decir que es una tecnología que hay que tener en el radar. No creo que vaya a reemplazar a todas las demás formas de comunicación, pero van a haber casos en las que resulte la más adecuada.