La línea entre los idiomas "interpretados" y "compilados" es realmente difusa en estos días. Por ejemplo, lo primero que hace Python cuando ve el código fuente es compilarlo en una representación de bytecode, esencialmente lo mismo que hace Java al compilar archivos de clase. Esto es lo que contienen los archivos * .pyc. Entonces, el tiempo de ejecución de Python ejecuta el bytecode sin referirse a la fuente original. Tradicionalmente, un lenguaje puramente interpretado se referiría continuamente al código fuente al ejecutar el programa.
Al construir un idioma, es una buena forma de construir una base sólida sobre la que pueda implementar las funciones de nivel superior. Si tiene un sistema de manejo de cadenas sólido y rápido, el diseñador del lenguaje puede (y debe) implementar algo así como stripslashes() fuera del tiempo de ejecución base. Esto se hace por al menos unos pocos motivos:
- El diseñador del idioma puede demostrar que el lenguaje es lo suficientemente flexible para manejar ese tipo de tarea.
- El diseñador de idiomas realmente escribe código real en el idioma, que tiene pruebas y por lo tanto muestra que la base es sólida.
- Otras personas pueden leer, pedir prestado e incluso cambiar la función de nivel superior más fácilmente sin tener que ser capaces de construir o incluso comprender el núcleo del lenguaje.
El hecho de que un lenguaje como Python se compile para escribir y ejecutar código no significa que sea lento. No hay ninguna razón por la que alguien no pueda escribir un compilador Just-In-Time (JIT) para Python, en la misma línea de lo que ya hacen Java y .NET, para aumentar aún más el rendimiento. De hecho, IronPython compila Python directamente a .NET bytecode, que luego se ejecuta utilizando el sistema .NET, incluido el JIT.
Para responder a su pregunta directamente, la única vez que un diseñador de lenguaje implementaría una función en el lenguaje detrás del tiempo de ejecución (por ejemplo, C en el caso de Python) sería maximizar el rendimiento de esa función. Es por eso que los módulos como el analizador de expresiones regulares se escriben en C en lugar de en Python nativo. Por otro lado, un módulo como getopt.py se implementa en Python puro porque todo se puede hacer allí y no hay beneficio en usar la biblioteca C correspondiente.
En lugar de "aprovechar" el lenguaje compilado, ¿por qué no "usarlo" o "aprovecharlo"? No aumentemos el número de palabras clave en inglés a menos que tengamos que :) – MarkJ