Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

289
Vistas
¿Por qué se interpreta JS y no se compila?

He leído muchas cosas sobre interpretación, compilación, compilación justo a tiempo, etc. Pero no he encontrado una explicación clara sobre por qué JS se creó como un lenguaje interpretado y por qué todavía no existe la capacidad de compilar js. código.

Tengo algunos pensamientos, pero no estoy seguro acerca de ninguno de ellos:

  1. Si el navegador pudiera ejecutar (o simplemente pasar al sistema operativo) un código binario, sería una gran vulnerabilidad porque cualquier comando podría inyectarse en un código binario (por ejemplo, eliminar todos los archivos del sistema de archivos). Si es cierto, ¿es posible enseñarle al navegador a validar de alguna manera un código binario? Y no es un problema para un lado de back-end. Entonces, ¿por qué NodeJS no puede ejecutar JS compilado (lo mismo para PHP, Python, por qué se interpretan)?
  2. La optimización no es posible para el código binario. ¿Es realmente cierto? ¿El js interpretado optimizado es más rápido que el js compilado (a binario)?
  3. Diferentes CPU (arquitecturas) necesitan diferentes códigos binarios. Eso significa que es imposible generar un código binario universal para cualquier cliente. ¿Es por eso que los módulos WebAssembly usan algún código intermedio? Y nuevamente, ¿por qué no usar código compilado para un back-end?

Si alguien pudiera explicar algo de lo anterior o cualquier otra razón, estaría muy agradecido.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Primero digamos que, a menos que haya estado en las discusiones de diseño de Javascript en sus primeros días, ninguno de nosotros realmente "sabe" por qué. Lo mejor que podemos hacer es tratar de inferir por qué se podrían haber hecho ciertas elecciones dados los objetivos que tenían y las elecciones que tenían.

Si observa los requisitos para el diseño original de Javascript en las páginas web, verá cosas como esta:

  1. Debe ejecutarse en muchas plataformas.
  2. Debe ser fácilmente integrable en páginas HTML.
  3. Debe ser simple de programar.
  4. No es inicialmente un entorno que sienta la necesidad de maximizar el rendimiento de ejecución.
  5. No Java.

Miremos estos...

Sobre el n. ° 1, está bien, ejecutar en muchas plataformas significa que no se puede compilar en código de máquina nativo, punto. Podría compilarse en un código de bytes universal como Java o webAssembly, pero siga leyendo sobre los demás requisitos.

Sobre el #2, quiere ser integrable en páginas web para que puedas hacer cosas como:

 <div onclick='alert("hi")'>Click me</div>

Entonces, es bastante difícil tener un código compilado de antemano que encaje allí. Probablemente tendrías que compilar toda tu página web. Eso crea un paradigma y un navegador completamente nuevos (que esperan código precompilado y HTML). Si bien el mundo eventualmente podría haber ido allí, ciertamente no fue una manera fácil de hacerlo (requería volver a hacer el navegador).

Sobre el #3, "simple de programar", generalmente se cree que los "scripts" interpretados son más simples para comenzar que los lenguajes que necesitan un entorno de programación y una configuración de compilador y algunas herramientas de compilación. Es más rápido y sencillo hacer cosas sencillas.

Sobre #4, "actuación". En los primeros días de Javascript, era un lenguaje auxiliar para ayudar a agregar algo de lógica del lado del cliente a las páginas web. El objetivo inicial era mucho más simple de lo que se usa Javascript en la actualidad. Más bien dudo que se haya previsto que se necesitara un lenguaje precompilado para lo que era su objetivo inicial. Por lo tanto, manténgalo simple y opte por la forma más sencilla de alcanzar su objetivo.

Acerca de # 5: "no Java". Java era una herramienta conocida del día. Pero, Java no era súper simple, requería una precompilación, tenía gravámenes de IP, etc. Entonces, Javascript nació para ser algo familiar para los desarrolladores de C y Java, pero era mucho más simple de aprender para alguien nuevo. Fácil de hacer cosas sencillas.


En cuanto a entornos como nodejs, podrían tener un paso de precompilación más práctico, pero los primeros diseñadores de nodejs decidieron usar el motor Javascript V8 de código abierto en lugar de crear su propio motor Javascript. Además, en un mundo de servidores, su código generalmente se carga una vez al inicio del servidor, donde V8 lo compila en una combinación de código nativo y código de bytes de todos modos, por lo que requerir que los desarrolladores lo compilen previamente no necesariamente le compra mucho de todos modos. Aquí es donde importa que Javascript ahora esté realmente compilado, solo se compila al cargar en lugar de requerir una compilación previa por parte del desarrollador.

Y, hoy en día, si desea los beneficios de la verificación de tipos en un paso de precompilación, puede usar TypeScript y precompilar eso en Javascript.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda