Si seguís la cuenta de javaHispano en twitter ya estaréis al tanto de que Google lleva un tiempo trabajando en un nuevo lenguaje de programación: Google Dart. Se trata de un lenguaje que pretende ser una versión mejorada de JavaScript.
Ayer en la conferencia GotoCon Aarhus 2011 dos ingenieros de Google (Lars Bak, creador de V8, y Gilad Bracha) presentaron una versión preview de Dart, junto con herramientas de desarrollo para este lenguaje de programación. En estos momentos, Dart todavía no forma parte de Chrome, pero es de esperar que en el futuro cercano lo esté.
Su sintaxis es un tanto similar a la de Javascript, aunque tiene clases con herencia simple e interfaces. De modo opcional, puede emplearse tipado estático, soporta tipos genéricos, sobrecarga de operadores, lamdas y un modelo de concurrencia al estilo de los Actores de Erlang. Eso sí, el lenguaje sigue siendo "mono thread".
Aquí tenéis el problema de los números de Fibonacci implementado en Dart:
int fib(int n) { if (n <= 1) return n; return fib(n - 1) + fib(n - 2); } main() { print('fib(20) = ${fib(20)}'); }
Aquí tenéis un ejemplo de una clase:
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; }
Y aquí un ejemplo de una interfaz:
interface Shape { num perimeter(); } class Rectangle implements Shape { final num height, width; Rectangle(num this.height, num this.width); num perimeter() => 2*height + 2*width; }
Un ejemplo de tipos genéricos:
main() { print(new List<String>() is List<Object>); print(new List<Object>() is List<String>); print(new List<String>() is List<int>); print(new List<String>() is List); print(new List() is List<String>); }
Un ejemplo de uso de concurrencia:
// Receive mensajes class Printer extends Isolate { main() { port.receive((message, replyTo) { if (message == null) port.close(); else print(message); }); } } //Envía mensajes main() { new Printer().spawn().then((port) { for (var message in ['Hello', 'from', 'other', 'isolate']) { port.send(message); } port.send(null); }); }
Si queréis jugar un poco con este lenguaje lo mejor es que empleéis una pequeña consola web interactiva que hay en la página web del proyecto. La consola permite escribir código Dart y ejecutarlo en la web, mostrando errores de ejecución bastante intuitivos. Además, trae una serie de ejemplos ya hechos que se pueden modificar. Aquí podéis ver un programaen dicha consola mostrando los 10 primeros números de la serie de Fibonacci: