JavaScript dirige el mundo, tal vez incluso literalmente


Lex Fridman ha realizado muchas entrevistas largas en su popular podcast. Aun así, el episodio con el legendario programador John Carmack tiene una sensación de montaje de director desquiciado. Durante cinco horas, Carmack habla de todo, desde operaciones vectoriales hasta Condenar. Pero es algo que Fridman dice, de improviso, que realmente justifica el tiempo de ejecución extendido: «Creo que si vivimos en una simulación, está escrita en JavaScript».

Para repasar: JavaScript es lo que hace que las páginas web estáticas sean «dinámicas». Sin él, Internet se parecería a una sala de juegos nocturna, sin vida y oscura. Hoy en día, el lenguaje se utiliza tanto en el desarrollo front-end como en el backend para una gran cantidad de plataformas y aplicaciones móviles, incluidas Slack y Discord. Y lo principal que hay que entender al respecto, en el contexto del koan nerd de Fridman, es esto: para cualquier programador que se precie, admitir que en realidad gusto JavaScript es una especie de paso en falso, muy parecido a un cineasta artístico que se confiesa al fandom de Marvel.

Supongo que esto tiene algo que ver con el hecho de que JavaScript se creó en menos tiempo del que se necesita para preparar un frasco de kombucha en casa: 10 días. En 1995, Netscape contrató a un programador llamado Brendan Eich para crear un lenguaje para integrarlo en su navegador, Netscape Navigator. Originalmente llamado LiveScript, el lenguaje pasó a llamarse JavaScript para aprovechar el revuelo en torno a un lenguaje no relacionado llamado Java, que se había introducido a principios de ese año. (Cuando se le pregunta la diferencia entre Java y JavaScript, es probable que un programador bromee: “Java es para JavaScript lo que un automóvil es para una alfombra”.) Hasta el día de hoy, pocas personas consideran que JavaScript sea un lenguaje particularmente bien diseñado, y menos aún Eich. «Perpetré JavaScript en 1995», dijo una vez, «y lo he estado compensando desde entonces».

¿Cuál fue su crimen exactamente? Puede encontrar fácilmente un montón de publicaciones de blogs, memes e hilos de Reddit que utilizan JavaScript, pero mi favorita es una charla de cuatro minutos del ingeniero de software Gary Bernhardt titulada «Wat». Imagine, para empezar, mostrarle a un grupo de personas que no hablan inglés las formas presente y pasada de verbos como hervir (hervir/hervido) y masticar (masticar/masticado). Luego, cuando les preguntas por la conjugación de comer¿quién podría culparlos por responder? comer/comido? De manera similar, la charla «Wat» es una serie de errores de las peculiaridades y comportamientos impredecibles de JavaScript. Supongamos que desea ordenar una lista de números: [50, 100, 1, 10, 9, 5]. Al llamar a la función de clasificación incorporada en cualquier idioma, se devuelve la lista en orden numéricamente ascendente: [1, 5, 9, 10, 50, 100]. Hacerlo en JavaScript devuelve [1, 10, 100, 5, 50, 9], donde 10 y 100 se consideran mayores que 5. ¿Por qué? Porque JavaScript interpreta cada número como un tipo de cadena y realiza una clasificación léxica, no una clasificación numérica. Locura total.

Cuando Fridman dice que JavaScript dirige el mundo, en otras palabras, lo que quiere decir es que nuestro mundo es, al igual que el código fuente subyacente, enormemente jodido e incomprensible. Es el equivalente a pronunciar, con un suspiro, que considerando el lamentable estado del planeta, la Declaración Universal de los Derechos Humanos debió haber sido escrita en Comic Sans.

En este punto, Debo confesar que si bien JavaScript no es mi lenguaje favorito, me gusta. De hecho, lo adoro. Así que no puedo evitar sentir una llamarada de desaprobación cada vez que cierta fraternidad de programadores polemiza en contra de ello. A menudo se centran en defectos que se solucionaron hace años. Insistir en las deficiencias originales de JavaScript es pasar por alto el hecho de que cualquier pieza de software (y cada lenguaje de programación es, en esencia, un conjunto de software) es susceptible de revisión y mejora.



Source link-46