Programmieren zum Sparpreis (2)

Noch einige Tips und Hinweise und dies und das für Anfänger und Erfahrene.

Grenzen überwinden

Üblicherweise bieten Programmmiersprachen die Möglichkeit, Programmteile anderer Sprachen (in übersetzter Form oder in Maschinensprache) einzubinden ("Inline"). Hilfreich sind auch automatische Umwandlungsprogramme von einer Sprache in eine andere, von denen mir solche nach C aufgefallen sind: F2C von Fortran, P2C von Pascal und GFAJ03 von GFA-Basic 3.5 aus.

Wie verwendet man Programm-Listings älterer Versionen mit neueren Versionen einer Programmiersprache? Meist sind die Sprachen abwärtskompatibel, d.h. selbst wenn sich die Syntax ändert, werden Listings mit Befehlen in der alten Schreibweise meist weiterhin akzeptiert. Bei GFA-Basic z.B. kann man jedoch nur die Quelltexte des Dateityps LST recyceln, nicht die BAS-Dateien, da die Tokens, das sind die in GFA-Dateien enthaltenen Befehlscodes, anders als in BAS-Dateien codiert sind. Will man LST-Dateien, so sichert man im Interpreter mit "SAVE,A" bzw. in anderen BASIC-Dialekten als Block. Dabei steht "A" für ASCII, d.h. für von jedem Texteditor lesbaren Text. Umgekehrt geht's mit MERGE (vorher NEW anklicken, da das Listing sonst eingefügt wird) bzw. mit LOAD BLOCK. Will man ein LST von GFA-BASIC in OMIKRON BASIC oder umgekehrt verwenden, so "meckert" der jeweilige Interpreter an verschiedenen Stellen, die Sie korrigieren müssen. So ist das eben bei Dialekten. Andere Sprachen sind allerdings zum Teil besser normiert (z.B. FORTRAN 90).

Glücklicherweise muss man auch nicht das Rad immer wieder neu erfinden. Man greift bei der Programmentwicklung auf frühere eigene Programme oder auch fremde zurück, soweit das Copyright dies erlaubt, und modifiziert sie. Es stehen auch unzählige Programm-Bibliotheken (Libraries) zur Verfügung mit Hilfsprogrammen und Programmteilen, erkennbar an dem Namensbestandteil LIB. Außerdem gibt es Hilfsprogramme wie MAKE-GEM, MASKGEM, MEDITOR (Menüeditor) oder Wandler von RSC-Dateien z.B. in C, so dass Sie einfacher Menues usw. erstellen können, indem Sie auf Vorbilder zurückgreifen. Als Kaufsoftware gibt es beispielsweise faceVALUE für GFA BASIC zur einfachen Vorbereitung der Menüstruktur und auch zur Übernahme fremder Menuekonstruktionen (s. ST C/AI) u.v.a., womit GFA Basic zum "Visual Basic" des ATARI wird ("abgespeckte" Vollversion faceVALUE 2 auf Whiteline Kappa). Nicht zu vergessen ergo pro als vielseitige Ergänzung (s. STC oder Tips & Tricks ab der CD Revolution 7). Natürlich gibt es auch zahlreiche Hilfsprogramme zu verschiedenen Programmiersprachen, auch für Kaufsoftware. So stößt man dann auf Namen wie Lattice C (Kauf) oder C++ (kostenlos).

Mit höheren Programmiersprachen kann man übrigens auch die Grenzen der Computerplattformen überwinden. Theoretisch braucht man einen Quelltext nur auf einem anderen System mit einem dort lauffähigen Compiler (z.B. Pascal) neu zu übersetzen. papyrus und Calamus gibt es beispielsweise auf mehreren Plattformen! Dies gilt beispielsweise für mathematische Berechnungen. Zusatzarbeit ist natürlich dort erforderlich, wo es um unterschiedliche Erscheinungsbilder wie Menüleisten usw., Prozessorbesonderheiten und Betriebssystemaufrufe geht. Zum Erlernen einer Programmiersprache ist der Computertyp im allgemeinen ziemlich gleichgültig.

Wo finde ich was?

Natürlich meist auf der geplanten Leser-CD. Einen kleinen Auszug, nämlich ein frei kopierbares und kostenfrei nutzbares GFA-Basic 2 mit GFA-Kurs, Kurzreferenz u.a. erhalten Sie auf STC-Disk (vorher beigefügten Online-Entpacker DE-COMP.PRG aufrufen!), falls Sie sich nicht die paar DM/Euro für die wesentlich bessere Version 3.6 leisten können. Ansonsten: gehen wir in CD-INF, das 100 MByte-PD-CD-ROM-Inhaltsverzeichnis auf der ersten STC-Leser-CD 10/98D. Im Ordner PROG finden wir alle Programme und suchen per Editor nacheinander alle Fundstellen von z.B. „basic“ oder „gfa“. Prinzipiell ging ich genauso vor. Im Unterordner TYP\PRG IER finden Sie z.B. in GFA.TXT alle ungepackten Vorkommen von GFA 3.x-Programmen (Dateityp GFA).

Weitersuchen können Sie im Ordner PACK nach gepacktem Vorkommen. Teilweise werden Sie in der Umgebung der Fundstelle auf Ihrer CD Weiteres entdecken. MODULA- und OBERON-Programme vom Typ MOD finden Sie übrigens in CD-INF neben anderen Modulen „MOD“ in TYP\MUSIK\MOD.TXT, da Musikstücke die häufigsten „MODs“ sind - eine der wohl unvermeidlichen Unzulänglichkeiten eines so riesigen Systems wie CD-INF. Wie sollen Sie so etwas Abwegiges herausfinden? Kein Problem! Schauen Sie einfach in DOC\FILES.TXT nach, der Dateiliste von CD-INF. In „Wie geht’s“ finden Sie später noch weitere Tips.

Kauf, Share, Free/PD

Ihre Entscheidung, welches Programmiersprachenprogramm Sie benutzen wollen, hängt natürlich möglicherweise auch vom Preis ab. Vorteil von Kaufsoftware ist ein gedrucktes Handbuch. Bei Shareware muss man sich meist mit einer Handbuchdatei begnügen. Mit der Registrierung können Sie auf Unterstützung bei Problemen und auf Informationen über Sekundärliteratur hoffen, ebenso durch Support/Hotline einer Kaufsoftware. Bei Freeware oder PD sind Sie, soweit der Autor nicht hinreichende Dokumentationen beigefügt hat, auf sich gestellt. Aber, wie Sie sehen, gibt es auf CD-ROMs Kurse und/oder Handbücher zu C, GFA-BASIC und Pascal. Zu Programmiersprachen wie C, Pascal, MODULA usw. finden Sie in Buchhandlungen, vor allem Universitätsbuchhandlungen, entsprechende Literatur vorrätig bzw. ist diese kurzfristig zu bestellen. Es würde mich nicht wundern, wenn ein Versandhändler noch das eine oder andere ATARI-spezifische Buch vorrätig hätte, so jetzt wieder in Zusammenhang mit der neuen GFA-CD.

Tips zum Programmieren

Profis werden entsprechend ausgebildet. Für Laien einige Tips: Planen Sie Ihr Programm gründlich vorher, z.B. mit Nassi-Shneiderman-Diagrammen oder zumindest im Klartext, den Sie ruhig als Kommentarzeilen (Überschriften) Ihres Programmlistings verwenden können. Gehen Sie sorgfältig vor! Je früher Sie konzeptionelle oder sonstige Fehler entdecken, desto einfacher und damit billiger bzw. zeitsparender ist deren Beseitigung. Ein Schreibfehler z.B. macht aus einer Variablen eine andere, die evtl. mit dem Wert Null vorbesetzt ist.

Sparen Sie nicht mit Kommentarzeilen zur Erläuterung (Zwischenüberschriften) und ergänzende Kommentare in einzelnen Programmzeilen! Verwenden Sie selbsterklärende Variablennamen oder besser noch eine Variablenliste mit Erläuterungen. Untergliedern Sie Ihr Programm. Sprungmarken und GOTO sind überholt, selbst wenn sie bei Omikron-Basic 3 noch möglich sind (abschaltbar). Verwenden Sie Unterprogramme und Befehle zur strukturierten Programmierung "IF ... THEN ... ELSE ... ENDIF" und dergleichen.

Bauen Sie Programme immer modular auf! Lesen Sie im Eingabeteil möglichst viel auf einmal (als Variablenfeld) in den Kernspeicher. Analog sollten Sie beim Ausgabeteil verfahren! Sie wissen ja, wieviel Zeit sonst für das wiederholte Positionieren des Schreiblesekopfes verlorengeht oder wenn Ihr schnelles CD-ROM immer wieder beschleunigt und abbremst. Werte, die sich ändern können, gibt man von außen ein, z.B. über Menue, einen Dialog oder eine Datei. Falls Sie Ihr Programm weitergeben wollen: Geben Sie auf dem Bildschirm möglichst in ein Fenster aus, und raffen Sie mit Ihrem Programm nicht allen Speicher an sich, damit es bei Multitasking keine Probleme gibt! Mein CD_INF.PRG zum Erzeugen eines Roh-CD-Inhaltsverzeichnisses ist hier kein Vorbild, aber dabei geht es ja auch um Massendatenverarbeitung (Ergebnisdateien zum Teil 1.5 MB groß), die nicht ausgebremst werden soll.

Wenn Sie auf Fehler stoßen, die Interpreter und/oder "Compiler nicht erkennen können, so gibt es auch Möglichkeiten. Stellen Sie fest, wo sich der Fehler eingeschlichen hat. "TRON" / "Trace on" listet bei Basic-Dialekten alle ausgeführten Programmzeilen auf. Wo das Programm stehenbleibt, liegt meist der Fehler. Wenn sonst nichts mehr hilft, können Sie in einem Duplikat in kleinem Abstand eigene durchnumerierte Ausgabebefehle (PRINT Fehler-Nr. o.a.) einstreuen, um die Position des Programmabbruchs herauszufinden oder sich Zwischenergebnisse ausdrucken zu lassen. Ein Duplikat verwenden Sie deswegen, damit Sie Ihre Ausgabebefehle nicht wieder löschen müssen bzw. versehentlich dabei zu viele Zeilen löschen. Wenn Sie einige Stunden hintereinander programmiert haben, kommt dies vor. Vergessen Sie nicht Pausen mit Lockerungsübungen! Häufig Sicherheitskopien von vernünftigen Zwischenversionen mit unterschiedlichen Namen erstellen. Natürlich nicht nur auf einem Medium! Stellen Sie sich vor, das geht kaputt! Vorschlag: ein Ordner mit dem späteren Programmnamen inkl. echter Version-Nr. als Ordnername, darin vorläufige aufsteigende Versionsnummerri.xals Programmnamen! So gibt es auch keine Verwechslungen mit fertigen Programmen. Wenn Sie z.B. aus Versehen einen kapitalen Fehler eingebaut haben und die Ursache in vernünftiger Zeit nicht finden, gibt's immer noch den/die Vorgänger zum neu Weiterentwickeln. Manchmal stößt man auf Fehler auch sehr verspätet, und was gelöscht ist, ist weg! Am Ende sind Testläufe sinnvoll, ggf. mit Testdaten und nachprüfbaren Ergebnissen.

Ist das Programm fertig, so erhält es den richtigen Namen. Falls Sie nicht ein Superprogramm erstellt haben, sollten Sie unbedingt einen aussagefähigen Namen verwenden und nicht CLEOPATRA oder ähnliches! Die Versionsnummer im Ordnernamen finde ich persönlich besser als im Programmnamen und auf jeden Fall besser als ihr Fehlen! Eine kleine Anleitung sollte etwas über Verwendungszweck und Bedienung verraten, solange alles frisch in Ihrem Kopf steckt. Und wie wäre es bei einem guten Programm mit der Veröffentlichung des Quelltextes als Vorbild? Dies ist auch eine Bitte an alle Programmautoren, die ihr Produkt nicht mehr weiterentwickeln.

Musterlösungen

Falls Sie auf der Suche nach GFA2- bzw. GFA3.x-Beispielen in CD-INF im Ordner TYP'PRG IERN in die Dateien LST.TXT, BAS.TXT bzw. GFA.TXT blicken, Sv> finden Sie bei den aufgelisteten Dateien sicher einige Quellen für geeignete Musterlösungen (in LST.TXT und BAS.TXT leider mit OMIKRON-Programmen vermischt). Vor allem die längeren Programme, die nach Sortieren am Ende stehen, enthalten sicher auch Lösungen für Menüs usw., einfach die Programme starten! Mit anderen Programmiersprachen geht's analog.

Rechtliches

In der Dokumentation angegebene Einschränkungen sind zu beachten Manche Programme dürfen nicht zur Entwicklung anderer Programmiersprachen oder nicht kommerziell eingesetzt werden, z.B. darf die letztverfügbare Pure-Pascal-Demo nicht an Schulen, Unis usw. verwendet werden. Ob dieser Schuss nicht nach hinten losging?

Was fehlt hier?

Wie wohl jeder, besitze ich nur Kenntnisse in einem geringen Teil der auf ATARIs verfügbaren Programmiersprachen. Privat habe ich bisher nur wenige kleinere ATARI-Programme geschrieben. Daher habe ich darauf verzichtet, einzelne auf CD verfügbare Programmiersprachen an-zutesten, von Ausnahmen abgesehen, zumal ich eigene Vollversionen besitze (gedruckte Handbücher erleichtern manches). Die Auswahl müssen ohnehin Sie selbst treffen. Die Kurse GFACLASS, TTUTOR/TPTUTR und C-CURSUS sind für eine Vorentscheidung hilfreich, soweit nicht externe Faktoren wie Berufsausbildung Ihre Wahl anders beeinflussen.

Wie geht's?

Danke, mir auch ...! CD-INF liefert noch Stoff für viele allgemein interessierende Themen. Da nicht alles aus meiner Feder (sprich: meinem ATARI) stammen kann - dazu fehlt mir die Zeit - hier exemplarisch ein Einblick in die Entstehung dieser Programmierungsübersicht, als Anregung für Ihren Textbeitrag. Aber stimmen Sie unbedingt

Ihr Vorhaben und die Zeitspanne bis zur Verwirklichung vorher(!) mit dem Verlag ab! Hinterlassen Sie dort auch unbedingt Adresse und Telefonnummer für Nachfragen!

Zunächst wurden im Ordner PROG die Dateien PRG_A-K (PRO A JC.TXT) und PRO L-Z (PRO L_Z.TXT) mit TEMPUS nach den Rubrikspalten sortiert und dann die Bereiche mit der Rubrik "pr" (Programmierung) als Block getrennt gesichert und zu einer Datei zusammengefügt.

Dies ist einfacher, als die Gesamtdatei zu durchsuchen. Diese Teildatei wurde einerseits nach Ordnernamen und andererseits vom Zeilenanfang bis zum -ende aufsteigend sortiert (d.h. nach Dateinamen usw.). Die Ergebnisse sind ORD.TXT bzw. NAM.TXT. NAM.TXT dient zum Suchen von Programmen und deren neuester Version, ORD.TXT zum Auffinden interessanter Programme in der Umgebung eines Treffers. Bei anderen Themen müssen Sie notfalls aus PRO A-K und PRO L-Z direkt Ihre Liste ohne Rubrikauszug zusammenstellen, da es bei den meisten Rubriken Überschneidungen gibt. Sonst würde die Beschränkung auf die reine Rubrik einen Teil der Programme oder Fundstellen ausschließen. Aber vielleicht enthält die nächste CD-INF-Version dazu auch etwas.

Anschließend wurde nach Begriffen wie Pascal gesucht (hier "pascal", da in CD_INF alles kleingeschrieben ist). Besser ist es nach "pasc" zu suchen, da wegen der Beschränkung auf 8 Stellen Abkürzungen üblich sind (ohne diese Beschränkung wäre CD INF nicht praktikabel und auch nicht lesbar und druckfähig). Schnell findet man heraus, dass cc für C-Compiler steht. Auf diese Weise kopiert man eine Teildatei PRG_AUS.TXT zusammen, in der, soweit aus Namen oder Ordnernamen erkennbar, nur die letztveröffentlichten Versionen stehen, natürlich gruppiert nach Programmiersprachen. Diese Liste wird ausgedruckt.

Jetzt gehen wir an unsere CD-ROM-Sammlung und nutzen sie. Mit den BINDEX-Dateien der Mega Archive 2 im Ordner LANGUAGE und den PROGRAMM.TXT-Dateien der SUZY B 1 und 2 im Ordner OCATALOGYMANYFILE erhalten wir detaillierte Zusatzinformationen zu einschlägigen Programmen, auch zu bisher nicht ins Auge gefallenen, z.B. zu exotischen Sprachen wie EIFFEL. Unsere ausgedruckte Liste wird mit Kommentaren und einigen weiteren Dateien ergänzt und ggf. korrigiert.

Nun werden die Fundstellen in einen TEST-Ordner auf der Festplatte zusammenkopiert, Programme gleicher Länge natürlich nur einmal. Falls die Versionsnummer unklar ist, wird vor dem Kopieren nach Textdateien gesucht, die über Versionsnummer oder Erstellungsdatum Aufschluss geben können. Die Programmlänge taugt nur bedingt zur zeitlichen Einordnung, da neuere Compiler evtl. kompakteren Code generieren - womit wird wohl ein neuer Compiler zum Schluss übersetzt? Natürlich mit sich selbst! Das im Desktop angezeigte Erstellungsdatum ist leider häufig fehlerhaft (z.B. Erstellungsdatum der CD oder sogar Auspackdatum). Notfalls wird auch das Programm gestartet und in der Programm-Info nachgesehen. So landet meist nur die neueste Version im Ordner TEST. (Ich hoffe, dass Sie dessen Inhalt bald auf Leser-CD finden!) Gepackte Dateien müssen notfalls ausgepackt werden. Dann geht es an den Entwurf des Textbeitrags. Als Nebeneffekt wissen Sie mehr über nützliche Programme und haben jeweils die neuesten Versionen verfügbar.

Zum Schluss

Nachdem es das ausgezeichnete SDK (Software Development Kit) und dessen ergänzendes Update gibt, ist der Programmierungsteil der geplanten Leser-CD eher als Ergänzung dazu gedacht. Selbstverständlich kann und soll die volle SDK-Informationsvielfalt nicht noch einmal kopiert werden. Aber schließlich gibt es trotz eines ausgezeichneten Inhalts auch dort Lücken. Eine Betrachtung eines Themas aus einem etwas anderen Blickwinkel, dem von CD-INF, nützt dem Anwender. Auch ist bisher jede gute PD/Shareware auf mehreren CDs vertreten, und so sind Überschneidungen nicht tragisch. Auch Leute mit kleinem ATARI und ohne CD-ROM-Laufwerk können von CD-ROMs profitieren. Evtl. können Sie aber auch am Arbeitsplatz Ihre Wunschprogramme auf Disk umkopieren. Die Entwicklerpakete wie GNU C++ (ca. 40 MB) und Megamax Modula (ca. 20 MB) sind etwas groß dafür und auch weniger anfängergeeignet. Für Anfänger und auch für Programmierexperten (Erstellen kleiner Programme) ist immer noch das gute alte BASIC gut geeignet.

Und wenn Ihnen irgendwann der Umfang Ihrer Lieblings-PD/Shareware-Programmiersprache nicht mehr ausreicht, fragen Sie Ihren Händler/Versender nach kommerziellen Produkten oder suchen Sie per STC-Inserat.


Dieter Koch
Aus: ST-Computer 07 / 1999, Seite 49

Links

Copyright-Bestimmungen: siehe Über diese Seite