Anda di halaman 1dari 28

Lenguajes de Programacin

Temas

Reflexin:

Si eres programador y no
logras hacer algo que
sirva
llmalo versin
2

Introduccin

Programacin
El arte de la programacin,
es el arte de organizar la
complejidad.
Organizar los clculos de
manera que nuestros
sentidos sean suficientes
para garantizar que el
cmputo arroje los
resultados esperados.
3

Introduccin

Requisitos mnimos para desarrollar


un lenguaje.
Ayudar a escribir buenos
programas.
Fcil de leer.
Fcil de entender.
Fcil de modificar.
4

Introduccin

Programacin vs Mantenimiento

Creacin inicial
y verificacin
de un progama.

Se refiere a las
correcciones
y los cambios
que se realizan en un
programa despus
de su desarrollo.

Introduccin

Estructura y Organizacin
Son claves para
manejar programas
muy grandes.
La legibilidad de un programa puede mejorarse
organizndolo de tal manera que cada parte
pueda entenderse en forma relativamente
independiente del resto.
6

Introduccin

Von Neumann
Introduce el concepto de programa
almacenado. Propuso que los programas
se almacenaran de forma digital en la
memoria de la computadora junto con
los datos.

Por otro lado, se dio cuenta que la aritmtica decimal usada por
la ENIAC poda ser reemplazada usando aritmtica binaria. Este
diseo, conocido como ARQUITECTURA de VON
NEUMANN, ha sido la base para casi todas las computadoras
digitales.
7

Introduccin

La Mquina de Von Neumann


Unidad de
control

Unidad
Aritmtica
Acumulador A

Unidad de
entrada y salida

Registro R

Memoria para instrucciones y datos

Organizacin de la mquina de Von Neumann


8

Introduccin

La Mquina de Von Neumann


Determina el
orden de
ejecucin de las
instrucciones.
Flujo de
control

A una localidad de
memoria poda
asignrsele el valor
contenido en el
acumulador

Datos

Elementos
del
lenguaje

Asignaciones a
localidades de
memoria

Los enteros eran la


nica forma de datos

Operaciones
aritmticas

Poda sumar,
restar, multiplicar,
dividir y tomar el
valor absoluto de
un numero.
9

La Mquina de Von Neumann

Introduccin

Cdigo de Mquina
Lenguaje de mquina: 00000010101111001010
00000010101111101010
00000011001100100110
Lenguaje Ensamblador: Load I
Add J
Store K
Lenguaje alto nivel:

K=I+J
10

Introduccin

Primera experiencia
En los aos 50, se crea que los programas eficientes solo
podan escribirse manualmente, usando algunas variantes de
lenguajes de mquina. (Fortran)

Surge preocupacin por la eficiencia de ejecucin !


El alto costo de creacin de cdigo ensamblador o de
mquina fue la principal motivacin para el desarrollo de
Fortran (FORmula TRANslation).
Ninguna notacin diferente del lenguaje de mquina puede
ejecutarse directamente en un computador.
11

Primera experiencia
Tiempo de traduccin

Programa fuente

Introduccin

Compilador
Tiempo de ejecucin

Entrada

Cdigo destino

Salida

12

Primera experiencia

Introduccin

Beneficios de los lenguajes de alto nivel


Surgimiento de usuarios y programas
nuevos.
Proporciona notaciones fciles de leer.
Proporciona portabilidad (Usuarios pueden
intercambiar programas)
13

Primera experiencia

Introduccin

Estructura y legibilidad Vs Eficiencia


La legibilidad y la capacidad de modificar los programas
pueden contribuir tambin a la eficiencia.
La eficiencia de un programa depende de las decisiones
tomados en los niveles de diseo, desde la concepcin hasta
la eleccin de estructuras de datos y algoritmos para el
cdigo final.
El refinamiento de cdigo se realiza con la mejora de puntos
crticos, que son las pequeas partes muy utilizadas en donde
el programa la mayor parte de su tiempo de ejecucin.
14

Evolucin de los lenguajes

Cinco generaciones de los lenguajes


de programacin
Generacin

Nombre

Particularidad

Primera

De maquina

Especifico para cada microprocesador, uso


de cdigo binario

Segunda

Ensamblador

Uso de nemotcnicas que abstraen al


lenguaje de maquina

Tercera

De alto nivel

Lenguajes estructurados con comandos


cercanos al lenguaje natural

Cuarta

Propsito especial

Programas orientados a programas


especficos

Quinta

Naturales

Incluye inteligencia artificial y sistemas


expertos
15

Categoria de los lenguajes

Clasificacin de los lenguajes de


programacin
Lenguaje de
mquina

Orientado al
microprocesador
(Sistema binario)

Lenguaje de
bajo nivel

Ensamblador (Usa cdigo


nemnico y tambin esta
orientado a un
microprocesador)

Lenguajes
de alto nivel

Orientado a
que las
personas
entiendan y
escriban los
programas
16

Elementos de un lenguaje

Como se debe estructurar un programa


Existe ms de una forma para solucionar un
problema, as que hay mas de una forma
para estructurar un programa. La estructura
tiene que establecerse para cada programa.
Formas:

Descendente
Modular

Objetos
17

Compiladores e interpretes

Conceptos relacionados
Arquitectura de
Computadoras

Teora de
Lenguajes

Lenguajes de
Programacin

Compiladores
Ingeniera de
Software
Teora de
Algoritmos

Con algunas tcnicas bsicas de escritura de compiladores se pueden


construir traductores para una gran variedad de lenguajes y mquinas
18

Compiladores e interpretes

Compiladores
Un compilador es un programa que lee un programa
en un lenguaje y
lo traduce a un programa
equivalente en otro lenguaje, y adems informa al
usuario sobre la presencia de errores en el programa
de entrada
programa

compilador

fuente

programa
objeto

mensajes
de error
19

Compiladores e interpretes

HISTORIA
Computadora

Persona
Cdigo
Mquina

Ensamblador

Cdigo
Mquina

Lenguaje
Ensamblador

Ensamblador

Cdigo
Mquina

Compilador
Lenguaje
Lenguaje de
Ensamblador
Alto Nivel

20

Compiladores e interpretes

TIPOS DE SISTEMAS DE COMPILACIN


ENSAMBLADOR
Traducen programas escritos en lenguaje ensamblador a
cdigo mquina

COMPILADOR
Traducen programas escritos en lenguaje de alto nivel a
cdigo intermedio o a cdigo mquina

INTERPRETE
No genera cdigo objeto, analiza y ejecuta directamente cada
proposicin del Programa Fuente (PF)

PREPROCESADOR
Sustituyen macros, incluyen archivos o extensin del
lenguaje.
21

Compiladores e interpretes

SISTEMA PARA PROCESAMIENTO DE UN LENGUAJE


estructura del programa fuente
preprocesador
programa fuente
compilador
programa objeto en lenguaje ensamblador
ensamblador
cdigo de mquina relocalizable
editor de carga y enlace

biblioteca
archivos obj.relocal.

cdigo de mquina absoluto


22

Compiladores e interpretes

PARTES DE LA COMPILACIN

ANLISIS (Etapa Inicial):


Divide al PF en sus elementos componentes y crea
una representacin intermedia. Se determinan las
operaciones y se registran en una estructura de
rbol (ej. rbol sintctico)

SNTESIS (Etapa Final):


Construye el PO deseado a partir de la
representacin Intermedia (requiere tcnicas ms
especializadas)
23

Compiladores e interpretes

UN AMBIENTE GENERAL DE COMPILACIN


Fuente

Anlisis lxico
Anlisis sintctico
Anlisis semntico
Intermedio

Ms:
Sistemas de
edicin y
depuracin

Generador de cdigo

Cdigo relocalizable
Enlazador
Objeto
24

Compiladores e interpretes

FASES DE UN COMPILADOR
PROGRAMA FUENTE
analizador lxico

administrador
de la tabla
de smbolos

analizador sintctico
analizador semntico
generador de cdigo intermedio
optimizador de cdigo
generador de cdigo

manejador
de errores

PROGRAMA OBJETO

Cada fase transforma al PF de una representacin a otra


25

Compiladores e interpretes

ESQUEMA DE BLOQUES DE UN COMPILADOR


FUENTE

Compilador
ANALISIS
Scanner
Parser

Tabla
de
smbolos

SINTESIS
Prep. para la Gen.
del cdigo
OBJETO

Gener. del cdigo


26

Compiladores e interpretes

ESTRUCTURA FUNCIONAL DE UN COMPILADOR


(de una pasada)
SENTENCIA

Fuente

Explorador

Reconocedor

Generador

Objeto

de cdigo

Tabla de
smbolos
27

Compiladores e interpretes

HERRAMIENTAS PARA CONSTRUCCIN DE


COMPILADORES

Lex y YACC
Herramientas que nos permiten desarrollar
componentes o la mayor parte de un compilador
Son un recurso invaluable para el profesional y el
investigador
Existen paquetes freeware
28

Anda mungkin juga menyukai