Dart

Google ha lanzado un nuevo lenguaje, DART, con el objetivo de convertirlo en la nueva lingua franca de la web ¿Te has parado a preguntarte por qué?

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, [highlight]las mismas características que permitieron que el lenguaje se extendiera, suponen un verdadero quebradero de cabeza para proyectos de gran tamaño[/highlight]. Probablemente, no los que desarrollamos el común de los mortales, pero si los que afrontan grandes corporaciones como… oh si, Google.

[quote]¿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?[/quote]

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– [highlight]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[/highlight].

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

  • Me quedo con la pregunta que hace John Resig en su twitter: “Why is Google putting time and effort into changing JavaScript when the DOM is what needs fixing?” Esto del DART para mi es, pan para dar de comer a algunos, nada más.

    • La idea es buena, pero estas Googladas de “ahora voy y me invento un lenguaje nuevo” no se yo si saldrán bien (creo que aún están buscando como meter Go con calzador en otra empresa que no sea suya).

      Ves DART y, en cuanto llegas a la parte del MIME Type diferente piensas “OMG… esto va a costar eones ponerlo en marcha…”.

      Veremos, veremos…

  • Daniel López

    Pues yo, sin que sirva de precedente, estoy más de acuerdo con Google que al reves. JavaScript es lo que es por su ubicuidad, no por ser un lenguaje sensacional y fantástico y para ser sinceros, es un destornillador que lleva años usándose para clavar clavos, alicatar, embaldosar y todo lo que se le pone por delante a una página HTML… ¡por que no hay otra cosa!

    Yo uso JS todos los días y francamente, como lenguaje deja mucho que desear. Que la mejor/más común herramienta sea un depurador ya dice algo (igual que que en algunos S.O. lo imprescindible sea un AV 😉 ).

    El negocio de Google es el navegador y aplicaciones que corran en el, a poder ser sin dependencias externas ni partes nativas y “engendros JavaScript” como el Gmail/GoogleDocs son proyectos que empiezan a tener ya sus dimensiones y ellos son los mejores indicados para saber qué ocurre cuando la cosa crece. Que por una vez decidan jugar a las dos bandas también es indicativo de que saben que por su cuenta, como suelen ir, no van a conseguir nada.

    Por mí, si consiguen adecentar un poco la programación de páginas web y hacerla más robusta y mantenible, un aplauso para ellos y mi agradecimiento.

    En cuanto a otros temas, GWT no sólo es un toolkit para programadores Java, dejando fuera a muchos desarrolladores web como dices, si no que no es adecuado para todo y al fin y al cabo lo que hace es generar JavaScript, que es lo que se quiere quitar. GWT es un parche y simplemente han subido las apuestas para, en vez del parche, intentar solucionar el problema original.

    Lo de por qué arreglar JavaScript en vez de arreglar DOM me parece una pregunta falaz… como si Google tuviera la responsabilidad de arreglarlo todo y en el orden que le parece a uno.

    Lo de no tener que cambiar de lenguaje y crear aplicaciones que funcionen en todos lados… es una visión algo ingenua del mundo. Si fuera por eso JavaScript ni existiría y estaríamos todos procesandolo todo en el servidor… pretender que “el progreso” se detenga cuando a uno le va bien es esperar demasiado ;). Be water my friend :P.

    • Liberté, Fraternite y Qualité! Muy buen comentario Dani.

      Entonces, tu apuestas decididamente por DART y ni GWT ni gaitas… tendremos que ver lo bien que funciona ese compilador a JavaScript…

      • Daniel López

        No, no digo que GWT no sirva. Simplemente hay que admitir que es un parche para no escribir JavaScript, y como tal tiene sus limitaciones. Mejor que escribir JavaScript a pelo en según que proyectos es, pero no es “la solución definitiva”.

        De todas formas, a no ser que ocurra una revolución, a DART le costará llegar, si es que llega. Claro que Google es Google y pese a cagarla de vez en cuando, sigue siendo un jugador de altura.

  • Yo soy de los que le tienen alergia a Javascript. Para enriquecer un poco las aplicaciones está bien, pero hay que reconocer que no fue pensado para hacer aplicaciones grandes. Miedo me da tener que empollarme ese libro de 1000 páginas para saberlo todo de JS. 
    Si, TODO se puede hacer con JS, y con la suficiente disciplina y conocimientos, puedes llegar a hacer cualquier aplicación (dicen que GMail son más de 400K lineas de código). Pero ¿por qué malgastar ese esfuerzo anclándonos en una herramienta que no fue pensada para eso? 

    Para aplicaciones web complejas (que no portales) prefiero usar GWT. Opino lo mismo que David, usa en el servidor y en el cliente el mismo lenguaje. En mi caso java 🙂 
    GWT no es perfecto, pero en mi último proyecto con más de 100K lineas de código y 10 programadores de nivel medio hubiera sido imposible hacerlo sin todo el ecosistema de herramientas que da Java (desde la propia compilación hasta el análisis estático de código)

    El navegador se ha convertido en la nueva máquina virtual y JavaScript en el nuevo bytecode.
    Dart me parece que es un paso valiente por parte de google. Hartos de tener una limitación en el navegador han querido dar un paso a delante. Pero el movimiento no es altruista: cuanto mejor sean las webs, más gente usará internet y más dinero ganará google. 

    No me he empollado todavía las características del lenguaje ni de cómo facilitará las tareas de desarrollo (soporte avanzado de IDEs, testing, creación y distribución de librerías, tiempos de compilación, etc), pero de todo lo que han vendido, me conformo con que se quede solo en un generador de código JS. Eso ya me parece un gran salto. Si CoffeScript ya me parece la leche, Dart ni te cuento. 
    Con toda la base de navegadores existentes, descarto que el intérprete nativo de Dart se imponga, a menos que con Dart consigan una mejora de rendimiento tan grande que haga que merezca la pena forzar a los usuarios a migrar a navegadores con motores de Dart.

    Y ya puestos a especular e imaginar: 
    ¿Será Google quien saque la versión para la JVM de DART?  No he leído nada de como ejecutarán Dart en el servidor, pero no he visto nada relacionado con la JVM. Para mi lo más natural sería que se pudiera ejecutar sobre un servidor java e interactuar con clases y librerías de Java. No he visto nada en el lenguaje que impida ejecutarse en la JRE.
    Google tiene experiencia de sobra sobre la VM, han creado ya varios productos basados en ella sin llegar a usarla: GWT, Android y Appengine.
    Si no lo acaba sacando Google lo hará la comunidad, seguro 🙂

    También veo el camino inverso. Dados los problemas que está teniendo Google con el licenciamiento de Java en Android, no me extrañaría que, en un futuro no muy lejano, Dart se convirtiera en el lenguaje de desarrollo principal para Android.

    Mi conclusión: Dart es bienvenido y solo la comunidad determinará el éxito de la propuesta. Pero estoy seguro que a partir de ahora los proyectos de google irán sobre Dart 🙂

  • Asgas

    con tal de evitar esa estructura horrrible de javascript…

  • gnz/vnk

     Nota 1: El editor de Disqus es un tocahuevos.
    Nota 2: En estos días ando bastante liado y con la cabeza echa un follón. Es decir, intentaré escribir poco porque si no… a saber lo que sale. Espero un mínimo de 3 tonterías xD

    Nota 3: A todos los que odiáis Javascript o pensáis que es malo… Al final os dejo una reflexión 🙂

    En fin, había intentado comentar lo menos posible sobre Dart. Sobre todo porque ya hay mucha gente hablando de ello y yo poco puedo aportar. Pero, vamos allá.

    Creo que hay dos aspectos principales alrededor de Dart (y alguno más, secundario, que luego comentaré). Uno es el aspecto más práctico, sobre porqués, cómos, futuros y demás. El otro es el puramente técnico, el del mérito del lenguaje en sí. Empezaré por el segundo que es más difícil.

    No soy, ni muchísimo menos, un experto en lenguajes. Pero sí (creo) soy capaz tanto de seguir con cierta soltura algunos de los análisis más técnicos que se han hecho por ahí, como de leer con cierto ojo crítico la documentación de Dart. Mi conclusión es pobre pero sencilla: Bah. “Bah”, como en “Bah. No veo nada particularmente interesante”. El lenguaje *no* es un lenguaje con grandes ideas… no, espera, no es un lenguaje con ideas detrás. Ni grandes ni pequeñas. Y ojo, que sé que esto no es necesariamente malo. Pero está bastante claro que Dart es un lenguaje aburrido. Tiene alguna cosa relativamente interesante, unas cuantas cosas claramente prescindibles, y alguna decisión un tanto chorra.

    Desde un punto de vista técnico, el lenguaje parece encaminado a un público muy concreto. Un público que probablemente coincide con las necesidades de Google, pero que, por ejemplo, a nivel personal no me atrae.

    La mayor parte de la discusión, sin embargo, creo que se centra en los aspectos menos técnicos. Respecto a estos, mis respuestas son:
     ¿Hacía falta? No.
     ¿Es buena idea hacerlo así, con un nuevo lenguaje? ¿En lugar de colaborar para evolucionar Javascript? Probablemente no. Aunque probablemente tampoco es buena idea que un comité diseñe un lenguaje… ¿En lugar de usar Cofeescript? Ahm, es que Coffeescript es para Rubystas.
     ¿Será aceptado más allá de Google? Yo creo que no, pero me puedo equivocar, claro.
     ¿Será aceptado *en*Google*? Supongo que sí, pero viendo la estrategia de lanzar más y más cosas contra la pared y no preocuparse por mirar si se pegan o no, tengo alguna duda.
     ¿Es la mejor solución para resolver el desarrollo de aplicaciones web? No lo creo. Sinceramente, no creo que aporte más o mejores soluciones.

    En cuanto a la reflexión que prometí sobre Javascript. ¿En cuántos picosegundos aprendisteis a programar en [inserta aquí un lenguaje]? Yo, Javascript, en unos diez. Años. Más o menos me defiendo. Y no he usado ningún libro de 1000 páginas, porque no había ningún libro de 1000 páginas que me pareciera bueno, nada más. Tengo libros de 1000 páginas de… C++, de Scala, de OpenGL… tengo un libro de bastante más de 1000 páginas de Cálculo Infinitesimal y nunca me pareció que fuera demasiado gordo. Y otro de Electrónica y me parece pequeño. Quiero decir… programar (y otras cosas también) es difícil, sí, así es. No penséis ni por un momento que aprendereis Dart en 10 minutos y dominareis el mundo.

    Bueno, voy a tender la ropa…

    • Daniel López

      No puedo responder mucho a tus comentarios sobre los aspectos técnicos o no técnicos por que las explicaciones son algo vagas y no hay mucho material donde agarrarse.

      No sé si hacer el lenguaje aburrido o interesante era su objetivo, ni se lo que significa objetivamente, pero, por ejemplo, hacer un lenguaje donde puedas usar tipado estático para que los IDEs puedan ayudarte a saco y poder hacer analisis de código para sacar métricas y detectar problemas sí que era uno los objetivos de Google, precisamente para atacar los problemas de escalabilidad en proyectos grandes, y por eso está. ¿Que no es un lenguaje super-innovador? Pues no, y a Dios gracias. El objetivo no es reemplazar a Java, C# y Ruby o ganar el título de “el más molón”. El objetivo es sustituir a JavaScript y para eso necesita ciertas cosas, y quizá ser “interesante” e innovador no sea una de las prioridades.

      En cuanto a las preguntas sobre si hacía falta o si simplemente se podía mejorar JavaScript… pues no se, yo creo que Google, estando en el comité de desarrollo del lenguaje y con la experiencia que tiene haciendo navegadores y motores de JS tiene bastante, bastante criterio para opinar. Los demás podemos tener nuestra opinión, por supuesto, pero para decir que están equivocados de forma tan rotunda harían falta mejores argumentos que el simple “yo lo creo así”.

      Sobre la reflexión de JavaScript no puedo decir nada; ni tengo ningún libro de 1000 páginas sobre ningún lenguaje, ni me creo capaz de dominar nada en diez minutos, ni quiero dominar el mundo. A JavaScript lo uso desde el 96, o así, y puedo decir que nunca me ha gustado, pero no se que tiene que ver con lo anterior.

      • gnz/vnk

        Dos detalles de buen rollo:
         – “Yo lo creo así” es un argumento bastante, bastante mejor que “Si lo ha hecho Google, será bueno”. El primero es una opinión que puede estar (o no) basada en mejores o peores razones, el segundo es… “lo que diga la rubia”.
         – Por lo demás, quizá podrías releer lo que he dicho intentando no sentirte atacado, sino tomándolo como una opinión. Si además intentas comprender lo que digo y evitas poner palabras en mi boca, tanto mejor.

        Como digo… de buen rollo 🙂

        • ¡Menudo choque de trenes!

          A un lado del ring, Daniel López alias “Greeneyed”, ácido como un limón recién exprimido. Al otro lado, Genezeta, espíritu libre y programador pura sangre.

          Además del buen rollo cosa que se da por supuesto, sólo indicaros 2 cosas:

          1. Creo que ambos dos pensáis lo mismo pero desde diferentes perspectivas
          2. Es un LUJAZO disfrutar de este debate técnico en los comentarios. Os doy las gracias en nombre de todos los lectores de este humilde blog y en el mío propio.

        • Daniel López

          Hola,
          Igualmente de buen rollo, no me siento atacado, simplemente me parecía una argumentación algo escasa para un debate técnico.

          Había escrito una respuesta mucho más larga y elaborada pero al fin y al cabo no intento convencer a nadie de nada y las discusiones en Internet nunca resuelven nada así que aquí lo dejo. No debería haber contestado para empezar, pero me cuesta aprender :).

          De todas formas, me disculpo si crees que he puesto palabras en tu boca que has dicho, no te habré entendido bien.

          Un saludo
          PD: La ropa ya debe estar seca 😛

          • gnz/vnk

             No, tranquilo, ofender nada. Que además creo que ya hemos discutido suficientes veces como para saber que no hay esos problemas, no?

            Pero es que yo tampoco he buscado en un momento convencer a nadie. Y lo que tú tomas como afirmaciones “rotundas”, yo creo que las he matizado con un número más que abundante de probablementes, supongos, miopiniones y yocreos.

            Quiero decir, está incluso exageradamente lleno de esas coletillas. E incluso si crees que es flojo y no hay por dónde contestarlo, pues nada, me lo dices y lo reescribo o lo que sea. Pero si vienes y me dices que hago afirmaciones rotundas y que además vale más el “Si lo ha hecho Google” que la opinión de cada uno… Pues, Daniel… ofender ya te digo que no, pero ganas de discutir pues tampoco das, la verdad 😉

            La ropa ahora la recojo, gracias :p

          • Daniel López

            Hombre, entiendo que cada uno pueda tener su opinión pero la idea de discutir, en el buen sentido de la palabra, es para, por lo menos, entender el razonamiento del otro. Y para poder entender los “por qué” das muy poco.
            Es decir, Google tiene un equipo de ingenieros que trabajan desarrollando maquinas virtuales y lenguajes de programación, y además participa en el comite de mejoras del lenguaje JavaScript y tiene un navegador con su propia JVM, además de desarrollar aplicaciones con cientos de mileas de lineas en JavaScript. Cree que hace falta mejorar el lenguaje, invierte dinero en ello y encima dá sus razones. Tú dices “¿Hacía falta? No.”

            Llamar a eso “Si lo ha hecho Google es bueno vs opinión personal” me parece un poco retorcido :). Con todo el respeto que le tengo a tú opinión profesional, que no es poca, me parece mucho esperar que un “no” sea explicación suficiente. Google tiene sus argumentos, que si no estás de acuerdo estupendo pero me gustaría saber por qué, para poder valorarlo.

            Yo no es que diga que Google tenga razón indiscutiblemente por ser Google, parece mentira que alguien me pueda “acusar” a mí de creer ciegamente ese tipo de cosas :D, pero es que lo que pides es un ejercicio de fé pero a la inversa, y la mía tras mis experiencias jesuíticas de la infancia anda un poco… excéptica ;).

            Y con todo… lo de Dart no digo que vaya a ser un éxito. Personalmente me gustaría, pero depende de muchos factores y mi bola de cristal está desaparecida en combate. Pero vamos, así como Go no me parecia buena idea en ningún momento, a esta al menos le veo el razonamiento.

          • gnz/vnk

            A ver, intentaré explicarme mejor en algunas cosas. Todo lo que sigue es mi opinión, y no prometo argumentar todo, pero intentaré dar algunas razones o al menos explicar mis pensamientos.

            Primero, cambiemos la pregunta de “¿Hacia falta?”. Sustituyámosla por las siguientes, más detalladas:

            ¿Creo que es bueno tratar de mejorar las herramientas disponibles para el desarrollo de aplicaciones web? Sí, lo creo, sin duda. Creo no sólo que es bueno, si no que creo también que hay mucho por mejorar.

            ¿Creo que esto se *puede* hacer de diferentes formas? Sí. Creo que crear un lenguaje nuevo es una de esas formas posibles y creo que es “válido” (o correcto o aceptable o como quieras) *plantear* esta opción. Otras formas pueden ser, por ejemplo, simplemente crear mejores “herramientas”. O puede ser la propuesta de mejoras o añadidos a un estándar. O (algo que he oído unas pocas veces en los últimos años) una VM o un bytecode “estándar” sobre el que los navegadores implementen el lenguaje que quieran… Unas serán “mejores” y otras “peores” (los pongo entre comillas para no olvidar que son términos relativos y subjetivos).

            Todas estas diferentes opciones o formas de hacer suponen por un lado unos cambios (evidentemente, de eso se trata) y por otro unos esfuerzos. En general, creo que podríamos decir que cuanto mayores los cambios, mayor el esfuerzo. Por lo menos mayor el esfuerzo de implantar ese cambio. Independientemente del coste o esfuerzo necesario, se puede analizar la bondad de cada opción. Pero en mi opinión no hay que perder de vista en ningún caso el esfuerzo. ¿Por qué? Porque en ciertos casos la dificultad de implantar la solución hará que una solución pueda ser “buena” pero “poco práctica” (o, de hecho, impracticable). Por esto, sobre cada solución, además de otras preguntas, me planteo siempre “¿Es necesario, hace falta llegar a tanto?”.

            En mi opinión, ¿*hacía falta* crear un lenguaje nuevo? Para entender la pregunta, todavía me faltan un par de detalles más. Así que ahora volveré a esto.

            Entre las diferentes formas de “mejorar el desarrollo de aplicaciones web”, cada una aporta soluciones sobre diferentes aspectos. Es decir, crear, por ejemplo, una VM genérica supone centrarse en un problema diferente que, por ejemplo, crear un IDE. En un caso se centra en la ejecución mientras que en otro se centra en la programación. El “problema” general es amplio, y no hay una solución que se ocupe de todos los aspectos a la vez (o más bien una solución que se ocupe de todos los aspectos supondría un cambio enorme, así que no lo planteo en este momento).

            ¿Qué tipo de mejoras puede suponer la creación de un lenguaje nuevo? Claramente son mejoras centradas en la programación. Aunque un lenguaje nuevo podría llevar asociada un mejor compilador/runtime/VM, son cosas /bastante/ independientes. Un lenguaje nuevo lo que aporta *intrínsecamente* son mejoras para el programador, para su expresividad, para permitirle transcribir mejor una idea a unas instrucciones.

            Plantear que este es el aspecto principal o un aspecto importante del problema general es afirmar que lo que falla hoy por hoy en el desarrollo de aplicaciones web es el lenguaje, Javascript.

            ¿Hacía falta crear un lenguaje nuevo? Yo contesto no. Mi respuesta se debe a que yo no creo que el problema principal del desarrollo web hoy por hoy sean las limitaciones de un lenguaje. Por otra parte, valoro el coste que podría derivarse de implantar un lenguaje nuevo en el desarrollo de aplicaciones web y lo veo como un coste excesivo. Es un coste que incluye desde el aprendizaje del nuevo lenguaje por parte de los desarrolladores (que hasta ahora casi ni se han molestado -de forma general- en aprender Javascript) hasta el propio hecho de implementar e integrar este nuevo lenguaje a. como un estandar y b. con soporte real y homogéneo en todos los navegadores. (Sobre esto último me podría extender bastante más, analizando todos los costes que algo así puede realmente implicar, pero tampoco es mi intención aburrir… tanto xD)

            Evidentemente plantear si hace falta algo, supone también pensar en si otras alternativas pueden aportar soluciones similares o equivalentes por otras vías menos costosas. Y no hablo ya del problema general, sino de si otras opciones podrían aportar mejoras sobre ese aspecto concreto. Incluso dejando a un lado mi opinión de que no hay ningún problema con Javascript /per se/, ¿hay otras opciones que, centradas en este mismo aspecto, ofrecen soluciones a un coste menor? Sobre esto, mi opinión es que sí, las hay. Es decir, yo no creo que haya ningún problema particular en Javascript, pero si fuera necesario mejorarlo, creo que hay opciones que pueden conseguirse sin la necesidad de un lenguaje nuevo entero.

            En fin, todo esto unido es lo que me lleva a decir que *en*mi*opinión* no hacía falta crear un lenguaje nuevo.

            Por otra parte (ya acabo, tranquilos xD), también entiendo que Google pueda opinar de otra forma. Entiendo que sus necesidades particulares puedan llevar a algunas personas dentro de Google o a Google como entidad, a pensar que sí es necesario un lenguaje nuevo. No me parece que su opinión sea más importante por el hecho de que otras personas diferentes de Google estén participando en la discusión del desarrollo del próximo Javascript, ni me parece más correcta porque algunas otras personas en Google tengan amplia experiencia en compiladores y lenguajes. No, eso no me lo parece. Pero sí entiendo que sus necesidades estructurales o sus objetivos empresariales puedan llevarles a pensar que necesitan otro lenguaje.

            Sin embargo, Google han demostrado que además de muchas cosas positivas, también aportan cosas al mundo en general que al mundo en general resultan no interesarles. En este caso, y muy consciente de que es difícil considerarme a mi “el mundo en general”, esta es una de esas cosas que *a*mi* no me resultan interesantes. ¿Le parecerá lo mismo al mundo en general? Yo no lo sé, por supuesto. Pero lo dudo bastante.

            Si quieres, también podemos hablar de los aspectos técnicos del lenguaje en sí. Me parece una discusión un tanto más aburrida (porque, como ya he dicho Dart me parece aburrido) pero si quieres lo hacemos, eh. A mi personalmente, la mayoría de las mejoras que Dart introduce sobre Javascript me resultan poco interesantes, innecesarias. Pero, como digo, si quieres lo hablamos.

          • Daniel López

            Bueno, ahora ya entiendo mejor lo que quieres decir, y veo donde no estamos de acuerdo. Tu crees que a JavaScript “no es el problema” pero es que yo coincido con Google en que sí lo es.

            Por sus carácterísticas, un IDE, un compilador y una VM no pueden controlarlo igual ni sacarle el mismo rendimiento que pueden sacarle a un lenguaje con otras características, y eso no es algo que Google se invente ni algo subjetivo. Se puede discutir si lo que te da JavaScript es “suficiente” o no, pero que es lo mismo que podrías conseguir con otro lenguaje como Dart, no.

            Y, no se, hablar de que “hay otra gente en Google que sabe de…” como si hubieran decidido sacarse el lenguaje de la manga sin preguntarle a esas personas… no se, puede ser, pero vamos, presuponerlo me parece torcer bastante los argumentos para poder decir que en Google lo ha decidido gente que no sabe y entonces su opinión vale lo mismo que la de cualquiera.

            Y puedo estar de acuerdo en que “como lenguaje” no es super-interesante, pero los dos objetivos básicos de Google son rendimiento sobre un compilador JIT y posibilidades de tratamiento con herramientas (IDEs, analizadores estáticos de código …) y es en base a eso, creo yo, en que se debería juzgar si consiguen su objetivo o no.

            A mi lo de usar el mismo lenguaje en cliente y servidor no me motiva nada, por ejemplo, pero poder trabajar en la parte cliente con algo más que el FireBug y pruebas en ejecución creo que sería una mejora.

            PD: Como referencia de motivación, este parece el enlace más claro que he visto: http://www.dartforce.com/doc/background.html

          • gnz/vnk

            Bueno. Me alegro de que nos vayamos entendiendo, aunque no estemos de acuerdo 🙂

            Sólo puntualizar una cosa. Puede que haya relación entre los empleados de Google que colaboran en TC39 y los que han desarrollado Dart. Claro, no niego que hablen entre ellos. Pero que no son las mismas personas es algo que ya se ha comentado y parece también bastante claro. Y sinceramente Google es MUY grande. Y no es que yo conozca demasiado de su funcionamiento interno, pero por lo poco que sé tampoco me sorprendería que fueran iniciativas muy poco relacionadas entre sí inicialmente. (Pero sí, esto ya es especulación por mi parte… Por otra parte tampoco he dicho que se lo hayan “sacado de la manga”, Daniel ;p )

            Aclarado eso, si nos centramos más en el proyecto en sí: A mi repito que me aburre… Me deja frío. Esto no quiere decir que no pueda cambiar de idea más adelante, pero hoy por hoy, con lo que se ha visto, no hay nada que me atraiga. Todas esas herramientas, todas esas mejoras de rendimiento, etc, *no* se han visto aún. Cuando existan, hablaremos. Mientras tanto todas las promesas son… promesas nada más.

          • Daniel López

            Hombre, Google es grande pero si toman esas decisiones sin tener en cuenta la gente que sufre esos problemas… es para ponerlos contra la pared… y cascarles la serie entera de Crepúsculo en sus versiones extendidas. De todas formas en sus motivaciones hablan de las dificultades que ven en evolucionar JS etc. así que puede que sea mucho presuponer, pero me parece una suposición razonable.

            Y sí que estamos de acuerdo en la última parte. De momento es humo y buenas intenciones y cuando cumplan los objetivos mínimos ya veremos, pero vamos, lo único que venía a decir yo es que creo que merece la pena intentarlo, sobretodo ahora que con HTML 5 se tienden/tenderá, parece, a hacer más cosas en el cliente y parece que los plugins estan demodé.

            Pero vamos, que no me voy a poner a aprender Dart ni a dominar el mundo. De eso ya se encarga Google 😀

  • Aunque Javascript me gusta… acabo usándolo siempre con librerías. Que funciona en todas partes es ingenuo: la misma aplicación funciona igual en los distintos Internet Explorers? En Firefox antiguo? Hay un estándar, y no acaba de avanzar tanto como podría.

    Con que Dart sirva para que Javascript avance y no se quede atascado no será poco. Y si por el camino le dan compatibilidad a Dart haciendo que compile a JS (sin que se pierda rendimiento) y van desarrollando motores nativos para los navegadores, lo harán más interesante para adoptarlo…

  • Llego tarde

    Primero de todo, confirmo mi devoción por Jerónimo.

    También suelo coincidir y mucho con Daniel.

    Estuve algo cerca de hacer pinitos con ItsNat con Jerónimo, con Jerónimo por 
    medio le hubiéramos dado estopa a GWT de lo lindo en el buen sentido, una pena, el mercado manda  🙂

    Me gusta Dart y ojala reemplace a JavaScript por supuesto considerando que habrá “compilación bajo demanda” por medio, pero desde hace ya años lo del tema de poder desarrollar aplicaciones web de millones de líneas de código es un tema que tengo ya resuelto

    Lo de llevar la aplicación casi totalmente al cliente sigo viéndolo como absurdo y no sólo porque me convenga por ItsNat, es algo que aplico a diario en el trabajo sin ItsNat a través de técnicas híbridas cliente-servidor (aunque mucho menos sofisticadas y no tan eficientes que si fuera con ItsNat pero que le vamos a hacer), para mi el navegador sigue siendo un UI, es decir un contenedor de HTML en forma de DOM y reglas CSS y con un lenguaje, JavaScript que permite cambiarlos dinámicamente, eso no implica que las decisiones de visualización (qué HTML) y como cambia ese HTML (JavaScript) tengan que tomarse en el cliente aunque ciertamente han de hacerse en el cliente, creo y sigo creyendo en el servidor como orquestador de las aplicaciones web que tienen un fuerte respaldo de datos en el servidor.

    • Creo que no me he explicado bien, con el rollo de antes quería decir que el propósito de Dart es “más madera” al cliente, y está bien tener un mejor lenguaje para programar mejor en el cliente y si hacen esto es porque probablemente GWT no les resulta suficientemente efectivo, pero al final cualquier apuesta por el cliente supone más y más código a enviar al cliente, cuando hablo de código hablo de más allá de UI, de gestión de DOM y CSS, y no nos engañemos el que un elemento visual se muestre o no tiene que ver con decisiones de negocio que convendría que no se hicieran en el cliente y la verdad es que no veo el sentido de que mi banco me envié sus algoritmos de toma de decisiones financieras, bueno mejor dicho, por mi no habría ningún problema 🙂
       
      Dart es un GRAN avance desde luego para la gente que apuesta por la programación centrada en el cliente y desde luego hará mucho más viable aplicaciones con muchas personas y mucho código como dice Jerónimo.

      • Daniel López

        Hombre, no se yo si la idea es poder meter más lógica en el cliente. Yo creo que simplemente es hacer que la parte de manejar el UI sea más fiable, robusta y con mejor rendimiento, sobretodo si liquidamos los plugins y pasamos a hacerlo todo sobre esa VM.

        Pero volver al modelo cliente/servidor no solo tiene implicaciones de seguridad, si no que para depuracion etc. es mucho más complejo. Dado que las redes cada vez tienen un rendimiento mejor, como tu dices no le veo mucho sentido a eso, pero no creo que Dart vaya por ahí, máxime cuando ya han dicho que la idea es poder hacer cosas también en el servidor con él.

        Aunque bueno, con los inventos que se les ocurren de poner BDD incrustadas en los navegadores etc. quizá peco de ingenuo :).