(under construction)
X-Talk Languages
aus: Einführung in die Programmierung mit Hypercarddialekten (Sanke 2004)
1. Hypercard (Mac, Claris)
2. HyperPad (DOS, IQ-Technologies)
3. Plus (Mac + Windows, ObjectPlus)
4. Toolbook (Windows, Asymetrix)
5. Supercard (Mac, Allegiant)
6. Oracle Media Objects (Windows + Mac, Oracle)
7. Metacard (Windows + Mac + Unix + Linux, Metacard)
8. Revolution (Windows + Mac + Unix + Linux, Runtime Revolution)
Von den hier aufgeführten Autorensystemen sind inzwischen HyperPad, Plus
und Oracle Media Objects vom Markt verschwunden. Hypercard ist seit Jahren nicht
weiterentwickelt worden und beschränkt sich wie Supercard auf die Mac-Umgebung.
Toolbook ist nur unter Windows benutzbar und hat eine Preisebene von mehreren
1000 Euro erreicht, so dass dieses Programm für schulische Einrichtungen
kaum mehr in Frage kommt.
Metacard läuft unter den meisten verfügbaren Betriebssystemen, wobei
die erzeugten Dateien leicht von einer Plattform auf die andere portiert werden
können und liegt in einer kostenlosen "Starter Kit"-Version vor.
Die einzige Einschränkung dieser Einstiegsversion ist eine Begrenzung der
Programmzeilen im Skript der Objekte, die jedoch sogar überwunden werden
kann.
Revolution ist eine Weiterentwicklung von Metacard, die eine Reihe neuer Funktionen
enthält, jedoch im gegenwärtigen Entwicklungszustand noch mit vielen
"bugs" behaftet ist, die das Arbeiten mit Revolution empfindlich beeinträchtigen.
Ebenso ist bei Revolution keine kostenlose "Starter Kit"-Version mehr
vorhanden, sondern nur eine auf 30 Tage beschränkte Trial Version.
Revolution hat 2003 die "Metacard engine", d.h. das Kernstück
von Metacard, aufgekauft. Die Kaufvereinbarung sieht jedoch vor, dass Metacard-Nutzer
die Metacard engine unter den bisherigen Bedingungen weiter verwenden können.
Neue Interessenten an Metacard können von Runtime Revolution (www.runrev.com)
beim Erwerb einer Lizenz auf Wunsch gleichzeitig eine kostenlose Metacard-Lizenz
erhalten.
Die Weiterentwicklung der Metacard IDE wird von einer Gruppe von erfahrenen Metacard-Nutzern betrieben, die unter der Email-Adresse metacard@lists.runrev.com angesprochen werden kann.
Metacard ist wesentlich leichter zu erlernen als beispielsweise Macromedia
"Director" und bietet trotzdem eine Funktionalität, die der der
C-Sprachen nahe kommt.
Metacard ist daher ein für schulische Einrichtungen geeignetes Werkzeug
zur Entwicklung von Multimediaanwendungen. Metacard ist kein Programm zur Entwicklung
von Webseiten, kann aber auf Webseiten zugreifen oder sie aufrufen (oder kann
Emails verschicken) und erlaubt es, Metacardprogramme online aufzurufen und
sie dann on- oder offline zu verwenden; andererseits kann Metacard sogar anstelle
von cgi-Skripten oder Perl zur Programmierung von Internet-Servern verwendet
werden.
Die gesamte Programmierumgebung von Metacard umfasst zip-komprimiert nur 1,4
MB; sie benötigt keinerlei DLLs und kann deshalb ohne spezielle Installation
von jedem Verzeichnis und jedem Datenträger gestartet werden.-
Die gemeinsamen Merkmale der X-Talk-Sprachen sind:
Integrierte Entwicklungsumgebung (IDE)
Direkte visuelle Gestaltung der Oberfläche (visual design)
"Objekte" als Programmelemente:
a) Dateien/Files: stacks, books, pads, projects
b) Seiten: pages, cards - bestehend aus den Teilelementen
1. backgrounds (Hintergrund)
2. page, card (Seite)
3. fields (Felder für Text, Graphik oder "Mal"-Objekte)
4. buttons (Schaltflächen, Tasten)
5. images (Bilder)
6. player, stage (für Video- und Sound-Dateien)
7. graphics (intern erstellte Graphiken)
"Objektorientierte" Programmierung,
d.h. keine lineare bzw. sequentielle Programmierung in einem File, sondern
Verteilung des
Programmcodes auf die Scripte der einzelnen Objekte (s. III.)
Natürlichsprachige Programmiersprache,
die den Aufwand an Kommentierung drastisch vermindert.
Vordefinierte Programmelemente zur Sprachmanipulation,
auf die unmittelbar zugegriffen werden kann:
a) characters (chars)
b) words
c) items
d) lines
Herstellung von Hypertext
mit Verknüpfungen über "go to" oder "linktext"
und "clicktext"
Leichter Einstieg in die Programmierung
mit elementarem Befehlssatz von 10 - 20 Befehlen
Globale und lokale Variablen ohne weitere Typdefinition möglich
und ohne vorherige Deklaration (+ Spezial-Variable "it")
Voller Befehlssatz mit Kontrollstrukturen
wie bei anderen Programmiersprachen (C, Delphi, Pascal, Basicdialekte etc.)
Ergänzung der Sprachen
durch eigene Prozeduren und externe Befehle möglich
I. Objekte
Die 8 Hypercarddialekte (Hypercard selbst, Supercard, Toolbook, WinPlus, HyperPad, Oracle Media Objects und Metacard/Revolution) haben als gleichartige Elemente (-> Objekte):
1. Dateien ("stacks" in Hypercard und Metacard und "books"
in Toolbook), die aus mehreren
Seiten bzw. aus mindestens einer Seite bestehen.
2. Seiten mit einem Hintergrund (background), auf denen Felder und Buttons sowie
Graphikobjekte angebracht werden.
In Hypercard und Metacard werden die Seiten als "cards", in Toolbook
als "pages" bezeichnet.
3. Hintergrund (background): Auf dem Hintergrund einer oder zumeist mehrerer
Seiten
mit einem gemeinsamen Hintergrund werden Objekte, d.h. Felder und Buttons
angebracht, die auf allen zugehörigen Seiten benötigt werden.
4. Felder (fields), die der Aufnahme von Text dienen. Innerhalb der Felder
und zum
Textausstausch zwischen den Feldern kann wie mit einer einfachen Textverarbeitung
gearbeitet werden, d.h. es stehen neben einer automatischem "wordwrap"-Funktion
"cut", "copy" und "paste" zur Verfügung.
Ebenso können in allen Dialekten (mit
Ausnahme von HyperPad) in einem Feld unterschiedliche Schrifttypen, Größen,
Farben
etc. zur Strukturierung und Hervorhebung verwendet werden.
5. Buttons ("Tastern" oder "Schaltflächen" - z.B.
in der deutschen Version von Toolbook -), die als
primäre Schaltelemente den Hauptteil des Programmcodes aufnehmen.
6. Images, d.h. importierte Bilder oder Zeichnungen.
7. Graphics, intern mit Zeichenwerkzeugen erstellte Graphiken
8. Toolbook, Metaard und Revolution haben ein zusätzliches Player- oder Stage-Objekt für Video- und Sound-Dateien (Quicktime, MPEG, AVI, Flash)
9. Metacard und Revolution haben separate Scrollbars, die u.a. zur Fortschrittsanzeige verwendet werden können.
II. Adressen
Alle diese Objekte können generell auf verschiedene Weise angesprochen werden:
a) mit ihrem Namen, der ihnen vom Programmentwickler zugeordnet wird:
card "Einführung", field "Lexikon", button "Start" etc., wobei die Namen in Anführungszeichen zu setzen sind.
b) mit einer automatisch zugeteilten ID-Nummer, die für das einzelne Objekt unverändert bleibt, auch wenn z.b. ein Objekt mit einer niedrigeren ID-Nummer gelöscht wird (z.B. button ID 5 von insgesamt 10 Buttons):
card ID 1234, field ID 1006, button ID 1004, group ID 1103.
c) mit einer laufenden Nummer für das einzelne Objekt, die sich automatisch ändert, wenn Objekte, z.B. Seiten (cards, pages), zwischen anderen Objekten eingefügt oder gelöscht werden:
card 1, button 10, field 4.
Die Objektadressen a - c werden kombiniert, wenn z.B. von einer Seite auf ein
Objekt einer anderen Seite zugegriffen werden soll:
button "Aufgabe" of card ID 1016 of stack "Grammatik"
field 5 of card "Lexikon"
field ID1005 of card "Auswertung" etc.
III. Programmiersprache
Jedes der oben unter I. beschriebenen Objekte kann mit einem Skript zur Steuerung des Programmablaufs versehen werden, d.h. der Programmcode wird mit den einzelnen Objekten verknüpft bzw. auf sie verteilt. Die einzelnen Objekte rufen sich ggf. durch ihre Skripte gegenseitig auf oder warten auf Nutzereingaben z.B. durch Mausklick oder Texteingaben.
Die Programmiersprachen der Hypercarddialekte entsprechen weitgehend einem in Syntax und Vokabular vereinfachten Englisch, so daß man streckenweise ohne Kommentierung des Programmcodes auskommen kann. Beispiele:
put first word of card field "Lexikon" into line 2 of card field "Aufgabe" of card "Übung"
Bei Toolbook muß bei allen Textmanipulationen (notwendigerweise, aber im Entwurf der Programmiersprache logisch nicht erforderlich) das Wort "text" hinzugefügt werden; die obige Hypercardzeile lautet danach in Toolbook:
put the first word of the text of field "Lexikon" into textline 2 of the text of field "Aufgabe" of page "Übung".
(Der Artikel "the" ist optional und dient nur der besseren Lesbarkeit).
Weitere Beispiele in der Sprache von Metacard:
put field "Eingabe" into Eingabe (d.h. plaziere den Text des Feldes
"Eingabe" - der
eingetippt wurde - in die Variable Eingabe)
if Eingabe is Loesung then (falls der Inhalt der Variable Eingabe gleich der
Variable Loesung ist, dann ...)
show field "richtig" (zeige das Feld "richtig")
wait 2 seconds (warte 2 Sekunden)
hide field "Richtig" (verstecke das Feld "richtig")
put the number of words of field "Lexikon" into Anzahl
(zählt die Anzahl der Wörter im Feld und plaziert sie in die Variable
Anzahl)
go to next card (schaltet zur nächsten Seite).
Soweit einige Beispiele, die innerhalb eines Skripts zeilenweise kombiniert werden können.
Die Skripte der Objekte werden durch Anwenderaktionen, d.h. durch Mausklicks oder Eingaben über die Tastatur oder indirekt von den Skripten anderer Objekte aus ausgelöst.
Die grundlegende Aktion ist der Mausklick auf einen Button, der in den Skriptsprachen von Hypercard und Metacard im Skript des Buttons mit "on mouseup" abgefangen wird. Ein Button, der zur nächsten Seite weiterschaltet, muß folgendes Skript enthalten:
"on mouseup
go to next card
end mouseup"
"on mouseup" und "end mouseup" sind in jedem Hypercard- und Metacardbutton bereits als Skripttext dieser Grundfunktion enthalten.