CLIPS

CLIPS é unha ferramenta que prové un ambiente de desenvolvemento para a produción e execución de sistemas expertos. Foi creado a partir de 1984, no Lyndon B. Johnson Space Center da NASA. Os fondos cesaron a principios dos anos 1990, e houbo un mandato da NASA para comprar software comercial.
CLIPS é un acrónimo de C Language Integrated Production System (Sistema de Produción Integrado en Linguaxe C). Na actualidade, entre os paradigmas de programación que soporta CLIPS atópanse a Programación lóxica, a Programación imperativa e a Programación orientada a obxectos.
CLIPS probablemente é o sistema experto máis amplamente usado debido a que é rápido, eficiente e gratuíto. Aínda que agora é de dominio público, aínda é actualizado e mantido polo seu autor orixinal, Gary Riley. Historia e motivación
Durante 1984, no Lyndon B. Johnson Space Center da NASA, a sección de Intelixencia artificial (IA) desenvolvera ao redor dunha ducia de prototipos de sistemas expertos usando hardware e software daquela época. A pesar do demostrado potencial dos sistemas expertos, a maioría daqueles prototipos non estaban sendo usados regularmente. Segundo a NASA isto debeuse a que o linguaxe de programación usado para o desenvolvemento destas aplicacións era LISP. Atopáronse varias debilidades de LISP, entre as que se destacan tres: non estaba dispoñible para unha ampla variedade de equipos de cómputo, non era facilmente integrable con outras aplicacións, e o seu custo era moi elevado.
A sección de Intelixencia Artificial notou que o uso dunha linguaxe convencional (como C) eliminaría a maioría deses inconvenientes. Ao principio buscouse que a nova ferramenta fose desenvolvida por terceiros, pero os custos aínda eran demasiado altos e os tempos de entrega non eran satisfactorios. Polo tanto, foi necesario que a sección de Intelixencia Artificial desenvolvese a súa propia linguaxe para sistemas expertos baseado en C.
O primeiro prototipo de CLIPS foi desenvolvido durante a primavera (boreal) de 1985, e tomou pouco máis de dous meses. Era compatible con todos os desenvolvementos feitos pola sección de Intelixencia Artificial, e a súa sintaxe estaba baseada na sintaxe de ART (outra ferramenta para o desenvolvemento de sistemas expertos). Con todo, CLIPS foi desenvolvido sen ter acceso ou coñecer previamente o código fonte de ART.
Inicialmente, co desenvolvemento de CLIPS buscábase ter maior coñecemento sobre a construción de sistemas expertos e botar as bases dunha linguaxe para substituír as ferramentas comerciais que estaban sendo usadas. A versión 1. 0 de CLIPS demostrou que iso era posible. Logo dun desenvolvemento adicional, viuse que o custo de CLIPS sería significativamente menor ao doutras ferramentas e que sería ideal para adestramento. Outro ano de desenvolvemento e de uso interno serviu para mellorar portabilidade, desempeño, funcionalidade e documentación de soporte. A mediados de 1986, CLIPS v3. 0 estivo dispoñible para grupos fóra da NASA.
Outras funcionalidades agregadas transformaron CLIPS; xa non era unha ferramenta para adestramento sobre construción de sistemas expertos, senón que agora servía tamén para o desenvolvemento e execución dos mesmos. As versións CLIPS v4. 0 e v4. 1 (1987) tiñan significativas melloras en canto a desempeño, integración con outras linguaxes, e capacidade de execución. CLIPS v4. 2 (1988) foi unha completa re-escritura do código fonte co fin de facelo máis modular. Esta versión tamén incluíu un manual detallado da arquitectura de CLIPS e unha aplicación de axuda para a verificación e validación de programas baseados en regras. Novas funcionalidades viñeron coa CLIPS v4. 3 (1989).
Orixinalmente, CLIPS era unha linguaxe de regras baseado no Algoritmo Rete (Programación Lóxica). CLIPS v5. 0 (1991) introduciu dúas novos paradigmas de programación: Programación Imperativa e Programación Orientada a Obxectos (POO). A linguaxe POO dentro de CLIPS é chamado COOL (CLIPS Object-Oriented Language, ou Linguaxe Orientada a Obxectos de CLIPS). CLIPS v5. 1 (1991) xa soportaba as recentemente desenvolvidas ou melloradas interfaces X Window, MS-DOS e Macintosh. CLIPS v6. 0 (1993) tiña novas funcionalidades relacionadas co recoñecemento de patróns en obxectos/regulas e soporte a Enxeñería de Software baseada en regras. CLIPS v6. 1 (1998) soportaba compiladores C++, aínda que xa non soportaba os vellos compiladores C non ANSI. Tamén se agregaron comandos para levar control do tempo de desenvolvemento e para funcións definidas polo usuario. CLIPS v6. 2 é soportada por diversos sistemas operativos, e ten melloras na súa interface de desenvolvemento para Windows 95/98/NT e MacOS.
Actualmente, CLIPS é mantido fóra da NASA como software de dominio público. Características principais
As características principais de CLIPS son: Representación do Coñecemento: CLIPS permite manexar unha ampla variedade de coñecemento, soportando tres paradigmas de programación: o declarativo, o imperativo, e o orientado a obxectos. A programación lóxica baseada en regras permite que o coñecemento sexa representado como regras heurísticas que especifican as accións a ser executadas dada unha situación. A POO permite modelar sistemas complexos como compoñentes modulares. A programación imperativa permite executar algoritmos da mesma xeito que en C, Java, LISP e outras linguaxes.
Portabilidade: CLIPS foi escrito en C co fin de facelo máis portable e rápido, e foi instalado en diversos sistemas operativos (Windows 95/98/NT, Mac OS X, Unix) sen ser necesario modificar o seu código fonte. CLIPS pode ser executado en calquera sistema cun compilador ANSI de C, ou un compilador de C++. O código fonte de CLIPS pode ser modificado en caso que o usuario considéreo necesario, co fin de agregar ou quitar funcionalidades.
Integrabilidade: CLIPS pode ser embebido en código imperativo, invocado como unha sub-rutina, e integrado con linguaxes como C, Java, FORTRAN e outros. CLIPS incorpora unha completa linguaxe orientada a obxectos (COOL) para a elaboración de sistemas expertos. Aínda que está escrito en C, o seu interface máis próxima parécese a LISP. Poden escribirse extensións a CLIPS sobre C, e ao contrario, CLIPS pode ser chamado desde C. CLIPS pode ser estendido polo usuario mediante o uso de protocolos definidos.
Desenvolvemento Interactivo: A versión estándar de CLIPS prové un ambiente de desenvolvemento interactivo e baseado en texto; este inclúe ferramentas para a depuración, axuda en liña, e un editor integrado. As interfaces deste ambiente teñen menús, editores e fiestras que foron desenvolvidos para MacOS, Windows 95/98/NT, X Window, entre outros.
Verificación/Validación: CLIPS contén funcionalidades que permiten verificar as regras incluídas no sistema experto que está sendo desenvolvido, incluíndo deseño modular e particionamiento da base de coñecementos do sistema, recoñecemento de restricións estático e dinámico para funcións e algúns tipos de datos, e análises semántico de regras para previr posibles inconsistencias.
Documentación: Na páxina web oficial de CLIPS atópase unha extensa documentación que inclúe un Manual de Referencia e unha Guía do Usuario.
Baixo Custo: CLIPS é un software de dominio público. Exemplo de CLIPS
Como outras linguaxes para sistemas expertos, CLIPS traballa con regras e feitos. Algúns feitos poden facer que unha regra sexa aplicable. Unha regra aplicable actívase. En principio as regras e feitos créanse definíndoos, como se mostra a continuación: (deffacts trouble_shooting (car_problem (name ignition_key) (status on)) (car_problem (name engine) (status wont_start)) (car_problem (name headlights) (status work)) )
(defrule rule1 (car_problem (name ignition_key) (status on)) (car_problem (name engine) (status wont_start)) > (assert (car_problem (name starter) (status faulty)) ) Derivados de CLIPS
Unha das razóns do amplo uso de CLIPS está nos seus derivados e interfaces con outras linguaxes, como: JESS: implementación de CLIPS en Java.
FuzzCLIPS: incorpora a CLIPS a posibilidade de usar razoamento difuso.
CLIPSMM: unha interface libre de CLIPS con C++.
PHLIPS: extensión para PHP.
EHSIS Arquivado 25 de setembro de 2010 en Wayback Machine. : Implementación da linguaxe CLIPS con APIs adicionais e documentación en castelán.