Aus Linux-Magazin 06/2003

Die monatliche GNU-Kolumne

Diese Kolumne berichtet über aktuelle Entwicklungen innerhalb des GNU Projekts und versucht, Einblicke in die zugrunde liegende Philosophie zu vermitteln. In dieser Ausgabe: Skidbladnir, Lush, JMax, die Probleme mit Java-Abhängigkeiten sowie PyMax, die Python-Variante von Max.

Willkommen zu einer neuen Ausgabe der Brave GNU World. Für den Ausfall letzten Monat möchte ich mich entschuldigen, leider gab es Ärger mit dem Linux-Magazin: Die Redaktion hatte in Ausgabe 48 im vorletzten Magazin einen Teil der Kolumne (“Freie Software Laptops”) nicht abgedruckt, der online nachzulesen ist[5]. Das hat zu einer gewissen Verstimmung und in Folge zum Ausfall der Brave GNU World des letzten Monats geführt. Doch nach intensiven Gesprächen sollte dies der Vergangenheit angehören.

Deshalb gleich zum ersten Projekt in diesem Monat: Skidbladnir,[5]. Sein Name dürfte vielen Lesern ähnlich wenig sagen wie seine Beschreibung. In den Worten des Autors Lars Brand handelt es sich um eine “Toolbox mit Informationen und Programmen zum Thema Computer-aided Innovation”. Spannend ist der Hintergrund des Projekts. Die wissenschaftliche Grundlage von Skidbladnir ist die “Theorie des erfinderischen Problemlösens” des russischen Professors Altschuller, im Deutschen ist es üblich, sie mit dem russischen Akronym TRIZ abzukürzen, im Englischen als TIPS (Theory of Inventive Problem Solving. Altschuller begann diese Theorie im Jahr 1946 zu entwickeln, als er von der Armee als Patentingenieur eingesetzt wurde.

Innovationen durch Skidbladnir

Abbildung 2: Skidbladnir ist nicht nur ein Schiff in der skandinavischen Mythologie, sondern auch der Name eines Projekts zur computergestützten Innovation.

Abbildung 2: Skidbladnir ist nicht nur ein Schiff in der skandinavischen Mythologie, sondern auch der Name eines Projekts zur computergestützten Innovation.

Er entschied sich dafür, Stalin die ersten Grundzüge seiner Theorie in einem Brief mitzuteilen, worauf dieser ihn als verdächtiges Subjekt inhaftieren und in ein Lager verbringen ließ. Dort traf er auf viele ältere Professoren aus unterschiedlichen Wissensgebieten, die ihm dabei halfen, Wissen über diverse Fachgebiete zu kombinieren. Aus dem Lager entlassen, aber gegen Ende der 60er bis Mitte 70er Jahre erneut in Ungnade gefallen, begann er seine Erkenntnisse in Form von Science-Fiction-Erzählungen zu veröffentlichen, um sie trotz des Verbots populär zu machen und Geld für seine Forschungen zu haben. Dazu wählte er das Pseudonym Genrich Altow.

Wissenschaftler schreibt SF

Abbildung 1: Dieses Moonlander-Spiel entstand in der Sprache Lush, die eigentlich von Wissenschaftlern für Wissenschaftler geschrieben wurde.

Abbildung 1: Dieses Moonlander-Spiel entstand in der Sprache Lush, die eigentlich von Wissenschaftlern für Wissenschaftler geschrieben wurde.

Auf Deutsch erschienen diese Erzählungen erstmals 1977 in der DDR unter dem Titel “Der Hafen der steinernen Stürme.”

Die TRIZ-Theorie basiert auf der Beobachtung, dass sich abstrahierte Problemstellungen und deren Lösungen immer wiederholen, und zwar unabhängig von Wissenschaftszweig oder Industriesparte. So wurde zum Beispiel bei der Analyse von etwa 40000 besonders erfolgreichen Patenten festgestellt, dass sie nur auf etwa 40 unterschiedlichen Lösungsprinzipien beruhen.

Eine weitere Annahme der Theorie ist, dass die Evolution technischer Systeme nach bestimmten Tendenzen verläuft und sich grundlegende Innovationen oft nur durch fachfremde wissenschaftliche Erkenntnisse hervorbringen lassen. Es geht also um eine Abstraktion von Problemlösungsstrategien.

Eine häufig gebrauchte Beispielaufgabe ist: Ein massiver Stahlwürfel von einem Meter Kantenlänge ist in eine tiefe Grube zu bewegen, ohne dass Kräne, Seile oder ähnliche Hilfsmittel benutzt werden. Er darf aber auch nicht geworfen werden. Entwickeln Sie binnen zehn Minuten drei entsprechende Verfahren.

Das bekannteste Projekt zur softwaregestützten Lösung solcher und anderer Probleme ist der Tech Optimizer, der – wie andere Applikationen auf diesem Gebiet – proprietär und sehr teuer ist.

Skidbladnir soll dessen Funktionalität auch Nutzern freier Software zur Verfügung stellen. Das Projekt besteht neben den Installationsroutinen aus drei Komponenten: Andax, das die Grundprinzipien zur Lösung technischer Widersprüche beinhaltet, Sporadikus für das Web-Brainstorming sowie Perplexus, in dem über 250 vorwiegend physikalische Effekte verfügbar sind.

Kombination von Effekten

Wie aus der Vernetzung von Effekten eine Problemlösung entsteht, zeigt folgendes sehr einfaches Beispiel:

  • Leuchtstoffe wandeln UV-Licht in sichtbares Licht um.
  • Fein verteiltes Metall verhindert das Leuchten von
    Leuchtstoffen.
  • Bevor der Defekt eines bewegten Maschinenteils auftritt, werden
    Metallpartikel in das Öl abgegeben.

Kombiniert man die drei Sachverhalte, entsteht die Idee, dem Öl Leuchtstoffe zuzugeben, sodass das Leuchten aufhört, kurz bevor ein bestimmtes Maschinenteil wegen eines Schadens ausgewechselt werden muss.

Reale Situationen sind oft sehr viel komplexer und erfordern eine umfangreiche Datenbank von Effekten, deren Zusammenstellung mühsam ist, da sie gewöhnlich über die Fachliteratur zusammengetragen werden muss.

Geschrieben wurde Skidbladnir in Perl, PHP und MySQL, es steht unter der GNU General Public License (GPL). Im Vergleich zu den proprietären Projekten mag Skidbladnir heute noch über vergleichsweise wenige Effekte verfügen, es enthält allerdings dafür bereits Software-Effekte; möglicherweise als erste Entwicklung dieser Art. Das Projekt ist noch nicht vollständig und in der Bedienung noch wenig komfortabel, vor allem die Effekt-Datenbank soll weiter ausgebaut werden. Hilfe jeder Art ist sehr willkommen; sowohl von Entwicklern als auch von Anwendern, die Lars mitteilen, was ihnen fehlt. Auch Daten über mehr Effekte und Zugang zu realen Problemen wären sehr hilfreich.

Mittel- bis langfristig ist Lars davon überzeugt, dass freie Software auf diesem Gebiet besonders erfolgreich sein wird, da sowohl die TRIZ-Methode als auch freie Software darauf ausgelegt sind, das Wissen der Welt zu bewahren und erfahrbar zu machen. Außerdem hilft es potenziellen Nutzern, die sich proprietäre Lösungen finanziell nicht leisten können. Informationen zum Hintergrund gib es im Web[7].

Auch das zweite Projekt dieser Ausgabe stammt aus dem wissenschaftlichen Bereich, ist aber nicht darauf beschränkt. Lush[8] ist eine objektorientierte Programmiersprache, die vor allem für Wissenschaftler, Experimentatoren und Ingenieure gedacht ist, die Interesse an größeren numerischen und grafischen Applikationen haben.

High-Level-Sprache Lush

Das Design von Lush ist darauf ausgerichtet, die Stärken von drei unterschiedlichen Ansätzen bei Programmiersprachen miteinander zu kombinieren. Die erste Sprache ist eine interpretierte, dynamische, Lisp-ähnliche Sprache mit automatischer Garbage Collection und schwachen Typen. Die zweite ist eine kompilierte, lexikalische Sprache mit derselben Syntax, aber starken Typen. Die dritte Sprache ist C, die mit der Lush-Syntax innerhalb eines Programms oder sogar in einer Funktion gemischt werden kann.

Abbildung 3: Lush mischt problemlos Lisp und C innerhalb eines Programms.

Abbildung 3: Lush mischt problemlos Lisp und C innerhalb eines Programms.

Lush begann 1987 unter dem Namen SN als Skriptsprache für einen Simulator für neurale Netzwerke und hat sich im Laufe der Jahre in eine vollständige Programmiersprache inklusive eines Compilers weiterentwickelt. Wesentliche Akteure bei der Entwicklung waren die Bell Labs (später AT&T Labs), die in den USA ansässigen NEC-Labs und die französische Firma Neuristique.

Nachdem Lush/SN über mehrere Jahre innerhalb von AT&T für Forschungs- und Entwicklungsprojekte eingesetzt wurde, haben sich die beteiligten Parteien irgendwann auf die GPL als Lizenz geeinigt. Heute wird das Projekt von Yann LeCun und Leon Bottou aus den NEC Labs America in Princeton geleitet. Unterstützung erfahren sie dabei von einer großen Anzahl Freiwilliger aus der ganzen Welt.

Obwohl hauptsächlich als freier Matlab-Ersatz für Forscher und Studenten entwickelt, bietet Lush eine vollständige Programmiersprache für jeden Zweck. Durch die einfache Integration mit C ist Lush eine sehr geeignete Scripting- oder Integrations-Sprache, um verteilte Funktionalität in einer komfortablen GUI-Applikation zu kombinieren.

Tatsächlich macht es diese Integration auch sehr einfach, vorhandene Bibliotheken zu nutzen. Lush verfügt daher über vielfältige Anbindungen an wissenschaftliche, grafische oder audiovisuelle Bibliotheken, zum Beispiel die GNU Scientific Library[9], OpenGL/GLU/ GLUT, Alsa, Video4Linux oder die Intel Vision Library.

Im Vergleich mit Python schneidet Lush mit Bezug auf die Anzahl der aus der GSL unterstützten Funktionen daher mit 4000 im Vergleich zu ein paar hundert sehr gut ab. Die Syntax ist sauberer als bei Perl und sollte leichter zu lernen sein als Scheme. Im Leistungsvergleich mit Octave oder Matlab ist es je nach Situation zwischen 15- und 300-mal schneller. Es gibt sogar bereits kleinere Spiele, die in Lush geschrieben wurden, etwa der Mond-Lander von Abbildung 1, dessen Screenshot auch auf der Lush-Homepage zu finden ist.

Geschrieben ist Lush in C und Lush selbst. Es läuft auf GNU/Linux, Solaris, Irix und OpenBSD, im Februar 2003 kam eine unter Cygwin/MS Windows lauffähige Version hinzu.

Neuer Compiler erwünscht

Zu den Problemen des Projekts gehört, dass das Design des Compilers bereits mehr als zehn Jahre alt ist und er daher ein paar geradezu bizarre Einschränkungen aufweist. Ihn bei Gelegenheit neu zu schreiben steht folglich auf der To-do-Liste des Projekts weit oben. Dort finden sich auch das Unterstützen von noch mehr Bibliotheken sowie eine Verbesserung des Dokumentationssystems. Auch ein Template-Mechanismus soll mittelfristig zu Lush hinzugefügt werden. Weiterhin gibt es großes Interesse an einer Portierung nach Mac OS X, für die noch Freiwillige gesucht werden. Ein automatisierter Parser für C/C++-Header-Files für die automatische Einbindung in Lush wäre ebenfalls ein sehr erwünschtes Teilprojekt.

Leser aus den Vereinigten Staaten haben übrigens gute Chancen, bereits indirekt mit Lush in Berührung gekommen zu sein. Einige Geldautomaten von NCR verwenden Lush-generierten Code auf Embedded-DSP-Prozessoren, um die Beträge auf deponierten Schecks zu lesen. Und eine in Lush geschriebene Engine liest etwa zehn Prozent aller in den USA deponierten Schecks in den Hochgeschwindigkeits-Schecklesern.

Wie regelmäßigen Lesern der Brave GNU World bekannt sein dürfte, ist die FSF Europe ein Partner im Agnula-Projekt[10], das die Zusammenstellung einer vollständig freien GNU/Linux-Distribution für professionelle Audio-Anwender zum Ziel hat.

JMax macht Musik Hardware-unabhängig

Ein weiterer Partner im Agnula-Projekt ist das Institut de Recherche et Coordination Acoustique/Musique (Ircam), so heißt das Musikzentrum des Centre Pompidou in Paris, Frankreich. Dort entstand JMax[11], eine grafische Entwicklungsumgebung für interaktive Multimedia-Applikationen.

Audio-Applikationen hatten traditionell das Problem, dass sie oft für spezifische Hardware geschrieben wurden und daher in hohem Maße plattformabhängig waren. Wegen der schnellen Weiterentwicklung führte dies dazu, dass die Programme im Wesentlichen alle drei Jahre für eine neue Plattform entwickelt werden mussten. Sonst drohte die für diese Programme geschriebene Musik verloren zu gehen. Das motivierte zur Entwicklung einer reinen Softwarelösung, die nicht von einer bestimmten Plattform abhängig ist.

Eine bei Musikern sehr bekannte Implementation ist das proprietäre Max. JMax begann 1995 mit dem Ziel, eine plattformunabhängige Version von Max zu schaffen. Mitte 1999 wurde JMax dann als freie Software unter der GNU General Public License (GPL) herausgegeben. Das in Max und JMax verwandte Paradigma erlaubt es, bestimmte Grundelemente wie Frequenzgeneratoren, Signalfilter, Effekte, Eingabe- und Ausgabemodule, variable Regler, DSPs und Verstärker miteinander zu verschalten und zu so genannten Patches zu verbinden. Diese können dann aufgrund von Verschachtelungen nahezu beliebig komplexe Konstrukte bilden, sodass es prinzipiell möglich ist, jede Form und Art digitaler Signalbearbeitung, Effekt oder Synthesizer abzubilden.

Das JMax-Team besteht im Wesentlichen aus Franois DŽchelle und Patrice Tisserand. Franois sieht die Vorteile von JMax vor allem darin, dass es gleichermaßen auf GNU/Linux, Mac OS X und Windows läuft und außerdem flexibler ist als das ursprüngliche Max beziehungsweise als PD, eine andere Implementation dieses Paradigmas.

Von Vorteil ist auch, dass JMax aus zwei Komponenten besteht. Zentrale Komponente ist der Server, eine in C geschriebene Echtzeit-Engine, die die Berechnungen ausführt. Das erlaubt es, die Engine ohne GUI laufen zu lassen, alternative GUIs zu schreiben oder die Engine in eine Plugin-Umgebung einzugliedern (Ladspa). Mit diesem Server kommuniziert ein in Java geschriebener Client. Die Wahl von Java sollte grundsätzlich sicherstellen, dass der Client mit wenigen Problemen auf den unterschiedlichsten Plattformen lauffähig ist.

Leider ist das Verhältnis von Java und freier Software nicht ganz unproblematisch. Das Problem mit Java ist nicht die Technik oder ihre Umsetzung; auch wenn diese natürlich nicht unumstritten sind. Es geht vielmehr um das Problem, wie Java selbst entwickelt und vertrieben wird, da beide weit verbreiteten Implementationen – die von Sun und die von IBM – proprietär sind. Sie mögen zwar kostenlos zu beziehen sein, sind jedoch keine freie Software. Also gefährdet jede Applikation auf diesen Plattformen die Freiheit des Nutzers, auch wenn die Applikation selbst freie Software ist. Eine ähnliche Situation entsteht bei der Verwendung von freier Software auf Windows-Systemen.

Java-Abhängigkeiten als Problem für freieSoftware

Es gibt einige Ansätze, Java als Plattform vollständig in freier Software zu implementieren (siehe “GNU and the Java language”[12]). Doch weil die dominanten Referenzimplementationen proprietär sind, müssen die freien Projekte alles nachbauen, was in deren aktueller Version enthalten ist. Nicht jeder Entwickler hat Spaß an einem solchen Wettlauf, der nicht gewonnen werden kann. Freie Software ist hier effektiv benachteiligt und bietet deshalb auch meist weniger Funktionalität.

Abbildung 4: Das Musikprogramm JMax ist plattformunabhängig und läuft auch auf Mac OS X, aber nur auf proprietären Java-Systemen. Die Python-Variante von Max soll Java überflüssig machenâ.

Abbildung 4: Das Musikprogramm JMax ist plattformunabhängig und läuft auch auf Mac OS X, aber nur auf proprietären Java-Systemen. Die Python-Variante von Max soll Java überflüssig machenâ.

Außerdem: Machen die Entwickler von Java-Programmen Gebrauch von den erweiterten Funktionen der proprietären Implementationen, sind diese im Allgemeinen nicht mehr auf freien Java-Implementationen lauffähig. Hier gibt es Parallelen zu freier Software, die ausschließlich auf Windows läuft und auf keinem freien Betriebssystem benutzt werden kann.

Das ist präzise das Problem des JMax-Clients. Da die Beifügung proprietärer Software zu Agnula nicht für alle Partner in Frage kommt, droht die Gefahr, JMax mit einem lauffähigen GUI ausliefern zu können – das aber nicht nicht alle Features enthält.

Alternative PyMax nutzt Python statt Java

Da die alternativen Ansätze keine Aussicht auf rechtzeitigen Erfolg zeigten – genauere Informationen finden sich auf der Homepage der FSF Europe[13] -, wurde nun beschlossen, auf Java gänzlich zu verzichten und den Client in Python neu zu implementieren. Diese Sprache erlaubt ebenso wie Java eine recht gute Plattformunabhängigkeit und zudem relativ schnelle Entwicklung, ist aber vollständig freie Software.

Ob es das Ircam allerdings alleine schaffen wird, den Client rechtzeitig fertig zu stellen, ist zweifelhaft. Daher sucht es Freiwillige, die dabei helfen, den Python-Client für JMax zu schreiben. Nach Angabe von Franois können sie zwar keine großen Versprechen machen, bieten aber an, Fragen zum Python-Client bevorzugt zu behandeln und an Wochentagen innerhalb von 24 Stunden zu beantworten. Wer also Lust hat, an dem Projekt mitzuarbeiten, sei an die JMax- Entwicklerliste[14] verwiesen.

Damit soll es genug der Brave GNU World für diesen Monat sein. Solltet ihr über ein interessantes Projekt stolpern, lasst es mich wissen, es waren in vielen Fällen Leser, die die Perlen der Kolumne ausgegraben haben – das Lush-Feature ging beispielsweise auf einen Tipp von Stefan Kamphausen, dem Schöpfer des Brave-GNU-World-Logos, zurück. Und wie jedes Mal bitte ich natürlich auch heute um generelle Anregungen, Fragen, Ideen und Kommentare an die übliche Adresse[1]. (uwo)

Infos

[1] Ideen, Anregungen, Kommentare an die Brave GNU World: [column@brave-gnu-world.org]

[2] Homepage des GNU-Projekts: [http://www.gnu.org/]

[3] Homepage von Georg\’s Brave GNU World: [http://brave-gnu-world.org]

[4] “We run GNU”-Initiative: [www.gnu.org/brave-gnu-world/rungnu/rungnu.de.html]

[5] Brave GNU World, Ausgabe 48: [http://brave-gnu-world.org/issue-48.de.html]

[6] Skidbladnir: [http://mitglied.lycos.de/altow/]

[7] TRIZ-Online: [http://www.triz-online.de]

[8] Lush-Homepage: [http://lush.sf.net]

[9] Brave GNU World, Ausgabe 35: [http://brave-gnu-world.org/issue-35.de.html]

[10] Agnula: [http://www.agnula.org]

[11] JMax: [http://www.ircam.fr/jmax/]

[12] GNU and Java: [http://www.gnu.org/software/java/]

[13] Agnula Java Issues: [http://fsfeurope.org/projects/agnula/java.html]

[14] JMax-Entwickler-Mailingliste: [http://listes.ircam.fr/wws/info/jmax]

Der
Autor

Dipl.-Phys. Georg C. F. Greve beschäftigt sich seit etlichen Jahren mit freier Software und kam früh zu GNU/Linux. Nach Mitarbeit im GNU-Projekt und seiner Aktivität als dessen europäischer Sprecher hat er die Free Software Foundation Europe initiiert, deren Präsident er ist. Mehr Informationen finden sich unter [http://www.gnuhh.org].

LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben