¿Qué es JavaScript?

JavaScript (JS) es un lenguaje de programación que se utiliza principalmente en el desarrollo de aplicaciones web. En los primeros días de Internet, solo había páginas web estáticas y no interactivas. El fundador de la Fundación Mozilla se dio cuenta del problema y trabajó con dedicación en el desarrollo de un lenguaje de programación para hacer páginas web interactivas manipulando la estructura lógica. Esta estructura se conoce como Modelo de objetos de documento (DOM). Dos lenguajes de programación lo inspiraron: Java y Scheme (un dialecto minimalista de Lisp). JS incorporó los mejores aspectos de ambos lenguajes al mismo tiempo que administra no solo una sintaxis intuitiva sino también bibliotecas y conjuntos de herramientas prácticos.
En el mundo de la programación, dos paradigmas diferentes se han popularizado con el tiempo. Uno es Programación orientada a objetos, donde las clases y los métodos interactúan a través de objetos que representan relaciones en tiempo real entre ellos sobre una base de instancia. Mientras en programación funcional, no existe el concepto de estado compartido y datos mutables. En cambio, se enfoca más en funciones puras con el propósito de resolver problemas usando solo construcciones lógicas de primer orden, como expresiones lambda o mapas y filtros, entre otras, así como funciones de orden superior.
Hay dos componentes importantes del motor JS: el montón de memoria y la pila de llamadas. La asignación de memoria ocurre en el montón de memoria, mientras que una pila de llamadas realiza un seguimiento de las llamadas a funciones. Algunos lenguajes de programación como C # pueden ejecutar varios conjuntos de instrucciones simultáneamente, pero JavaScript no puede hacer esto ya que su motor tiene solo una pila de llamadas y, por lo tanto, es un lenguaje de un solo subproceso. Al ser un lenguaje de un solo subproceso, JS no puede implementar la programación en paralelo y, para contrarrestar esta limitación, los ingenieros de diseño han agregado una función de devoluciones de llamada asincrónicas en JavaScript.