¿Qué es un lenguaje de programación?
En términos generales, un lenguaje de programación es una herramienta que permite desarrollar software o programas para computadores. Los lenguajes de programación se emplean para diseñar e implementar los programas encargados de definir y administrar el comportamiento de los dispositivos físicos y lógicos de una computadora. Todo esto se logra mediante la creación de algoritmos de precisión que serán utilizados por parte del ser humano para comunicarse con las computadoras.
A grandes rasgos, un lenguaje de programación está formado por una serie de símbolos y reglas de sintaxis y semántica que definen su estructura principal y le dan un significado a sus elementos y expresiones. Este lenguaje de programación ejecuta un conjunto de acciones consecutivas, por lo que es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo. Estas instrucciones almacenan, mueven y cambian valores en la memoria de la computadora. Los valores pueden ser interpretados por varios dispositivos, como monitores, altavoces, teclados, almohadillas táctiles o ratones, que proporcionan formas de comunicación con el usuario.
Pero los lenguajes que los equipos usan para comunicarse entre ellos no tienen nada que ver con los lenguajes de programación; se los conoce como protocolos de comunicación. Se trata de dos conceptos totalmente diferentes. Un lenguaje de programación es muy estricto, a cada instrucción le corresponde una acción del procesador.
El lenguaje utilizado por el procesador se denomina código máquina. Se trata de instrucciones que llegan al procesador consistentes en una serie de datos binarios (ceros y unos). Este código máquina no es comprensible para los seres humanos y por esto se han desarrollado lenguajes intermediarios comprensibles para el hombre. El código escrito en este tipo de lenguaje se transforma en código máquina para que el procesador pueda interpretarlo.
El primer lenguaje de programación utilizado fue el lenguaje ensamblador. Se trata de código máquina cuyas instrucciones han sido reemplazados por comandos más intuitivos, pero solo los desarrolladores pueden comprenderlo. A pesar de su parecido con el código máquina, depende estrictamente del tipo de procesador utilizado. Es un lenguaje de nivel más alto que el de código máquina porque es más abstracto, es decir, está más cerca del programador.
Interpretación y compilación
Los lenguajes de programación pueden dividirse en dos categorías:
- Como ya he comentado, un lenguaje de programación es diferente al lenguaje máquina. Por lo tanto, debe traducirse para que el procesador pueda comprenderlo. Un programa escrito en un lenguaje interpretado requiere de un programa auxiliar (el intérprete), que traduce los comandos de los programas según sea necesario.
- Un programa escrito en un lenguaje compilado se traduce a través de un programa anexo llamado compilador que, a su vez, crea un nuevo archivo independiente que no necesita ningún otro programa para ejecutarse a sí mismo. Este archivo se llama ejecutable.
Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa anexo para ser ejecutado una vez que ha sido compilado. Además, como sólo es necesaria una traducción, la ejecución se vuelve más rápida. Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que cada modificación del archivo fuente (el archivo comprensible para los seres humanos: el archivo a compilar) requiere de la compilación del programa para aplicar los cambios.
Algunos lenguajes de programación pertenecen a ambas categorías (LISP, Java, Python...) dado que el programa escrito en estos lenguajes puede sufrir una fase de compilación intermediaria en un archivo escrito en un lenguaje ininteligible (por lo tanto diferente al archivo fuente) y no ejecutable (requeriría un intérprete). Los llamamos lenguajes intermedios. Como ejemplo tenemos los applets Java, que son pequeños programas que se cargan en páginas web. Se trata de archivos compilados que sólo pueden ejecutarse dentro de un navegador web.