« maj 2009 | Main | september 2009 »

augusti 30, 2009

The Pop-11 programming language and Poplog environment

First I must apologize for the Swedish readers for including an english text here: Sorry about that. I may do it again, but this blog has not permanently gone English. It has, however, changed its focus somewhat in other ways from the start in june 2003.

Pop-11 and its environment Poplog is relatively unknown, originally designed for research and education in artificial intelligence. From What is Poplog:
Poplog is an integrated toolkit providing a highly extendable collection of languages and tools for teaching, research and development. By default it includes incremental compilers for three powerful AI programming languages
* Pop-11--the core language -- used to implement itself and the others;
* Common Lisp; and
* Prolog;
as well as
* Standard ML, a widely used functional language.

...

Most of Poplog is implemented in Pop-11, including the incremental compilers for all four languages and the integrated programmable editor.
Here I will mostly write about the programming language Pop-11, but also mention how it is possible to integrate Pop-11, Prolog, and Lisp. See the programs below.

Pop-11/Poplog is a huge system which includes - besides the four languages mentioned above and the VED editor which is also used for the help/teach system - much material for learning the system, as well as learning artificial intelligence. "Huge" above refers to the content of the system, not to the actual memory "footprint". For more about the size, see the entry Size at the Free Poplog page.

The language Pop-11 is Lisp-like in its approach but uses an Algol-like syntax. It has many of my favorite features of a programming language:

Some larger teaching examples

Here are some examples of the teach/help files. Many of these shows how to use a specific library, and some of them just teaches an artificial intelligence concept.

Documents and links

Mailing lists

My Pop-11/Poplog page

My Pop-11/Poplog page contains some of my Pop-11 programs. Some of them are the "mandatory" programs I always implement when learning a new programming language.

Some of the program below requires functions from the GOSPL (Global Open Source Poplog Library) library, such as split, split_with. GOSPL was available from www.poplog.org, but that site seems to be defunct right now. The library is now available from www.cs.bham.ac.uk/research/projects/poplog/, or more specific here: gospl_1_2_0.tar.gz

Installation

This is how I install Pop-11/Poplog when a new version arrives. I run on a linux and the current_poplog directory is a symbolic link to the actual latest distribution directory. Here I assume that the version is v15.63.

Posted by hakank at 09:26 FM Posted to Program | Comments (1)

augusti 05, 2009

En uppdatering om vad som händer

Som tidigare nämts så är det på andra bloggen My Constraint Programming Blog det händer saker numera.

Vad har hänt där då (sedan maj)? Faktiskt en hel del. Jag länkar inte till alla inlägg utan endast till några "high lights":

Maj

* Report from SweConsNet2009, including my presentation, som alltså är en rapport från villkorsprogrammeringsworkshopen SweConsNet09, där jag var med och föreläste en stund. Stora delar av maj gick åt till att förebereda för denna föreläsning.

Juni

* Lyckades efter ett antal genomläsningar av några olika skrifter förstå hur det globala villkoret (global constraint) cumulatives funkar i Gecode, och skrev om detta i Scheduling with the cumulatives constraint in Gecode .

* Publicerade och bloggade om villkorsprogrammeringssystemet ECLiPSe (nej, det ska inte förväxlas med utveckligs-GUI:t). Det är ett riktigt trevligt Prolog-baserat system med mycket användbara utökningar såsom loopar och arrays som gör att man inte måste lösa allting med rekursioner och listor. Se vidare My ECLiPSe page som nu innehåller cirka 120 modeller; till största delen har just desamma utökningar används.

Juli

* Skapade ett samlingssida över de problem som modellerats i fler än ett villkorsprogrammeringssystem: Common constraint programming problems som presenterades i Common constraint programming problems.

* Modellerade mina cirka 17 basmodeller ("learning models") i ett ytterligare villkorsprogrammeringssystem: Tailor, som konverterar Essence' (ett högnivåspråk liksom t.ex. MiniZinc och Comet) till Minion, Gecode eller FlatZinc (det som MiniZinc använder). Och det var just stödet av FlatZinc inspirerade till detta.

Tailor presenterades i New Tailor version (v0.3.2) and My Essence'/Tailor page.
Se mera på My Tailor/Essence' page.

Augusti, idag faktiskt

Följande når världen för första gången här, nämligen en liten MiniZinc-modell som löser Strimko-problem. Strimko är en mer avancerad variant av latinska kvadrater (alla rader respektive alla kolumner måste innehålla distinkta värden) där man även ska se till så att ytterligare villkor i form av en "strängar" av celler också måste vara olika. (Strimko är således inte helt väsensskilt från Sudoku.)

MiniZinc-modellen är strimko.mzn med de tre probleminstanserna:
strimko_067.dzn, strimko_068.dzn samt strimko_070.dzn.

Inspiration till detta var från bloggen 360: A New Twist on Latin Squares.


Till sist, för denna gång
För en sammanställning över de olika villkorsprogrammeringssystem jag kikat (och fortfarande kikar) på, se översiktsidan med det passande - men i någon mån förutsägbara - namnet My Constraint Programming Page.

Posted by hakank at 07:50 EM Posted to Constraint Programming