Você está na página 1de 13

 

Apuntes de la clase de  


02/06/2019 
 

Ana Rojas Rodríguez 


Compiladores e Intérpretes 
 

   

 
 

Contenidos 
● Notas importantes del curso 
○ Apuntador……………………………………………………………………………………………………………….2 
○ Contacto con el profesor………………………………………………………………………………...…….2  
○ Ficha del Estudiante…………………………………………………………..……………………...………….2 
○ Proyectos……………………………………………………………………………..……………...………………...3  
○ Libros ………………………………………………………………………………..…………………………………...3 
○ Fraude Académico…………………………………………………………..…………………………………….4 
● Introducción al curso 
○ Historia: Nacimiento de los lenguajes de Alto Nivel…………..……………………………...5 
○ ENIAC : Electronic Numerical Integrator And Computer…….……………………………...5 
○ EDVAC : Electronic Discrete Variable Automatic Computer.…….………………………..6 
● Arquitectura von Neumann 
○ Unidad de Control………………………………………………………………..………………………………..7 
○ Diseño de la Unidad de Control………………………………..………..……………………………….8 
○ Unidad de Control Alambrada…………………………………..………..……………………………….8 
○ Sir Maurice Vincent Wilkes…………………………………..……………..……………………………….9 
○ EDSAC : Electronic Delay Storage Automatic Computer…....……………………………..9 
○ Unidad de Control Microprogramada………………………………………………………………....10  
○ ¿Aplicación Microprogramada?........................................................................................10 
○ Productividad vs. Eficiencia………………….………………..……………………………………………..11 
○ Lenguaje máquina………………………………………………………………………………………………….11 
○ Lenguaje Ensamblador…………………………………………………………………………………………..11 

● John Backus    


 

Notas importantes sobre el curso 

Apuntador 
Todas las clases habrán diferentes apuntadores.

Es  obligatorio  para  todos  los  estudiantes  ser  apuntador,  el  número  de  veces  los  define  la 
cantidad  de  estudiantes.  Tiene  4  dias  Naturales  para  postear  sus  apuntes  en  el  foro 
(​http://ec.tec.ac.cr/index.php/foro/sede-ic-san-jose​).  El  PDF  debe  seguir  el  siguiente  estándar 
Com19MMDD-K.pdf (MM = mes, DD = día, KK= número de apuntado). Al ser un pdf este puede ser 
generado  en  cualquier  editor  de  texto.  Los  apuntadores  no  serán  asignados,  cada  estudiante 
debe  ofrecerse  al  inicio  de  la  lección. Los apuntes son revisados por el profesor y cuenta para la 
nota final. Todas las clases habrán diferentes apuntadores. 

Contacto con del profesor 


Dr Francisco J.Torres Rojas 

Correo: ​torresrojas.cursos.@gmail.com

Hora de Consulta: posiblemente después de clase, el horario está por definirse.

Ficha de Estudiante
Se  debe  preparar  una  breve  ficha  por  cada  estudiante  para  el  profesor,  si  ya  la  entregó  puede 
actualizarla. La ficha debe tener lo siguiente: 

● Foto tamaño pasaporte. 


● Datos  de  contacto  (nombre,  email,  teléfono  personal,  teléfono  para  contacto  en  caso  de 
emergencia). 
● Áreas de interés. 
● Información adicional. 

Entregar las primeras semanas. 


 

Proyectos 
Se desarrollarán en el lenguaje C sobre Linux. 

Libros  
No  hay  un  libro  oficial  para  el  curso,  se  estará  trabajando  con  material de diferentes libros, pero 
es  importante  contar  con  un  libro  sobre  compiladores  para  consulta  y  estudio.  El  profesor 
asignará  lecturas  tanto  de  la  bibliografía  recomendada  en  la  carta  al  estudiante  como  de  otros 
escritos.  


 

Importante:  ​la  evaluación del curso queda como en la carta del estudiante. Además se acordó 


que todos los miércoles hay quiz. 

● Trabajo en Clase: 5% 


● Tareas Cortas - Quices: 15% 
● Exámenes Parciales: 15% y 20%   
● Examen Final: 10% 
● Proyectos Programados: 35% 

Fraude Académico 
Habrá  cero  tolerancia  al  fraude,  ya  sea  el  intento  exitoso  o  no  de  manera  ​deshonesta  ​la 
obtención  de  puntos  para  la  nota  de  este  curso.  Si  un  estudiante  hace  fraude  se  le  aplicará  el 
castigo más severo permitido por el reglamento del TEC. 

Ejemplos:  

● Hacer pasar como propio el trabajo o conocimiento de otras personas. 


● Tener acceso de manera adelantada a exámenes o pruebas. 
● Usar  recursos  o  mecanismos  que  alteren  la  evaluación  justa  de  cualquier 
estudiante en exámenes, proyectos, tareas o similares. 


 

Introducción al curso 
Historia: Nacimiento de los lenguajes de Alto Nivel 
 

John William Mauchly 


Físico Estadounidense (1907 - 1980) 

Phd Física - Johns Hopkins University. 

Se interesó por la electrónica en 1941. 

John Adam Presper Eckert  


Ingeniero Eléctrico, Estadounidense (1919 - 1995) 

Conoce a Mauchly en 1941. 

ENIAC : Electronic Numerical Integrator And Computer 


Gian  Brain.  Fue  creada  en  el rango de 1946-1955 en la Universidad de Pensilvania por Mauchly y 
Eckert,  con  un  costo  monetario  de  $500  mil  en  1946,  actualmente  serían  unos  $7,009,678.79 
según la ​calculadora de inflación​.  


 

ENIAC  fue  el  primer  computador  de  propósito general y programable. Era un logro enorme. Para 


programar  en  ENIAC  se  cambiaban  conexiones  mediante  el  cableado  que  comunicaba  los 
circuitos,  debido  a  la  similitud  del  trabajo  en  las  centrales  telefónicas,  las  primeras 
programadoras  fueron  mujeres  con  experiencia  de operadoras en telefonía. Era 1000 veces más 
rápido  que  cualquier  computador  de  la  época.  Resolvía  problemas  de  balística,  pero  se  podía 
cambiar el programa. ENIAC contó con un rendimiento del 50% del tiempo.   

EDVAC : Electronic Discrete Variable Automatic Computer 


Fue  la  segunda  computadora  creada 
por  Mauchly  y  Eckert  desde  1946  - 
1961,  empezaron  a  realizar  las 
computadoras  al  mismo  tiempo. 
EDVAC  era  electrónica  binaria  y 
permitía  20  horas  de  trabajo 
continuo  con  un  ​MTBF​(  ​Mean  Time 
Between  Failures​,  es  el  promedio 
del  tiempo  entre  fallos  de  un 
sistema)  de  8  horas  sin  presentar 
problemas  físicos.  Contó  con  1000  palabras  de  44  bits de memoria, alrededor de 6 KB. Además, 
tenía  6000  tubos  de  vacío  (válvulas  termoiónicas),  su  dimensión  física  ocupó  46  metros 
cuadrados,  consumía  56  KW  de  energía  y  laboraban  30  personas  en  cada  turno  de  8  horas. Su 


 

costo  es  igual  a  la  de  ENIAC.  La  importancia  de  EDVAC  es  que  tiene  ​programa  en  memoria​,  ya 
no ocupa cables. 

Este  proyecto  de  Mauchly  y  Eckert  tuvo de consultor a John von Neumann, quien entendió todo 


a  la  perfección  y  a  partir  de  esto  escribe  el  paper  First  Draft  en el que se explica la arquitectura 
de la computadora. Por ello el siguiente personaje importante a presentar es John von Neumann.  

John von Neumann 


Matemático Húngaro/Estadounidense (1903 - 1957) 

Tenía  memoria  ​Eidética​,  es  decir  recordaba  todo  lo  que 


había  visto  u  oído,  aunque  lo  haya  percibido  una  sola  vez  y 
de forma fugaz.   

Es  uno  de  los  científicos  más  brillantes  de  la  historia,  con 
contribuciones  en  campos  muy  variados  como:  Arquitectura 
de  Computadores,  Ciencias  de  la  Computación,  Teoría  de 
Juegos,  Teoría  de  Conjuntos,  Economía,  Física,  etc.  Fue 
parte  del  proyecto  Manhattan  (bomba  atómica)  y  miembro 
del  IAS  (Institute  for  Advanced Study), donde se albergaba a 
científicos  tras  emigrar  a  causa  de  la  segunda  Guerra 
Mundial.  Publica  ​First  Draft  en  1945​,  tras  reunión  de  Mauchly  y  Eckert  por  lo  que es visto como 
plagio, se populariza con el nombre de ​Arquitectura von Neumann​ utilizada en la actualidad.   

Arquitectura von Neumann 


 
Revoluciona  la  computación,  ya  que  cuenta  con  un 
conjunto  de  instrucciones  y  se  ​lee  un  programa 
desde  memoria  (lo  que  introduce  el  concepto  de 
Software​),  por  medio  del  Ciclo  de  Fetch​,  este último 
es  ejecutado  en  la  Unidad  de  Control.  Antes  de  eso 
las  computadoras  eran  de  programa  fijo  (ENIAC)  y 


 

programar  era  rediseñar  el  alambrado  (lo  que  llevaba  semanas),  por  lo  que  en  ese  momento  la 
idea novedosa y revolucionaria era leer de una memoria. 

Unidad de Control 
Es  hardware  cuya  responsabilidad  principal  es  revisar  instrucciones  que  ocupa  el  sistema 
operativo,  ejecutando  el  Ciclo  de Fetch que funciona con un ​Program ​Counter ​(​PC​), para llevar el 
control de las ejecuciones de la siguiente manera:  

1. Recuperar de memoria la siguiente instrucción (​PC​). 


2. Actualizar​ ​PC​. 
3. Decodificar instrucción. 
4. Decodificar argumentos (modos de direccionamiento) 
5. Ejecutar instrucción. 
6. Revisar interrupciones 
7. GO TO 1 

Diseño de la Unidad de Control 

La  Unidad  de  Control  establece  el  lenguaje  máquina  o  arquitectura  de  la  computadora,  en  este 
curso  siempre  que  se  diga  arquitectura  se  piensa  en  lenguaje.  Por  lo  que  es  importante  aclarar 
los siguientes conceptos: 

● Organización  de  Computadoras​:  se  refiere  a  la  parte  más  básica  del  computador. 
Hardware. 
● Arquitectura  de  Computadoras​:  emerge  de la organización de la computadora, atributos 
que son visibles por el programador. ​Software. 

La  organización  es  capaz  de  modificar  el  lenguaje  máquina  para  la  arquitectura,  en este existen 
dos posibilidades básicas de diseño: ​alambrada ​y ​microprogramada​. 

Unidad de Control Alambrada 

En  este  diseño  de  ​organización  ​cada  instrucción  máquina  tiene  sus  circuitos  correspondientes, 
se  implementa  con  compuertas  lógicas.  Por  otra  parte  la  ​arquitectura  ​es  fija,  por  lo  que,  para 
cambiar el conjunto de instrucciones hay que rediseñar la Unidad de Control.  


 

● Ventajas:  
○ Es más rápida y eficiente que las Unidades de Control Microprogramadas. 
● Desventajas: 
○ Es poco o nada flexible. 

Sir Maurice Vincent Wilkes 

Físico Inglés (1913 - 2010) 

Es  uno  de  los  fundadores  de  la  Ciencia  de  la  Computación  e 
Investigación  de  Operaciones.  Contribuye  con  el  concepto  de 
subrutinas ​para FORTRAN.  

Muy  impresionado  por  el  paper  de  von  Neumann  (First  Daft) 
respecto  a  EDVAC,  se  interesa  por  el  concepto de memoria. Esto lo 
lleva  a  que  en  1951  invente  el  concepto  de  ​microprogramación  ​para  el  diseño  de  Unidades  de 
control en CPUs.  

EDSAC : Electronic Delay Storage 


Automatic Computer.  

Es una computadora electrónica U.K (1946-1958), 
inventada y creada por Maurice Wilkes. 

Le  otorgan  a  Sir  Maurice  Vincent  Wilkes  un 


Turing Award en ​1967 


 

Unidad de Control Microprogramada  

Tomando  que  la  organización  crea  el  lenguaje  máquina  y  define  el conjunto de instrucciones se 
da  la  organización  subyacente,  donde  cada  instrucción  en  lenguaje  máquina  se  construye  con 
múltiples  microinstrucciones  tomadas  de  una  micromemoria.  ​La  arquitectura  se  crea  sobre  esta 
organización​.  El  conjunto  de  instrucciones se define sobre la organización. Es más flexible que la 
unidad alambrada pero más lenta. 

Lo  único  real  es  el  hardware,  el  cual  se  rodea  de  microprogramación  para  darle  un 
comportamiento, creando el lenguaje máquina y con esto teóricamente crear cualquier cosa. 

Importante​:  ​Microprogramada  ​es  diferente  a  ​Microprogramable.    La  microprogramada  ​no  ​es 


modificable a diferencia de lo microprogramable. 

¿Aplicación Microprogramada? 
 

  Por  ejemplo  hacer  una  contabilidad  microprogramada:  esto 


requiere  de  mucho  tiempo  y  sería  una  tortura  por  la  brecha 
semántica  que  existe  entre  la  contabilidad  y  la 
microprogramación.  En caso de realizar la aplicación sería super 
rápida y eficiente.  

10 
 

Productividad vs. Eficiencia 


Productividad​: líneas de código sin errores por unidad de tiempo al desarrollar un sistema. 

Eficiencia​:  cantidad  de  recursos  (tiempo,  espacio,  etc.)  que  un  sistema  en  funcionamiento 
requiere por resultado. 

Lenguaje Máquina 
La  microprogramación  define  el  lenguaje  máquina.  Este  último  es  mucho  más  fácil  que 
microprogramar  pero  sigue  siendo  muy  difícil  interpretar  códigos  binarios  o  hexadecimales.  El 
programador tenía responsabilidades como: 

● Colocar programa en RAM. 


● Códigos de operación. 
● Modos de direccionamiento. 
● Formato de argumentos. 
● Calcular tamaños y desplazamientos. 

Inherentemente  no  es  portátil.  Es  más  productivo  que  la  microprogramación pero mucho menos 
eficiente. 

Lenguaje Ensamblador 
El  programar  en  lenguaje  a  máquina  es  tedioso  y  propenso  a  errores, así que en los años 1950s 
inventan  ​ensamblador​.  Es  un  ​programa  ​que  recibe  mnemónicos  y  nombres  simbólicos  que  con 
cierta  sintaxis  simple,  genera  lenguaje  máquina,  calcula  desplazamientos.  Se  utilizan 
pseudoinstrucciones  y  macros  .  Es  mucho  más  fácil  que  el  lenguaje  máquina,  además  mucho 
más  productivo  e  igual  de  eficiente,  pues  cualquier  cosa  que  se  pueda  hacer  en  lenguaje 
máquina  se  puede  hacer  en  ensamblador.  No  es  portatil.  El  primer  lenguaje  ensamblador  está 
hecho  en  lenguaje  a  máquina  que  algún  valiente  se  decidió  crear  al  que  deberían  hacerle  una 
estatua. 

Productividad  

Eficiencia 

11 
 

John Backus 
  Matemático  y  Científico  de  la 
computación, U.S.A. (1924-2007)  

M.  Sc.  en  Matemáticas  -  Columbia 


University 

Después  de  sacar  su  maestría  en 


matemáticas  trabaja  con  IBM  en  1950 
programando  en  lenguaje  a  máquina  y 
ensamblador.  Su  primer  proyecto  fue 
calcular  las  posiciones  de  la  Luna  en  lenguaje  máquina.  Por  lo  que,  inventó  Speedcoding  para 
hacer  más  fácil  programar.  Decide  que  pierde  mucho  tiempo  traduciendo  fórmulas  a  lenguaje 
máquina  o  ensamblador,  entonces  propone  en  1953  el  proyecto  ​FORTRAN  (Formula Translating 
System)  ​para  IBM  704.  La  idea  era  traducir  fórmulas  matemáticas  a  lenguaje  ensamblador.  Se 
presentaban los siguientes retos: 

● ¿Es posible del todo? 


● ¿Durará mucho en traducir? 
● ¿Generará código eficiente? 

El  proyecto  terminó  en  1956  inventando  el  primer  ​lenguaje  de  alto  nivel  ​de  uso  extendido.  En 
1958  crea  la  BNF  para  describir  cualquier  lenguaje  de  programación  libre  de  contexto.  En  1977 
inventa FP lenguaje de programación funcional. 

En 1977 gana el ​Turing Award​. 

12 

Você também pode gostar