Los idiomas interpretados funcionan mejor cuando el cuello de botella no es la CPU. Un buen ejemplo de esto solía ser el desarrollo del lado del servidor antes de pasar a hipervisores y contenedores. Cuando eras el único proceso en la caja, y la caja pasaba la mayor parte del tiempo esperando solicitudes o llamando a la base de datos, realmente no importaba si el rendimiento de la CPU era subóptimo.
Los hipervisores rompieron esto porque ahora necesitamos compartir la CPU entre múltiples máquinas virtuales que se ejecutan en la misma máquina. Los idiomas ineficientes limitan la cantidad de máquinas virtuales que puede tener, pero también proporcionan un buen mecanismo para aprovechar múltiples núcleos en el hardware del servidor moderno … algo en lo que los idiomas con concurrencia de Global Interpreter Lock (python / ruby) son realmente malos.
Otro nicho donde brillan los lenguajes interpretados es donde el foco está en los ciclos de retroalimentación ajustados para el desarrollador, y no en el rendimiento. O donde es más importante poder configurar rápidamente módulos compilados en algo más coherente. La ciencia de datos es un buen ejemplo de esto, donde R y Python gobiernan el mundo. Además, las secuencias de comandos del juego donde Lua se usa muy fuertemente.
- ¿Qué es más importante en un servidor de base de datos, ser más rápido o tener más funciones?
- ¿Es posible escribir un script que extraiga automáticamente las consultas de búsqueda y las coloque en una hoja de cálculo o en una base de datos para encontrar la mejor oferta?
- Cómo deshabilitar el acceso a Internet en mi iPhone y iPad cuando necesito concentrarme
- ¿Cuál es la mejor aplicación para el seguimiento en tiempo real de 'tiempos de espera en Disneyland'?
- ¿Cómo comenzó LINE?
Los lenguajes compilados son excelentes cuando el rendimiento de la CPU es crítico. Los videojuegos AAA son el ejemplo canónico, pero los servicios web de alto rendimiento también tienden a compilarse. Facebook incluso llegó a compilar PHP para mejorar su rendimiento. Incluso la ciencia de datos tiende a ser una colección de módulos compilados junto con un lenguaje de script.
El ensamblaje / Metal desnudo es donde se necesita hasta la última onza de rendimiento de la CPU o donde el consumo de memoria debe mantenerse al mínimo absoluto y donde la capacidad de usar el código en múltiples arquitecturas no importa. Las primeras consolas de juegos se codificaban frecuentemente en conjunto, para que cada último ciclo funcionara de la manera más eficiente. De manera similar, la mayoría de los sistemas operativos tienen ciclos cerrados en los programadores que a menudo se optimizan manualmente para cada arquitectura.