JavaScript, diseño de un lenguaje de programación en diez días

Brendan Eich, creador de JavaScript Cuando Netscape contrató a Brendan Eich en abril de 1995, se le dijo que tenía 10 días para crear y producir un prototipo funcional de un lenguaje de programación que se ejecutara en el navegador de Netscape. En aquel entonces, el ritmo de la innovación Web estaba creciendo, con la intención de Microsoft de hacer que internet fuera el foco de su versión del sistema operativo Windows 95 en respuesta al navegador Netscape y productos de servidor emergentes.

Netscape llamó mucho la atención de Microsoft en ese momento porque Netscape consideraba el navegador y el servidor Web como una forma nueva de un sistema operativo distribuido en lugar de una sola aplicación. Una vez Mosaic debutó en 1993, la Web se convirtió en portable a través de Windows, Macintosh y Unix y dio a los desarrolladores de software la esperanza de poder desarrollar aplicaciones para todos estos entornos.

Pero HTML no era suficiente por sí misma para definir un entorno de desarrollo de aplicaciones nuevas o sistema operativo. Para consolidar el concepto de OS portable, la Web (y Netscape) necesitaban lenguajes de programación portables.

El lenguaje Java de Sun parecía ser la solución para aplicaciones portables "pesadas". Un lenguaje compilado que produce código binario y funcionaba en la máquina virtual de Java, Java soportaba patrones orientados a objetos adoptados de C ++ y parecía que iba a ser capaz de lograr un rendimiento similar a C ++ y C, Java fue la respuesta de la Web para Microsoft Visual C ++.

Javascript

Sabiendo que Java era un lenguaje compilado rico y complejo, dirigido a programadores profesionales, Netscape y otros también querían un lenguaje ligero interpretado como complemento a Java. Este lenguaje tendría que recurrir a lenguajes no profesionales como Visual Basic de Microsoft e intérpretes para ser incrustado fácilmente en páginas web, según Eich.

Si hubiera impartido clases de JavaScript después de mayo de 1995, me habrían dicho que era demasiado parecido a Java o que JavaScript competía con Java ... Estaba bajo las órdenes de marketing para que fuera como Java, pero no hacerlo demasiado grande ... tenía que ser un lenguaje hermano pequeño.

Teniendo en cuenta todos estos requisitos, restricciones y limitaciones, Eich necesitaba producir un prototipo de trabajo a tiempo para satisfacer tanto las necesidades de Sun y el calendario de lanzamiento de Netscape 2.0 Beta.

Inspiración técnica

Aunque el calendario y las restricciones podrían haber sido imposibles para la mayoría de los programadores, Eich poseía un gran historial en la construcción de nuevos lenguajes de programación, a partir de su experiencia como estudiante en la Universidad de Illinois (EE.UU.), donde construyó lenguajes sólo para experimentar en sintaxis. En Silicon Graphics, realizó los lenguajes que pueden utilizarse para crear extensiones para las herramientas de monitorización de red.

Es evidente que la construcción de "otro" lenguaje no era la parte más difícil para Eich, la parte más difícil fue la producción de un lenguaje rico y poderoso, que tuviera prohibido el uso de la sintaxis orientada a objetos, reservada para Java. Quería integrar funciones avanzadas en JavaScript sin necesidad de utilizar la sintaxis del lenguaje de modo que el lenguaje inicialmente parece sencillo y ligero, pero para los programadores sofisticados sería capaz de explotar su poder subyacente.

Al igual que muchos otros lenguajes, JavaScript tomó su sintaxis básica del lenguaje C, incluyendo llaves, punto y coma, y palabras reservadas. Iba a ser una versión ligera, agradable de C con semánticas más simples y mejores características de memoria dinámica. Debido a que la vida de una página web típica dura desde unos pocos segundos a unos pocos minutos, JavaScript puede tomar un enfoque muy simplificado para la concurrencia y la gestión de memoria.

Eich elaboró un modelo simplificado de objetos que combina las estructuras del lenguaje C, los patrones de Smalltalk, y la simetría entre los datos y el código que ofrece LISP. El modelo de eventos Hypercard inspira el modelo para agregar eventos al documento HTML. Los patrones orientados a objetos no eran posibles sino a través de la semántica de ejecución con prototipos en vez de sintaxis de clases soportadas por el compilador (como en Java y C ++).

Éxito

Prácticamente todos los lenguajes de programación con éxito necesitan una versión 2.0 antes de que realmente destaquen, pero todavía tenemos que ver -y probablemente nunca veremos un JavaScript 2.0. Nada de lo construido en 10 días es perfecto, pero una vez que algo se libera en el medio natural, los errores o imperfecciones rápidamente son convertidos en elementos esenciales y son casi imposibles de cambiar. Según Eich, ... JavaScript tenía cosas bastante buenas al principio para sobrevivir. Si piensas en la década de 1990, JavaScript fue maldecido porque se utilizaba principalmente para causar molestias como pequeños mensajes de desplazamiento en la barra de estado situada en la parte inferior de tu navegador o imágenes intermitentes. Con JavaScript llegaron algunas mejoras evolutivas a finales de 1990 a través del proceso de las normas ECMA, que se hizo lo suficientemente rápido y bien en 2004 y 2005 para engendrar la revolución Web 2.0.

Aunque la versión original de JavaScript no podría haber sido perfecta, su adopción inicial fue para las aplicaciones más bien simples, así que tenía tiempo para evolucionar lentamente detrás de las escenas y hacer frente a sus deficiencias iniciales. Además, debido a que la riqueza de JavaScript se encontraba en su soporte de ejecución y no en su sintaxis del lenguaje, la mejora de las implementaciones de JavaScript surgieron sin necesidad de cambios en la sintaxis de los actuales programas de JavaScript, que es relativamente sencillo.

La Edad Moderna

JavaScript ha permanecido en los navegadores durante casi una década, hasta que se inició la revolución Ajax, impulsando a JavaScript hacia la parte esencial del desarrollo de aplicaciones. Microsoft disparó el dominio de Ajax en interfaces web mediante la adición de la función de solicitud XMLHTTP para su navegador Internet Explorer. Otros navegadores se apresuraron a añadir características similares para permitir que Java-Script recuperara datos de los servidores y actualizase documentos HTML sin necesidad de una página completa con el ciclo de petición-respuesta. Con esta innovación, la funcionalidad de la interfaz de usuario ha llegado a ser muy interactiva en el navegador, para crear cada vez más ricas experiencias de escritorio como sucede en aplicaciones tales como Google Mail y Google Maps.

Cuando la cantidad de código y los datos necesarios para cada página se incrementaron, se mostraron las debilidades de las implementaciones de la ejecución de JavaScript. En lugar de reiniciar el runtime de JavaScript cada minuto más o menos, la misma página web se quedaría en un navegador durante varios minutos con elementos de datos grandes y dinámicos en memoria y comunicación de fondo casi continuas con los servidores. Google ha construido su propio navegador Chrome y el intérprete de JavaScript V8 ha puesto al mercado de los navegadores sobre aviso de que implementaciones de JavaScript de bajo rendimiento no serían toleradas. Rápidamente surgiern versiones mejoradas del intérprete JavScript.

Proyectos como Node.js que es un entorno de programación en la capa del servidor basado en el lenguaje de programación Javascript, con I/O de datos en una arquitectura orientada a eventos, y basado en el motor Javascript V8, hacen posible el uso de JavaScript como un lenguaje para construir elementos de una aplicación web servidor. Debido a que JavaScript se ha basado en eventos desde el principio, la creación de aplicaciones Web muy escalables utilizando JavaScript sin las complejidades de la gestión de múltiples hilos llega a ser absolutamente natural.

Como se desprende de HTML5, es muy posible que JavaScript pronto se convertirá en un lenguaje de programación dominante para aplicaciones móviles y de escritorio. La evolución y el uso de JavaScript realmente acaba de empezar, y es impresionante para un lenguaje desarrollado en 10 días en el año 1995.

Entrevista a Eich (vídeo)
Top