Entre los programas que emplean lenguajes de programación, los más
elementales son los ensambladores, ya que ofrecen al programador un
modelo riguroso de la máquina. En ellos se emplean mnemónicos,
abreviaturas simbólicas, para cada una de las instrucciones de
la máquina y desde ellos, están disponibles para el programador
todos los recursos del equipo en su nivel más elemental. Los
programas que se encargan de la traducción, se limitan a realizar
una correspondencia uno a uno entre los mnemónicos y las
instrucciones de máquina.
Los interpretadores utilizan lenguajes, también simbólicos, pero en este caso, cada símbolo tiene una función asociada por el interprete con esta modalidad, el interpretador puede prever las consecuencias de la operación antes de realizarla y emitir, en su caso, diagnósticos para beneficio del usuario. Las operaciones asociadas a cada símbolo no están confinadas a las operaciones disponibles en la máquina, pueden ser instrucciones de otra máquina y de cualquier nivel de complejidad y elaboración.
Los compiladores realizan la traducción de programas desde un lenguaje hasta otro. Las naturalezas de los lenguajes fuente y destino son en principio diferentes. Generalmente, el lenguaje destino es el lenguaje de la máquina o el ensamblador. Es el caso de los compiladores de Fortran que traducen los programas que están descritos por el programador en términos de un lenguaje algebraico y con el empleo de matrices. Rigurosamente, Fortran no fue el primero de los esfuerzos en esta dirección, hubo antes otros como el MAD (Michigan Algebraic Decoder), fue el esfuerzo unificador de la IBM que condujo al Fortran.
Con el empleo de los lenguajes de programación, los usuarios
no requieren conocer en detalle las características de la
computadora para hacer sus computaciones en gran escala. En la
actualidad hay tantos lenguajes de programación que nos limitaremos
a hacer algunos comentarios sobre los más conocidos.
Fortran, Algol, Pascal, Ada y Modula, representan una cadena de
lenguajes con un origen común, permitir la descripción de
computaciones numéricas con el empleo de notaciones algebraicas y
matriciales, cada eslabón de la cadena aporta nuevos elementos,
la mayor de las veces triviales, pero en la cadena se observa una
tendencia muy señalada consistente en que cada vez es más rigurosa
la especificación de los tipos de datos que se emplean en los
programas.
Algol pretendió ser más un lenguaje matemático para describir
algoritmos, que un lenguaje de programación. Introdujo los principios
de la estructuración, descomponiendo el programa en procedimientos y
poniendo énfasis en las formas de transmisión de argumentos del
programa a los procedimientos secundarios.
Para obtener independencia de las particularidades de la entrada y
salida de cada equipo, no estableciendo especificaciones sobre estos aspectos.
PASCAL por su parte, acentúo la estructuración de los programas, para ello prescribió el uso de las transferencias incondicionales, limitando las formas de control a las estructuras DO-WHILE e IF-THEN-ELSE, con lo que obligó al usuario a organizar sus programas, simplificando su desarrollo, depuración y mantenimiento.
Fortran, Basic, Pascal, en esta serie de lenguajes. También
con un origen común, el énfasis que se observa consiste en
ofrecer una mayor independencia en las especificaciones de entrada y
salida, en mejores facilidades para el manejo de textos en los
programas, un empleo interactivo del lenguaje, así como una
acusada simplificación en la presentación de los resultados.
Específicamente, Basic eliminó las tediosas especificaciones
de formato, indispensables en Fortran, para la presentación de los
resultados.
También hubo lenguajes que enfatizaron tanto la especificación
de los datos, que llegaron al extremo de no solo ofrecer datos numéricos
y textos, sino también de integrarles una estructura.
Tal es el caso de ``C'', Alpha-Basic (una variante de Basic para los
equipos Alpha-Micro), e inclusive COBOL, que se orientó más a
ambientes administrativos que a los de la ingeniería, por lo que
su aritmética fue muy limitada.
Algunos de los lenguajes, introdujeron características muy
especializadas, tal es el caso de COBOL, que con su enfoque administrativo,
incorporó una excelente colección de subrutinas para el manejo y la
organización de fuertes volúmenes de datos alfanuméricos, entre
ellas el ISAM (Indexed Sequential Access Method) que establecieron los
fundamentos para los manejadores de bases de datos.
Y también el de ``C'', que pretendió utilizar el lenguaje de máquina
de la PDP-11 de DEC, como lenguaje de alto nivel.
Al margen de toda esta colección de lenguajes en los que el
cálculo numérico juega el papel central, surgen otros lenguajes,
los clasificados como no numéricos, que se caracterizaron por su
énfasis en el manejo de cadenas de carácteres, la edición de
textos, el reconocimientos de patrones y la propiedad de que el
programa fuente es de la misma naturaleza que los datos que
manejan.
Por su enfoque diferente, este tipo de lenguajes se
utilizó en aplicaciones menos convencionales, como lo son la
compilación de lenguajes y para los estudios y desarrollos
realizados en el terreno de la inteligencia artificial. Sobresalen
entre ellos LISP para el manejo de listas; COMIT y SNOBOL en el
reconocimiento de patrones. Más adelante, se agregan IPL V y
PROLOG.
Por su naturaleza, los lenguajes no numéricos
enfrentaron en sus inicios problemas con la velocidad de los
equipos y las capacidades de sus memorias. Por esto, su
desarrollo registró una pausa aunque en fechas recientes, con
el apoyo de los nuevos equipos, han recibido un nuevo impulso.
Si bien los primeros resultados en este campo fueron poco
convincentes: programas de juego decepcionantes, sistemas rígidos
de traducción, y demostraciones de teoremas triviales; el nuevo
período ha ofrecido resultados sumamente interesantes, entre los
que podemos citar a los sistemas expertos.
Estos sistemas expertos, además de organizar considerables
volúmenes de datos y reducirlos a través de operaciones lógicas,
realizan ya inferencias elementales. Orientados a la geología, la
medicina y al diagnóstico en general, se perfilan como consejeros capaces
de emitir juicios.
Uno de los éxitos más sonados y que mayor controversia ha despertado,
es la inferencia que realizó un sistema experto en 1982, el Prospector
que permitió identificar un filón de molibdeno, en un sitio en donde
nadie lo habría imaginado.