Está en la página 1de 72

1.1.

Estudio de los lenguajes de programacin desde el punto de vista de las reas de aplicacin

Cientficos Ingeniera De Gestin (negocios) De Inteligencia Artificial Programacin de sistemas Multipropsito

2005 Alfredo Gutirrez Hdez.

1.1.2

Estudio de los lenguajes de programacin desde el punto de vista de su nivel

Lenguaje Humano Muy alto Alto Medio Bajo Muy bajo Lenguaje Mquina
2005 Alfredo Gutirrez Hdez. 2

1.1.3

Estudio de los lenguajes de programacin desde el punto de vista de los paradigmas de programacin

Paradigma: Logros cientficos universalmente reconocidos que durante un tiempo proporcionan problemas y soluciones modelo para una comunidad de profesionales.

Imperativos

Declarativos

Estructurado en bloques Basados en objetos Programacin distribuida

Programacin Lgica Programacin funcional Lenguajes para bases de datos


3

2005 Alfredo Gutirrez Hdez.

1.1.3

Estudio de los lenguajes de programacin desde el punto de vista de los paradigmas de programacin

Imperativos - Cambios de estado hechos a la memoria - Algoritmos Estructurado en bloques - Subrutinas - Datos comunes - mbitos anidados Basados en objetos - Objeto: grupo de procedimientos que comparten un estado

Programacin distribuida - Trabajo de muchos programadores en un solo programa de forma simultnea comunicndose a travs del paso de mensajes

2005 Alfredo Gutirrez Hdez.

1.1.3

Estudio de los lenguajes de programacin desde el punto de vista de los paradigmas de programacin
Declarativos - Se enfocan ms en lo que se quiere hacer que en cmo hacerlo - El intrprete o compilador administra recursos en lugar del programador Programacin Lgica - Obtencin de nuevos hechos a partir de hechos conocidos - Un programa se compone de: Serie de axiomas o hechos Reglas de inferencia Teorema o cuestin por demostrar Programacin funcional - Todo opera a travs de funciones - Uniformidad funcional - No hay asignaciones globales - El programa mismo es una funcin Lenguajes para bases de datos - Persistencia - Control de cambios

2005 Alfredo Gutirrez Hdez.

1.2

Lenguaje de programacin

Sintaxis Lenguaje Semntica

Gramtica: ciencia que estudia o regula al lenguaje Estructura lexicogrfica: la estructura de los tokens Token: palabra vlida en un lenguaje

Alfabeto (conjunto de smbolos) Lenguaje Reglas para formar palabras Reglas para formar declaraciones

2005 Alfredo Gutirrez Hdez.

1.2

Lenguaje de programacin
Lenguaje formal: la forma o sintaxis de las palabras vlidas en un lenguaje sin importar su significado Definicin de lenguajes formales: 1. Alfabeto de smbolos individuales 2. Un conjunto de reglas P para determinar cuales cadenas o palabras de son vlidas en L las reglas de produccin tiene la forma:

Gramtica estructurada en frases G=(, N, P, Inicio) = Conjunto de smbolos terminales N = Conjunto de smbolos no terminales P = Conjunto de reglas de produccin Inicio = Smbolo de inicio

2005 Alfredo Gutirrez Hdez.

1.3

Caractersticas de los lenguajes de programacin

Descripciones bien definidas - BNF y EBNF - Semntica Comprobabilidad Confiabilidad Traduccin rpida Cdigo objeto eficiente Ortogonalidad Generalidad Consistencia y notaciones comunes Uniformidad Subconjuntos Extensibilidad Transportabilidad

2005 Alfredo Gutirrez Hdez.

1.4.1.1

Jerarqua de Chomsky

Tipo 0: Lenguajes recursivamente enumerables, son reconocidos por mquinas de Turing Tipo 1: Lenguajes sensibles al contexto, son reconocidos autmatas lineales limitados Tipo 2: Lenguajes libres de contexto, son reconocidos por autmatas descendentes Tipo 3: Lenguajes regulares, son reconocidos por autmatas finitos

Cada tipo de lenguaje esta asociado a un tipo de mquina particular


2005 Alfredo Gutirrez Hdez. 9

1.4.1.2

Backus Naur Form


Backus Naur Form (BNF) ::= | <algo> algo se define como alternativamente, o <algo> se reemplaza por su definicin smbolo terminal, elemento indivisible, no hay reemplazo

Extended Backus Naur Form (EBNF) [algo] {algo} (algo) algo opcional (una vez) opcional (una o ms veces) agrupacin smbolo terminal

2005 Alfredo Gutirrez Hdez.

10

1.4.1.3

rboles Sintcticos de Derivacin

2005 Alfredo Gutirrez Hdez.

11

1.4.1.4

Diagramas de Sintaxis

No Terminal

Terminal

Flujo

2005 Alfredo Gutirrez Hdez.

12

1.4.1.5.1

Autmatas Finitos
Gramticas Regulares G=(, N, P, Inicio)

Las gramticas regulares son gramticas estructuradas por frases, se componen de un conjunto de smbolos terminales (), un conjunto de smbolos no terminales (N) , un conjunto de reglas de produccin (P), y un smbolo de inicio (Inicio) Las reglas de produccin tienen la forma: Donde: A, B N y a Aa A aB

Ejemplo: = { a, .., z, 0, .., 9 } N = { I, L, D} P = { 1. I a | .. | z | aL | .. | zL | aD | .. |zD 2. L aL | .. | zL | aD | .. | zD | a | .. |z 3. D 0L | .. | 9L | 0D | .. | 9D | 0 | .. | 9 } Inicio = I

2005 Alfredo Gutirrez Hdez.

13

1.4.1.5.1

Autmatas Finitos
Esta mquina terica aceptar palabras vlidas y rechazar cadenas invlidas de forma automtica en un nmero finito de pasos. Dada la cadena a procesar, se procede de forma mecnica en cada uno de los smbolos de izquierda a derecha. De manea formal, un autmata finito es una 5-tupla (S, , T, Inicio, FS) Donde: S = Un conjunto de estados = Un alfabeto T = Un conjunto de transiciones Inicio = El estado inicial de la mquina FS = Un conjunto de estados finales
a .. z a .. z 0 .. 9

1
otra cosa

Ejemplo: S = { 1, 2, 3, 4 } = { a, .., z, 0, .., 9, # } T = { 1. (1, a .. z)2 2. (1, 0 .. 9 | # oc) 4 3. (2, a .. z | 0 .. 9) 2 4. (2, #) 3) 5. (2, oc 4) } Inicio = 1 FS = { 3, 4 }
a .. z 1 2 2 0 .. 9 4 2 # 4 3 Other 4 4 -

# 0 .. 9 otra cosa

3 4

2005 Alfredo Gutirrez Hdez.

14

1.4.1.5.2

Autmatas Descendentes
Gramticas libres de contexto G=(, N, P, Inicio)

Las gramticas libres de contexto son gramticas estructuradas por frases, se componen de un conjunto de smbolos terminales (), un conjunto de smbolos no terminales (N) , un conjunto de reglas de produccin (P), y un smbolo de inicio (Inicio) Las reglas de produccin tienen la forma: Donde: A N y As

s es cualquier cadena de N

Ejemplo: = { a, b } N = {S} P = { 1. S aSb 2. S ab } Inicio = S Esta gramtica produce: anbn


2005 Alfredo Gutirrez Hdez. 15

1.4.1.5.2

Autmatas Descendentes
Un Autmata descendente puede se definido como un conjunto de reglas para dos cintas: una que contiene una cadena de entrada y la otra para ser empleada como una pila. Formalmente un autmata descendente es una 6-tupla: (, N , Inicio, #, {>, -}, R) Donde: = es el conjunto de smbolos de entrada N = es conjunto de los smbolos de la pila Inicio = es el smbolo de inicio # = es el smbolo de terminacin {>, -} = indica el movimiento de apuntador de lectura R = es el conjunto de reglas del autmata Ejemplo: = { a, b, # } N = { S, a, b, # } R = { 1. [ , S] [ -, aSb ] 2. [ , S] [ -, ab ] 3. [ a, a] [ >, ] 4. [ b, b] [ >, ] 5. [ #, #] xito!
2005 Alfredo Gutirrez Hdez.

Inicio = S

16

1.4.1.5.3

Autmatas Lineales Limitados


Gramticas sensibles al contexto G=(, N, P, Inicio)

Las gramticas sensibles al contexto son gramticas estructuradas por frases, se componen de un conjunto de smbolos terminales (), un conjunto de smbolos no terminales (N) , un conjunto de reglas de produccin (P), y un smbolo de inicio (Inicio) Las reglas de produccin tienen la forma:

Donde: 1. puede contener ms de un smbolo, al menos uno es no terminal 2. La longitud de es menor o igual que la de Ejemplo: = { a, b } P = { 1. S aSBC 2. S aBC 3. CB BC 4. aB ab 5. bB bb 6. bC bc 7. cC cc } N = { S, B, C } Inicio = S

Esta gramtica produce: anbncn


17

2005 Alfredo Gutirrez Hdez.

1.4.1.5.3

Autmatas Lineales Limitados


Un autmata Lineal Limitado requiere de seis cosas 1. Un alfabeto de smbolos de entrada 2. Una cinta finita dividida en celdas 3. Una cabeza de lectura / escritura 4. Un alfabeto de smbolos para escribir sobre la cinta 5. Un conjunto de estados 6. Un conjunto de reglas (Estado1, Lee, Escribe, Direccin, Estado2)

LBA = (, , S, SI, SF, P) Donde: = conjunto de smbolos de entrada = conjunto caracteres para escribir sobre le cinta S = conjunto de estados SI = estado inicial de la mquina SF = estado final de la mquina P = conjunto de reglas

2005 Alfredo Gutirrez Hdez.

18

1.4.1.5.3

Autmatas Lineales Limitados


P = { 1. (S0, a, A, R, S1) 2. (S0, T, B, R, S3) 3. (S0, C, C, R, S0) 4. (S0, #, #, R, S5) 5. (S1, a, a, R, S1) 6. (S1, T, T, R, S1) 7. (S1, b, T, L, S2) 8. (S2, T, T, L, S2) 9. (S2, a, a, L, S2) 10. (S2, A, A, R, S0) 11. (S3, T, T, R, S3) 12. (S3, C, C, R, S3) 13. (S3, c, C, L, S4) 14. (S4, C, C, L, S4) 15. (S4, T, T, L, S4) 16. (S4, B, B, R, S0) }

Ejemplo: = { a, b, c, # } = { A, B, C, T } S = { 0, 1, 2, 3, 4, 5 } SI = 0 SF = 5

a *

S=0

2005 Alfredo Gutirrez Hdez.

19

1.4.1.5.4

Mquinas de Turing
Gramticas no restringidas G=(, N, P, Inicio)

Las gramticas recursivamente enumerables son gramticas estructuradas por frases, se componen de un conjunto de smbolos terminales (), un conjunto de smbolos no terminales (N) , un conjunto de reglas de produccin (P), y un smbolo de inicio (Inicio) Las reglas de produccin tienen la forma:

Donde: puede contener ms de un smbolo, al menos uno es no terminal y sin restricciones sobre P = { Ejemplo: = { a, b } N = { S, B, C } Inicio = S 1. S aS | aB 2. B bC 3. C aC | aD 4. D bE 5. E aF | bF 6. F aG | bG 7. G aH | bH 8. H aI | bI 9. I a | b }
20

2005 Alfredo Gutirrez Hdez.

1.4.1.5.4

Mquinas de Turing
Una Mquina de Turing requiere de seis cosas 1. Un alfabeto de smbolos de entrada 2. Una cinta dividida en celdas que puede ser infinita 3. Una cabeza de lectura / escritura 4. Un alfabeto de smbolos para escribir sobre la cinta 5. Un conjunto de estados 6. Un conjunto de reglas (Estado1, Lee, Escribe, Direccin, Estado2)

MT = (, , S, SI, SF, P) Donde: = conjunto de smbolos de entrada = conjunto caracteres para escribir sobre le cinta S = conjunto de estados SI = estado inicial de la mquina SF = estado final de la mquina P = conjunto de reglas
2005 Alfredo Gutirrez Hdez. 21

1.4.2

Semntica y sus documentos

2005 Alfredo Gutirrez Hdez.

22

1.4.3

Proceso de compilacin
Un compilador es un programa que lee un programa escrito en un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto En la compilacin se distinguen dos partes: Anlisis, Sntesis. Anlisis: divide al programa fuente en sus elementos y crea una representacin interna del programa fuente. En el anlisis se determinan las operaciones que implica el programa fuente y se registran en un rbol, llamado rbol sintctico, donde cada nodo representa una operacin y los hijos son los argumentos.

En el proceso de compilacin existen otras herramientas involucradas: preprocesador: expande macros, ensamblador: traduce ensamblador a cdigo mquina, cargador/enlazador: localiza bibliotecas y edita los enlaces.

2005 Alfredo Gutirrez Hdez.

23

1.4.3

Proceso de compilacin

El anlisis consta de tres fases: Anlisis lineal (o lxico) : se lee la cadena de caracteres de izquierda a derecha agrupando componentes lxicos, que son secuencias de caracteres que tienen un significado como agrupacin. Anlisis jerrquico (o sintctico) : en el que los caracteres o componentes lxicos se agrupan jerrquicamente en colecciones anidadas. Anlisis semntico: se realizan comprobaciones para asegurar que los componentes se ajustan de un modo significativo.

2005 Alfredo Gutirrez Hdez.

24

1.4.3

Proceso de compilacin

2005 Alfredo Gutirrez Hdez.

25

1.4.3

Proceso de compilacin

Al anlisis lxico. Dada la expresin : posicin := inicial + velocidad * 60 se obtendran los siguientes componentes lxicos: 1. El identificador posicin 2. El smbolo de asignacin := 3. El identificador inicial 4. El smbolo de suma + 5. El identificador velocidad 6. El smbolo de multiplicacin * 7. El nmero 60

2005 Alfredo Gutirrez Hdez.

26

1.4.3

Proceso de compilacin
En un anlisis de tipo jerquico, los componentes lxicos del programa fuente se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. Las frases se representan mediante un rbol de anlisis sintctico. La divisin entre anlisis lxico y anlisis sintctico puede ser arbitraria. Un factor a considerar es si una construccin es inherentemente recursiva o no. Las construcciones lxicas no requieren recursin, mientras que la construcciones sintcticas suelen requerirla. No se requiere recursin para reconocer los identificadores, que se agrupan en una tabla, llamada tabla de smbolos. La fase de anlisis semntico revisa el cdigo fuente para tratar de encontrar errores semnticos y rene informacin sobre los tipos para la fase posterior de generacin de cdigo. Tambin se lleva a cabo la verificacin de tipos. En el anlisis semntico se realizan comprobaciones de los tipo permitidos por un operador; en caso de que no coincidan con los permitidos se generar un error o se realizarn las operaciones de conversin necesarias (coercin).

2005 Alfredo Gutirrez Hdez.

27

1.4.4

Proceso de carga y enlace

Cargador: Es un programa especial, parte del sistema operativo que tiene como propsito colocar en la memoria las instrucciones y datos de un programa o informacin codificada en lenguaje maquina, para que entonces la computadora pueda procesarla. Las funciones de un cargador son relativamente sencillas y consisten en extraer informacin de algn medio exterior de la memoria (Disco duro, diskette, CD) y colocarlo en celdas sucesivas de la memoria a partir de una celda preespecificada. El cargador realiza la ltima etapa del proceso de traduccin: cargar el programa en memoria donde puede ser ejecutado. Despus de transferir el control al programa cargado por medios manuales o automticos comienza la ejecucin del mismo.

2005 Alfredo Gutirrez Hdez.

28

1.4.4

Proceso de carga y enlace

Ligador: Es un programa que enlaza todos los programas o mdulos obteniendo lo que denominamos programa ejecutable. Adems incorpora las rutinas de libreras en caso de solicitarlas el propio programa. Para ejecutar el programa, el enlazador obtiene los mdulos objeto de la memoria principal a fin de formar la imagen de programa binario ejecutable. De lo que se trata es de crear una imagen exacta del espacio de direcciones virtual del programa ejecutable dentro del enlazador y colocar todos los mdulos objeto en sus posiciones correctas. El ligado dinmico ofrece algunas ventajas sobre los otros tipos de ligado. Proporciona la posibilidad de cargar las rutinas slo cuando y si se necesitan. SI las subrutinas son grandes o tienen muchas referencias externas, se pueden conseguir ahorros considerables de tiempo y espacio de memoria. De forma similar, supngase que en cualquier ejecucin un programa usa slo pocas de una gran cantidad de subrutinas posibles, pero el nmero exacto de rutinas necesarias no puede predecirse hasta que el programa examina su entrada.

2005 Alfredo Gutirrez Hdez.

29

2.1

Abstraccin
Abstraccin: condensar un objeto grande a sus partes esenciales, ignorando los detalles. Abstraccin de datos Almacenamiento Tipos de dato abstractos Independencia de datos y ocultamiento de informacin Abstraccin de control Ramificacin Iteracin Recursin Excepciones Abstraccin de procedimiento Funciones y operadores Parmetros Mdulos y TDA (objetos) Ejecucin concurrente

2005 Alfredo Gutirrez Hdez.

30

2.2.1.1

Tipos de dato genricos

Nombre Byte Word Double word (dword) Quad word (qword)

Tamao 8 bits 2 bytes (16 bits) 4 bytes (32 bits)

Combinaciones binarias 256 65,536 4,294967,296

8 bytes (64 bits) 18446,744073,709551,616

2005 Alfredo Gutirrez Hdez.

31

2.2.1.1

Tipos de dato primitivos

Entero BCD Cadena de bits Corto Largo Real Punto fijo Punto flotante Carcter Booleano Apuntador referencias colgantes creacin de basura con o sin signo con o sin signo

2005 Alfredo Gutirrez Hdez.

32

2.2.1.1

Tipos de dato primitivos


Enteros Caracter (Byte) Carcter, Entero corto (Word) Entero largo (Dword) Rango sin signo De 0 A 255 De 0 A 65,535 De 0 A 4,294967,295 Rango con signo De -128 A 127 De -32,768 A 32,767 De 2,147483,648 A 2,147483,647

Reales Real de precisin simple (Dword) Real de doble pecisin (Qword)

Rango del exponente De N x 10 -32 A N x 10 31 De N x 10 -256 A N x 10 255

Rango de la fraccin De -33554,432 A 33554,431 De -18,014398,509481,984 A 18,014398,509481,983

2005 Alfredo Gutirrez Hdez.

33

2.2.1.2

Tipos de dato estructurados

2005 Alfredo Gutirrez Hdez.

34

2.2.1.3

Parmetros
Por valor Por referencia Por resultado Por resultado-valor Por nombre

2.2.2

Ligaduras
Ligadura: la asignacin de los atributos de una variable

Nombre Direccin Tipo Valor

en tiempo de compilacin en tiempo de carga en tiempo de ejecucin

esttica dinmica

2005 Alfredo Gutirrez Hdez.

35

2.2.2

Tiempo de vida y alcance

2005 Alfredo Gutirrez Hdez.

36

2.3

Evaluacin expresiones

Operandos Operadores - Unarios - Binarios 2.4

Notacin de expresiones
Prefija Infija - Precedencias Postfija

2005 Alfredo Gutirrez Hdez.

37

2.5

Funciones y su evaluacin

Correspondencias Dominio y contradominio Algoritmo Identificador Parmetros Cuerpo Interna Funciones como parmetros Selectiva Condicin

2005 Alfredo Gutirrez Hdez.

38

2.6

Recursividad

Recursividad: capacidad de una funcin para llamarse (activarse) a s misma de forma directa o indirecta

Recursividad lineal Mximo una llamada recursiva por rama del condicional - Por la cola - No por la cola Recursividad no lineal Ms de una llamada recursiva - En cascada - Anidada

2005 Alfredo Gutirrez Hdez.

39

2.6

Recursividad
No por la cola: queda pendiente una operacin en cada en cada llamado recursivo. El primer llamado retorna l resultado.

int factorial (int n) { if (n <= 1) return 1; else return n * factorial (n - 1); }

return 120

factorial (5)
n=5 return 24

factorial (4)
n=4 return 6

factorial (3)
n=3 return 2

factorial (2)
n=2 return 1

factorial (1)
n=1

2005 Alfredo Gutirrez Hdez.

40

2.6

Recursividad
Por la cola: no hay operaciones pendientes. El ltimo llamado retorna el resultado int factorial (int n) { return fact (n, 1); } int fact (int n, int m) { if (n <= 1) return m; else return fact (n 1, n * m); }

factorial (5)
n=5

fact (5, 1)
n = 5, m = 1

fact (4, 5)
n = 4, m = 5

fact (3, 20)


n = 3, m = 20

fact (2, 60)


n = 2, m = 60 return 120

fact (1, 120)


n = 1, m = 120

2005 Alfredo Gutirrez Hdez.

41

2.6

Recursividad
En cascada: Dos o ms llamados recursivos dentro del cuerpo de la funcin
int fibonacci (int n) { if (n <= 1) return 1; else return fibonacci (n 1) + fibonacci (n 2); }
3
8

fib (5)

fib (4)

fib (3)

fib (3)

fib (2)

1 1

fib (2)

fib (1)

fib (2)
1

fib (1)
1

fib (1)

fib (0)

fib (1)

fib (0)

fib (1)

fib (0)

2005 Alfredo Gutirrez Hdez.

42

2.6

Recursividad
Anidada: El llamado recursivo se tiene como parmetro a la misma funcin invocada

int morris(int n, int m) { if (n == m) return (m + 1); else return morris(n, morris(n - 1, m + 1)); }

mor (6, 0)
6 7 5, 1

mor (6, 6)
5 6

mor (5, 1)
4, 2

mor (5, 5)
4

mor (4, 2)
3, 3

mor (4, 4)

mor (3, 3)

2005 Alfredo Gutirrez Hdez.

43

3.1.1

Antecedentes generales de la programacin modular

ALGOL 60

Pascal

ALGOL 68

CPL

Simula 67

Ada

Modula - 2

BCPL Smalltalk C

C++ Java

2005 Alfredo Gutirrez Hdez.

44

3.1.1

Antecedentes generales de la programacin modular


ALGOL 60 Diseado por comit Estructura en bloques Declaraciones de tipo explcitas para variables Reglas de alcance para variables locales Tiempos de vida dinmicos, opuestos a los estticos, para variables Expresiones y enunciados anidados Subrutinas recursivas Arreglos con lmites dinmicos

ALGOL 68 Gramtica formal Ortogonalidad Definicin de operadores por el usuario

2005 Alfredo Gutirrez Hdez.

45

3.1.1

Antecedentes generales de la programacin modular

Pascal (Nicklaus Wirth) Objetivos: Proporcionar un lenguaje de enseanza Definir un lenguaje estndar verdadero que fuera barato y fcil de implementar en cualquier computadora Tipificacin de datos fuerte No es ortogonal Para enseanza y experimentacin, no de produccin

ADA (DOD 1983, Jean Ichbiah) Basado en Pascal Programacin en tiempo real Diseado para procesos integrados Organizado por unidades que pueden compilarse en forma separada

2005 Alfredo Gutirrez Hdez.

46

3.1.1

Antecedentes generales de la programacin modular

CPL y BCPL (Univs. Londres Cambridge 60s) Orientados a programacin de sistemas

C (Ritchie y Thompson 70s) Pequeo Portable Tipificacin de datos permisiva Tanto de alto como de bajo nivel Ms eficiente que elegante Cdigo poco legible

2005 Alfredo Gutirrez Hdez.

47

3.1.2

Conceptos generales de la programacin modular


Conceptos (de ALGOL 60) Es un lenguaje algortmico; es decir, facilita la solucin paso por paso de problemas, incluyendo ciclos repetitivos El algoritmo es transmitido a la computadora como una serie de cambios al almacenamiento (memoria) Las unidades bsicas de clculo son el bloque y el procedimiento Las variables son tipificadas, y los tipos son verificados en tiempo de compilacin y/o tiempo de ejecucin Utiliza la regla de alcance lexicogrfico (esttico); es decir, el entorno de un procedimiento es aquel en el que est definido Est diseado para ser compilado, ms que interpretado

2005 Alfredo Gutirrez Hdez.

48

3.1.2

Conceptos generales de la programacin modular


Caractersticas: Bloques anidados Procedimientos Recursin Aspectos: Efectos colaterales Tipificacin de datos - Fuerte - Dbil Ciclo de vida del software

Requerimientos Diseo Codificacin Pruebas Operaciones Modelo de cascada para el ciclo de vida del software
2005 Alfredo Gutirrez Hdez. 49

3.2.1

Antecedentes generales de la programacin orientada a objetos

Simula Centro de cmputo noruego (1961) Propsito: Describir sistemas y programar simulaciones Motivos: Expresar procesos que son permanentes y activos Crear y destruir tales procesos como sea necesario Extender un lenguaje para incluir procesos Proporcionar a los procesos un mecanismo de ejecucin en forma concurrente Agrupar procesos sujetos a los mismos procedimientos en clases

Smalltalk -Alan Kay (1972) Totalmente orientado (puro) a objetos

2005 Alfredo Gutirrez Hdez.

50

3.2.1

Antecedentes generales de la programacin orientada a objetos

Java

Sun Microsystems

Simple Orientado a objetos Distribuido Robusto Seguro Arquitectura neutral Porttil Interpretado Alto desempeo Multihilo Dinmico - Todo es un objeto

2005 Alfredo Gutirrez Hdez.

51

3.2.2

Conceptos generales de la programacin orientada a objetos

2005 Alfredo Gutirrez Hdez.

52

3.3.1

Antecedentes generales de la programacin concurrente


Paralelo Secuencial mdulos procesos Factores: El uso de procesadores mltiples Cooperacin entre los procesadores El potencial para falla parcial
Mem 1 Mem 2

Menor acoplamiento
CPU 1 CPU 2

Modelos fsicos para procesamiento en paralelo


Memoria compartida

Mayor acoplamiento
CPU 1 CPU 2

2005 Alfredo Gutirrez Hdez.

53

3.3.1

Antecedentes generales de la programacin concurrente


Ventajas: Se pueden acelerar programas al ejecutar diferentes procesos en paralelo Son capaces de mejorar la confiabilidad si dos o ms procesadores duplican el trabajo de cada uno de ellos Proporcionan una avenida natural para el crecimiento del sistema cuando se agregan procesadores adicionales Facilitan tareas naturalmente distribuidas

Conceptos relacionados: Un CPU, varios procesos = tiempo compartido o ejecucin alternada = multiprocesamiento o ejecucin en paralelo

Varios CPU, varios procesos (uno por CPU) Ejecucin en paralelo y alternada =

multiprogramacin

2005 Alfredo Gutirrez Hdez.

54

3.3.2

Conceptos generales de la programacin concurrente


Procesos mltiples: procesos ejecutndose paralelamente Ejemplo: 1. Cargar el valor actual de x en un registro r 2. Realizar una operacin, dejando el resultado en r 3. Almacenar el valor de r en la localidad para x

P1
r1

P2 0
r2

0 r+1

r=3
r1

r2

2005 Alfredo Gutirrez Hdez.

55

3.3.2

Conceptos generales de la programacin concurrente


Sincronizacin de procesos cooperativos

f1

t5 f5

t1 f2

t4

t2

f4

t3

f3

La cena de los filsofos


2005 Alfredo Gutirrez Hdez. 56

3.3.2

Conceptos generales de la programacin concurrente


Aspectos o problemas: Espera productiva Alternancia Inanicin Irracionalidad Estancamiento Soluciones a la sincronizacin: Semforos Monitores Rendezvous Paso de mensajes

Fallos parciales: el mensaje puede ser perdido por la red la respuesta puede perderse el servidor puede fallar antes de enviar la respuesta

2005 Alfredo Gutirrez Hdez.

57

4.1.1

Antecedentes generales de la programacin lgica

Prolog

Calmerauer y Roussel

Orientado a programacin lgica Por su lgica fue utilizado para inteligencia artificial Fue considerado como de quinta generacin Se utiliza para: Demostracin de teoremas Diseo de bases de datos relacionales Representacin de conocimientos en sistemas de I.A. Programacin de sistemas expertos Elementos en el lenguaje Hechos Reglas Consultas

2005 Alfredo Gutirrez Hdez.

58

4.1.2

Conceptos generales de la programacin lgica

Caractersticas de lenguaje Prolog 1. Cada parmetro para un procedimiento puede ser tanto de entrada como de salida para cada invocacin, como desee el usuario. 2. Los procedimientos pueden devolver resultados con variables no ligadas, presentando as soluciones parciales o genricas para un problema. 3. Pueden encontrarse soluciones mltiples haciendo uso del retroceso integrado.

2005 Alfredo Gutirrez Hdez.

59

4.2.1

Antecedentes generales de la programacin funcional

Lisp

John McCarthy

-- Taller de I.A. en Darmouth (1956) Diseado especialmente para Inteligencia Artificial Caractersticas: Recursin Paralelo por naturaleza Funciones automodificantes Aplicaciones de la I.A. Procesamiento del lenguaje natural Robtica Ingeniera del conocimiento

2005 Alfredo Gutirrez Hdez.

60

4.3.1

Antecedentes generales de los lenguajes de programacin para bases de datos


Base de datos: Archivo ms o menos permanente con una estructura Deben soportar un forma de describir: Entidades Relaciones Data System Language (DSL) DDL (Data Definition Langage) - describe estructuras y relaciones DML (Data Manipulation Language) - realiza operaciones examinar insertar eliminar modificar DDL y DML se integran a un lenguaje anfitrin DBMS: Data Base Management System

2005 Alfredo Gutirrez Hdez.

61

4.3.1

Antecedentes generales de los lenguajes de programacin para bases de datos


Vistas:

Vistas externas

Vista conceptual

Vista de almacenamiento

Vista fsica

Modelos bsicos para la vista conceptual: Modelo jerrquico Modelo de red Modelo relacional Otros modelos: Modelo semntico Modelo orientado a objetos
2005 Alfredo Gutirrez Hdez. 62

5.1.1

Antecedentes de los lenguajes visuales

Lenguajes Visuales (Visual Languages) (VL) Un lenguaje visual es un conjunto de disposiciones visuales de smbolos grficotextuales con una interpretacin semntica. La gente ha inventado y utilizado muchos lenguajes visuales en el curso de la historia. Una fraccin de ellos tienen algo que ver con las computadoras, pero slo un pequeo nmero de ellos representan programas, y un nmero an ms pequeo de estos representan programas y pueden ser ejecutados en una computadora. Digamos que la gente ha estado utilizando lenguajes visuales por unos 10,000 aos, utilizndolos para fines de comunicacin relacionada con computadoras por 50 aos, y utilizndolos para comunicarse con computadoras por 30. De modo que los lenguajes de programacin visual representan un muy pequeo porcentaje de los lenguajes visuales existentes.

2005 Alfredo Gutirrez Hdez.

63

5.1.2

Conceptos generales de los lenguajes visuales

Lenguajes de Programacin Visuales (Visual Programming Languages) (VPL) Cualquier lenguaje de programacin que permite al usuario especificar un programa de forma bi-(o ms)-dimensional. Los lenguajes textuales convencionales no son considerados bi-dimensionales debido a que el copilador o intrprete los procesa como un flujo uni-dimensional de caracteres. Un VPL permite la programacin con expresiones visuales; arreglos espaciales de smbolos textuales y grficos. Los VPLs podran ser clasificados de acuerdo al tipo y extensin de la expresin visual utilizada, en: lenguajes basados en iconos, lenguajes basados en formularios, y lenguajes basados en diagramas. Los ambientes de programacin visual proveen elementos grficos o icnicos que pueden ser manipulados por el usuario de forma interactiva de acuerdo a alguna gramtica espacial para la construccin del programa.

2005 Alfredo Gutirrez Hdez.

64

5.1.2

Conceptos generales de los lenguajes visuales

Un lenguaje visualmente transformado es un lenguaje no-visual con una representacin visual superimpuesta. De forma natural, los lenguajes visuales tienen una expresin visual inherente para la cual no existe un equivalente textual obvio. La programacin visual es comnmente definida como la utilizacin de expresiones visuales (como grficas, dibujos, animaciones o iconos) en el proceso de programacin. Estas expresiones visuales pueden ser utilizadas en ambientes de programacin como interfaces grficas para lenguajes de programacin textuales; estos podran utilizarse para formar la sintaxis de nuevos lenguajes de programacin visal alcanzando nuevos paradigmas, como la programacin mediante demostracin; o podran ser utilizados en representaciones grficas del comportamiento o estructura de un programa.

2005 Alfredo Gutirrez Hdez.

65

5.1.2

Conceptos generales de los lenguajes visuales

A pesar de sus nombres, Visual Basic, Visual C++ y la familia "visual" de Microsoft, no son lenguajes de programacin visual. Estos son lenguajes textuales que utilizan un constructor de interfaces grfico para facilitar la programacin de interfaces. La interfaz de usuario del ambiente de programacin es visual, los lenguajes no. Debido a la confusin causada por los mltiples significados de programacin visual, Fred Lakin ha propuesto el termino "graficas ejecutables" como una alternativa a VPL. El trmino "lenguaje de programacin visual" sugiere una confusin. El significado refiere un "lenguaje de programacin que podemos ver", o un "lenguaje utilizado para la programacin del comportamiento de elementos visuales"; estas referencias son limitantes. Grficas Ejecutables expresa una orientacin diferente hacia el dominio del problema: Grficas que pueden ser ejecutadas. [Lakin]

2005 Alfredo Gutirrez Hdez.

66

5.1.2

Conceptos generales de los lenguajes visuales

Paul Lyons ha acuado el trmino "Hiperprogramacin" (Hyperprogramming) el cual rene mejor las capacidades y caractersticas provistas por los lenguajes de programacin visuales. Los argumentos tericos relacionan los VPLs con una mayor expresividad e intuitividad de las representaciones diagramticas de relaciones complejas. Los argumentos prcticos relacionan los VPLs con la suficiente disponibilidad de poder de cmputo para soportar la captura y procesamiento de diagramas visualmente expresados. Especficamente se utiliza: velocidad de procesador, para permitir la realizacin en tiempo real grficos de alta resolucin, para representar notaciones diagramticas complejas ratn, para crear notaciones diagramticas complejas y pantallas basadas en ventanas, para particionar los diagramas resultantes en porciones de tamao manejable.

2005 Alfredo Gutirrez Hdez.

67

5.1.2

Conceptos generales de los lenguajes visuales

El ltimo punto es el ms importante. El particionamiento de programas para hacerlos ms manejables es bueno, pero crea dificultades para la navegacin. Este tipo de problemas de navegacin ha sido solucionado a travs de documentos "ordinarios" mediante sistemas de hipertexto. Ahora, los documentos "ordinarios" de hipertexto son tediosos en su creacin, pues la adicin de hiperenlaces toman mucho tiempo, pero eso no es problema con los programas, porque para el sistema de entradas es fcil generar los hiperenlaces automticamente, "al vuelo". Tambin dotando a los programadores con tcnicas de navegacin simples y consistentes, los hiperenlaces pueden ser utilizados para actualizar de forma automtica la informacin compartida entre las vistas.

2005 Alfredo Gutirrez Hdez.

68

5.1.2

Conceptos generales de los lenguajes visuales

Es fcil pensar que los VPLs contarn con particionamiento basado en mltiples ventanas, con hiperenlaces entre las ventanas conectando elementos de informacin compartidos. Llamndoles Lenguajes de Hiperprogramacin se reflejar esta situacin, y podra reducir la sugestiva abstraccin (inherente en el nombre Lenguajes de programacin VISUALES) de que esos lenguajes deberan omitir el texto por completo. [Lyons] Algunos ejemplos de lenguajes de programacin visual son: Prograph, Pict, Tinkertoy, Fabrik, CODE 2.0, e Hyperpascal.

2005 Alfredo Gutirrez Hdez.

69

5.2.1

Antecedentes de los lenguajes basados en scripts

Los lenguajes basados en scripts son lenguajes de programacin utilizados para la automatizacin de las operaciones en computadoras. Los primeros lenguajes basados en scripts fueron comnmente denominados lenguajes de programacin por lotes. Muchos lenguajes basados en scripts surgieron como herramientas para ejecucin de tareas "en ausencia", particularmente en administracin de sistemas. Los scripts (programas) son comnmente almacenados como texto sin formato (en ASCII) e interpretados, o compilados (como Perl) en cada ocasin que son invocados. Algunos lenguajes basados en scripts son diseados para un fin especfico, pero frecuentemente es posible escribir programas ms generales. En muchos proyectos a gran escala, se utiliza un lenguaje basado en scripts en conjunto con un lenguaje de ms bajo nivel, cada uno aportando sus potenciales para resolver problemas especficos.

2005 Alfredo Gutirrez Hdez.

70

5.2.1

Antecedentes de los lenguajes basados en scripts


Los lenguajes basados en scripts son frecuentemente diseados para un uso interactivo, teniendo muchos comandos que pueden ejecutarse individualmente, y comnmente tienen operaciones de muy alto nivel (por ejemplo, en "sh" de Unix, la mayora de las operaciones son programas a su vez). Dada la existencia de comandos de alto nivel, se simplifica el proceso de escritura de cdigo. Caractersticas de programacin como la administracin automtica de memoria y verificacin de accesos a memoria pueden dars por hechos. En un lenguaje de menor nivel o no basado en scripts el manejo de memoria y la creacin de estructuras tiende a consumir un mayor esfuerzo del programador y lneas de cdigo para completar una tarea. Por estas razones, usualmente es ms rpido programar en un lenguaje basado en scripts, y los archivos son mucho m pequeos que sus equivalentes en otros lenguajes (como C). Por otro lado se castiga el desempeo, los lenguajes basados en scripts, regularmente interpretados, pueden ser significativamente ms lentos en su ejecucin y pueden consumir ms memoria cuando estn corriendo.

2005 Alfredo Gutirrez Hdez.

71

5.2.1

Antecedentes de los lenguajes basados en scripts

Server-side scripting (ejecucin del lado del servidor): es una tecnologa de servidor web donde una solicitud de un usuario es atendida mediante la ejecucin de un script directamente en el servidor web para generar pginas de HTML dinmico. Usualmente es utilizado para proveer sitios web interactivos que funcionad como interfaz para bases de datos u otras fuentes de datos. Esto es diferente del "clientside scripting (ejecucuin del lado del cliente) donde los scripts son ejecutados por la ventana del navegador web, usualmente en JavaScript. La ventaja principal de la ejecucin del lado del servidor es la gran habilidad para controlar la respuesta del script basndose en los requerimientos del usuario, derechos de acceso, o consultas en las fuentes de datos. Algunos lenguajes basados en scripts son: Miva MUMPS ObjectRexx Python QuakeC REBOL REXX Shorthand Language Simkin Visual DialogScript ZZT-oop Perl Ruby Tcl PHP Pike Pliant Scheme ScriptBasic sh UnrealScript VBScript

2005 Alfredo Gutirrez Hdez.

72

También podría gustarte