"Cosas incorrectas" aquí significa la sobrecarga que le toma al intérprete analizar y procesar el código. Está conectado con la noción de lenguajes interpretados vs compilados. Hay varios modelos de traducción de código en uso, que se dividen aproximadamente en una de las siguientes categorías:
- Compilación nativa: el código fuente se compila directamente en el código de máquina. El mejor rendimiento a expensas de la portabilidad. Comúnmente asociado con C y C ++,
- Compilación intermedia: el código fuente se compila en un lenguaje intermedio simplificado (bytecode), que luego se interpreta o compila (compilación justo a tiempo) en el código de la máquina durante la ejecución. Mejor portabilidad que el código nativo, mejor rendimiento que la interpretación pura al tiempo que conserva algunas de las ventajas de la interpretación (como el enlace tardío). Los ejemplos incluyen C #, Java y otros lenguajes dirigidos a JVM y .NET CLR,
- Interpretación: el código fuente no se traduce directamente al código de la máquina, sino que lo interpreta y ejecuta un programa de intérprete dedicado. Los intérpretes varían en sofisticación, en la implementación ingenua, sin embargo, se reduce a analizar, analizar y ejecutar el código fuente línea por línea. La interpretación permite una mayor flexibilidad que la compilación, por lo tanto, los lenguajes interpretados hacen un uso más amplio del tipeo dinámico o la reflexión, por ejemplo. A menudo se considera que los lenguajes interpretados ofrecen una mayor productividad del desarrollador, ya que requieren menos código repetitivo y se prestan muy bien para la creación rápida de prototipos. Lo malo es un rendimiento reducido. Comúnmente asociado con JavaScript, Ruby o Python.
Por lo tanto, la elección entre lenguaje interpretado y compilado se reduce a la pregunta: ¿qué valoramos más, la productividad o el rendimiento del desarrollador? La migración descrita en el artículo parece seguir la misma línea de pensamiento, con un fuerte lenguaje de prototipos Ruby reemplazado por Scala basado en JVM debido a consideraciones de rendimiento.