JavaScript fue una de los primeros lenguajes de programación que aprendí. Bueno, en realidad, empecé con HTML y CSS. Como la mayoría de desarrolladores web, empezamos a aprender JavaScript sin pensarlo dos veces. Esto sucede porque se integra bien con HTML y con CSS y (a la vez) mejora tus habilidades con HTML/CSS. Desarrollé aplicaciones y juegos en varios lenguajes de programación como Java, Swift, C++ y Dart. Sin embargo, la flexibilidad que nos brinda JavaScript es inigualable (aunque se lo puede considerar malo para los principiantes ya que se requieren más opciones para realizar tareas sencillas).

Hoy, JavaScript es uno de los lenguajes de programación más poderosos del mundo por su rendimiento y omnipresencia.

En lo personal, creo que JavaScript tiene el potencial de utilizarse en industrias reconocidas como Aprendizaje automático y Análisis de datos, donde todavía se usa muchísimo Python. ¡Ya está pasando con herramientas como Tensorflow.js!

Sin embargo, este fenómeno no se daba antes. Antes, JavaScript era un lenguaje débil e inadecuado por lo que era mal visto. JavaScript era para "perdedores".

Pero esto ya no sucede. Veamos cómo JavaScript cambió el juego en los últimos 10 años, por qué se volvió más fuerte que nunca y por qué está aquí para quedarse.

V8: La bestia que impulsa JavaScript

V8 es un motor de JavaScript. ¿Qué es un motor de JavaScript? Un motor de JavaScript es un intérprete que ejecuta el código de JavaScript. Un motor de JavaScript puede ser implementado como un intérprete estándar o un compilador just-in-time (JIT) que compila JavaScript en códigos de bytes en alguna forma.

V8 es un motor de JavaScript y WebAssembly JIT de código abierto de Google de alto rendimiento que está escrito en C++. Se utiliza en Chrome y en Node.js entre otros. V8 puede ejecutarse independientemente o puede incrustarse en cualquier aplicación de C++.

Ésta es una parte de programa que optimiza el código JS y lo convierte en código máquina para la CPU y para ejecutarse. Algunas de las tareas que se pueden realizar con V8 incluyen:

  1. Recolección de basura
  2. Compilación al código de máquina
  3. Inline caching
  4. Pointer compression
  5. Y mucha más optimización

De hecho, el pointer compression es una técnica reciente en V8 para mejorar la optimización de memoria sin tener ningún efecto en el rendimiento. Si eres geek, puedes leer información detallada sobre cómo se implementa en el blog oficial de V8.

En resumen, puedes escribir JavaScript y dormir tranquilo porque tu código está en buenas manos.

Ecosistema maduro y comunidad

JavaScript tiene uno de los ecosistemas más maduros que un lenguaje podría tener (si es que no es el más maduro). La comunidad de JavaScript es grande y la barrera de ingreso está muy baja.

Puedes abrir un navegador (están en todas las computadoras personales), abrir la consola y encontrarás un motor de JS esperando a que ejecutes el código. Esto nunca sucedía con otro lenguaje de programación de tal complejidad.

Y como si la comunidad no fuese lo suficiente amplia, tenemos sistemas de paquetes npm y yarn. Hay un paquete para todo en el registro npm (desde creación de cadenas al azar hasta manejo de streams y búfers en JavaScript). Como dicen los desarrolladores de JavaScript:

"Lo que se puede hacer en JavaScript, se hará en JavaScript".

Creo que es gracioso pero discreto.

Si empiezas como principiante, es muy poco probable que te topes con un problema que nadie más se haya topado antes. Esto sucede porque todos los problemas posibles en JavaScript básico ya han sido consultados y archivados en sitios como Stack Overflow.

Los marcos y las librerías como React, Angular y Vue están construyendo el camino para el desarrollo de futuras aplicaciones. Están cambiando la perspectiva hacia la programación declarativa en vez de la programación imperativa. Lo que sería el "qué en vez del cómo". Esto le permite a los desarrolladores desarrollar aplicaciones de calidad sin tener que preocuparse de que el código sea de alto rendimiento.

Omnipresencia

JavaScript se utiliza para:

  1. Front end (navegadores)
  2. Back end (Node, Deno)
  3. Android/iOs (React Native, NativeScript, etc.)
  4. Escritorio (Electron)
  5. Híbridos (Ionic)

¿Por qué esto es posible? Los motores de JS como el V8 están escritos en C/C++ y se pueden compilar en sistemas incrustados. Para otras plataformas, ya que los navegadores siempre están presentes (como en Android/ iOS), se envían con motores JS y después pueden ser utilizado para ejecutar cualquier código JS, incluso con aplicaciones nativas como es el caso de React Native.

Características novedosas y avances
Los estándares de JavaScript están encabezados por la comunidad ECMA-262 TC39 y trabajan bastante duro. ECMAScript publica estándares nuevos de JavaScript todos los años (lee las nuevas características ECMAScript2020). Como desarrollador, puedes pedir que se añadan nuevas características al lenguaje.

Por ejemplo, en la imagen de abajo se muestran las características novedosas pendientes que pueden estar en los estándares de JavaScript en un futuro cercano:

En el siguiente enlace, puedes leer todas las propuestas: TC39 Proposals.

JavaScript es RÁPIDO y AMPLIABLE

Claro, en realidad, nadie le gana a C/C++/Rust pero JavaScript es rápido, ya que V8 genera código altamente optimizado al monitorear cómo tu código se ejecuta, retrasar bits de ejecución que no se utilizan y optimizar los segmentos de código que se utilizan una y otra vez. Especialmente, al comparar con los competidores más cercanos como Python, con los avances en V8, JavaScript tiene mayor rendimiento y memoria eficiente.

JavaScript (Node) se puede ampliar (con superconjuntos como TypeScripts). Ya que se ejecuta en una arquitectura de un solo hilo, las personas suelen criticar a Node al no tener un ambiente de hilos pero, en realidad, esto no tiene mucha importancia.

La forma en la que se amplían las aplicaciones de Node no es la misma que la forma en la que se amplía una aplicación multihilo. Node en inglés significa "nodo" (un único nodo en un árbol de procesos). Node se amplía al ejecutar múltiples instancias del mismo y gestionar el grupo.

JavaScript lidera el evento asincrónico impulsado por el modelo de programación de la industria y no necesita ningún hilo para amplíarse. En cambio, los procesos individuales de Node se podrían crear para gestionar y utilizar el núcleo completo de la CPU. Más adelante, brindaré más información sobre la ampliación de Node.

En conclusión

Adoro JavaScript y utilizándolo cree una plataforma de desarrolladores para desarrolladores como tú. En la misma, no solo puedes aprender JavaScript sino que también otros lenguajes como C, C++, Node, Python, entre otros. Únete sin costo alguno y aprende junto a otros desarrolladores desde tu navegador.

JavaScript está aquí para quedarse y liderar la industria de esta época. ¿Piensas igual? Cuéntame en mi Twitter e Instagram - conectémonos.

Traducido del artículo de Mehul Mohan - Why JavaScript Is the Programming Language of the Future