Bienvenido a la Comunidad de Treehouse
¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.
¿Buscas aprender algo nuevo?
Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de
Inicia tu prueba gratuita
Luis Zarza
3,145 puntos¿Qué lenguaje hay detrás de JavaScript?
Solo tengo curiosidad sobre qué tipo de lenguaje se ejecuta bajo el capó del lenguaje JS.
¿En qué fundamentos está escrito el lenguaje?
Gracias
3 Respuestas
Michael Hulet
47,914 puntosUn intérprete de JavaScript es solo un programa de computadora, por lo que, al igual que cualquier otro programa de computadora arbitrario, puede escribirse en cualquier lenguaje completo de Turing (¡incluso en JavaScript mismo!). Por lo tanto, depende de qué intérprete específico estés usando, aunque creo que los motores más comunes están escritos en una combinación de C y C++
- El intérprete original de JavaScript para Netscape Navigator (ahora conocido como SpiderMonkey y mantenido por Mozilla para Firefox) está en C/C++
- JavaScriptCore, el motor utilizado por WebKit (la plataforma web utilizada por Safari y todos los sistemas iOS, watchOS y tvOS) está en C++
- Blink, el motor utilizado por Chrome, Opera y versiones recientes de Edge, es un derivado de WebKit, por lo que también está en C++
- Chakra, el motor utilizado por Internet Explorer y versiones anteriores de Edge, también es una combinación de C y C++
- V8, el motor utilizado por Node.js y versiones anteriores de Chrome, también está escrito en C++
Luis Zarza
3,145 puntosHola, gracias por tu respuesta. ¡Una muy completa en efecto!
Aunque hay una cosa que no me queda clara. ¿Cómo puede el intérprete estar escrito en JavaScript mismo?
Creo que para entender esto necesitaría saber más sobre intérpretes.
Por cierto, sé de hecho que PHP está escrito en C. ¿Por qué JS es diferente de PHP en ese sentido?
Michael Hulet
47,914 puntosJavaScript es un lenguaje completo de Turing , lo que significa (aproximadamente) que puede expresar cualquier algoritmo o conjunto de instrucciones matemáticas, por lo que puedes usarlo para construir cualquier software. Un intérprete de JavaScript es solo software, por lo que puedes implementar totalmente un intérprete de JavaScript en JavaScript. Sin embargo, dado que JavaScript es un lenguaje interpretado, eso sería lento, ya que necesitarías ejecutar el intérprete encima de otro intérprete. Sin embargo, en el campo de los lenguajes compilados es popular implementar el compilador del lenguaje en el lenguaje mismo, una vez que el compilador es suficientemente avanzado. Por ejemplo, el compilador de Rust está implementado en Rust mismo
Un intérprete de PHP también puede escribirse en cualquier lenguaje que desees, por lo que depende del intérprete específico que estés usando, al igual que JavaScript. Tienes razón en que el canónico está implementado en C, pero hay varios otros populares. Por ejemplo, HHVM, el intérprete de PHP que usa Facebook, está implementado en C++, OCaml y Rust
La conclusión aquí es que los programas que definen lenguajes de programación (también llamados intérpretes o compiladores) son solo programas de computadora en sí mismos, por lo que pueden implementarse en cualquier lenguaje de programación completo de Turing. El lenguaje en el que se implementó tu compilador o intérprete en sí depende del compilador o intérprete específico que estés usando. Ese lenguaje es probablemente en última instancia solo una opción personal de la persona o equipo que construyó el compilador o intérprete con el que estás trabajando
Luis Zarza
3,145 puntosMuchas gracias Michael Hulet !
Esa fue una respuesta increíble.
Creo que la clave para resolver mi duda estaba aquí "Dado que JavaScript es un lenguaje interpretado". ¿Creo entonces que C no es un lenguaje interpretado? ¿y si lo es, qué lenguaje es el que traduce C o JavaScript a lenguaje máquina? Esa es la parte que me falta.
Gracias