Las desventajas de los lenguajes de programación de alto nivel

En la terminología de programación informática, los lenguajes de programación a menudo se dividen en lenguajes de "alto nivel" y "bajo nivel". La diferencia entre los dos es una cuestión de interacción de hardware. En pocas palabras, los lenguajes de bajo nivel residen "más abajo" en el sistema informático, más cerca de la interacción real con el hardware. Los lenguajes de alto nivel se abstraen del hardware. El resultado de esta abstracción puede resultar en un código más rápido y más legible, pero con beneficios de menor velocidad y menos acceso a los recursos del sistema.

Abstracción

Lo que diferencia a los lenguajes de alto nivel de los lenguajes de bajo nivel es el nivel de abstracción que tiene un lenguaje de los recursos del sistema. Tratar con los recursos del sistema a diario puede volverse lento y doloroso. Se crearon lenguajes de alto nivel para solucionar este problema al manejar el sistema para el programador, liberándolo para completar tareas más avanzadas mientras ignora los detalles minuciosos del sistema, como la administración de la memoria. Sin embargo, esto tiene el inconveniente de que un programador puede encontrarse en una situación en la que se requiere acceso al sistema y un lenguaje de alto nivel no puede brindar ese acceso. Un lenguaje de alto nivel normalmente no es adecuado para la programación de sistemas.

Velocidad

Los lenguajes de alto nivel suelen ser lenguajes "interpretados" en lugar de los lenguajes de bajo nivel "compilados". "Interpretado" simplemente significa que un idioma usa un intérprete que ejecuta el código fuente una línea a la vez, en lugar de compilar un archivo binario. Sin embargo, los intérpretes suelen ser programas escritos en lenguajes compilados. Debido a esto, el lenguaje interpretado (Python, por ejemplo) solo se ejecuta sobre el intérprete de Python, que está escrito en C. Esto aumenta la sobrecarga de memoria y tiempo para los programas interpretados y, a menudo, se ejecutan más lentamente.

Peculiaridades del sistema

Una fortaleza aparente del código de alto nivel es su portabilidad. El código de alto nivel puede ejecutarse en cualquier sistema que tenga instalado el intérprete adecuado. Sin embargo, cuando se compila un programa para una computadora, se tiene en cuenta todo el entorno de ese sistema en su compilación. Un lenguaje interpretado ya está abstraído del sistema hasta tal punto que el programa interpretado no sabe nada sobre el sistema excepto lo que el intérprete puede proporcionarle.

Límites de programación

Debido a la naturaleza de los lenguajes de alto nivel, hay ciertas tareas para las que no son adecuados o, al menos, para las que aún no lo son. Sin acceso a los recursos del sistema, es difícil desarrollar aplicaciones nativas del sistema operativo rápidas. Además, incluso desarrollar un sistema operativo se vuelve problemático. A medida que más software se mueve en línea, este hecho se vuelve menos preocupante pero, para uso comercial e industrial, los lenguajes interpretados pueden funcionar con demasiada lentitud o estar demasiado alejados de la interacción con el hardware.