Tipos de lenguajes de Programación
Existen tres tipos de lenguajes claramente diferenciados; el lenguaje máquina y los lenguajes de bajo nivel y los de alto nivel.
1º El Lenguaje Máquina: es el lenguaje de programación que entiende directamente la máquina (computadora). Este lenguaje de programación utiliza el alfabeto binario, es decir, el 0 y el 1.
El lenguaje máquina es el sistema de códigos interpretable directamente por un circuito microprogramable, como el microprocesador de una computadora. Este lenguaje se compone de un conjunto de instrucciones que determinan acciones que serán realizadas por la máquina. Un programa de computadora consiste en una cadena de estas instrucciones de lenguaje máquina (más los datos). Normalmente estas instrucciones son ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje máquina es específico de cada máquina o arquitectura de la máquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre ellas.
2º Lenguajes de programación de bajo nivel: Son mucho más fáciles de utilizar que el lenguaje máquina, pero dependen mucho de la máquina o computadora como sucedía con el lenguaje máquina. Dependen totalmente de la máquina, es decir, el programa que se realiza con este tipo de lenguajes no se pueden migrar o utilizar en otras maquinas. Al estar diseñados a medida del hardware, aprovechan al máximo las características del mismo. Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de una computadora. Consecuentemente, su trasladado al lenguaje máquina es fácil. El término ensamblador se refiere a un tipo de programa informático encargado de traducir un archivo fuente a un archivo objeto que contiene código máquina ejecutable directamente por la máquina para la que se ha generado.
El lenguaje ensamblador es un derivado del lenguaje maquina y está formado por abreviaturas de letras y números llamadas mnemotécnicos. Con la aparición de este lenguaje se crearon los programas traductores para poder pasar los programas escritos en lenguaje ensamblador a lenguaje máquina. Como ventaja con respecto al código máquina es que los códigos fuentes eran más cortos y los programas creados ocupaban menos memoria. Las desventajas de este lenguaje siguen siendo prácticamente las mismas que las del lenguaje ensamblador, añadiendo la dificultad de tener que aprender un nuevo lenguaje difícil de probar y mantener.
3º Lenguajes de programación de alto nivel. Los lenguajes de programación de alto nivel son más fáciles de aprender porque se encuentran más cercanos al lenguaje natural que al lenguaje máquina y utilizan palabras o comandos del lenguaje natural, generalmente del inglés. Este es el caso del BASIC, el lenguaje de programación más conocido. Están dirigidos a solucionar problemas mediante el uso de Estructuras Dinámicas de Datos, que son estructuras que pueden cambiar de tamaño durante la ejecución del programa y nos permiten crear estructuras de datos que se adapten a las necesidades reales de un programa.
Los lenguajes de programación de alto nivel se caracterizan porque su estructura semántica es muy similar a la forma como escriben los humanos, lo que permite codificar los algoritmos de manera más natural, en lugar de codificarlos en el lenguaje binario de las máquinas, o a nivel de lenguaje ensamblador. Se trata de lenguajes independientes de la arquitectura del ordenador. Por eso, un programa escrito en un lenguaje de alto nivel, puede ser migrado de una máquina a otra sin ningún tipo de problema. Estos lenguajes permiten al programador olvidarse por completo del funcionamiento interno de la máquina para la que está diseñando el programa. Tan solo necesitará un traductor que entienda tanto el código fuente como las características de la maquina.
Los programadores modernos muy rara vez escriben en lenguaje ensamblador. En su lugar, usan uno de los muchos lenguajes de alto nivel como C, Java o Python, cuyos compiladores o intérpretes pueden traducir al código máquina. Estos lenguajes evitan que el programador tenga que involucrarse con el mundo físico del hardware y lo llevan a la abstracción lógica: en lugar de mover valores hexadecimales por los registros de la memoria, el programador trabaja con variables cuyos contenidos pueden ser modificados, con bucles que pueden repetirse hasta que se cumpla una condición, con sentencias lógicas como IF, AND, THEN, OR y ELSE, entre otras herramientas. Estos lenguajes están diseñados para el programador, atendiendo a las formas en las que se puede lograr la máxima potencia con la menor dificultad.
Las diferencias entre los lenguajes de programación de alto y de bajo nivel
Los lenguajes de programación de computadoras de alto y de bajo nivel están diseñados para permitir la comunicación entre un humano y una computadora a distintos niveles de abstracción. Un lenguaje de muy bajo nivel requiere que un humano proporcione instrucciones directamente al hardware de la computadora, usando el lenguaje y la estructura de dicho hardware; en el caso de los lenguajes de alto nivel, los humanos trabajan con herramientas lógicas complejas y abstractas para escribir instrucciones que un programa determinado debe traducir para que la computadora comprenda.
En ocasiones, la capacidad de comunicarse directamente con el procesador de la computadora en lenguaje ensamblador o incluso en código máquina puede resolver los problemas que las capas de abstracción de un lenguaje de alto nivel pueden dificultar. Un lenguaje de muy alto nivel puede tratar sólo con un sistema operativo determinado, como Microsoft Visual Basic, o con un programa determinado, como las "macros" de un procesador de textos. Estos programas son muy útiles para cualquiera que quiera manipular Windows o Word sin tener que saber cómo funciona, pero un lenguaje así no sería útil para alguien que intente escribir un programa propio y que necesita un lenguaje de nivel más bajo. El programador debe elegir un lenguaje u otro dependiendo del trabajo que necesite llevar a cabo.
Existen diferentes tipos de lenguajes de programación de alto nivel según el punto de vista de cómo trabajan dichos programas y la filosofía de su creación:
Lenguajes imperativos: emplean instrucciones como unidad de trabajo de los programas. Entre ellos tenemos Cobol, Pascal, C y Ada.
Lenguajes declarativos: los programas se construyen mediante descripciones de funciones o expresiones lógicas. Por ejemplo, Lisp y Prolog.
Lenguajes de programación orientados a objetos: diseño basado en los datos y su estructura. La unidad de proceso es el objeto en el que se incluyen los datos (variables) y las operaciones que actúan sobre ellos. Por ejemplo, Smalltalk y el C++.
Lenguajes orientados al problema: diseñados para solventar problemas específicos, principalmente de gestión; suelen ser generadores de aplicaciones.
Lenguajes de programación naturales: son los nuevos lenguajes en desarrollo que pretenden aproximar el diseño y la creación de programas al lenguaje de las personas.