Está en la página 1de 16

1.

Paradigmas de programacin

Desarrollo del software imposible si las tareas tuviesen que expresarse en cdigo mquina. Lenguajes de ms alto nivel: comprensibles, manejables y automticamente convertibles a cdigo mquina. Concentrar en las propiedades del problema que se pretende resolver, y no en registros, direcciones de memoria, ciclos mquina, ...

1.1. Perspectiva histrica

Cdigo mquina: depuracin de errores (debugging) compleja Uso de dgitos (hexadecimales) para representar los cdigos de operacin -> Nemotcnicos
LD: Cargar registro ST: Almacenar registro R0, R1, ...: Nombres de los registros 156C 166D 5056 306E C000 LD R5, PRECIO LD R6, IMPUESTOS ADDI R0, R5 R6 ST R0, TOTAL HLT

Diseo del programa en lenguaje ensamblador y traduccin automtica a cdigo mquina por el ensamblador. Nueva generacin de lenguajes de programacin

1.1. Perspectiva histrica

Primitivas del lenguaje: bsicamente las mismas que el lenguaje mquina correspondiente. Por tanto, dependencia total de la arquitectura de la mquina. No portabilidad. Pensar en trminos de lenguaje mquina y sus estructuras. Necesidad de primitivas de ms alto nivel. Lenguajes de tercera generacin: FORTRAN y COBOL
Total=precio+impuestos

Traductores: convierten un programa en cdigo mquina.


Compiladores: Traduccin global y posterior ejecucin Intrpretes: Traduccin simultnea a la ejecucin

En general, se logra cuasi-independencia de la mquina, sin ms que disponer del traductor adecuado.

1.1. Perspectiva histrica


Menor tiempo de formacin del programador y de elaboracin Depuracin ms sencilla Mayor consumo de recursos: memoria y tiempo de ejecucin

Estandarizacin de lenguajes ms habituales: ANSI, ISO Entornos de programacin amigables, lo ms prximos posibles al lenguaje natural. Paradigmas de programacin:
Lisp ML Simula Smalltalk Cdigo Mquina FORTRAN COBOL ALGOL GPSS BASIC APL Scheme C++ Ada95 Funcional Orientada a Objetos Imperativa

Visual Java Basic C Ada Pascal Prolog

Declarativa

1.2. Proceso de traduccin

Traductores: toman el cdigo fuente y generan el cdigo objeto.

Anlisis lxico
Reconocimiento de cadenas de smbolos: palabras clave, variables, constantes Asigna una marca a cada elemento reconocido

1.2. Proceso de traduccin


Anlisis sintctico
Ve las marcas del A.L. e identifica la estructura gramatical del programa, reconociendo el papel de cada componente signos de puntuacin para facilitar la identificacin: { } ; y palabras que identifican las diferentes estructuras sintcticas
if (expresin_lgica) sentencia ;

Se genera la tabla de smbolos: variables utilizadas y su tipo. Genera mensajes de error en los lenguajes fuertemente tipados
total=precio+impuestos

Generacin de cdigo
Construccin de las sentencias en cdigo mquina Optimizacin de cdigo
precioneto=precio-descuento total=precioneto+impuestos

1.2. Proceso de traduccin


Enlazado: posterior a la traduccin y previo a la ejecucin del programa.
La traduccin puede ser diferida. El cdigo objeto contiene llamadas al S.O. o a otras aplicaciones. Deben conectarse los diferentes mdulos y tareas pendientes.

Carga: traslado del cdigo enlazado a memoria principal, desde donde se ejecuta.

Java: bytecode (cdigo mquina universal) al que se traduce el cdigo fuente. Es ejecutado localmente por un intrprete.

1.3. Programacin imperativa

Programacin imperativa o procedural: secuencia de comandos que, siguiendo un procedimiento, manejan los datos de entrada y generan el resultado.

Aproximacin clsica: lenguajes alto/bajo nivel Procedimiento: indicacin paso a paso de las tareas a realizar par resolver el problema, traducida al lenguaje correspondiente.

1.4. Programacin declarativa

Programacin declarativa: enfoca cul es el problema ms que cmo resolverlo. Descripcin adecuada del problema en lugar de buscar un algoritmo que lo resuelva. Se basa en el razonamiento deductivo:
Una de dos: o bien estamos en clase o en la cafetera Si sabemos que no estamos en clase, concluiremos que estamos en la cafetera

Principio de resolucin:
[sentencias originales o premisas] PQ PR [resolvente] R Q

1.4. Programacin declarativa


A B se puede interpretar como A B Unificacin: asignacin de valores a variables
(Manolo est en X) (El coche de Manolo est en X) Una instancia de la variable X puede ser X=el bar (Manolo est en el bar) (El coche de Manolo est en el bar)

Cmo se aplica en un sistema deductivo? Teniendo en cuenta que

que puede resolverse con, por ejemplo,


Manolo est en el bar

para dar
El coche de Manolo est en el bar

PROLOG realizan resolucin repetida sobre una coleccin de sentencias iniciales a las que se aplica razonamiento deductivo

1.4. Programacin declarativa


Vuelo(Madrid, Santiago). Vuelo(Barcelona, Madrid).

Predicado: representa un hecho

Reglas:
Vuelo(X, Z) :- (Vuelo(X,Y) AND Vuelo(Y,Z))

Procesado simblico segn el principio de resolucin:


Unificacin (instancias de las reglas) Interactividad
permite confirmar objetivos como...
?Vuelo(Barcelona, Santiago) ?Vuelo(V, Madrid) ?Vuelo(Barcelona, W) ?Vuelo(V, W) V F? Instancias de V? Instancias de W? Instancias de V, W?

1.5. Programacin funcional

Programacin funcional: las primitivas son funciones que se construyen para elaborar funciones ms complejas que resuelvan el problema. Aproximacin modular y reutilizable.
Ejemplo:
x+y max2[x, y] suma [x, y] if x>y then x else y max2[max2[x, y], z]

max3[x, y, z]

Las funciones manipulan (operan sobre y devuelven) listas de datos.

1.5. Programacin funcional


No modifica parmetros No usa variables globales

Transparencia referencial: Una funcin es RF o pura si no tiene efectos laterales:

Idea funcional trasladada a la programacin imperativa.


En imperativa convencional, mucho ms restringido el tipo de dato que se devuelve No tanto en POO

1.6. Programacin orientada a objetos


Los datos son componentes individuales activos bien definidos con comunicaciones predefinidas. Clases: plantillas para mltiples objetos, con caractersticas similares. Se agrupan en bibliotecas. Objeto: instancias concretas de una clase

Atributos: caractersticas individuales Variables de objeto Mtodos (comportamiento)


Class Ventana { abrir ... Cerrar. Minimizar ... ... } Ventana V1;

Ejemplo: pequeo negocio con 20 empleados.

Programa: crear y destruir instancias de las clases

1.6. Programacin orientada a objetos


Class NegociodeMensajera extends PequeoNegocio
{

Propiedades

Herencia: permite que una clase incluya a otras, pero tambin le permite aadir nuevas caractersticas particulares

Polimorfismo: una misma orden se adapta a los objetos (idea d sobrecarga de operadores aritmticos). Encapsulado: acceso restringido a los mtodos y otras propiedades internas de un objeto (privados y pblicos)
Class Ventana { public ... private ... public... }

...Aqu se definirn los nuevos mtodos para indicar cm responder cualquier elemento de la nueva clase ante nuevos. Adems, hereda los mtodos de la clase PequeoNegocio... } PequeoNegocio SupermercadoMarisa; NegociodeMensajera DHL;

1.6. Programacin orientada a objetos


Construccin modular basada en objetos. Los datos quedan aislados entre s por el encapsulamiento y no interfieren Reutilizacin del cdigo: los objetos son los bloques de partida para programas posteriores Extensin sencilla, aadiendo nuevas clases

Ventajas:

Necesidad de un correcto diseo de las clases (generalizacin).


Metodologas de diseo (OOSE, UML, ...) Software de apoyo al diseo

Bibliotecas comerciales de clases:

interfases de usuario, aplicaciones bancarias, gestin BD,

También podría gustarte