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)
JavaScript, diseño de un lenguaje de programación en diez días
-
Asignatura DAWeb
- Teoría 1. Introducción
- Teoría 2. Etiquetas y atributos
- Teoría 3. Elementos. Sintaxis y texto en HTML
- Teoría 4. Enlaces, listas y tablas en HTML
- Teoría 5. Multimedia en HTML
- Teoría 6. Metaetiquetas en HTML
- Teoría 7. Formularios en HTML
- Teoría 8. Formularios en HTML5
- Teoría 9. Estructura de cajas de una página web
- Teoría 10. Introducción a CSS
- Teoría 11. Selectores en CSS
- Teoría 12. CSS avanzado
- Teoría 13. Páginas web dinámicas
- Teoría 14. PHP. 1ª parte
- Teoría 15. PHP. 2ª parte
- Teoría 16. PHP y MySQL
- Teoría 17. Sesiones en PHP
- JavaScript, diseño de un lenguaje de programación en diez días
- Práctica 1. Fintech
- Práctica 2. Bluefish
- Práctica 3. Alojamiento Web
- Práctica 4. Estructura de una página
- Práctica 5. Estructura de una página con tablas
- Práctica 6. Estructura de una página con CSS
- Práctica 7. Funciones avanzadas y menús con CSS
- Práctica 8. Diseño adaptable
- Librosweb XHTML
- Librosweb Introducción a CSS
- Referencia de CSS 2.1
- Librosweb CSS avanzado
- Lenguaje de programación HTML
- Lenguaje de programación HTML y CSS
- Asignatura curso anterior
Curso 2017-18