Tuesday, October 11, 2011

Dart, el JavaScript de Google


Dart, el lenguaje de programación estructurada para la web creado por Google, ya está aquí y en este pequeño artículo le daremos un vistazo muy general. Sin más preámbulo, comencemos.

Contexto

Dart fue dado a conocer hace unas semanas y, como se prometió en su momento, presentado en forma el día de hoy en el marco de la conferencia para desarrolladores GOTO celebrada en varias sedes europeas.
Lars Bak y Gilad Bracha fueron los encargados de hacer la presentación. Ambos son ingenieros/investigadores destacadísimos. Bracha trabajó en Sun Microsystems y lideró el diseño de Newspeak, un lenguaje orientado a objetos basado en el clásico Smalltalk de Alan Kay. Bak merece una mención aparte.
Lars Bak es experto mundial en implementación de máquinas virtuales, entre ellas la sofisticada HotSpot de Java. Luego trabajó en el diseño del motor JavaScript V8, antes de ser una tecnología comprada por Google, su actual empleador. Lo curioso de Bak es que él no reside donde los demás googlers, en California, sino en un pequeño pueblo danés, Aarhus, donde coordina en su casa-granja un grupo de 12 programadores para la mejora continúa de V8, la tecnología clave de Google Chrome.

Diseño

Dart es un proyecto de código abierto en etapas tempranas de desarrollo que se irá presentando poco a poco a la comunidad, al estilo de lo que sucedió con el lenguaje Go, también creado por Google (a punto de alcanzar la versión 1.0, por cierto).
Estos son los objetivos de diseño del nuevo lenguaje:
  1. Hacer un lenguaje para la web estructurado y flexible a la vez. "Estructurado" en el sentido general del término, donde los programas son creados a partir de estructuras de control básicas, teniendo como resultado código claro y ordenado. Sin embargo, Dart es un lenguaje
    • puramente orientado a objetos y todo lo que esto implica,
    • donde el tipo de los datos se establece de forma dinámica o estática, a decisión del programador.
  2. Proveer una sintaxis familiar para los programadores experimentados. Sin duda, para reducir la pendiente de la curva de aprendizaje.
  3. Que las aplicaciones creadas con Dart tengan un gran desempeño y se programen en poco tiempo.
  4. Hacer que Dart esté orientado a múltiples dispositivos, desde smartphones hasta servidores, pasando por tablets y netbooks.
  5. Hacer que Dart funcione sobre cualquier navegador web moderno, tal como JavaScript. De hecho, Dart puede ejecutarse sobre su propia máquina virtual, o bien, encima de un motor JavaScript.

Sintaxis

Esto no es pseudo-lenguaje C; es Dart con la definición de la función Fibonacci arriba del código y una función principal que controla la ejecución.
 int fib(int n) { if (n < = 1) return n; return fib(n - 1) + fib(n - 2); } main() { print('fib(20) = ${fib(20)}'); } 
Ahora una clase y una función principal para calcular la distancia entre dos puntos en un plano X-Y:
 class Point { Point(this.x, this.y); distanceTo(Point other) { var dx = x - other.x; var dy = y - other.y; return Math.sqrt(dx * dx + dy * dy); } var x, y; } main() { Point p = new Point(2, 3); Point q = new Point(3, 4); print('distance from p to q = ${p.distanceTo(q)}'); } 
Más familiar para un programador tradicional que conoce lenguaje C/C++, Java, PHP, y similares, no puede ser. Por lo demás la sintaxis es limpia, pero no tanto como en Python o Go.
Para aprender Dart encontramos una pequeña guía de estudio, aunque la especificación del lenguaje debiera ser suficiente para comenzar a trabajar. Clic..

No comments: