Buscar
Social
Ofertas laborales ES
« Disponibles la mayor parte de las presentaciones de la JavaOne 2011 | Main | Colombia se gradua de la incubadora »
martes
oct112011

Google anuncia una preview de Dart, su lenguaje para reemplazar JavaScript

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:

PrintView Printer Friendly Version

EmailEmail Article to Friend

Reader Comments (7)

Ayer noche me pasé un rato agradable trasteando con el nuevo engendro.

Además de lo comentado por Abraham, hay agregar que no solo piensan que funcione en el navegador, sino que una máquina virtual lo pueda ejecutar en el servidor. Eso me llama mucho la atención, ya que se podrían escribir códigos de validación que valieran tanto en cliente como en servidor. ¿Podrá funcionar en tablets o teléfonos? Los creadores lo insinuan.

Otras características del lenguaje que me agradaron mucho son:
- Tipos flexibles: puedes declarar una variable con var o con un tipo estricto.
- Constructores nominados (adicionales a los clásicos construtores anónimos)
var cosa = new Cosa.compleja("Dato1", "Dato2"),
- Constructores factoría. ¡Ah! Y los constructores sin cuerpo
Punto(this.x, this.y);
- El manejo de accesores (getters) y mutadores (setters) es mucho mas congruente y sencillo.

Por supuesto, ya hay críticas. Hay quién dice que era innecesario porque ya se está desarrollando ecma.next, o que no es buena idea meter otro lenguaje mas porque ya hay demasiados.

Yo creo que Dart no solo está apuntando a Javascript o a EcmaScript. ¿Querrá ser competencia de lenguajes como Groovy o Java? ¿Querrán usarlo en Android? Ni idea. Son solo especulaciones mías.

octubre 11, 2011 | Registered Commenterdarkcavie

Cada tres meses, más o menos, un lenguaje nuevo.
Esta "Torre de Babel" va a necesitar que le refuercen los cimientos, o se caerá :)
Mientras tanto, las estadísticas de Tiobe muestran, mes a mes, dónde está el uso real de los lenguajes.
Me pregunto si dentro de 6 o 12 meses, este nuevo "invento" estará antes o después de la posición 50 en Tiobe. Teniendo en cuenta las posiciones que tienen algunos lenguajes, que ya llevan años en desarrollo y uso, y siempre logran "hacer bastante ruido" en los medios...
No los voy a mencionar por sus nombres, porque seguro que me tirarán piedras :D

octubre 11, 2011 | Registered Commenterchoces

Pues, a mí, me parece bien. Quizás estos lenguajes no lleguen a ninguna parte, pero pueden aportar ideas que puedan llegar a ser usadas en versiones más actuales de otros lenguajes.

¿Problemas? Los típicos de cualquier lenguaje nuevo. Si es capaz de aportar algún tipo de ventaja con respecto a lo ya disponible, y el rendimiento es bueno (recordemos a Go), pues, siendo un lenguaje flexible, y con una notación conocida, puede hacerse con su nicho.

Lo de que se pueda emplear tanto en el lado cliente como en el servidor me ha parecido, sencillamente, genial. Además, según la página del lenguaje, ya está soportado por Chrome y Firefox 4+.

Yo lo voy a seguir de cerca.

octubre 11, 2011 | Registered Commentergogomca

Erlang no Erland. Erland suena a parque de diversiones. :D

octubre 12, 2011 | Unregistered CommenterEmanuel

Corregido, gracias.

octubre 12, 2011 | Registered CommenterjavaHispano

No es la primera vez que escucho la analogía con la torre de Bábel... véanse el nivel de lenguas que hay en el mundo y cuando se intento crear el esperanto, ¿qué paso? La verdad, que tanto lenguaje es bueno por la diversidad, pero sí os fijáis tanta diversidad genera un alto grado de incomunicación...

En fin, al grano. A mí Google (debe ser que me tira el nombre) junto con Javascript me parece una combinación interesante, la verdad.

Saludos,

diciembre 11, 2011 | Unregistered CommenterJaime

PostPost a New Comment

Enter your information below to add a new comment.

My response is on my own website »
Author Email (optional):
Author URL (optional):
Post:
 
Some HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>