Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCI�N
El primer paso hacia lenguajes de programaci�n m�s amigables con las personas fue
el desarrollo de lenguajes de ensamblaje mnem�nicos a principios de los a�os
cincuenta. Inicialmente, las instrucciones en un lenguaje ensamblador eran
simplemente representaciones mnem�nicas de instrucciones de m�quina. M�s tarde, se
agregaron instrucciones de macros a los lenguajes de ensamblaje para que un
programador pudiera definir taquigraf�as pararr�eterizadas para secuencias de
instrucciones de m�quina de uso frecuente.
En la segunda mitad de la d�cada de 1950 se dio un paso importante hacia los
idiomas de mayor nivel con el desarrollo de Fortran para computaci�n cient�fica,
Cobol para procesamiento de datos comerciales y Lisp para computaci�n simb�lica. La
filosof�a detr�s de estos lenguajes fue crear notaciones de nivel superior con las
cuales los programadores podr�an escribir m�s f�cilmente c�lculos num�ricos,
aplicaciones comerciales y programas simb�licos. Estos idiomas fueron tan exitosos
que todav�a est�n en uso hoy en d�a.
En las siguientes d�cadas, se crearon muchos m�s lenguajes con caracter�sticas
innovadoras para ayudar a hacer la programaci�n m�s f�cil, m�s natural y m�s
robusto. M�s adelante en este cap�tulo, analizaremos algunas caracter�sticas clave
que son comunes a muchos lenguajes de programaci�n modernos.
Hoy en d�a, hay miles de lenguajes de programaci�n. Se pueden clasificar de varias
maneras. Una clasificaci�n es por generaci�n. Los lenguajes de primera generaci�n
son los lenguajes de m�quina, los lenguajes de ensamblaje de segunda generaci�n y
los lenguajes de nivel superior de tercera generaci�n como Fortran, Cobol, Lisp, C,
C ++, C # y Java. Los lenguajes de cuarta generaci�n son lenguajes dise�ados para
aplicaciones espec�ficas como NOMAD para la generaci�n de informes, SQL para
consultas de bases de datos y Postscript para el formato de texto. El t�rmino
lenguaje de quinta generaci�n se ha aplicado a lenguajes basados ??en l�gica y
restricciones como Prolog y OPS5.
Otra clasificaci�n de idiomas usa el t�rmino imperatioe para los idiomas en los que
un programa especifica c�mo se debe realizar un c�mputo y la declaraci�n para los
idiomas en los que un programa especifica qu� c�mputo se debe hacer. Los lenguajes
como C, C ++, C # y Java son lenguajes imperativos. En los lenguajes imperativos
hay una noci�n de estado de programa y declaraciones que cambian el estado. Los
lenguajes funcionales como ML y Haskell y los lenguajes de l�gica de restricci�n
como Prolog se suelen considerar lenguajes declarativos.
El t�rmino lenguaje non N eumann se aplica a los lenguajes de programaci�n cuyo
modelo computacional se basa en la arquitectura de computadora de von Neumann.
Muchos de los idiomas actuales, como Fortran y C, son idiomas de von Neumann.
Un lenguaje orientado a objetos es uno que admite la programaci�n de objetos
orientados a objetos, un estilo de programaci�n en el que un programa consiste en
una colecci�n de objetos que interact�an entre s�. Simula 67 y Smalltalk son los
primeros lenguajes principales orientados a objetos. Los lenguajes como C ++, C #,
Java y Ruby son lenguajes orientados a objetos m�s recientes.
Los lenguajes de script son lenguajes interpretados con operadores de alto nivel de
firmado para "pegar juntos" los c�lculos. Estos c�lculos fueron originalmente
14 CAP�TULO 1. INTRODUCCI�N
llamados "scripts". Awk, JavaScript, Perl, PHP, Python, Ruby y Tcl son ejemplos
populares de lenguajes de scripting. Los programas escritos en script�ng.languagss
suelen ser mucho m�s cortos que los programas equivalentes escritos en lenguajes
como C.I
1.3.2 Impactos en los compiladores
a) imperativo
d) orientado a objetos
g) de cuarta generaci�n
b) declaraci�n e) funcional
h) scripting
c) von Neumann
f) tercera generaci�n
1.4. LA CIENCIA DE CONSTRUIR A ~ COA1PILER 15
1) C
6) Lisp
2) C ++
7) ML
3) Cobol
8) Perl
4) Fortran
9) Python
5) Java
10) VB.
El dise�o del compilador est� lleno de hermosos ejemplos en los que los problemas
complejos del mundo real se resuelven abstrayendo la esencia del problema
matem�ticamente. Estos sirven como excelentes ilustraciones de c�mo se pueden usar
las abstracciones para resolver problemas: tomar un problema, formular una
abstracci�n matem�tica que capture las caracter�sticas clave y resolverlo
utilizando t�cnicas matem�ticas. La formulaci�n del problema debe basarse en una
comprensi�n s�lida de las caracter�sticas. del programa inform�tico, y la soluci�n
debe ser validada y refinada emp�ricamente.
Un compilador debe aceptar todos los programas de origen que se ajusten a la
especificaci�n del lenguaje; el conjunto de programas de origen es infinito y
cualquier programa puede ser muy largo, posiblemente con millones de l�neas de
c�digo. Cualquier transformaci�n realizada por el compilador mientras traduce un
programa de origen debe preservar el significado del programa que se est�
compilando. Por lo tanto, los compiladores de compiladores tienen influencia no
solo en los compiladores que crean, sino en todos los programas que compilan sus
apiladores de ma�z. Sin embargo, tambi�n hace que el desarrollo del compilador sea
un desaf�o.