Szabadon rendelkezésre bocsátjuk az érdeklődők számára – nem kereskedelmi célú felhasználásra – azokat a mesterséges intelligencia alapszoftvereinket, amelyek korábban kutatás-fejlesztés keretében valósultak meg.
A DANUBE rendszert 1995 és 1997 között fejlesztettük, az 1997-es állapotot lehet letölteni.
A DANUBE egy olyan programozási eszköz, amely elosztott programok heterogén számítógépes hálózatokban történő fejlesztését és karbantartását támogatja. A DANUBE lehetové teszi a programozók és felhasználók számára, hogy maximálisan kihasználják az X-Window rendszerrel ellátott UNIX munkaállomásokból, ill. MS-Windows alapú személyi számítógépekből felépülő egyenrangú hálózatok előnyeit.
Az elosztott projekt-felügyeleti rendszer naprakészen tartja a heterogén hálózati projekteket. Bár a DANUBE széles körben alkalmazható, a leggyakoribb felhasználási módja az, ha a UNIX “make” programjának elosztott változataként használjuk. Ha a projektben valamilyen változás történik, az elosztott make rendszer ellenőrzi a projekt kapcsolatait, és feltérképezi az érintett projekt objektumokat.
A DANUBE rendszerben a projekt objektumai egy heterogén hálózatban létezhetnek, ezért a make funkció végrehajtása közben esetleg a számítógép platform is változhat. Mind a projekt objektumai, mind a make végrehajtási szálai átjuthatnak az egyik fajta gépről a másikra. Az elosztott make rendszer speciális szolgáltatása, hogy képes egy célobjektum függőségeire konkurrensen újrafuttatni a make-et.
Minden tevékenység objektumként írható le. Egy előre meghatározott objektum típus (osztály)-készlet használható a tevékenységek definiálására. Az objektum definíciók paraméterezhetők (általában más objektumokkal), amelyek a tevékenység egyedi jellemzőit írják le. A tevékenységekhez származtató ősök tartoznak (azok az objektumok, amelyektol függ az adott tevékenység), és a program ellenőrzi, hogy egy objektum teljes-e (frissített-e), mielőtt végrehajtaná rá a make-et. E módszer alapvető előnye a hagyományos make-kel szemben, hogy az objektumokat projekt célokként kezeli, nem file-okként.
A DANUBE rendszer objektum-orientált felépítése lehetővé teszi a felhasználó számára, hogy saját objektum osztályokat, relációkat és tevékenységeket definiáljon, ill. implementáljon. Ez a tulajdonság nagyon hatékony eszközzé teszi a DANUBE rendszert. A nyílt jellegből fakadóan nem csak az elosztott make funkciót kapunk, hanem egy elosztott make generáló rendszert is, ami lehetővé teszi a felhasználó számára, hogy a saját igényeinek megfelelő egyedi projekt-felügyeleti rendszert alakítson ki.
Az objektum-orientált make rendszer objektum-orientált make file-okat használ, ezért a make file objektum deklarációkat és függőségi információkat is tartalmaz. A make tevékenységeit az objektumok típusa határozza meg. A make file-ban elore definiált osztályok objektumpéldányait használhatjuk. Az osztálydefiníciók be vannak “égetve” a make programba, és magának az objektum-orientált make-nek a kiterjesztésével bővíthetők ki.
A CS-Prolog II Prolog rendszert 1995 és 1999 között fejlesztettük, az 1999-ben elkészült változat tölthető le. A Prolog nyelv alapját az 1995-ben megjelent szabvány adja (ISO/IEC 13211-1), amely meghatározza a szintakszist és a beépített eljárásokat. A nyelv tartalmaz – szabvánnyal nem rögzített további jellemzőket, mint modularitás, sokprocesszesség, valós idejű programozás (real-time programming), hálózati kommunikáció.
A CS-Prolog II legfőbb sajátossága, hogy létrehozhatunk párhuzamosan futó processzeket. Az ugyanazon a processzoron levő processzeket kvázi-parallel módon futtatja a Prolog, időosztásos technikát alkalmazva. A processzek közti kommunikációra csatornák szolgálnak. Valós idejű programozási technikák állnak rendelkezésre, például ciklikus viselkedés, elore definiált eseményekre való reagálás, egy bizonyos időre beállítható megszakítások és egyebek. A processzek a kommunikációtól eltekintve függetlenek egymástól, például az egyik processzben történő visszalépés nem hat a többi processzre.
Fejlett kivétel-kezelési (hibakezelési) mechanizmus áll rendelkezésre. Lehetőség van egy kivételes helyzet (hiba vagy megszakítás) bekövetkeztekor, azt egy felhasználó által írt Prolog eljárás lefuttatásával lekezelni. A hibakezelés után a program végrehajtása folytatódhat mintha a megszakítás (hiba) nem is következett volna be.
A csatorna alapú üzenetváltást kiterjesztettük hálózati lehetőségekkel is. Ezek segítségével különböző CS-Prolog applikációk kommunikálhatnak egymással az Interneten keresztül.
A CS-Prolog II egy fordítóprogramból (compiler), egy linkerből, egy futtató rendszerből (runtime system) és egy ezeket tartalmazó integrált fejlesztői környezetből áll. A fordító tartalmaz egy, a C nyelvben találhatóhoz hasonlító preprocesszort. Ez segít az olvashatóbb és portábilisebb programok elkészítésében. A CS-Prolog II dokumentációja több kézikönyvben található.
A CS-Prolog interpretert 1986 és 1991 között fejlesztettük ki, a letölthető program a végső, 1991-es állapotot tükrözi. A rendszer célja az volt, hogy a hagyományos Prolog-ot kiterjessze párhuzamos és szimulációs lehetőségekkel. A CS-Prolog-ban bevezetett új alapfogalmak a processz, üzenetközvetítés és a diszkrét szimulációs idő.
Egy CS-Prolog programban létrehozhatunk egy új processzt, amelyhez hozzárendelünk egy célt – a végrehajtandó Prolog kifejezést, és egy befejeződési időt. A különböző processzek üzeneteken keresztül kommunikálhatnak egymással. Egy Prolog eljárás végrehajtásához hozzá lehet rendelni egy időtartamot. A rendszer észreveszi a deadlock-ot, amikor az összes processz üzenetre várakozik, és automatikusan visszalép.
A CS-Prolog interpreternek létezik egyprocesszoros (DOS) és sokprocesszoros megvalósítása (transputerek). Az ugyanazon a processzoron létrehozott processzeket az úgynevezett next-event algoritmus szerint futtatja a rendszer. Ez azt jelenti, hogy az aktív processz mindaddig futhat, amíg üzenetre nem kell várnia, vagy az időt nem állítja. Egy felfüggesztett processz után a rendszer kiválasztja a következő futtatható processzt, a legközelebbi szimulációs időben. Fontos, hogy itt az idő mindig a szimulációs idejét jelenti és nem a valós időt.
A CS-Prolog végrehajtási algoritmusa teljes, azaz, ha van megoldása a Prolog célfeladatnak, azt meg is találja. Ennek érdekében a visszalépés hatása globális, azaz, ha egy processz visszalép, akkor a többinek is vissza kell lépnie. Ezt a sokprocesszoros változatban egy kifinomult elosztott visszalépési algoritmus vezérli.
A CS-Prolog interpreter DOS verziója tartalmaz folytonos szimulációra alkalmas kiterjesztéseket. Definiálhatunk folytonos processzeket, amelyek viselkedését egy differenciálegyenlet-rendszer írja le. Ahogy a szimulációs idő halad előre, az interpreter kiszámítja az egyenletrendszer megoldásait, amelyeket a többi (diszkrét) processz lekérdezhet. A DOS verzió használhatóságát korlátozza, hogy csak a DOS konvencionális memóriáját (640K) használja. Rendelkezésre bocsátunk egy DOS extenderes (DJGPP-vel lefordított) változatot is. Ebben a memóriakorlátok nem érvényesek, viszont nem muködik benne a folytonos kiterjesztés, továbbá a grafikus beépített eljárások. Külön dokumentáció nincs a DOS extenderes változathoz, értelemszerűen a DOS-os kézikönyvet kell használni, a fentiek figyelembe vételével.
A CS-Prolog interpreterhez tartozik egy fordítóprogram is, amelyre több hivatkozás történik a dokumentációban. A fordítóprogram nem tölthető le, a leírások megfelelo részeit figyelmen kívül kell hagyni.