Winfried Sobottka: Die Grenzen zum Paradies, Tool-Programmierung, Basic und anderes /Hannelore Kraft, Thomas Kutschaty, Ralf Jäger, SPD NRW, Die Linke NRW, Die Grünen NRW


Der Grund dafür, dass ich Basic derzeit für die Erstellung von Tools benutze, ist natürlich der, dass ich die Möglichkeiten des Basic in Fleisch und Blut sitzen habe und Abläufe sehr leicht in Programmcodes umsetzen kann.

 

Würde ich Tools nur für mich erstellen, dann wäre das jeweils schneller zu erledigen als derzeit, weil ich natürlich auf vieles Dinge verzichten könnte. So aber sieht ein immer noch einfaches Programm zur einfachen Abfrage, wie viele Seiten eine Dokumentenpräsentation mittels-HTML-Dateien denn habe solle, so aus wie das erste Programm, init01.bas, auf folgender Seite:

 

http://die-volkszeitung.de/webdesign/dokumenten-styles/basic-tools.html

 

Dabei ist von höchstem Bedienerkomfort noch keine Rede: Die Eingabe der Seitenzahl erfolgt über den Basic-Input-Befehl, der das sofortige Abfangen/die Ausschließung von Fehleingaben nicht möglich macht. Zwar verfüge ich über eine eigene Eingabenroutine, die alles bietet, was eine solche bieten kann, bekomme sie derzeit aber nicht herüber (muss mir demnächst auch noch ein USB-Diskettenlaufwerk kaufen).

 

Ansonsten programmiere ich derzeit mit dem Bewusstssein, dass es egal ist, ob ich 2 Byte-Variablen dort einsetze, wo es auch eine 1 Byte-Variable täte – das geht schneller beim Schreiben, und bei den zugrundeliegenden Anwendnungen spielt das bei heutiger Rechnerleistung auch keine Rolle mehr, solange Programme nicht massenhaft eingesetzt werden ( Strom sparen! 🙂 ).

 

Nur in einer einzigen Subroutine habe ich es mir nicht verkneifen können, etwas anderes als die primitivste Möglichkeit der Umsetzung zu wählen (todo% in init02.bas auf der selben Seite). Die heutige Rechnerleistung ermöglicht in vielen Bereichen den Einsatz von primitiven, betreffend Beanspruchung der Rechnerkapazität weit von der Optimalität entfernten Programmabläufen, weil das im Betrieb von der hohen Rechnergeschwindingkeit so überspielt wird, dass der Anwender es gar nicht merkt. Das bedeutet natürlich nicht, dass das egal wäre: Massenhaft eingesetzte Programme sollten natürlich weiterhin hinsichtlich der Abläufe optimiert werden, weil selbst der beste Rechner nicht den kleinsten unnötigen Zusatzaufwand leisten kann, ohne zusätzlich elektrische Energie zu fressen. Sicherlich könnte man weltweit mehr als nur ein KKW überflüssig machen, wenn solche Gedanken in der Entwickung der Massenprogramme eine Rolle spielten, aber da geht es eben nur um Performance und schnelle Kohle, es ist nicht anders als bei den deutschen Autobauern.

 

Eine avantgardistische Idee wären da Compiler, die die Optimierung bestimmer Abläufe unterstützen, Voraussetzung wären Programmiersprachen, die neben Befehlen für Einzelaktionen Aufrufe/Calls für in Maschinensprache optimierten Standardabläufen enthielten.

 

Sieht man von diesen Dingen ab, dann kann man mit Basic nach wie vor sehr weit kommen, obwohl Bill die Möglichkeiten stark beschnitten hat – in seinen Windows-Systemen. Unter XP bekomme ich den Eingabebildschirm nur im Miniformat geboten, zudem war es mir nicht möglich, mit Basic oder von der Befehlszeile aus eine einfache Batch-Datei anzulegen (.bat). Mit einem kleinen Trick war ich früher in der Lage, mit Rückgriff u.a. auf diese Batch-Dateien das längste Basic-Programm der Welt zu schreiben:

 

Ich rief das Startprogramm jeweils von einer .bat-Datei („1.bat“) auf, die zuletzt eine andere .bat-Datei („2.bat“) aufrief. Zwar konnte das Basic -Programm nicht die 1.bat beliebig manipulieren, ohne dass sich das in einem falschen Ablauf niedergeschlagen hätte. Aber es konnte die 2.bat, doe ja gerade nicht aktiv war, beliebig verändern und zurückschreiben. Damit konnte letztlich über jede Basic-Program bestimmen, welche andere Basic-Programm nach ihm aufgerufen werden sollte – ohne dass es selbst zu diesem Programm gelinkt hätte.

Das war durchaus von Vorteil, denn wenn komplizierte compilierte Basic-Programme andere wiederum komplizierte Programme direkt aufriefen, wobei alle Programme große Variablen-Bereiche beanspruchten und z.T. Aus zig-Subroutines bestanden, die in komplexen Abläufen Verwendung fanden, gab es gelegentlich irgendwann Probleme mit dem Basic-Stack. Das Problem war ausgeschlossen, wenn jedes Programm einfach mit SYSTEM beendet wurde und das nächste Programm von einer Batch-Datei aus aufgerufen wurde.

 

Mir war insgesamt folgendes möglich:

 

  • Allein über die Nutzung eines mit VDISK/RAMDRIVE allokierten Speichers konnte ein Basic Programm mindestens 200 KB an Daten an Folgeprogramme weitergeben, OHNE auf die Festplatte zuzugreifen.
  • Eine „.job“-Textdatei sorgte dafür, dass jedes Basicprogramm dem Programm, das nach ihm laufen sollte, im aktuellen Falle nötige Inputs übergeben konnte – soweit vorhanden.
  • Bereits diese beiden Bedingungen sorgten dafür, dass mir bei der Gestaltung von Abläufen kaum noch Grenzen gesetzt waren, ich konnte eine große Subroutine zu einem eigenen Basic-Programm machen, solange der Basic-Stack nicht auseinander flog.
  • Wie alle Bill-Gates Programme waren auch Basic-Interpreter und Basic-Compiler in ihrer Leistung nicht 100-%-tig fehlerfrei, und offenbar war es nur eine Frage der Zeit, wann es mit dem Basic-Stack Probleme gab, wenn an die Grenzen gehende Basic-Programme sich gegenseitig aufriefen, darum setzte ich dann das Verfahren der zwei Batch-Dateien ein, seitdem gab es bei gar nichts mehr Probleme mit dem Basic-Stack.

     

    Außerdem konnte ich so Betriebssystemsfunktionen nutzen: Der Basic-Befehl „Files“ zeigt Verzeichnisinhalte am Bildschirm an und blättert dabei solange, bis er alles angezeigt hat, was angezeigt werden soll – so dass die ersten Einträge oft wieder vom Bildschirm verschwunden sind. Aber da man (damals…) mit einem Basic-Programm in .bat-Dateien schreiben konnte, konnte ich mit dem DIR > Datei – Befehl des DOS von Basic aus arbeiten: Programm stellt gewünschten Befehl in .bat Datei und ruft sich anschließend wieder selbst auf durch einen weiteren Befehl in der .bat-Datei, wobei es alle wichtigen Variablen-Inhalte im Übergabe Speicher zugriffsbereit hält. Anschließend konnte es dann aus der Inhaltsdatei, die mit dem DIR-Befehl erzeugt war, die Verzeichnisinhalte sequentiell lesen und nutzen. Aber auch SORT-Befehl und alle andere konnten so genutzt werden, in der Weise hätte ich einen eigenen „Explorer“ für die Festplatte schreiben können, der alles anzeigte und alle Operationen ermöglichte.

 

Diese Dinge sind heute sicherlich nicht von konkretem praktischen Belang, aber vielleicht sind sie für die eine oder den anderen ein Hinweis darauf, dass man Grenzen gelegentlich auch unkonventionell umschiffen kann, dass man sich nicht einfach abfinden muss, weil die halbe Welt sagt: „Das und das geht nicht!“, wobei die meisten das nur sagen, weil andere es sagen.

 

Das gilt auch heute noch, in der Programmierung und in allen anderen Bereichen des Lebens und Schaffens, und wer sich vor Augen hält, was normale „Basic“-Programmierer aus basic herausholten, und sich andererseits nach meinen Ausführungen auch nur in etwa vorstellen kann, was man unterm den von mir oben dargelegten Bedingungen aus Basic heraus zu holen vermag, dem müsste eigentlich klar werden, welche wahre Pracht sich oft hinter den Grenzen normaler Ansichten verbirgt. Mit den kleinen von mir eingesetzten Tricks schaffte ich es unter anderem, eine Textverarbeitung in Basic zu programmieren, die bis zu 25 bis 30 Seiten lange Texte verarbeiten konnte, dabei selbst auf einem 80286-DX mit 8 MHZ beliebiges Löschen und Einfügen von Zeilen und Abschnitten zu ermöglichen – blitzschnell. Die Texte konnten Markierungen für fett, kursiv und beides zugleich beinhalten, im Text am Bildschirm durch Hintergrund- und Vordergrundfarbe erkennbar berücksichtigt, beliebig viele Tabulatoren konnten gesetzt werden, eine Zentrierung des Textes, der jeweiligen Ränder rechts und links und anderes waren möglich, wenn auch im eingesetzten Textmodus natürlich nicht echtes Wysiwyg erreichbar war, Sonderzeichen konnten zur Ausgabe über F-Tasten bestimmt werden und einiges anderes an angenehmen Features wurde geboten. Jedenfalls wäre damals kein Programmierer darauf gekommen, dass hinter dem, was da am Bildschirm und im Druck zu sehen war, Basic hätte stehen können; jeder hätte auf C oder Turbo-Pascal getippt, die meisten es nicht annähernd für möglich gehalten, dass compiliertes Basic dahinter stehen konnte.

 

Das schnelle Zeileneinfügen auch bei längeren Texten hatte ich im Grunde äußerst primitiv gelöst: Ein Text wurde als eine Aneinanderreihung einzelner Zeilen behandelt, wobei ich für die Reihenfolge der Zeilen die denkbar primitivste Indexverwaltung einsetzte:Für jede Zeile einen -Byte-Schlüssel, der die Satznummer der Zeile in einer Dateien enthielt. Die Reihenfolge dieser Schlüssel in der Indexdatei betimmte dann z.B., wo Zeile 96 eines Textes zu finden war: Der 96. Schlüssel in der der Indexdatei verwies auf den Datensatz, in der der Inhalt der Zeile 96 zu finden war. Eine Indexverwaltung ohne jeden Ordnungsbegriff, die nur durch Datenbaggerei im RAM-Speicher verändert wurde – bei bis zu 256*256-1 Zeilen blitzschnell, es machte schon auf dem 80286-DX nur noch „paff“. Ein ganz primitives System, aber eben ausreichend für die meisten Texte, die man so schreibt. Mit einer sehr ähnlichen Indexverwaltung erlaubte ich – aus dem Hauptprogramm selbst – die Verwaltung der Texte mit zwei verschiedenen Ordnungsbegriffen, nach denen nicht nur mit Direkt-Match, sondern auch nach dem PgUp-PgDn-Prinzip geblättert werden konnte, womit immerhin auch ein paar tausend Texte verwaltet werden konnten.

 

Bei allem hatte ich zu einfachsten Tricks gegriffen, mich nicht einmal mit Dingen wie Bubble-Sort, B-Tree oder ähnlichem befasst. Wie weit würden erst wahre Genies kommen, wenn sie sich mühten, ais allem das Beste zu machen? Wo also überall sind noch ungeliebte Grenzen, an denen man mit billigen Tricks vorbeikommt? Und wo kann man vielleicht sogar mit primitiven Mitteln viel erreichen? Sind primitive Mittel nicht „gesellschaftsfähig“, wenn sie zu erstklassigen Ergebnissen führen? Programmierer sollten den Fehler des Claus Plantiko, der nicht schreiben kann, ohne den Zwang zu höchst elaboriertem Ausdruck in sich zu verspüren. Zwar kann Claus Plantiko sich entsprechend ausdrücken – aber wozu ist es gut? Dazu, dass 90% ihn nicht verstehen? Ich habe ihm gesagt, er solle so schreiben, wie er rede, dann wären die Inhalte nicht im geringsten schlechter, aber dann würden ihn alle verstehen.

 

Wer sich diese Fragen wahrer Effzienz überall stellt, wo es für ihn darauf ankommt, wird seine eigenen Möglichkeiten in der Regel erheblich vergrößern, und natürlich ist das keineswegs ein Plädoyer gegen nach den Sternen greifende Programmierung, sondern nur dagegen, das nach den Sternen Greifen zum reinen Selbstzweck werden zu lassen. Die Vergeudung menschlicher Hochintelligenz, egal, in welcher Weise, ist im Grunde eine ebenso große Todsünde wie der Missbrauch menschlicher Hochintelligenz, das kann niemand bestreiten, der sich die Art und die Anzahl so oder so Leben zerstörender Probleme ansieht.

 

Ich werde später noch programmieren, die Publizierung des ersten Paketes könnte sich um einen Tag verzögern, weil mir erst im Zuge der Programmierung aufgefallen ist, was im Detail noch so alles dazu gehört. So ist es zum Beispiel nötig, für eine reihe von HTML-Seiten zu einem Dokument auch eine Reihe von Standardtexten angeben zu können, die für jeweils mehr als eine Formularseite übernommen werden. Natürlich kann ein Anwender das auch machen, indem er einen Texteditor einsetzt und die selbe Datei für verschiedene Dokumentenseiten abspeichert – aber es geht eben auch mit deutlich weniger Arbeitsaufwand, wenn das Tool entsprechend programmiert ist.

 

Außerdem muss die Parametersetzung z.T. über Kommentare laufen, weil die sich ja nicht verändern müssen. Das ist von Bedeutung, wenn ein Text nachträglich geändert werden soll. Und außerdem muss es natürlich auch ein Grundgerüst für die einseitige Präsentation geben, für Fälle, in denen ein Dokument eben nur aus einer Seite besteht. Na ja, bei mir gehen die Lampen immer erst dann an, wenn ich mit einem Problem wirklich befasse…. 😦

 

Ich will ganz ehrlich sein: Den Bubble-Sort habe ich bis heute nicht verstanden, was womöglich an den Darstellungen gelegen haben kann. Ich hoffe zumindest, das es das Letztere gewesen sei, und derzeit habe ich leider nicht die Zeit, um insofern die Wahrheit heraus zu finden. 😉

 

Gruß

Dipl.-Kfm. Winfried Sobottka

https://belljangler.wordpress.com/2011/06/23/winfried-sobottka-die-hacker-und-an-hannelore-kraft-python-hello-world-php-staatsschutz-polizei-dortmund/

https://belljangler.wordpress.com/2011/02/08/dem-wahren-satanismus-auf-der-spur-karen-haltaufderheide-doris-kipsiekerannika-joeres-die-grunen-wetter-die-grunen-berlin-die-grunen-hamburg-die-grunen-koblenz-renate-kunast-die-linke-witten/