Javascript se está hinchando a lo tonto, ¿o no?

javascript

#1

Hace un par de semanas tuve oportunidad de asistir a una plática que dio Kyle Simpson sobre el futuro de Javascript. Primero presentó lo que viene en ES2017 y luego habló sobre los planes para ES2018.

Si googleas al respecto, verás que entre las dos cosas más destacadas sobre ES2017 son: async functions y shared memory (buffers de memoria compartida para threads).

Async functions me parece algo muy bueno ya que ayudará a facilitar el desarrollo (y legibilidad) de código asíncrono.

Pero lo de shared memory la verdad no me cuadra. La comunidad Javascript siempre se ha jactado de no necesitar threads porque es asíncrono. Recordé que hace unos 5 años en un meetup de JS comenté algo sobre threads e inmediatamente Siedrix dijo “¿threads? ¡¿qué es eso?!” con tono burlón tipo “saca tus porquerías de aquí, nosotros estamos más evolucionados”. Pero independientemente de que esto atente contra el orgullo anti-thread de la comunidad JS, no entiendo para que agregar soporte en Javascript de algo que es mejor hacer en otros lenguajes que fueron diseñados “from the ground up” para concurrencia.

Así que conforme la presentación avanzaba, en mi mente se reforzaba esta noción que tengo de Javascript como el nuevo “one language to rule them all”. Lo cual, en mi experiencia, es una mala idea; ningún lenguaje que ha tomado ese camino ha sido exitoso.

Al final de la presentación, durante las preguntas, Kyle explicó su teoría de por qué se están agregando tantas cosas, y algunas sí son útiles para los desarrolladores JS pero otras simplemente son para poder soportar lo que hacen otros lenguajes. Explicó que el dilema es que hay muchas empresas interesadas en que su código (hecho en otros lenguajes) pueda correr en el browser. Como el browser solo corre javascript entonces hay que transpilar el código de otros lenguajes hacia javascript. Así que las capacidades de esos otros lenguajes deben poder mapearse a capacidades de javascript. Así que tenemos features orientados a desarrollo “manual” y features orientados a soporte de transpilación. Kyle comentó que esto no es bueno porque expande el lenguaje sin sentido (o como dicen en mi pueblo, “el que mucho abarca poco aprieta”). Comentó que una salida posible sería WebAssembly, ya que justamente su objetivo es permitir que código de otros lenguajes pueda interactuar directamente con el navegador web. El problema es que WebAssembly todavía está muy verde, así que mientras eso sucede seguiremos viendo como javascript se hincha.

PD - El comentario final de la noche fue una pregunta de un asistente que dijo “ok, está muy bien que estén agregando todas estas capacidades a JS, pero ¿cuando podemos tener soporte decente de matemáticas? tener operaciones confiables de punto flotante sería un buen principio”. Ante esto, Kyle simplemente tiró los brazos al aire y comentó que se supone que Brendan Eich está trabajando en ello.


#2

Eso es como decir que la comunidad Java siempre se ha jactado de no necesitar computadoras porque tenemos una máquina virtual…

Creo que esa tendencia de agregarle cosas a JS es consecuencia de node, es decir, de que ahora JS se usa para backend. Digo, si hasta se inventaron un término muy rimbombante para decir “usa el mismo lenguaje en front y back”…


#3

¿Te refieres a “universal javascript”? Sigo sin entender si es algo concreto o simplemente un motto tipo “write once, run anywhere” 20 años después.

Código isomórfico, si lo entiendo como algo más concreto, como lo entiendo es que tengas código que se ejecuta en el cliente y código que se ejecuta en el servidor y que pasen de uno a otro seamlessly manteniendo el estado.


#4

Me refiero al código isomórfico. La verdad es un término muy mamón para un concepto muy simple: usar el mismo lenguaje en front y back. Punto. Todo lo demás son consecuencias de eso (compartir código y reusar y bla). Y lo de mantener el estado es una ilusión.


#5

pedrok sabes ese es uno de los principales problemas en las comunidades de algún lenguaje o framework, cuando el ego y fanatismo impiden ver mas alla