Yo diria que peor en si que la sintaxis, a pesar de lo que he discutido, es que no tiene un caso de uso poderoso que lo justifique. Es solo un javascript "mejorado" pero en que que realmente beneficia?
Veamoslo desde el punto de vista de su publico objetivo, programadores de paginas web.
Lo unico que tiene de medio-gracia es que el sistema de libreria, pero:
- No tiene un modelo de DOM mejorado. O sea, algo que realmente destaque VS tener una lib como mootools o Jquery.
- No tiene una mejor respuesta a generar html dinamicamente
- No tiene un mejor modelo de asincronia, que realmente facilite interfaces fluidas
- No hace mas facil aplicar efectos, transiciones ni demas cosas del CSS3, o Canvas o todo eso
- No incorpora un sistema de validación, integración de manejo de formularios a nivel de lenguaje, ni nada parecido
- No veo como reduce el codigo necesario para hacer las tareas tipicas, ni como supera a jquery y familia
- Ni le veo una integracion profunda con html5, css3 ni demas tecnologia emergente
Todo eso se puede resolver con librerias. Que es lo mismo que se hace con JS. La gracia de inventar un nuevo lenguaje es volver en keywords cosas que requieren librerias y mucho codigo redundante.
Un ejemplo, son como apple metio los "
blocks" para hacer multi-hilo facil:
Código PHP:
//A partir de aqui la descarga es asincronica, pero el codigo se ve sincronico
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// Esto es en el background
UIImage *avatarImage = nil;
NSURL *url = [NSURL URLWithString:urlString];
NSData *responseData = [NSData dataWithContentsOfURL:url];
avatarImage = [UIImage imageWithData:responseData];
NSLog(@"Finishing: %@", urlString);
if (avatarImage) {
//Retorna al thread main para actualizar la GUI sin bloquear
dispatch_async(dispatch_get_main_queue(), ^{
self.image = avatarImage;
});
dispatch_async(dispatch_get_main_queue(), completion);
}
else {
NSLog(@"-- impossible download: %@", urlString);
}
});
Blocks es sintaxis que ahorra un monton de escribir con clases tipo thread, asincronismo y todo eso (y en el caso de obj-c, que es muy "verbosed" ahorra un MONTON). Eso es la gracia de un lenguaje...
Otro ejemplo es
node.js
Código PHP:
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
Una extension a JS que hace facil hacer servidores HTTP multi-hilos asincronicos. Esta enfocado en ese caso de uso y se nota...