Javascript es un lenguaje al día de hoy muy presente en nuestras vidas, pero esto no siempre fue así, hubo un momento, hace poco, donde era impensable un escenario como el actual, ¿cómo pasamos de uno a otro?, justo de eso vengo a comentarte:

Podemos identificar 3 etapas de la vida de Javascript:

El Nacimiento

  • En la navidad de 1990 se lanza el primer navegador web moderno, WorldWideWeb (luego rebautizado como Nexus) desarrollador por Sir Tim Berners-Lee en Suiza, si te causa curiosidad probar como era en este enlace puedes hacerlo: https://worldwideweb.cern.ch/browser/
  • Un año más tarde diciembre de 1991 es aprobada La Ley de Computación de Alto Desempeño en el congreso de los Estados Unidos, esto pese a lo que diga Al Gore no creó internet sino que aportó capital para que se extendiera y se modernizara.

  • Para que organismos como National Center for Supercomputing Applications recibieran una inyección de capital y poder desarrollar proyectos como Mosaic el primer navegador uso extendido en enero de 1993, predecesor de Netscape (predecesor de firefox) y spyglass (predecesor de internet explorer). Antecedido solo por cello y violaWWW.

  • Mosaic fue desarrollado por Marc Andreessen y Eric Bina, a principios de 1993 es lanzado para sistemas Unix y es tal su éxito que a final del mismo eran lanzadas las versiones para Windows y Macintosh.

  • Luego de que Andreessen se graduara este decidió crear Netscape (basando en el código Mosaic) y es lanzada su primera versión estable para finales de 1994.

Hasta este punto no hay rastros de javascript, solo algo parecido al DOM. Pero ya se empieza a notar la necesidad de algo que le de dinamismo a las páginas (de ahí viene el nefasto nombre, porque los sitios eran tan estáticos como ver la página de una revista o periódico). La idea inicial para solucionar esto era Java, que gozaba de una enorme popularidad en aquel entonces pero rápidamente se dieron cuenta que era mejor hacer algo que estuviese especializado para ejecutarse en ese contexto.

En en este momento donde entra en escena Brendan Eich en Mayo de 1995, a quien cuenta habían contratado para portar Scheme a Netscape pero luego le dijeron algo así como, mi estimado Brendan necesitamos que hagas un lenguaje de programación como Java pero que corra en nuestro navedador Netscape, ah, y lo necesitamos para dentro de 10 días.

El resultado fue un lenguaje con una sintaxis parecida a la de java en cuanto al uso de llaves, paréntesis y puntos y coma y cosas así, pero con añadidos de otros lenguajes como los first-class function o funciones de primera clase, el tipado dinámico inspirado en lisp (cosa que algunos programadores odian de javascript) y la herencia por prototipos inspirada del lenguaje self, todo ello en 10 días.

El análisis de Brendan Eich fue, es imposible hacer un lenguaje especializado para correr en un entorno casi desconocido en ese momento y mucho menos en 10 días, lo que haré será una herramienta que sea lo suficientemente flexible para que los desarrolladores pueden adaptarla a sus necesidades.

  • Inicialmente se llamó Mocha, luego pasó a llamarse LiveScript para septiembre de 1995 y después en diciembre de ese mismo año adquirió el nombre por el cual lo conocemos hoy en día, Javascript.
  • También en diciembre de 1995 es incorporado en el navegador Netscape.
  • Por temas de copyrigth microsoft decidió llamar su versión de javascript como jscript y se incorpora en la versión 3.0 de IE en agosto de 1996. Si bien este era completamente compatible en inicio y la creciente popularidad de internet exporer hizo temer que netscape y internet explorer siguieran caminos distintos por lo que se consideró necesaria una estandarización.

La W3C o creó la especificación del DOM (Document Objetc Model) y EMCA anteriormente conocida como European Computer Manufacturers Association la cual es una organización que desde 1961 apoya en la estandarización de sistemas computación y que a partir de 1994 se conoció como ECMA internacional para dar a entender que su alcance no solo se limita a Europa, en Junio de 1997 aprovó la primera versión del estándar del lenguaje conocida como ECMAScript o ECMA-262, acá tienes un enlace a ese documento por si te interesa conocer que tan diferente era el primer estandar de javascript que existió al de hoy.

  • Una año más tarde era lanzada la versión dos del estándar el ES2 que no hacía grandes cambios en comparación con el anterior.
  • Para diciembre de 1999 era lanzado la tercera versión del estándar que incorporaba manejo de excepciones, el strict equality operator (el triple igual) y evaluación de expresiones regulares.

La Edad Oscura

El inicio del milenio no fue especialmente bueno para EEUU que era hasta el momento el principal motor del desarrollo de plataformas web, la ruptura de la burbuja de las puntocom junto con los atentados del 11 de septiembre cambiaron completamente el escenario. Esto ocasionó que muchas empresas de tecnología desapareciera o fueran compradas por otras, ese fue el caso de Netscape que fue adquirida por AOL.

Para la versión 4 de ECMAScript fueron propuestas muchas mejoras orientadas a las necesidades de las empresas como clases, interfaces, es decir más java y menos script, los representates de Yahoo objetaron que eran demasiadas modificaciones y muy complejas a lo que Microsoft estuvo de acuerdo.

El TC-39 (el comité encargado de proponer los estandares sobre esta tecnología) decide crear una verisón de ES 3.1 y desarrollar paralelamente la versión 4, para dejar contentos a todos (lo cual casi siempre es una mala elección y esta no fue la excepción), la versión 4 de ECMAScript nunca vería la luz.

Mientras tanto debido a desaparición de Netscape y la enorme popularidad de Windows lo cual le servía a Microsoft para posicionar a Internet Explorer como el navegador más usados pues venía como navegador por defecto en su sistema operativo lo cual le llevó a poseer el 90% de la cuota de mercado. En este escenario Microsoft se veía muy poco motivado a seguir las reglas y aportaba a estándar de Javascript bajo sus propias condiciones.

A partir de ahí se presentó un escenario muy poco alentador para los desarrolladores porque cada fabricante empezó a hacer lo que consideraba correcto, algunos decidieron seguir a la ECMA internacional, otros a Microsoft y otros como Opera empezaron a hacer sus aportes individuales.

Es acá donde flash aparece como la mejor opción para incorporar multimedia en la web, incluso habían desarrolladores que creaban sitios enteros en flash.

En agosto de 2006 John Resig crea jQuery para poder hacer un poco menos infernal el trabajo de hacer aplicaciones que funcionaran igual en todos los navegadores, si quieres conocer cuales fueron esas mejoras que introdujo jQuery puedes leerlo en este otro articulo.

En septiembre de 2008 Google lanza Chrome con su motor open source V8 que abría un mundo de posibilidades.

El Renacer de Javascript

En mayo de 2009 Ryan Dahl consigue hacer funcional la ejecución de javascript fuera de un navegador, usando motor V8 anteriormente creado por google, había nacido Node.js y esa chicos y chicas es el poder del código abierto, unir la genialidad de muchas personas. Ahora podíamos tener javascript corriendo en cualquier parte.

En diciembre de 2009, diez años después de que la especificación ecmascript3 fuese publicada ECMAScript 5 ve la luz. No trajo grandes avances, básicamente vino a cumplir con los cambios de ECMAScript3.1, pero significaba que el estándar no estaba muerto y que probablemente vendrían mejoras.

Estos dos acontecimientos trajo la explosión de los frameworks de javascript, para lo que fuera, para lo que guste, en la presentación que más te agrade, para cosas útiles y otras más superfluas.

Los primeros en sumarse a la fiestas fueron Angularjs (el angular sin typescript que casi ya nadie usa, afortunadamente) y Backbonejs (que ya nadie se acuerde ni de que eran) cada uno con su propia filosofía bien diferenciada, mientras Angular intentaba ser más un framework y brindar muchas cosas hechas, backbone era más minimalista, a partir de acá se haría más frecuente el termino SPA (Single Page Application) en nuestras vidas.

Pero cómo digo a partir de ahí vino un sin fin de frameworks/librerias javascript, levantabas una piedra y aparecía un nuevo framework: Ember, Meteor, Mithril, Aurelia, Knockout, Polymer que fue la primera herramienta basada en webcomponents y pretendía que el uso de este se extendiera de forma sencilla.

En 2013 aparece ReactJS de la mano de Facebook, que aun sí este se mantiene bastante usado al día de hoy.

En 2014 sale Vue con un enfoque más comunitario y apoyado de la mano de el framework PHP Laravel, el cual le tengo un profundo y especial aprecio y cariño.

Paralelamente debido al crecimiento por la demanda de aplicaciones móviles y como era bastante caro pagar a un desarrollador para cada plataforma móvil empezaron a tener auge las aplicaciones híbridas, es decir aplicaciones que se desarrollaban en un solo lenguaje que pudieran generar apps para diferentes plataformas, la primera en tomar relevancia fue Ionic para el 2013, que haciendo uso de AngularJS y una herramienta llamada phonegap conseguía esto.

También al mismo tiempo alguien pensó, si podemos usar javascript para diferentes plataformas moviles por qué no usarlo para diferentes plaformas de escritorio y nace Electron, el cual ha sido usado para construir aplicaciones que muchos usan cotidianamente como el cliente de spotify, de skype, whatsapp, atom y visual studio code de los cuales puedes encontrar más información en este enlace.

Luego en 2014 apareció nativescript que permitía más flexibilidad de Ionic a la hora de usar herramientas, podías usar (y puedes aun) cualquier herramienta que transpilara a javascript.

En 2015 aparece React Native, que también tiene su historia de como facebook había hecho una aplicación de mi**da y le echaron la culpa a phonegap… pero el resultado fue que crearon React Native y esto fue beneficioso para todos.

También en 2015 ve la luz ECMAScript 6, por eso también se le conoce como ECMAScript 2015, que incluyó muchas de las cosas que ES4 proponía y a las cuales Yahoo y Microsoft se negaron a principios de las décadas de los 2000s, cosas como:

  • let y const para mejor manejo de la memoria
const constante = 'Esto es una constante'
let variable = 'Y esto una variable'
  • Las funciones flecha
var arrow = () => { console.log('console invocado desde una función flecha') }
  • Clases
class Rectangulo {
    constructor(alto, ancho) {
        this.alto = alto;
        this.ancho = ancho;
    }
}
  • Promesas
let miPromesa = new Promise((resolve, reject) => {
    resolve("¡Éxito!");
});
  
miPromesa.then((successMessage) => {
    console.log("¡Sí! " + successMessage);
});
  • etc.

A partir de ese año se empezó a hacer actualizaciones anules del estándar, llegó ES7, 8, 9, 10… y con ellos cosas como:

  • await/async
async function funcion_asincrona() {
    // code here
}

var resultado = await funcion_asincrona();
  • array.includes
const pets = ['cat', 'dog', 'bat'];

if (pets.includes('cat')) {
    console.log('¡Hay un gato!');
}
  • spread operatos
var copia = {...array};

en fin, si piensan (y deberían hacerlo si piensan dedicarse al desarrollo web) sumergirse en el mundo javascript no se aburrirán en un buen rato.