– Typeset by GMNI & FoilTEX –
LENGUAJES DE PROGRAMACI ÓN EN INGENIERÍA:
Evoluci ón de los Lenguajes de Programaci ón
F. Navarrina, I. Colominas, H. G ómez, J. París, M. Casteleiro
GMNI — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Departamento de Métodos Matemáticos y de Representaci ón
Escuela Técnica Superior de Ingenieros de Caminos, Canales y Puertos
Universidad de A Coru ña, Espa ña
e-mail:
[email protected]
página web: http://caminos.udc.es/gmni
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
ÍNDICE
Principales paradigmas de programación
Lenguaje Máquina
Ensamblador
FORTRAN
Lenguajes compilados
BASIC
Lenguajes interpretados
Programación estructurada
FORTRAN 77
Lenguaje C
Tendencias actuales
Curiosidades
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Principales paradigmas de programaci ón (I)
PRINCIPALES PARADIGMAS (en Ingeniería):
Lenguaje Máquina:
Ensamblador:
FORTRAN/II/IV:
BASIC:
PASCAL:
FORTRAN 77:
Lenguaje C:
Lenguaje C++:
Fortran 90/95/2003:
Java:
Hardware
Software
Compiladores
Intérpretes
Prog. Estructurada
(influencia del Pascal)
Portabilidad, S.O. UNIX
Prog. orientada a objeto
(influencia del C)
Internet
(< 1940 aprox.)
(1940–1950 aprox.)
(1950–1960 aprox.)
(1960–1970 aprox.)
(1970–1980 aprox.)
(1977)
(1980–1990 aprox.)
(1990–2000 aprox.)
(1990,1995,2003)
(> 2000 aprox.)
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Lenguaje Máquina (I)
LENGUAJE M ÁQUINA
Secuencia de bits (agrupados en bytes) que corresponden
a las instrucciones que debe ejecutar el procesador y a los datos fijos
del programa (esencialmente constantes numéricas y/o alfanuméricas) .
La codificación directa de un programa en lenguaje máquina es
♠ muy costosa,
♠ muy farragosa, y
♣ ABSOLUTAMENTE DEPENDIENTE DEL HARDWARE.
Ejemplos: (véase la carpeta EjemplosDeArchivosDeTextoYBinarios)
• El archivo hello.exe es un archivo binario que contiene un programa ejecutable.
• El archivo hello.exe.txt muestra los bytes que forman el archivo hello.exe,
• y el archivo hello.exe.b.txt muestra los correspondientes bits.
En la actualidad sólo se utiliza en dispositivos muy sencillos.
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Ensamblador (I)
ENSAMBLADOR
Lenguaje de MUY BAJO NIVEL. (*)
El programador dispone de un repertorio de instrucciones elementales
sencillas, relativamente fáciles de recordar. Por ejemplo:
−→ Guardar (“‘store”) en la posición de memoria N.
−→ Leer (“recall”) el contenido de la posición de memoria N.
−→ Sumar, restar, multiplicar, dividir.
−→ Calcular el resultado de las operaciones anteriores.
−→ Si el resultado anterior es 0, ir (“jump”) a la línea L.
−→ Parar el programa (“stop”).
STO N
RCL N
+,-,*,/
=
JMP #L
STP
Un programa (ASSEMBLER) se encarga de ENSAMBLAR (**)
el código y construir el correspondiente programa ejecutable
(*) Muy próximo al lenguaje máquina.
(**) Traducir el programa a lenguaje máquina y
añadir lo que sea necesario para que pueda ejecutarse.
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Ensamblador (II)
La programación en ENSAMBLADOR sigue siendo
♠ muy costosa,
♠ muy farragosa, y
♣ ABSOLUTAMENTE DEPENDIENTE DEL HARDWARE.
En la actualidad sólo se utiliza cuando se necesita sacar el máximo
partido al hardware.
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Ensamblador (III)
Ejemplo: Programa para calcular factoriales realizado en
un hipotético ENSAMBLADOR
#01: STO 01
#02: 1
#03: STO 02
#04: RCL 01
#05: JMP #16
#06: *
#07: RCL 02
#08: =
#09: STO 02
#10: RCL 01
#11: -
#12: 1
#13: =
#14: STO 01
#15: GTO #04
#16: RCL 02
#17: STP
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
FORTRAN (I)
FORTRAN / II / IV
Lenguaje de ALTO NIVEL. (*)
Diseñado por John Backus
para IBM en 1953, como
alternativa al Lenguaje Máquina
de un ordenador IBM 704.
El primer compilador fue
distribuido en 1957.
John Backus (1924–2007).
Creador del FORTRAN (1953) en IBM.
(Fuente: IBM)
(*) Alejado del lenguaje máquina.
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
FORTRAN (II)
♣ FORTRAN proviene de FORmula TRANslator (“traductor de fórmulas”).
♥ La codificación de las fórmulas es sencilla.
♣ La sintaxis viene condicionada por el soporte (tarjetas perforadas).
En efecto . . .
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
FORTRAN (IIIa)
Origen: Tarjetas Perforadas (”punch cards”)
Tarjeta Perforada. (Fuente: <http://commons.wikimedia.org/wiki/Image:FortranCardPROJ039.agr.jpg>)
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
FORTRAN (IIIb)
Origen: Perforadora de Tarjetas
Perforadora de Tarjetas. (Fuente: <http://www.chilton-computing.org.uk/acl/technology/atlas/p013.htm>)
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
FORTRAN (IIIc)
Origen: Programa FORTRAN en tarjetas perforadas
Programa FORTRAN en tarjetas perforadas. (Fuente: <http://www.staff.ncl.ac.uk/roger.broughton/museum/iomedia/pc.htm>)
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
FORTRAN (IIId)
Origen: Lectora de Tarjetas
Programa FORTRAN en tarjetas perforadas. (Fuente: <http://www.staff.ncl.ac.uk/roger.broughton/museum/iomedia/pc.htm>)
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
FORTRAN (IV)
♣ La gestión de memoria es rígida pero predecible. (*)
♣ Las instrucciones de control son muy primitivas. Básicamente. . .
♣ GOTO incondicional
♠ IF aritmético
♣ DO – CONTINUE
♣ CALL
♣ Modelo de implementación: PROGRAMA PRINCIPAL + SUBRUTINAS
• SUBRUTINA = subprograma
CALL transfiere el control a un subprograma
que forma parte del programa ejecutable o
cuya localización conoce el programa ejecutable
(ejemplo: librerías del sistema)
• La transfencia de argumentos se realiza POR REFERENCIA.
(*) En principio (siempre que el programa esté bien hecho) cuando comienza la ejecución de un programa debe haber
memoria suficiente para la realización de todos los cálculos, por lo que todo debería funcionar correctamente (sin
detenciones por falta de recursos, “cuelgues” del sistema, etc.)
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
FORTRAN (V)
Ejemplo: Programa FORTRAN IV para calcular factoriales
C
PROGRAMA PARA CALCULAR FACTORIALES
READ(5,100) N
100 FORMAT(I5)
NFAC=1
500 CONTINUE
IF (N) 1000, 1000, 600
600 CONTINUE
NFAC=NFAC*N
N=N-1
GOTO 500
1000 WRITE(6,110) NFAC
110 FORMAT(I10)
STOP
END
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Lenguajes Compilados (I)
LENGUAJES COMPILADOS
FORTRAN ES EL PROTOTIPO DE LENGUAJE COMPILADO
• El programador escribe el programa fuente (uno o varios archivos *.f, *.for).
• Un programa (compilador FORTRAN) se encarga de COMPILAR (*)
el programa fuente (uno o varios archivos *.f, *.for) y
crear los correspondientes programas objeto (archivos *.o, *.obj)
• Otro programa (linker) se encarga de LINKAR (**)
el/los programa/s objeto (archivos *.o, *.obj) y
crear el correspondiente programa ejecutable (archivo *.exe o sin extensión).
• Una vez creado, el programa ejecutable (archivo *.exe o sin extensión)
puede utilizarse cuantas veces sea necesario.
(*) Traducirlo/s a lenguaje máquina.
(**) Dimensionar la memoria necesaria y
unir (“link”) todas las partes.
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Lenguajes Compilados (II)
Programa Fuente (*.f, *.for)
Programa Objeto (*.o, *.obj)
⇓ COMPILACI ÓN [compilador]
⇓ LINKADO
Datos → Programa Ejecutable (*.exe, sin ext.)
⇓ EJECUCI ÓN
[linker]
[loader o debugger (*)]
Resultados
(*) Debugger (depurador): loader que permite ejecutar paso a paso un programa
y que tiene herramientas que permiten localizar dónde se producen los errores.
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Lenguajes Compilados (III)
ERRORES:
♣ de Planteamiento
Errores conceptuales o de diseño que impiden que el programa funcione correctamente.
♣ de Compilaci ón
Errores gramaticales que impiden compilar el programa fuente
y generar el correspondiente programa objeto.
♣ de Linkado
Errores estructurales que impiden linkar el programa objeto
y generar el correspondiente programa ejecutable.
♣ de Ejecuci ón (“run–time”) (*)
Errores de tipo general que impiden ejecutar el programa ejecutable
y obtener los resultados.
(*) Bug: error de ejecución difícil de encontrar.
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Lenguajes Compilados (IV)
Errores de Planteamiento
Errores conceptuales o de diseño que impiden que el programa funcione
correctamente:
♠ uso de algoritmos inadecuados o incorrectos,
♠ errores en los datos.
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Lenguajes Compilados (V)
Errores de Compilaci ón
Errores gramaticales que impiden compilar el programa fuente
y generar el correspondiente programa objeto:
♠ errores ortográficos (instrucciones mal escritas) o
♠ errores sintácticos (proposiciones mal construidas).
UNIVERSIDAD DE A CORU ÑA — GRUPO DE M ÉTODOS NUM ÉRICOS EN INGENIERÍA
Lenguajes Compilados (VI)
Errores de Linkado
Errores estructurales que impiden linkar el programa objeto
y generar el correspondiente programa ejecutable:
♠ dimensionamiento incorrecto de la memoria o
♠ falta de alguna de las subrutinas/f
Comentarios de: LENGUAJES DE PROGRAMACIÓN EN INGENIERÍA: Evolución de los Lenguajes de Programación (0)
No hay comentarios