Algunos procedimientos interconstruidos en el lenguaje Inteligencia
Download
Report
Transcript Algunos procedimientos interconstruidos en el lenguaje Inteligencia
Inteligencia artificial
Algunos procedimientos
interconstruidos en el lenguaje
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Keyword
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
¿Cómo diseñar un lenguaje?
Se tiene que tomar en cuenta tres
influencias principales:
• La computadora subyacente en
donde se van a ejecutar los
programas escritos en el lenguaje.
• El modelo de ejecución, o
computadora virtual, que apoya a
ese lenguaje en el equipo real.
• El modelo de computación que el
lenguaje implementa.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Componentes fundamentales de una computadora
Componente
Descripción
Datos
Son los elementos de información integrados a la computadora, manipulables
directamente a través de operaciones primitivas de hardware.
Operaciones primitivas
Debe contener un conjunto de operaciones primitivas interconstruidas, útiles
para la manipulación de datos.
Control de secuencia
Proporciona los mecanismos para controlar el orden en el que se van a
ejecutar las operaciones primitivas.
Acceso a datos
Incorporar algún medio para designar operandos y un mecanismo para
recuperar operandos de un designador de operandos dado.
Gestión de almacenamiento Proveer mecanismos para la asignación de almacenamiento para programas.
Entorno de operación.
El entorno de operación de una computadora consiste ordinariamente en un
conjunto de dispositivos periféricos de almacenamiento de entrada / salida
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Máquina virtual
Son las estructuras de datos y
algoritmos de un lenguaje que se
emplean durante el tiempo de
ejecución de un programa.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Relación entre lenguaje y máquina virtual
Una máquina define un lenguaje.
Un lenguaje define una máquina.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Jerarquía de máquinas virtuales
Una computadora con n niveles
puede verse como n máquinas
virtuales diferentes, cada una de las
cuales tiene un lenguaje especial.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Traductor para la máquina virtual
Se debe suministrar un traductor para
traducir programas de usuario al
lenguaje de la máquina de la
computadora virtual definida por el
lenguaje.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Jerarquía de máquinas virtuales
Cada nivel representa una abstracción con objetos y operaciones diferentes.
Cada nivel está construido sobre su predecesor.
Si se quiere escribir programas para la máquina virtual del nivel n, no se
necesita conocer los intérpretes ni los traductores de los niveles de abajo.
Las computadoras están diseñadas como una serie de niveles.
Para diseñar nuevos niveles, se necesita conocer todos.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Enlaces y tiempo de enlace
Un enlace es la asignación de
atributos a una celda de memoria
para un elemento de programa.
El momento en que el programa
hace esta elección se conoce como
el tiempo de enlace.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Tipos de tiempos de enlace
Tiempo de implantación del lenguaje
Tiempo de ejecución
Representación de números y
operaciones aritméticas en la
computadora del hardware subyacente.
El enlace de parámetros formales a
reales.
A través de la asignación de valores a
variables.
Tiempo de definición del lenguaje
Todas las posibles formas opcionales de
enunciados, tipos de estructuras de
datos, estructuras de programa.
Tiempo de compilación
Tipos para las variables.
Cómo se guardan las estructuras de
datos y sus descriptores.
Tiempo de carga
Fusionar los subprogramas en un
ejecutable único enlazando las variables
a direcciones reales de memoria.
Por ejemplo, cuántos tipos de enlace tiene
este sencillo enunciado de asignación
escrito en un lenguaje L:
www.utel.edu.mx
X := X + 10
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Tipos de tiempos de enlace
Cuando un enlace se efectúa
durante el tiempo de ejecución, se
dice que es de tipo dinámico.
Ejemplos: Prolog, LISP y ML.
El enlace que ocurre durante el
tiempo de compilación es de tipo
estático.
Tipo
Eficiencia
Flexibilidad
Dinámico
-
+
Estático
+
-
Ejemplos: C, Pascal y Fortran.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Alcance de una variable
Es el conjunto de enunciados en el que el identificador de la variable es
válido.
Alcance estático: El alcance se determina de acuerdo al lugar donde el
identificador es definido. Se le llama también alcance lexicográfico.
El alcance estático se determina fácilmente utilizando diagramas de
contorno.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Paradigmas de los lenguajes de programación
En ciencias de la computación un
paradigma se puede definir como un
conjunto de conceptos que permiten
modelar el mundo.
Un paradigma es usado para formular
una solución de cómputo a un
problema.
1. Lenguajes imperativos o de
procedimientos.
2. Lenguajes aplicativos o
funcionales.
3. Lenguajes con base en
reglas o lógicos.
4. Lenguajes orientados a
objetos.
5. Lenguajes concurrentes.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
1. Lenguajes imperativos o de procedimientos
Se caracterizan por ser claros,
formales y elegantes.
Son
controlados
imperativos:
enunciado 1;
enunciado 2;
...
por
Fortran
enunciados
La ejecución de un enunciado hace que
el intérprete cambie el valor de una o
más localidades en memoria.
Ejemplos: Fortran, Pascal, C, Algol, Ada,
PL/1.
INTEGER I
REAL X(10), SUM
SUM = 0.0
DO 100 I=1,10
100 SUM=SUM+ X(I)**2
IF (SUM .GT. 1E+5) STOP
WRITE(6,200) I,SUM
200 FORMAT ('SUMA', I, 'VALORES E',E15.7)
END
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
2. Lenguajes aplicativos o funcionales
Se caracterizan por ser muy eficientes, expresivos y semánticamente elegantes.
Los lenguajes aplicativos hacen uso de las funciones puras con composición funcional,
recursión y expresiones condicionales.
Tienen 4 componentes:
•
•
•
•
Un conjunto de funciones primitivas.
Un conjunto de formas funcionales.
La operación de aplicación.
Un conjunto de objetos de datos.
Ejemplos: LISP, ML.
LIPS
; Factorial
(defun fact (n)
(if (= n 1)
; caso de terminación -> 1! = 1
1
(* n (fact (- n 1))) ; relación recursiva: n! = n * (n-1)!
)
)
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
3. Lenguajes con base en reglas o lógicos
Se caracterizan por ser eficaces y
veloces
Se ejecutan verificando una condición, que
cuando se satisface ejecutan una acción:
condición 1 entonces acción 1
condición 2 entonces acción 2
...
Ejemplo: Prolog.
www.utel.edu.mx
Prolog
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
4. Lenguajes orientados a objetos
Se caracterizan por trabajar con
entes abstractos (objetos) que
reflejan las propiedades y
características de objetos o entes
reales.
Las actividades a realizarse se tornan
alrededor de los objetos mediante
métodos (funciones).
La comunicación con el objeto se da a
través de mensajes.
Un aspecto fundamental es el concepto de
herencia que se da cuando los objetos
pertenecen a la misma clase.
Ejemplos: Simula, Smalltalk, Java.
Java
class TestTh extends Thread {
private String nombre;
private int retardo;
// Constructor para almacenar nuestro nombre
// y el retardo
public TestTh( String s,int d ) {
nombre = s;
retardo = d;
}
// El metodo run() es similar al main(), pero para
// threads. Cuando run() termina el thread muere
public void run() {
// Retasamos la ejecución el tiempo especificado
try {
sleep( retardo );
} catch( InterruptedException e ) {
;
}
// Ahora imprimimos el nombre
System.out.println( "Hola Mundo! "+nombre+" "+retardo );
}
}
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
5. Lenguajes concurrentes
Su principal objetivo es mejorar
la velocidad de cómputo,
compartir recursos y distribuir la
carga de trabajo.
Diferentes tipos de arquitecturas:
– Redes de cobertura amplia.
– Redes locales.
– Multiprocesadores (Clusters).
Comunicación y cooperación entre
aplicaciones a través de:
–
–
–
–
Envío y recepción de mensajes.
Llamado a procedimiento remoto.
Comunicación de grupo.
Memoria Virtual Distribuida.
Ejemplos: PVM, CSP, Ada.
Ada
procedure DECOD_MENSAJE
task GENERAR_CODIGOS;
task DECODIFICAR is
entry ENVIAR_CODIGO (C: in CHARACTER);
entry RECIBIR_CAR (C: out CHARACTER);
end;
task IMPR_MENSAJES;
task body GENERAR_CODIGOS is
CODIGO_SIGUIENTE: CHARACTER;
begin
loop
--setencias para recibir datos
--y generar un valor para CODIGO_SIGUIENTE
DECODIFICAR.ENVIAR_CODIGO (CODIGO_SIGUIENTE);
end;
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Determinación del tipo de un término
var(X)
Se satisface si en ese momento X es una variable no
instanciada
Permite saber si una variable ya tiene o no un valor,
pero sin fijárselo como efecto lateral
?- var(X).
yes
?- var(23).
no
?- X = Y, Y = 23, var(X).
¿?
listing(A).
Se muestran por el canal de salida activo todas las cláusulas
asociadas al átomo al que esté instanciado A.
El formato depende del intérprete.
Útil para descubrir errores.
Ejemplo:
?- [recorrer_fichero].
?- listing(mostrar_fichero).
mostrar_fichero :write('Nombre de fichero: '),
read(A),
see(A),
muestra_contenido,
seen.Manejo de cláusulas
nonvar(X)
Comportamiento opuesto al anterior
atom(X)
Se cumple si X identifica en ese momento un átomo
?- atom(23).
no
?- atom(libros).
yes
?- atom(“esto es una cadena”).
¿?
integer(X)
Se satisface si X representa en ese momento a un entero
atomic(X)
Se cumple si en ese momento X es un entero o un
átomo
atomic(X):- atom(X).
atomic(X):- integer(X).
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Functor
Una función entre categorías
que mapea objetos a los objetos
y morfismos a morfismos.
Existen Functors en ambos tipos
covariantes y contravariantes.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Name
name(A, L)
• Permite
manejar
átomos
arbitrarios.
• Relaciona un átomo (A), con
la lista de caracteres ASCII
que lo compone (L).
Ejemplos:
?- name(prueba, X).
X = [112, 114, 117, 101, 98, 97]
?- name(prueba, “prueba”).
yes
?- name(X, [112, 114, 117, 101,
98, 97]).
X = prueba
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Manipulación de la base de datos
Programa Prolog <----> Base de
datos
Base de datos: Conjunto de
cláusulas que hemos ensamblado
antes de iniciar la ejecución del
programa.
Prolog dispone de un conjunto de
predicados
predefinidos
para
modificar la base de datos de
forma dinámica.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Predicados para manipulación de la base
de datos
Predicados
Descripción
asserta(X)
Añade la cláusula X como la primera cláusula de este predicado.
Como otros predicados de E/S siempre falla en el backtracking y no deshace sus
propios cambios.
assertz(X)
Como asserta/1, sólo que añade la cláusula X como la última cláusula del
predicado.
retract(X)
Borra la cláusula X de la base de datos.
Como en los casos anteriores no es posible deshacer los cambios, debido a este
predicado en el backtraking.
retract/assert:
Modificar la base de datos de cláusulas.
Compilan el término que se les pasa como argumento.
Son costosas.
recorda/erase:
Permiten grabar/borrar una base de datos de términos.
Mecanismo más rápido que assert/retract, pero no son cláusulas del programa.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Construcción y descomposición de términos
Existen tres predicados
predefinidos para descomponer
términos o construir nuevos
términos:
• ?- f(a,b) =.. L.
• L = [f, a, b]
• ?- T =.. [progenitor, miguel, maría ]
• T = progenitor(miguel, maría)
Term =.. L
functor(Term, F, N)
• ?- Z =.. [p, X, g(X,Y) ].
• Z = p(X, g(X,Y))
arg(N, Term, A)
Prolog VI
www.utel.edu.mx
25
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Los procedimientos Findall
findall(Instance, Goal, List)
List se unifica con la lista de
todas las instancias de Instance
que hacen cierto a Goal.
Si Goal no es cierto para ningún
valor de Instance, entonces List
se unifica con la lista vacía [].
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Predicados standard de orden superior
• Ejemplo
• map
Permite aplicar un predicado de "mapeo" a una
lista de datos. Dicho predicado debe admitir el
siguiente modo de uso:
MapPred(+Dato,-DatoMapeado).
Debe tratarse, por tanto, de un predicado que
transforma (mapea) un dato en otro. La función de
map es la siguiente: para cada dato existente en
una lista dada, se pasa como primer argumento a
MapPred. El resultado de MapPred, es decir, el
segundo argumento, se almacena en una lista
resultado. El modo de uso es el siguiente:
map(+ListaInicial, +MapPred, -ListaResultado).
%Predicado de mapeo:
%Dado un numero le suma una
unidad
mapeo(Dato, DatoMapeado) :DatoMapeado is Dato + 1.
%% Ejecucion en el top-level:
?- map([6,9,12],mapeo,L).
L = [7,10,13] ?
yes
?-
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Predicados estándar de orden superior
• "findall"
Se trata de un conjunto de predicados
cuya finalidad es almacenar en una lista
todas las soluciones de un predicado
dado, entendiendo como tales, las
ligaduras que se producen en una o
varias variables libres que se indican
explícitamente. Los predicados que
componen la familia son:
• El modo de uso es el siguiente:
• findall(+Termino_o_variable, +Objetivo,
-ListaResultado).
Genera una lista con todas
las soluciones del predicado
dado según el orden en que
se van sucediendo. findall
nunca falla, si no hay
soluciones genera una lista
vacía.
Naturalmente,
el
propio findall/3 solamente
tiene una solución.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Uso de findall
• uso erróneo
• usos correctos
• findall( X, predicado(Y),
Resultado).
• findall( X, predicado(Y,Z),
Resultado).
• findall( solucion(X,Y),
predicado(Y,Z), Resultado).
• findall( X, predicado(X),
Resultado).
• findall( X, predicado(X,Y),
Resultado).
• findall( solucion(X,Y),
predicado(X,Y),
Resultado).
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Uso de findall
• uso erróneo
• usos correctos
• findall( X, predicado(Y),
Resultado).
• findall( X, predicado(Y,Z),
Resultado).
• findall( solucion(X,Y),
predicado(Y,Z), Resultado).
• findall( X, predicado(X),
Resultado).
• findall( X, predicado(X,Y),
Resultado).
• findall( solucion(X,Y),
predicado(X,Y),
Resultado).
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Los procedimientos Bagof
bagof(Instance, Goal, List)
Similar a Findall, excepto en cómo
trata las variables que aparecen en
Goal y no en Instance (conocidas
como variables libres). Bagof hace
backtracking y produce una lista List
para cada posible ligadura de las
variables libres. Se puede convertir
una variable libre a no-libre usando ^ .
Si Goal no es cierto para ningún valor
de Instance, entonces List se unifica
con la lista vacía [].
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Los procedimientos Setof
setof(Instance, Goal, List)
Similar a Bagof, salvo en que
List está ordenada (según el
orden estándar) y sin repetidos.
www.utel.edu.mx
Inteligencia artificial
Algunos procedimientos interconstruidos en el lenguaje
Frase
“La primera regla de cualquier tecnología utilizada en los negocios
es que la automatización aplicada a una operación eficiente
magnificará la eficiencia. La segunda es que si la automatización se
aplica a una operación ineficiente, magnificará la ineficiencia”
Bill Gates
www.utel.edu.mx