Tag Archives | javascript

Dart

Google DartEl pasado 11 de octubre, en la conferencia GOTO Aarhus, los ingenieros de Google Lars Bak y Gilad Bracha presentaron DART, el nuevo lenguaje de programación creado por Google.

A pesar de la avalancha de artículos en multitud de publicaciones -incluida, por increíble que parezca, prensa nacional- creo que aún existe mucha confusión sobre que es realmente DART y cual es el objetivo final de la compañía de Mountain View.

¿Alguien se ha parado a pensar la ingente cantidad de tiempo, dinero y recursos que se necesita para crear un nuevo lenguaje con el ambicioso objetivo de convertirlo en la nueva lingua franca del desarrollo web? ¿Por qué Google se mete en este jardín? Deberíamos comenzar leyendo este correo interno donde se pueden entrever algunas respuestas.

Los hechos

  • Google encuentra errores fundamentales en JavaScript que suponen un incremento exponencial de la dificultad para crear aplicaciones web complejas. Por ejemplo, que sólo exista un tipo primitivo Number, en vez de uno específico para números enteros y otro para decimales.
  • Ante este problema, los ingenieros proponen dos soluciones:
    • Apoyar una evolución incremental del lenguaje con compatibilidad hacía atrás (proyecto Harmony)
    • Desarrollar un nuevo lenguaje desde cero que conserve la naturaleza dinámica de JavaScript, pero tenga un mejor rendimiento y para el que sea más fácil crear herramientas para grandes proyectos (proyecto Dash, finalmente renombrado DART)
  • La primera solución la más sencilla, pero también la menos óptima. La segunda opción es mucho más complicada de  llevar a cabo, porque implica convencer a terceros, los fabricantes de navegadores, para que implementen de forma nativa el lenguaje. Por eso, DART debe nacer, además de con una máquina virtual que sea capaz de interpretarlo, con un compilador que permita transformarlo en JavaScript que se ejecute en aquellos navegadores que no lo soporten. Casi nada.

Las especulaciones

Pero… ¿Por qué le importa tanto JavaScript a Google? Porque, las mismas características que permitieron que el lenguaje se extendiera, suponen un verdadero quebradero de cabeza para proyectos de gran tamaño. Probablemente, no los que desarrollamos el común de los mortales, pero si los que afrontan grandes corporaciones como… oh si, Google.

¿Alguien se ha parado a pensar la ingente cantidad de tiempo, dinero y recursos que se necesita para crear un nuevo lenguaje con el ambicioso objetivo de convertirlo en la nueva lingua franca del desarrollo web?

Vale. A GoogleJavaScript se le queda pequeño para el tipo de proyectos en los que esta metido, pero ¿No tenía GWT para resolver ese problema?

GWT es un toolkit que permite desarrollar en Java, detectar errores en tiempo de compilación y generar JavaScript compatible para todos los navegadores como resultado de dicha compilación. Entonces ¿Por qué desarrollar DART? Quizás por ese pequeño detalle de que GWT es un toolkit Java y quizás -insisto de nuevo en el carácter de suposición, no de afirmación digna de gurú mesiánico- Google tiene un objetivo mucho más ambicioso que la comunidad Java: los desarrolladores de otros lenguajes de servidor y, sobre todo, los desarrolladores de front-end que sólo trabajan con HTML, CSS y JavaScript.

Y, si es cierto que Google cree que el futuro es HTML5 y que el uso de dicho lenguaje más JavaScript -perdón, DART- es el marco de trabajo ideal para desarrollar más fácilmente sus próximos GMail, Docs o Calendar, no sólo para todos los navegadores convencionales, sino para dispositivos móviles -la sombra de iOS es alargada- a la compañía le interesa que haya una rápida y calurosa adopción por una masa crítica de desarrolladores que obliguen a los fabricantes a implementar DART de forma nativa.

La Conclusión

¿Debemos ponernos a aprender DART como si no hubiera mañana? ¿Nos pasamos al CoffeScript sin mirar atrás? ¿Será Harmony la piedra filosofal? NO TENGO NI IDEA. Yo no soy un gurú, pero lo que si se es que, hoy por hoy, lo que funciona en todos nuestros navegadores es pura y simplemente JavaScript -en concreto la versión ECMAScript 3- y que en mi escritorio hay un libro de más de 1.000 páginas llamado “JavaScript. The Definitive Guide” que me gustaría tirarle a más de uno a la cabeza para ver, si de una vez por todas, se ponen de acuerdo y nos dejan tranquilos a los que no queremos crear el lenguaje definitivo para el desarrollo front-end, sino simplemente aplicaciones que, a ser posible, funcionen en todos los lados.

Bola Extra

Comments { 23 }

node.js

No soy un desarrollador al uso. No me siento atraído por un lenguaje o tecnología, ni por su belleza intrínseca, ni por la teórica potencia de su diseño o sintaxis, sino por la aplicación práctica y real de los mismos para construir cosas. Cosas reales.

Aún sigo asistiendo atónito a luchas infantiles sobre la calidad de tal o cual lenguaje, librería, framework o sistema de control de versiones. Idioteces. Casi todas las tecnologías me parecen interesantes, pero, últimamente, he de reconocer que hay una que me llama la atención mucho más que el resto: node.js

node.js logo

Node.js es una librería de lectura y escritura, orientada a eventos, que se ejecuta sobre V8, el rapidísimo interprete de JavaScript de Google. Simplificando: permite ejecutar JavaScript en servidor con capacidad de consultar y persistir datos por cualquier canal de lectura/escritura como un fichero,un socket o una base de datos. Simplificando de nuevo: con las nuevas capacidades de lectura y escritura, aparece la posibilidad de crear aplicaciones completas desarrolladas completamente en JavaScript.

JavaScript es un lenguaje de juguete que sólo utilizan bohemios, gente de mal vivir o, peor aún… ¡diseñadores!

¿Y qué?” -pensaréis muchos- “JavaScript es un lenguaje de juguete que sólo utilizan bohemios, gente de mal vivir o, peor aún… ¡diseñadores!“. Puede ser, yo antes creía algo parecido, pero os contaré el proceso mental que me llevo a convencerme de que estaba equivocado.

The path of Bo: el camino del guerrero

Ya he comentado que, para mi la tecnología no es el fin, sino el camino. Así que, os contaré donde empezó el camino que me llevo a node.js: movilidad. Creo que el futuro está en los dispositivos móviles y que las nuevas aplicaciones serán móviles desde su concepción.

El gran problema de la movilidad es la variedad de plataformas existentes: iOS, Android, RIM, Windows Mobile… Un equipo pequeño puede hacer grandes cosas en el sector móvil, pero es imposible que pueda asumir el desarrollo multiplataforma.

Mi camino a node.js

Pero aparece HTML5 y, con el, un montón de nuevas funcionalidades (base de datos local, posibilidad de trabajar offlinewebworkerswebsockets, canvas…) que permiten crear aplicaciones increíbles casi tan potentes como las nativas, pero basadas en el navegador. Un navegador que, en el caso de las dos plataformas principales, además está basado en el mismo motor: Webkit, compatible con una gran mayoría de esas funcionalidades avanzadas.

¿De verdad se necesita una aplicación móvil nativa? Yo creo que el 99% de las aplicaciones móviles actuales se podrían hacer con HTML5, ahorrando costes y ampliando el mercado de las mismas.

HTML5 ha revolucionado el desarrollo móvil

Además, existen aplicaciones como PhoneGap que empaquetan una aplicación HTML5 para que se distribuya como una aplicación nativa en los markets de todas esas plataformas, haciendo prácticamente indistinguible para el usuario las aplicaciones nativas y las desarrolladas con HTML5.

Una vez convencido de que HTML5 ha revolucionado el desarrollo móvil y comenzar a desarrollador con el…  ¿Adivináis como se puede trabajar con sus nuevas funcionalidades? Efectivamente, JavaScript.

Y al aprender JavaScript en serio como parte del proceso que te llevará a dominar HTML5, es donde empiezas a ver todo el sentido a node.js porque ¿No os parece elegante y revolucionario poder utilizar -por primera vez en el desarrollo web- el mismo lenguaje de programación en el cliente y en el servidor?

Mucho más sobre node.js

Por supuesto, node.js es mucho más que JavaScript ejecutado en servidor. Su diseño permite crear aplicaciones ultraescalables, al estar basado en programación asíncrona y orientado a eventos en vez de a hilos de ejecución. Podéis aprender muchas más cosas geniales sobre node.js en este genial artículo del amigo Gimenete.

Bonilla, no tienes ni idea: conclusión

Siempre hay alguien que piensa distinto que tú. Las críticas constructivas son positivas y yo no intento adoctrinar sobre el uso de node.js. He intentado explicar como he llegado hasta el y porque me gusta desde una perspectiva personal.

No soy un gurú, pero tampoco hay que confundir el intento de concreción -sólo intento, que este artículo ya va por las 1000 palabras- con la falta de unos conocimientos técnicos mínimos:

  • Sí, ya sé que si se aplica el mismo paradigma de programación en Java, por ejemplo, esta es tan rápida o más que node.js y consume la misma memoria o menos.
  • También admito que la idea de “JavaScript en el servidor” no es nueva y que ya hubo otros intentos antes.
  • Reconozco que querer desarrollador con el mismo lenguaje en cliente y servidor es algo muy personal y subjetivo. Y no tiene porque ser lo más óptimo.
  • Sé que hay aplicaciones para móviles con todo el sentido del mundo que sean nativas, como los que hacen un uso intensivo de los gráficos o de las posibilidades del dispositivo en si. Cuando digo que la mayoría de aplicaciones pueden hacerse con HTML5, me refiero a las típicas aplicaciones corporativas que sólo manejan formularios, listados y gráficos estadísticos.
  • Y sí, no hay una compatibilidad uniforme de las características en los navegadores actuales. Es más, la gran mayoría de la base instalada de navegadores de escritorio, aún no son compatibles con HTML5.

Siempre habrá peros a cualquier stack tecnológico que alguien elija, pero este me parece un buena base de partida para el desarrollo de aplicaciones móviles. Estoy expectante por conocer las propuestas y alternativas de la gente en los comentarios.

Bola Extra

Comments { 23 }

Cuatro libros imprescindibles para convertirte en un gurú de JavaScript

JavaScript ha renacido. De un papel secundario y denostado por los programadores, que lo consideraban un lenguaje menor destinado a diseñadores y maquetadores, ha pasado a ocupar un papel central en el mundo del desarrollo.

La revolución de HTML5, que utiliza nuevas APIs de Javascript para exponer muchas de sus nuevas e increíbles características -como el trabajo con bases de datos locales, varios hilos de ejecución o la optimización de las comunicaciones mediante WebSockets- ha sido el principal responsable de todo esto.

Pero, por si esto fuera poco, la fulgurante aparición de Node.js -que permite escribir código JavaScript tremendamente escalable y eficiente en el servidor, con todo lo que eso significa, fundamentalmente acceso a datos persistentes- ha supuesto un punto de inflexión: un programador puede crear aplicaciones completas utilizando sólo JavaScript.

¿Te ha convencido todo esto del potencial de JavaScript? El problema es que, los clásicos programadores del lado servidor, no sólo debemos aprender JavaScript, sino que tenemos que desaprenderlo primero. Casi todos sabemos y utilizamos JavaScript. Quiero decir… casi todos sabemos y utilizamos MAL JavaScript. Porque, hasta hace nada, pensábamos que valía para validar formularios y poco más.

Por eso, la semana pasada, pedí ayuda pública para que gurús y expertos en JavaScript me recomendaran libros que ayudarán a empezar con mi deseducación desde cero: reaprendiendo lo básico del lenguaje. Estos son los cuatro libros con los que pretendo empezar la senda del guerrero que me lleve a convertirme en un arma letal del JavaScript:

JavaScript: the Definitive GuideJavaScript: The Definitive Guide

Recomendado por Oriol Torras.

El típico manual de referencia que no puede faltar en la mesa de ningún “cirujano” que esté “destripando” JavaScript.

Reconozco que, cuando estoy aprendiendo un lenguaje, me gusta tener un libro físico -el manual- al lado del teclado y consultarlo una y otra vez.

JavaScript for web developersProfessional JavaScript for Web Developers

Recomendado por Guillermo Pascual.

Un excelente punto de partida para los programadores con experiencia en desarrollo web, que han perpetrado atrocidades en JavaScript con más o menos acierto y que quieren convertirse en ninjas del navegador.

Con la calidad a la ya que nos ha acostumbrado la editorial Wrox.

JavaScript: the Good PartsJavaScript: the Good Parts

Recomendado por Beatriz Nombela.

Un tratado filosófico sobre JavaScript que va más allá que un simple manual. Un billete para descubrir un lenguaje ligero, elegante y expresivo.

Puede ser el libro que necesitas para deshacerte de prejuicios absurdos antes de abordar el reto de dominar JavaScript.

JavaScript PatternsJavaScript Patterns

Otra recomendación de Guillermo Pascual.

Una vez que has dominado el lenguaje, el siguiente paso es conocer los patrones y buenas prácticas que mejor se adaptan a las características del mismo.

Con código de ejemplo para explicar cada patrón y buenos consejos para mejorar el rendimiento.

¡La Bonitienda!

Con estos cuatro libros, creo que tengo lectura para todo el verano y parte del otoño. Ya os iré contando mis aventuras y progresos.

Aprovecho este artículo para presentaros la Bonitienda -que lleva dos días colgada el blog sin que ninguno os hayáis dado cuenta- donde iré colocando todos los libros, películas o programas de los que vaya hablando en los diferentes artículos.

Por el momento, es una simple tienda afiliada de Amazon, con todo lo bueno (gastos de envío gratis a España, tracking del envío, devoluciones) y lo malo (control limitado del aspecto de tu tienda. Ej. precio en libras por defecto) que eso supone.

Si alguno tenéis alguna recomendación o creéis que hay algún libro más que falte en esta lista, por favor, hacérmelo saber.

Comments { 11 }