PARTICULARIDADES DE LOS PROBLEMAS EN INTELIGENCIA ARTIFICIAL
-Problemas pobremente definidos y especificados inicialmente, aspecto slo
mejorable mediante refinamiento progresivo incremental
-En dominios complejos
-Problemas dependientes del contexto, con estrategias y heursticas a
desarrollar mediante paulatina prueba-error
-Con enfoques simblicos o sub-simblicos, ms que numricos
EJEMPLOS
Procesamiento de lenguaje natural, traduccin automtica, visin por
ordenador, control de procesos mal modelizables (como fabricacin de cemento), procesos adaptativos o evolucionario, diagnosis mdica, toma de decisiones econmicas etc.
CONSECUENCIAS PARA LA PROGRAMACIN
-Diferencias con la Ingeniera del software habitual: no se comienza con una
especificacin precisa
-El trabajo de implementacin forma parte del proceso de especificacin
(progresivo)
-Deseable librar al programador de ocuparse de limitaciones tcnicas de
construccin (bajo nivel en tipos de datos nuevos, gestin de depsito en memoria etc.)
-Conveniencia de usar un estilo declarativo usando estructuras de datos
(como rboles o listas) y operaciones (como ajuste de patrones) built-in de alto nivel
-Programacin que soporte computacin simblica de alto nivel de
abstraccin
-Dificultad de compilar eficientemente en mquinas estndar la
programacin con estilo imperativo, inicialmente, si bien, una vez comprendidos y especificados algunos problemas se pueden hacer, acaso parcialmente, reimplementaciones en imperativo.
PARADIGMAS ALTERNATIVOS SURGIDOS
-Programacin Funcional, basada en la Teora de Funciones Recursivas y el
-clculo: Lisp (McCarthy, finales de los cincuenta) -Programacin Lgica, basada la Lgica Formal: Prolog (Colmerauer, Kowalski, Roussel, aos setenta) Nota: sta ser tratada en la asignatura Conocimiento y Razonamiento Automatizado
PROGRAMACIN FUNCIONAL (frente a imperativa):
-Usa funciones con nombre y las annimas del -clculo ( Church 1936)
-La programacin consiste en construir definiciones de funciones, acaso
combinando otras previas, para cada problema especfico
-La computacin consiste en evaluar llamadas de funciones e imprimir
valores resultantes, como una calculadora manual, pero a un nivel mucho ms flexible y potente
-El orden en que se ejecute la evaluacin no afecta a su resultado, un valor.
No puede haber efectos colaterales debidos a la posicin de variables en memoria, al no usarse variables
- Control de flujo: mediante recursin y condicionales, sin secuenciacin ni
iteracin
-Alto nivel de abstraccin: conseguido mediante el uso de la abstraccin
funcional y la aplicacin funcional definidas en el -clculo
-Beneficio: Alto nivel de modularidad, facilidad para descomponer
problemas en subproblemas y para ensamblar los resultados parciales correspondientes
PROGRAMACIN FUNCIONAL EN LISP
-Lisp (de LISt- Processing, McCarthy 1958): primer lenguaje funcional
-Diseado para permitir computacin simblica, usando listas enlazadas
como principal estructura de datos
-Principales dialectos en uso: Scheme y Common lisp
En este curso, nos ocuparemos preferentemente de Scheme-Lisp