Un lenguaje de programación es un lenguaje formal diseñado para expresar procesos que pueden ser llevados a cabo por máquinas como los ordenadores.
Está formado por un conjunto de
símbolos y reglas sintácticas y semánticas que definen su
estructura y el significado de sus elementos y expresiones. Al
proceso por el cual se escribe, se prueba, se depura, se compila
(de ser necesario) y se mantiene el código fuente de un programa
informático se le llama programación.
Por algoritmo se entiende el "conjunto de operaciones y
procedimientos que deben seguirse para resolver un problema en un
número finito de pasos". La palabra "algoritmo" deriva del nombre
del matemático árabe Mohamed Ibn Moussa Al Kow Rizmi, quien
escribió entre los años 800 y 825 su obra Quitab Al Jabr Al
Mugabala, donde se recogía el sistema de numeración hindú y el
concepto del cero. Fue Fibonacci, el que tradujo su obra al latín y
la inició con las palabras, Algoritmi dicit. El siguiente
esquema indica el algoritmo para indicar que un número es mayor que
otro.
La diferencia entre el lenguaje algorítmico y el informático, es que el algorítmico es aquel por medio del cual se realiza un análisis previo del problema a resolver y encontrar un método que permita resolverlo. El conjunto de todas las operaciones a realizar, y el orden en el que deben efectuarse, se denomina algoritmo. El lenguaje informático es aquel por medio del cual dicho algoritmo se codifica a un sistema comprensible por el ordenador.
Una clasificación habitual de los
lenguajes es considerar dos grupos según la forma de
ejecución en un ordenador, intérpretes y compiladores,
según se describe seguidamente.
Un lenguaje se dice que es interpretado, por
ejemplo el BASIC original, cuando para ejecutar un programa el
lenguaje ha de leer y traducir al lenguaje nativo de la máquina las
instrucciones una por una. Como es lógico el proceso se ralentiza,
por ejemplo si una operación está dentro de la estructura conocida
como ciclo y este se repite 100 veces, el lenguaje tiene que
traducir el programa fuente 100 veces al código de la máquina. No
todo son desventajas, pues la parte buena de este tipo de lenguajes
es que los errores se pueden corregir al momento y seguir
fácilmente la ejecución del programa, por lo cual son idóneos,
aunque el BASIC no es recomendable, para aprender a programar,
proceso en el que da lo mismo la lentitud. Otro ejemplo habitual de
lenguaje interpretado es el código HTML con el que se escriben la
mayoría de las páginas web, que no es propiamente un lenguaje de
programación, sino un conjunto de instrucciones que permiten
diseñar el contenido de los documentos). El siguiente esquema
muestra como funciona un intérprete:
Ventajas de los intérpretes
Tipos de compiladores:
En conclusión, un lenguaje de bajo nivel está orientado hacia una
determinada máquina o clases de ordenadores, es decir es específico
de un tipo de CPU concreta. Mientras que un lenguaje de alto nivel
es independiente del microprocesador del ordenador que lo soporta,
así por ejemplo un programa escrito en lenguaje C, se puede
compilar sin modificar para cualquier máquina, y en principio
funcionará sin ningún problema.
Esto implica dos ventajas principales, una es que la persona que
desarrolla los programas no ha de saber nada acerca del ordenador
en que se ejecutará el programa, la otra es que los programas son
portables, es decir el mismo programa (en teoría) ha de funcionar
sobre distintos tipos de ordenadores.
El desarrollo de los lenguajes de alto nivel comenzó a mediados de
los años cincuenta del siglo pasado, en esta época se crearon los
lenguajes COBOL, Fortran y ALGOL60. Posteriormente han ido
originándose otros muchos, aunque sobreviven muy pocos.
Seguidamente se citan algunos lenguajes de alto nivel:
JAVA, BASIC, FORTRAN, MODULA 2, Pascal, ADA, C, C ++, LOGO, LISP,
PROLOG, Ruby, Dart.
Una tercera forma de clasificar los lenguajes de programación es
según el paradigma de programación, declarativo,
imperativo, orientado a objetos y funcional. Los imperativos
establecen cómo debe ejecutarse una tarea fraccionándola en
procedimientos que especifican cada una de las tareas, por ejemplo
C, Fortran y Pascal. Por el contrario los declarativos establecen
estructuras de datos y las relaciones entre ellos que son
significativas para ejecutar una tarea determinada, al tiempo que
indican cual es el objetivo de dicha tarea. Un lenguaje típico de
este grupo es el Prolog. El orientado a objetos usa objetos y sus
interacciones para diseñar aplicaciones y programas de ordenador;
está basado en varias técnicas, incluyendo herencia, modularidad,
polimorfismo y encapsulamiento, Smalltalk es el lenguaje más
representativo de este tipo. Funcional es un paradigma de
programación declarativo basado en la utilización de funciones
matemáticas, el lenguaje más representativo es LISP (procesado de
listas). Aunque puede seleccionarse la forma pura de estos
paradigmas a la hora de programar, en la práctica es habitual que
se mezclen, dando lugar a la programación multiparadigma.