POP-11 es un lenguaje de programación reflexivo , compilado incrementalmente , con muchas de las características de un lenguaje interpretado . Es el lenguaje principal del entorno de programación Poplog , desarrollado originalmente por la Universidad de Sussex y, más recientemente, por la Facultad de Informática de la Universidad de Birmingham , que aloja el sitio web principal de Poplog.
POP-11 es una evolución del lenguaje POP-2 , desarrollado en la Universidad de Edimburgo , y presenta un modelo de pila abierta (como Forth , entre otros ). Es principalmente procedimental , pero admite construcciones de lenguaje declarativas, incluyendo un comparador de patrones, y se utiliza sobre todo para la investigación y la docencia en inteligencia artificial , aunque posee características suficientes para muchas otras clases de problemas. Se usa a menudo para introducir técnicas de programación simbólica a programadores de lenguajes más convencionales como Pascal , quienes encuentran la sintaxis de POP más familiar que la de Lisp . Una de las características de POP-11 es que admite funciones de primera clase .
POP-11 es el lenguaje principal del sistema Poplog. La disponibilidad del compilador y sus subrutinas en tiempo de ejecución (un requisito para la compilación incremental) le permite admitir una gama mucho más amplia de extensiones (incluidas extensiones en tiempo de ejecución, como la adición de nuevos tipos de datos) que la que sería posible utilizando únicamente macros . Esto posibilitó la adición de compiladores incrementales (opcionales) para Prolog , Common Lisp y Standard ML , que podían incorporarse según fuera necesario para admitir el desarrollo en lenguajes mixtos o el desarrollo en el segundo lenguaje sin utilizar ninguna construcción de POP-11. Esto permitió que Poplog fuera utilizado por profesores, investigadores y desarrolladores interesados en un solo lenguaje. El producto más exitoso desarrollado en POP-11 fue el sistema de minería de datos Clementine , desarrollado por ISL. Tras la compra de ISL por parte de SPSS, cambiaron el nombre de Clementine a SPSS Modeler y decidieron portarlo a C++ y Java , lográndolo finalmente con gran esfuerzo, aunque quizás con cierta pérdida de la flexibilidad que proporciona el uso de un lenguaje de IA.
Durante un tiempo, POP-11 solo estuvo disponible como parte de un costoso paquete comercial (Poplog), pero desde aproximadamente 1999 está disponible gratuitamente como parte de la versión de software de código abierto de Poplog, que incluye varios paquetes adicionales y bibliotecas didácticas . En Birmingham se encuentra disponible una versión en línea de ELIZA que utiliza POP-11.
En la Universidad de Sussex, David Young utilizó POP-11 en combinación con C y Fortran para desarrollar un conjunto de herramientas de enseñanza y desarrollo interactivo para el procesamiento de imágenes y la visión, y las ha puesto a disposición en la extensión Popvision de Poplog.
Ejemplos de código sencillos
Aquí tenéis un ejemplo de un programa POP-11 sencillo:
definir Double(Source) -> Result; Origen*2 -> Resultado; fin de definición;
Doble(123) =>
Eso imprime:
** 246
Este incluye cierto procesamiento de listas:
define RemoveElementsMatching(Element, Source) -> Result; Índice de variables lvar; [[% para Índice en Origen hacer a menos que Índice = Elemento o Índice coincida con Elemento entonces Índice; fin a menos que; fin del; %]] -> Resultado; fin de definición; RemoveElementsMatching("the", [[el gato se sentó en la alfombra]]) => ;;; muestra [[el gato se sentó en la alfombra]] RemoveElementsMatching("the", [[the cat] [sat on] the mat]) => ;;; muestra [[the cat] [sat on] mat] RemoveElementsMatching([[= gato]], [[el gato]] es un [[gato grande]]) => ;;; muestra [[es un]] En el tutorial introductorio en línea se pueden encontrar ejemplos que utilizan el comparador de patrones POP-11, que facilita a los estudiantes el aprendizaje del desarrollo de programas sofisticados de procesamiento de listas sin tener que tratar los patrones como estructuras de árbol a las que se accede mediante las funciones 'head' y 'tail' (CAR y CDR en Lisp). El comparador es la base del conjunto de herramientas SimAgent (sim_agent) . Algunas de las potentes funciones del conjunto de herramientas, como la vinculación de variables de patrón con variables de código en línea, habrían sido muy difíciles de implementar sin las herramientas del compilador incremental.
Véase también
- Lenguaje de programación COWSEL (también conocido como POP-1)
Referencias
- R. Burstall, A. Collins y R. Popplestone , Programación en Pop-2 , University Press, Edimburgo, 1968.
- DJM Davies, Manual de usuario de POP-10 , Informe de informática n.º 25, Universidad de Western Ontario, 1976
- S. Hardy y C. Mellish, 'Integración de Prolog en el entorno Poplog', en Implementaciones de Prolog , Ed., JA Campbell, Wiley, Nueva York, 1983, pp. 147-162
- R. Barrett, A. Ramsay y A. Sloman, POP-11: un lenguaje práctico para la inteligencia artificial , Ellis Horwood, Chicester, 1985
- M. Burton y N. Shadbolt, POP-11 Programación para Inteligencia Artificial , Addison-Wesley, 1987
- J. Laventhol, Programación en POP-11 , Blackwell Scientific Publications Ltd., 1987
- R. Barrett y A. Ramsay, Inteligencia artificial en la práctica: ejemplos en Pop-11 , Ellis Horwood, Chicester, 1987.
- M. Sharples et al., Computers and Thought , MIT Press, 1987. (Introducción a la ciencia cognitiva utilizando Pop-11. Versión en línea citada anteriormente).
- James Anderson, Ed., Pop-11 alcanza la mayoría de edad: El avance de un lenguaje de programación de IA , Ellis Horwood, Chichester, 1989
- G. Gazdar y C. Mellish, Procesamiento del lenguaje natural en Pop11/Prolog/Lisp , Addison Wesley, 1989. ( leer en línea )
- R. Smith, A. Sloman y J. Gibson, Soporte de máquina virtual de dos niveles de POPLOG para lenguajes interactivos, en Research Directions in Cognitive Science Volumen 5: Inteligencia Artificial , Eds. D. Sleeman y N. Bernsen, Lawrence Erlbaum Associates, págs. 203–231, 1992. (Disponible como Informe de Investigación en Ciencias Cognitivas 153, Escuela de Informática, Universidad de Sussex).
- Chris Thornton y Benedict du Boulay, Inteligencia artificial mediante búsqueda , Kluwer Academic (versión de bolsillo Intellect Books) Dordrecht, Países Bajos y Norwell, MA, EE. UU. (Intellect en Oxford) 1992.
- A. Sloman, Pop-11 Primer , 1999 (Tercera edición)
Enlaces externos
- Sitio web oficial , portal gratuito de Poplog
- GetPoplog en GitHub
- Información sobre los materiales didácticos de POP-11
- El sitio web Poplog.org (que incluye una copia parcial del sitio web Free poplog) (actualmente inactivo: consulte su copia más reciente (17 de junio de 2008) en Internet Archive Wayback Machine ).
- Descripción general de POP-11 (Introducción para programadores experimentados) (alt. PDF )
- Waldek Hebisch elaboró una pequeña colección de ejemplos de programación en Pop-11, mostrando cómo se puede utilizar para la manipulación de símbolos, el cálculo numérico, la lógica y las matemáticas.
- Computadoras y pensamiento: Una introducción práctica a la inteligencia artificial, libro en línea que introduce la ciencia cognitiva a través de Pop-11.
- El kit de herramientas SimAgent (sim_agent)
- Pop-11 Eliza en el sistema poplog . Tutorial sobre Eliza.
- Historia de la enseñanza de la IA en Pop-11 desde aproximadamente 1976.
- Gráficos 2D (X) en Pop-11
- Objectclass es la extensión de programación orientada a objetos de Pop-11 (basada en parte en CLOS y compatible con herencia múltiple ).
- Tutorial introductorio a la programación orientada a objetos en Pop-11.
- Referencias adicionales
- Documentación en línea sobre Pop-11 y Poplog
- Documentación del sistema en línea, incluida información sobre portabilidad.
- Entrada para Pop-11 en el sitio web de HOPL (Historia de los Lenguajes de Programación).
- Familia de lenguajes de programación Lisp
- Inteligencia artificial
- Historia de la informática en el Reino Unido
- Ciencia y tecnología en East Sussex
- Universidad de Sussex