Home   • Persönlich •

< Persönlich


> Intro

> Literatur

> Audio

> Computer

• Programmieren

> Internet

> Netzwerk

> Publikationen


 

— Privat: Programmieren —

Ausbildung

Ich habe keine formelle Ausbildung als Programmierer und habe nie einen Kurs besucht. Ich begann mit PRINT "HELLO" und tastete mich voran. Programmieren mit dem Sinclair ZX80/81 war noch Spielerei, dann begann ich damit, kleine Routinen in Maschinensprache zu schreiben: Hexcode in dezimal. Dann kam ich zu einem Z80 Assembler und ich finde heute noch, dass sich BASIC und Assembler wunderbar ergänzen.

CP/M

Für den CP/M+ Computer schrieb ich viele Hilfsprogramme – Tools, die ich als Notwendig erachtete, wie z.B. die Kapazität der Disketten von 183 KB auf 199 KB zu vergrößern. Diskettenformate waren in der vor-DOS Zeit ja proprietär. Zum ZX81 hatte ich noch ein FORTH, ein solches besorgte ich mir auch für CP/M und begann, einige Anwendungen in dieser Computersprache zu schreiben. Weil ich mit einem Spiel nicht weiter kam besorgte ich mir ein FORTRAN und lernte soviel davon, dass ich den Quellcode des Spieles verstand und mir Programme schreiben konnte, um die verschleierten Datenbanken im Klartext auszugeben. Mit dieser Schummelei kam ich schließlich auch bis zum Spielende. Ich versuchte mich in manchen Sprachen: Pascal, Modula 2, ADA, Prolog, blieb aber schließlich doch bei BASIC und Assembler hängen.

PC/MS-DOS

Meine Hauptzeit im Programmieren war mit PC-DOS. Dummerweise waren da Intel Prozessoren (iAPX8086) und die Assembler Mnemonics ähnlich, aber eben doch anders als beim Z80. Um mich in diese Mnemonics einzuarbeiten übersetzte ich das fig-FORTH-79 von CP/M nach PC-DOS. Der FORTH Compiler/Interpreter wurde inklusive Quelldateien auf der Sydex BBS (Bulletin Board System, vor dem Internet) öffentlich zur Verfügung gestellt. Der Quellcode für zi-forth mit 4'400 Assembler Zeilen steht unter Projects > Resources zum Download bereit.

Einige Mitglieder des Astronomie Vereins erwarben sich Astro-CCD Kameras und ich bekam Aufnahmen, die ich mir nicht ansehen konnte. Da begann ich mein größtes Software Projekt. Ich schrieb eine umfangreiche Suite von Programmen zur Bilddarstellung, Filterung, Analyse, Transformation und Dateikonversion, drucken und archivieren. Der Quellcode der CCDTOOLS besteht aus über 8'200 Zeilen Assembler und über 21'200 Zeilen Power BASIC und kann unter Projects > Resources herunter geladen werden. Das Programm läuft auch noch unter Windows XP, benötigt allerdings das FAT (FAT16 oder FAT32) Dateisystem. NTFS wird nicht unterstützt.

CCDTOOLS

Windows

Auch für Windows 3.1, 95 und später erstellte ich einige Programme, teils als vollständige Windows Applikationen, wie z.B. Iso2Grey und den JxCreator, welcher aus den mit Pseudo-Markierungen versehenen Beiträgen die ganze Ausgabe der Gewerkschaftszeitung für die Publikation auf deren Internetsite aufbereitete oder ein Werkzeug, welches den Inhalt einer Datei in Hexcode ausgibt.

Die Bildschirmdarstellung ist immer aufwändig, zeitraubend und langweilig. Deshalb schrieb ich die meisten kleinen Hilfsprogramme als 32-bit Konsolenanwendungen. Beispielsweise eine Applikation, welche sich via TCP/IP in die Router eines Kundennetzwerkes einloggt, im Router eine Telnet-Sitzung startet, welche sich in das angeschlossene Satellitenmodem einloggt und die Einstellungen verschiedene Parameter abfragt, diese dann an die Applikation übermittelt und auf dem Bildschirm anzeigt. Darauf wird der Router angewiesen, die Telnet-Sitzung zu beenden, das Programm zieht sich aus dem Router zurück und wiederholt dieses Vorgehen bei allen Routern im Netzwerk. Abgesehen davon, dass diese Anwendung meine Arbeit vereinfacht, war es die Herausforderung, auch mal etwas für TCP Anwendungen zu schreiben, die mich reizte.

Scriptsprachen

Es gibt weit über 100 verschiedene Scriptsprachen. Ich hatte früher kleine Änderungen an Perl Scripten vorgenommen und Gerätetreiber in Tcl abgeändert. Etwas mehr Kenntnisse habe ich in JavaScript und PHP, und wenigstens eine Ahnung von MySQL. Die erwähnten Scriptsprachen sind stark an der Programmiersprache C angelehnt, ausgenommen natürlich MySQL, welches ein Bisschen wie dBASE ist – eigentlich umgekehrt, das Datenbank Geschäft hat ja mit SQL begonnen.

REBOL ist eine Scriptsprache die sich angenehmerweise nicht an C orientiert. Auf den ersten Blick könnte man REBOL als eine FORTH Variante halten, aber das ist falsch. Auch diese Scriptsprache ist kostenlos und funktioniert auch ohne das sie auf einem Webserver läuft, obwohl sie das auch tut, REBOL ist voll CGI kompatibel. In dieser Scriptsprache schrieb ich mir ein Bildarchivierungssystem.

Was als Bildarchivierungsprogrammen von kostenlos bis teuer angeboten wird, deckt meine Bedürfnisse nicht ab. Mit meiner ersten Digitalkamera knipste ich etwa 5'000 Fotos und ich möchte kein Bild suchen müssen, will sie im Zusammenhang sehen und zu Präsentationen zusammenstellen können – die Bilder verlinken. Der Web Browser bietet sich als Anzeigeprogramm an. Allerdings kommt keine große Freude auf, wenn man Tausende von HTML Dateien schreiben muss. Bildtexte und anklickbare Verweise sind daher in einer einfachen Datenbank abgelegt, die HTML Dateien werden von REBOL Scripts in wenigen Sekunden generiert.

Kein C, C+, C++

Die Programmiersprache C kam kurz nach Pascal in den frühen 70er Jahre und wurde mit Spott empfangen. Mittlerweile werden sehr viele Anwendungen in C geschrieben, es gibt eine große Gemeinschaft und mit etwas Suchen im Internet findet man für die meisten Aufgaben kostenlose, fertige Programmbibliotheken, die mit minimalem Aufwand in den eigenen Code eingebaut werden können. Ein Segen für jene, die unter Zeitdruck stehen und ein fertiges Program termingerecht abliefern müssen. Programmieren ist zeitintensiv und daher teuer.

Ich stehe nicht unter diesem Druck und will verstehen, wie etwas geht. Eine funktionierende Lösung ist für mich keine Lösung. Deshalb benutze ich keine fertigen Bibliotheken, sondern «erfinde das Rad neu». Das zwingt mich, das Problen zu verstehen, bevor ich an die Programmierung gehe.

 
  © 2004 - 2017 by Horo Wernli.