¿Qué es el dardo y por qué debería importarte?

En este tutorial, te presentaré el nuevo lenguaje de programación web de Google, Dart, y explicaré por qué te gustaría y qué necesitas saber al respecto. Aprenda sobre este nuevo idioma y forme algunas opiniones al respecto: ¿reemplazará realmente a JavaScript??


Que es el dardo?

Directamente de la boca del caballo (que se encuentra aquí):

Dart es un lenguaje de programación orientado a objetos, basado en una clase, de herencia única. El dardo se escribe opcionalmente ... y soporta reifiEd genéricos e interfaces.
Los programas de dardos pueden ser verificados estáticamente. El comprobador estático informará
Algunas violaciones de las reglas de tipo, pero tales violaciones no abortan la compilación
o excluir la ejecución.

Si eso es una gran y humeante pila de mumbo-jumbo para usted, permítame parafrasear lo anterior..

Basado en la clase: Dart espera que uses las clases. Si bien JavaScript está basado en clases, no se puede escribir Dart sin escribir clases..

Herencia única: Las clases pueden extender otras clases, pero solo una a la vez. Esta es una estructura común en la programación orientada a objetos. Unos pocos idiomas raros admiten la herencia múltiple, pero el consenso general es que eso causa más problemas de los que resuelve, por lo que la mayoría de los idiomas OOP se aplican a la herencia única..

Lenguaje de programación orientado a objetos: Esta declaración es un poco redundante, dado el bit "basado en clase" de antes. Pero es significativo: Dart es OOP a través y por medio. De hecho, recuerda bastante a Java (no JavaScript; Java), que también se basa en clases.

Opcionalmente escrito: La mayoría de los idiomas están escritos o no. JavaScript, por ejemplo, no lo es. Cuando definas una variable, se desentrañará. Puedes configurarlo en un Cuerda, entonces a un Número, y nadie se quejará (bueno, yo será). Además, puedes llamar Formación métodos en esa variable, y no tendrá ningún problema hasta que realmente ejecute esa línea de código. En contraste, se escribe Java. Cada variable debe ser declarada con un tipo, tal como Cuerda o En t. Y cuando se escribe una variable, no se puede poner un tipo diferente de valor en ella. Y si intentó llamar a un método que no existe en ese tipo, el compilador generará un error, informándole su error antes de ejecutar su código. C y sus variantes son otros lenguajes escritos, mientras que Ruby y Python son otros lenguajes sin tipo.

Opcionalmente, significa que, como ahora puede adivinar, tiene la opción de declarar un tipo para variables. Es tan simple como esto: puede dejar el tipo desactivado y el compilador no realizará ninguna comprobación adicional. Si proporciona un tipo, el compilador lo ayudará con los errores. ActionScript es un ejemplo de otro lenguaje opcionalmente escrito.

Este es un movimiento bastante inteligente, probablemente destinado a ayudar a acelerar la adopción. Los programadores de dardos serán probablemente los programadores de JavaScript dando el salto. Proporcionar soporte para un lenguaje sin tipo le da a los JavaScripters una curva de aprendizaje más fácil, mientras que proporciona una característica que muchos programadores insisten en que es esencial para la programación seria, que puede ser recogida en un momento posterior.

Genéricos reificados: Los genéricos son una característica del lenguaje que le permite escribir los elementos de una colección. Por ejemplo, un Formación En JavaScript no podemos garantizar que los objetos que contiene sean de un tipo específico (aparte del hecho de que JavaScript no es un lenguaje escrito). Sin embargo, los genéricos le permiten especificar que cada artículo en un Formación - o cualquier otro tipo de colección - debe ser de un cierto tipo, tal vez un Cuerda. Así si intentas insertar un Número en el Formación, Usted puede obtener advertencias. ReifiLos genéricos ed van un paso más y permiten que este tipo de seguridad pase el compilador. Se preserva la integridad del tipo en tiempo de ejecución.

Interfaces: Una interfaz es una técnica práctica orientada a objetos. Define un tipo sin definir funcionalidad. Sus usos son difíciles de resumir en una oración o en diez, basta con decir que son integrales de las técnicas avanzadas (y limpias) de programación orientada a objetos (es decir, patrones de diseño). Una vez que creas interfaces, lamentarás la falta de ellas en otros idiomas..

Comprobado estáticamente: Esto se remonta a lo que está escribiendo. Cuando la escritura está en uso, una variable con un tipo se considera "tipificada estáticamente" y, como tal, el tipo no se puede cambiar una vez que se ha declarado. Esto permite que el compilador (o "verificador estático") haga suposiciones sobre sus intenciones con su código; es decir, si declara una variable como Cuerda, entonces no deberías intentar llamar changeTimeZone en eso. Si lo hiciste (tal vez escribiste lo que pensamiento fue esa variable que sostiene el Fecha objeto), entonces el compilador puede avisarle del error sin tener que ejecutar el código.


Entonces, ¿qué es el dardo realmente?

Sí, tuve que proporcionar la explicación "oficial" de Dart. Pero eso puede o no puede satisfacerte. Esto es lo que Dart es, con el desarrollador web típico en mente.

Dart es el reemplazo de Google para JavaScript. Fue anunciado en octubre de 2011, y la intención general es proporcionar las mismas herramientas que JavaScript, solo como herramientas de poder. Como se explicó en el paso anterior, tiene muchas características orientadas a objetos que el programador de JavaScript típico no será familiar. Pero la mayoría de los programadores que están familiarizados con estas características los defenderán como esenciales para un desarrollo serio..

En resumen, Google siente que JavaScript no está preparado para la tarea de ser un lenguaje de programación "real", dada la cantidad de trabajo pesado que ha estado haciendo desde que el iPhone abrió un agujero en el zeppelin de Flash.

La esperanza de Google es que Dart sea compatible de forma nativa con todos los principales navegadores a largo plazo. Obviamente, eso no está sucediendo en este momento, dado que Dart todavía se encuentra en el modo de lanzamiento temprano, y no podemos esperar que Apple, Microsoft o Mozilla estén a bordo. Sin embargo, lo que hace que valga la pena ver a Dart ahora es que Google ha proporcionado un compilador para convertir el código Dart en JavaScript normal..

Personalmente, esto es algo que he estado deseando desde que recurrí a JavaScript, proveniente de ActionScript. Diga lo que quiera sobre Flash (y tenga la seguridad de que probablemente también lo haya dicho), pero ActionScript 3 es un buen lenguaje. Pasar de AS3 avanzado a JavaScript se ha demostrado que causa juramento. De hecho, he estado jugando con mi propio compilador de JavaScript (no llegué muy lejos y estoy muy contento de abandonar el proyecto), y quería algo que al menos me permitiera desarrollar algunas sutilezas, como clases reales, interfaces y tipos. , incluso si se compila en JavaScript prototípico, sin tipo. El proceso de compilación puede detectar algunos errores antes de ejecutar el proyecto, lo que supone un gran ahorro de tiempo..

Por lo tanto, independientemente de que Google se salga con la suya, es posible escribir proyectos Dart para la web hoy, y lo haremos al final de este tutorial. Con suerte, en el camino, te convenceré de que Dart es bastante prometedor..


¿Qué está mal con Dart?

Ahora que todos están entusiasmados con "JavaScript 2.0", ahora para la dura verdad. Solo Google tiene planes para incorporar soporte para Dart en su navegador. Nadie más ha expresado interés en eso. De hecho, se han hecho algunas declaraciones. en contra Dart, o al menos la idea de apoyar Dart de forma nativa, desde los propios creadores de navegadores..

Y mientras que los proyectos Dart pueden compilarse en JavaScript, hay necesariamente algunos gastos generales en este proceso. El compilador Dart no es como el compilador de CoffeeScript, que es más un proceso de uno a uno. Dart es su propio idioma, con bibliotecas y similares, y al compilarlo en JavaScript, por lo tanto, compila código de biblioteca adicional en el JavaScript resultante. Esto pesa actualmente más que una biblioteca como jQuery. Es probable que esto cambie a medida que el equipo de Dart encuentre la compilación, pero básicamente es una biblioteca jQuery-ish que se requiere para normalizar las diferencias del navegador, y también un poco de "azúcar" adicional para ayudar a que JavaScript sea un poco más honesto sobre su naturaleza dinámica. Este tipo de peso adicional no es terrible, pero si está creando un widget de interfaz de usuario simple para un sitio móvil, tal vez Dart no sea la mejor opción. Brillará más con las aplicaciones web de mayor escala que dependen de JavaScript significativo.

Por último, Dart está actualmente en desarrollo. Eso es emocionante, y no es algo "incorrecto" con Dart per se, pero si comienza a desarrollar Dart ahora, existe una cierta posibilidad de que la API cambie, o que las cosas no se documenten completa o correctamente, y la cantidad de la información en la web es menor que, por ejemplo, la cantidad que puede encontrar sobre jQuery. Está a la vanguardia y puede que no sea para ti o para un proyecto determinado..


Lo que es impresionante sobre Dart?

Al mismo tiempo, está a la vanguardia, y eso es increíble. Invertir en poco tiempo ahora para aprender que Dart podría ubicarse en un lugar agradable una vez que Dart esté más estable. Si te involucras ahora, incluso tienes la oportunidad de ayudar a moldear el idioma. La lista de correo de Dart en los Grupos de Google a menudo tiene un lado a otro entre las personas que sugieren ideas y los ingenieros de Google que responden a esa idea. A menudo se consideran las ideas aportadas por los usuarios y no es raro verlas incorporadas.

Ya he discutido las ventajas de un lenguaje mecanografiado, orientado a objetos, y probablemente no hace falta decir que esos rasgos también son impresionantes.

Dart también recuerda bastante a Java, y eso debería ser increíble si eres más un programador de Java (o C) que busca ingresar al desarrollo web. Dart debería proporcionar una mejor transición a ese mundo que JavaScript.

Por último, Dart no es solo un competidor de JavaScript. Es un lenguaje completamente nuevo y está preparado para ejecutarse en cualquier lugar. Se está utilizando en el lado del servidor, a la Node.js, y promete ser otra herramienta generalizada, como Ruby o Python..


Si te importa?

Esta es, por supuesto, una pregunta cargada, y estaría invitando a una Inquisición basada en comentarios, sin importar cómo responda. Pero responderé.

Probablemente ya le importará o no le importará, dependiendo de cuánto le molesten los problemas de Dart o de las ventajas de Dart. Los dos pasos anteriores le brindan mucha información que lo llevará a su propia conclusión..

Si eres el tipo de persona cuya idea de programar JavaScript es buscar en la web los complementos de jQuery e instalarlos en tu página HTML, entonces Dart probablemente no te ofrezca mucha emoción. Siéntete libre de no importarte. Y permítame ahorrar un montón de tiempo y revelar que baso el resto de este tutorial en el supuesto de que al lector le importa, al menos lo suficiente como para explorar.

Sin embargo, si usted es el tipo de desarrollador de aplicaciones para usuario que realmente cree en JavaScript orientado a objetos, intenta generar errores en sus scripts y tiende a escribir más JavaScript que HTML, entonces puede ser que un paleto alguien que se preocupa por una buena programación, independientemente del lenguaje o la plataforma, en cuyo caso usted podría preocuparse por Dart. Al menos te lo debes a ti mismo para probarlo..

En mi opinión, Dart muestra mucha promesa y tiene un lugar en la programación web. Pero no creo que vaya a reemplazar o incluso a compensar el dominio de JavaScript sobre las secuencias de comandos en las páginas HTML. Creo que encontrará un lugar con las aplicaciones web más serias, pero a menos que los creadores de navegadores (que no sean Google) acepten construir un Dart VM, lo que no creo probable, el destino de Dart está relegado a los experimentos de Chrome y en general. aplicaciones web de escala. Las tareas simples de scripting, como un guión de interactividad en una página estática, no se beneficiarán enormemente de Dart.

Dicho esto, creo que siempre vale la pena aprender sobre nuevas cosas. Puede aprender que lo nuevo no vale su tiempo, pero debe formular esa opinión por su cuenta, a través de la experiencia. Brindaremos algo de experiencia en este tutorial, así que si te sientes aventurero, prepárate para Dart.


Conclusión

Esperamos que esta breve discusión sobre Dart haya despertado su interés en este nuevo lenguaje que puede o no puede afectar la web. Si desea probarlo, eche un vistazo a mi tutorial exclusivo de Facebook que se ensuciará las manos con un simple proyecto Dart.

(Si no estás en Facebook, no te preocupes. El tutorial estará en el sitio principal de Activetuts + eventualmente, y tenemos mucho más contenido de Dart en fila por el momento).

¡Gracias por leer! Comparte tus opiniones sobre Dart en los comentarios..