2011/10/11

Dart y sus scripts aislados


Característica que en los breves textos disponibles del sitio oficial de Dart se hace notoria: Aislamiento entre etiquetas de scripts.

Es decir, cuando un archivo html  contiene más de un script, entre estos no procede la comunicación, el código de uno no participa de la funcionalidad del código de otro. Las etiquetas de script son habitaciones separadas en un hotel llamado html. Los recursos entre entiquetas script deberán compartirse explicitamente con un #import.

Se infiere que el mismo mecanismo va a aplicar para archivos ejecutados por la máquina virtual en un entorno distinto al navegador de Internet. No he encontrado una aclaración de si este aislamiento es forzosamente heredado al código que se compila de Dart a JavaScript.

2011/10/10

Un lenguaje de programación llamado Dart

Por supuesto que en principio voy a jugar con él, es el lenguaje de programación nuevo que está asomando la cara desde los laboratorios de su papá grandote que se llama Google.

El anuncio ha sido que Dart está pensado para invadir el territorio ocupado por JavaScript, pero aún no hay pasos avanzados en tal sentido. Se puede inferir que a mediano plazo se podría ver a Dart integrado a Chrome. La plataforma instalada de Chrome tiene suficientes usuarios para que los programadores pensemos en darle una oportunidad al nuevo lenguaje sin temor a que los resultados pudieran quedar en el completo olvido. El anuncio en concreto se refiere a que estará disponible un compilador de Dart a JavaScript y también debe haber cierta expectativa en hacer experimentos del lado del servidor, porque Dart va a venir con su propia máquina virtual. El nuevo lenguaje luce más o menos así:

main() {
  //Hago una variable y le doy un valor
  String nombre = 'Yo Soy Tu Infierno';
  //Llamo a la función saluda, le paso mi variable e imprimo el resultado
  print(saluda(nombre));
}

// La función saluda toma la cadena y devuelve un saludo
String saluda(String quien) 
{ 
  return 'Hola, ${quien}, es un condenado gusto verte.'; 
} 

Prácticamente es como no necesitar aprender otro lenguaje, si ya conoces uno en que los comentarios comienzan con // o con /* y las funciones se envuelven con { ... }, entonces vas a poder usar Dart sin robarle horas a tu vida para aprenderlo.

Dart no impone que las variables se declaren con tipo, a esta característica se le ha llamado "tipado opcional", el siguiente ejemplo funciona igual:

main() {
  //Hago una variable y le doy un valor
  var nombre = 'Yo Soy Tu Infierno';
  //Llamo a la función saluda, le paso mi variable e imprimo el resultado
  print(saluda(nombre));
}

// La función saluda toma la cadena y devuelve un saludo
saluda(quien) 
{ 
  return 'Hola, ${quien}, es un condenado gusto verte.'; 
} 

Dart viene con clases, interfaces y todo un conjunto de características que no voy a cubrir ahora mismo; de haber oportunidad, iré tocando el tema en futuras entradas al tiempo que voy explorando el lenguaje, pero la información pertinente está disponible desde ya.


Aún es muy temprano en la vida de Dart, no es posible aún bajar la máquina virtual o el compilador a JavaScript que se han mencionado en dartlang.org. Hoy, el único modo de experimentar con el lenguaje es con el Dartboard, un intérprete en el sitio web.

Estoy pensando que Google, al anunciar este lenguaje en una etapa tan temprana, más que hacerlo del conocimiento de la comunidad de desarrolladores de JavaScript, está mandando un mensaje estratégico a la industria. Creo que la palabra clave es VM, creo que el mensaje es: Los asuntos con la otra máquina virtual, eventualmente no tendrán por qué ser un problema.

2011/09/19

Minimized code

After following some links taken from this, there's some things that I want to keep:

"[Code] is stuff lying around and it has substantial cost of ownership. It might do us good to consider what we can do to minimize it.


I think that the future belongs to organizations that learn how to strategically delete code."

Michael Feathers
http://awe.sm/5VLY7

"My minority opinion is that a mountain of code is the worst thing that can befall a person, a team, a company. I believe that code weight wrecks projects and companies, that it forces rewrites after a certain size, and that smart teams will do everything in their power to keep their code base from becoming a mountain." 

Steve Yegge
http://steve-yegge.blogspot.com/2007/12/codes-worst-enemy.html