Google Dart

google_dart_logo_thumb180-5224513 Hace algunas semanas atrás (La verdad que no recuerdo exactamente cuanto tiempo) Google anunció Dart. Si bien algo ya se había estado hablando, con la aparición de V8, otros desarrollos como Node.Js y cosas extrañas similares, lo cierto es que la gran G se traía entre manos la idea de “mejorar” uno de los lenguajes más difundidos en la Web, JavaScript.

Y cuando digo de mejorar, me refiero a llevar este hermoso lenguaje a algo más similar a si primera parte del nombre. ¡Sí, Java! En fin, más allá de lo que podamos pensar o decir, el punto es que la empresa está ofreciéndonos el código para que bajemos y probemos, así como un portal para ejecutar código si no tenemos muchas ganas de ponernos a renegar con instalaciones y configuraciones.

En todo caso, por lo que se lee en la documentación y el foro, la idea final sería promover el lenguaje para que los navegadores implementen esta versión más robusta del ya robusto JavaScript. (Y después dicen que Microsoft es el que quiere meter estándares de prepo). Pero veamos un ejemplo.

main() {
  var c = new MyClass();
  c.DoSomething();
}

class MyClass {
  void DoSomething() {
    print('Hola Mundo!');
  }
}

El link para probarlo aquí. Esto sería lo mismo que haber hecho algo por el estilo en JavaScript:

var c = new MyClass();
c.DoSomething();

function MyClass() {
    DoSomething: new function() {
        alert('Hola Mundo!');
    }
}

Para este ejemplo, posiblemente no haya mucha diferencia y posiblemente la sintaxis de Java sea más interesante o fácil de seguir. De cualquier manera, creo que habrá que estar atentos ante el soporte del lenguaje por algunos navegadores y no por otros. Una historia que ya hemos vivido y no creo que sea interesante volver a vivir.


2 comentarios on “Google Dart”

  1. Seldaiendil dice:

    El ejemplo que has puesto en Javascript no es funcional, para crear el método de la clase sería necesario escribirla en this (dentro del constructor) o en el prototipo de la clase:

    This:

    function MyClass() {
    this.DoSomething = function() {
    alert(‘Hola Mundo!’);
    };
    }

    Prototipo:

    function MyClass() { }
    MyClass.prototype.DoSomething = function() {
    alert(‘Hola Mundo!’);
    };

    O:

    function MyClass() { }
    MyClass.prototype = {
    DoSomething: function() {
    alert(‘Hola Mundo!’);
    }
    };

    Personalmente desecho utilizar this en el constructor porque debería crearse el método y aplicarse en cada instancia por lo que opino que sería mejor utilizar el prototipo. Finalmente el ejemplo queda así:

    Dart:

    main() {
    var c = new MyClass();
    c.doSomething();
    }
    class MyClass {
    doSomething => print(“Hola Mundo!”);
    }

    Javascript:

    var c = new MyClass();
    c.doSomething();

    function MyClass() { }
    MyClass.prototype.doSomething = function() {
    alert(“Hola Mundo”);
    }

    Pero el ejemplo sería mucho más claro si incluyeramos getters y setters (el tipado es opcional).

    Dart:

    main() {
    var c = new MyClass();
    c.doSomething(c.name);
    }

    class MyClass {
    String _name = “”;

    String get name() => _name;
    set name(String value) => _name = value;

    doSomething(text) => print(“Hola $text!”);
    }

    Javascript:

    var c = new MyClass();
    c.doSomething(c.getName());

    function MyClass() {
    this._name = “”;
    }
    MyClass.prototype.getName = function() {
    return this._name;
    };
    MyClass.prototype.setName = function(value) {
    this._name = value;
    };
    MyClass.prototype.doSomething = function(text) {
    alert(“Hola ” + text + “!”);
    };

    • Te agradezco por la colaboración. De cualquier manera no entiendo el motivo por el cual no lo consideras funcional. Los dos ejemplos del post funcionan perfectamente.
      Podríamos ponernos a discutir sobre el alcance de las distintas funciones. Si queremos que sean o no accesibles desde fuera. Pero en todo caso, el objetivo del post no es aprender estas diferencias si no ver el comportamiento sintáctico de las dos propuestas. La clásica de JavaScript y la propuesta por Dart.


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s