Baum-Projekt

Baum ist ein Projekt aus dem Bereich Künstlichen Intelligenz. Die Entwicklung läuft bereits seit 1985. Baum selbst wird eine eigene Webseite bekommen, deshalb hier nur einige Anmerkungen. Die Entwicklung wird von Sigi Wiese und mir vorgenommen.

Eigenschaften von Baum:

- Verknüpfung von Wissen durch hochgradig vernetzte Baumstrukturen
- Bearbeitung und Auswertung von Wissen
- Transformation/Suche in komplexen Wissensnetzen
- baumartige Hochsprache (BaumL)
- Transformation C-ähnlicher Befehle in BaumL
- Bearbeitung von Wissen mit netzartigen Transformationsregeln und Abhängigkeiten

- Versenden von Baumstrukturen als Signal an Empfänger-Baumprogramme
- Informationen/Programme können direkt oder per BaumL-Programm bearbeitet werden

Programmierumgebung:

- Linux
- Gnu C++-Compiler
- KDE3-Programm

Nächste Ziele:

- weitere baumspezifische Befehle in BaumL
- Generierung und Einbindung von Baumbefehlen zur Laufzeit (dynamische Algorithmen)
- Optimierung des BaumL-Debuggers
- Eingabe-Dialoggenerator

- Kopplung von Baum-Rechnern in Netzwerken/Internet

Ein Projekt wie Baum wird natürlich nie enden, genau wie Linux nicht stehen bleibt. Baum ist mehr als ein Programmiersystem. Es ist eine Art Reflektionsmaschine zwischen sich und dem Anwender/Programmierer. Programme und Daten können beliebig kombiniert und transformiert werden, wie dies bei KI-Systemen üblich ist.

Der Baum wird nach Abschluß der nächsten Ziele unter GPL2 gestellt und im Internet bereitgestellt, um die Entwicklung weiter zu forcieren.


BaumL/Baum-IDE

BaumL ist eine Sprache, die auf vernetzten Bäumen basiert. Sie wird deshalb nicht mit einem Ascii-Editor erstellt. Die Sprache benutzt eine spezielle Baum-IDE, um diese Programmnetze graphisch zu erstellen. Als Subset von baumL existiert baumC, das aus C-Code graphische Baumprogramme generieren kann. Die Sprachkonzepte von BaumL gehen aber weit über C hinaus. BaumL ist ein Halbcompiler. Er ist in Lage, Programmbäume auszuführen, dabei wandert er die vernetzten Programmstrukturen ab und führt sie aus. BaumL bietet umfangreiche Befehle zur Erstellung und Manipulation von vernetzten Baumstrukturen.

Die Baum-IDE kann nicht nur BaumL erstellen und ausführen. Sie ist in Lage beliebiges Wissen parallel zum Programmcode abzulegen und zu erforschen. Daten und Programm sind nicht getrennt und können beliebig aufeinander wirken.

BaumL ist sicherlich eine der ungewöhnlichten Programmiersprachen, die jemals geschrieben wurden. Am einfachsten kann man sich die Funktionsweise mit einem Affen vorstellen, der durch einen Wald von Programmbäumen wandert. Dabei können auch die Bäume per Sprung gewechselt werden. Zusätzlich können Programmbäume Signale versenden, die Empfängerbäume auswerten. Die Signale sind wiederum Bäume. Der Empfängerbaum analysiert diesen Baum nach seinen Kriterien. Entspricht der Baum seinen Wünschen, dann fährt er damit Operationen durch, wenn nicht leitet er den Baum zum nächsten Empfängerbaum weiter. Kann keiner was mit dem Baum anfangen, dann wird dieses Signal ignoriert und ggfs. gelöscht.

Das Baumprogramm selbst wurde in C++ entwickelt und besitzt eine KDE3 Oberfläche. Die Entwicklung der Algorithmen und Strukturen läuft seit 1985. Baum (BaumL und IDE) ist ein Experimentalsystem zur Erforschung vernetzter Strukturen. Neben der Einspeicherung von Wissen, wird zusätzlich die Ausführbarkeit von vernetzten Programmstrukturen erforscht.


BaumL example

This is a snapshot of the baum program.

void main()
{
  int i;
  i = 0;
  for(i=1; i<=10; i++)
  {
    print(i);
    setBrush(0, 200, 0);
    drawEllipse(i*10+25, i*10+25, i*10, i*10);
  }
}

Simple C program above was converted into the BaumL language. The baum IDE can convert the syntax of C into the tree structure of baumL. Don't think, that baumL is a tree structured C ! BaumL has special commands and structures for the manipulation of networks of trees. This easy program writes the number from 1 to 10 and draws green circles in an output window.

baumL compiles the tree structured code into an optimized runtime tree. A program starts at the root of a tree. Like a monkey the interpreter jumps from node to node and executes the commands. baumL allows the jumps to external program trees. baumL can send signal trees. These are trees of data or code. These trees can be received by other trees with signal slots. The slot trees analyze the signal tree. They can start new BaumL code and transmit new signals. The next versions of baumL can replace BaumL code at runtime. This is living code.

BaumL is part of the baum IDE. The baum IDE is a powerful editor for tree structures. Data and program code can coexist at the same time. BaumL can analyze and manipulate complex data structures.