En la terminología de programación de computadoras, 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 del 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 del 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 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 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 tratar este problema manejando el sistema para el programador, liberando ella para completar una tarea más avanzada sin tener en cuenta los detalles minuciosos del sistema, como la memoria administración. 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. Por lo general, un lenguaje de alto nivel no es adecuado para la programación de sistemas.
Video del día
Velocidad
Los lenguajes de alto nivel suelen ser lenguajes "interpretados" en lugar de lenguajes de bajo nivel "compilados". "Interpretado" simplemente significa que un lenguaje utiliza 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, como ejemplo, solo se ejecuta sobre el intérprete de Python, que está escrito en C. Esto aumenta la sobrecarga de memoria y tiempo de los programas interpretados y, a menudo, se ejecutan más lentamente.
Peculiaridades del sistema
Una aparente fortaleza 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 apropiado. 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 aptos, o al menos aún no están preparados. Sin acceso a los recursos del sistema, el desarrollo rápido de aplicaciones nativas del sistema operativo es difícil. 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 el uso comercial e industrial, los lenguajes interpretados pueden funcionar con demasiada lentitud o muy lejos de la interacción del hardware.