Lenguaje de programación
Un lenguaje de programación es un lenguaje
diseñado para describir el conjunto de acciones consecutivas que un
equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un
modo práctico para que los seres humanos puedan dar instrucciones a un
equipo.
Por otro lado, el término "lenguaje natural"
define un medio de comunicación compartido por un grupo de personas (por
ejemplo: inglés o francés).
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:
El lenguaje utilizado por el procesador se denomina lenguaje máquina. Se trata de datos tal como llegan al procesador, que consisten en una serie de 0 y 1 ( datos binarios).
El lenguaje máquina, por lo tanto, no es
comprensible para los seres humanos, razón por la cual 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 procesarlo.
El ensamblador fue el primer lenguaje de
programación utilizado. Es muy similar al lenguaje máquina, pero los
desarrolladores pueden comprenderlo. No obstante, este lenguaje se
parece tanto al lenguaje máquina que depende estrictamente del tipo de
procesador utilizado (cada tipo de procesador puede tener su propio
lenguaje máquina). Así, un programa desarrollado para un equipo no puede
ser portado a otro tipo de equipo. El término "portabilidad"
describe la capacidad de usar un programa de software en diferentes
tipos de equipos. Para poder utilizar un programa de software escrito en
un código ensamblador en otro tipo de equipo, ¡a veces será necesario
volver a escribir todo el programa!
Por lo tanto, un lenguaje de programación tiene varias ventajas:
- es mucho más fácil de comprender que un lenguaje máquina:
- permite mayor portabilidad, es decir que puede adaptarse fácilmente para ejecutarse en diferentes tipos de equipos.
Lenguajes de programación imperativos y funcionales
Los lenguajes de programación generalmente se dividen en dos grupos principales en base al procesamiento de sus comandos:
- lenguajes imperativos;
- lenguajes funcionales.
Lenguaje de programación imperativo
Un lenguaje imperativo programa mediante una serie de
comandos, agrupados en bloques y compuestos de órdenes condicionales
que permiten al programa retornar a un bloque de comandos si se cumple
la condición. Estos fueron los primeros lenguajes de programación en uso
y aún hoy muchos lenguajes modernos usan este principio.
No obstante, los lenguajes imperativos estructurados carecen de flexibilidad debido a la secuencialidad de las instrucciones.
Lenguaje de programación funcional
Un
lenguaje de programación funcional(a menudo llamado
lenguaje procedimental)
es un lenguaje que crea programas mediante funciones, devuelve un nuevo
estado de resultado y recibe como entrada el resultado de otras
funciones. Cuando una función se invoca a sí misma, hablamos de
recursividad.
Interpretación y compilación
Los lenguajes de programación pueden, en líneas generales, dividirse en dos categorías:
- lenguajes interpretados
- lenguajes compilados
Lenguaje interpretado
Un lenguaje de programación es, por definición,
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.
Lenguaje compilado
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.
Por otra parte, un programa compilado tiene la
ventaja de garantizar la seguridad del código fuente. En efecto, el
lenguaje interpretado, al ser directamente un lenguaje legible, hace que
cualquier persona pueda conocer los secretos de fabricación de un
programa y, de ese modo, copiar su código o incluso modificarlo. Por lo
tanto, existe el riesgo de que los derechos de autor no sean respetados.
Por otro lado, ciertas aplicaciones aseguradas necesitan
confidencialidad de código para evitar las copias ilegales
(transacciones bancarias, pagos en línea, comunicaciones seguras...).
Lenguajes intermediarios
Algunos lenguajes pertenecen a ambas categorías
(LISP, Java, Python...) dado que el programa escrito en estos lenguajes
puede, en ciertos casos, 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
interprete). Los applets Java, pequeños programas que a menudo se cargan
en páginas web, son archivos compilados que sólo pueden ejecutarse
dentro de un navegador web (son archivos con la extensión .class).
Algunos ejemplos de lenguajes ampliamente usados
A continuación, encontrará una breve lista de los lenguajes de programación actuales:
Lenguaje |
Principal área de aplicación |
Compilado/interpretado |
ADA |
Tiempo real |
Lenguaje compilado |
BASIC |
Programación para fines educativos |
Lenguaje interpretado |
C |
Programación de sistema |
Lenguaje compilado |
C++ |
Programación de sistema orientado a objeto |
Lenguaje compilado |
Cobol |
Administración |
Lenguaje compilado |
Fortran |
Cálculo |
Lenguaje compilado |
Java |
Programación orientada a Internet |
Lenguaje intermediario |
MATLAB |
Cálculos matemáticos |
Lenguaje interpretado |
Cálculos matemáticos |
Cálculos matemáticos |
Lenguaje interpretado |
LISP |
Inteligencia artificial |
Lenguaje intermediario |
Pascal |
Educación |
Lenguaje compilado |
PHP |
Desarrollo de sitios web dinámicos |
Lenguaje interpretado |
Inteligencia artificial |
Inteligencia artificial |
Lenguaje interpretado |
Perl |
Procesamiento de cadenas de caracteres |
Lenguaje interpretado |