| |
"There is no reason anyone would want a computer in their home."
(dt.: "Es gibt keinen Grund, warum jemand einen Computer zuhause haben wollen würde."
(Ken Olson, Digital Equipment Corp. chairman, 1977)
Historisches
|
Die meisten Softwareentwickler haben genug Stress mit ihren heutigen Problemen und Projekten und vor
allem mit der raschen Weiterentwicklung der IT. Daher ist das Interesse an der Historie der IT
allgemein recht gering, erst Recht das Interesse an der Historie der systematischen Softwareentwicklung.
Deshalb habe ich mich entschlossen, diesen Teil nur kurz und nur im Anhang darzustellen.
|
|
Außerdem will ich mich auf die Softwareentwicklung mit PCs konzentrieren, zum einen weil heutzutage
wohl mindestens 90% der Software mit PCs entwickelt wird, zum anderen weil ich in dieser Abhandlung ja die
Praxis aus meiner Erfahrung heraus schildern will und ich nur die Softwareentwicklung mit PCs von Anfang an
kennen gelernt habe. Es gibt aber im Internet genug Berichte über die wirklich alten Zeiten der EDV mit
Zuse, Nixdorf, IBM, DEC, etc. Die Suchmaschinen bringen Sie über diese Stichwörter schnell weiter.
1974 entwickelten Kernighan und Ritchie die Programmiersprache "C", die dem PC zum Siegeszug
verhelfen sollte - aber zu der Zeit gab es noch keinen PC! 1975 kam mit dem Bausatz des Altair 8800 das
erste Ding, was man PC nennen könnte. Dafür entwickelten ja auch Bill Gates und Paul Allen das BASIC - aber da
hieß die Firma noch Traf-O-Data. Das zu der Zeit mit einem Computer prinzipiell auch schon viel mehr möglich war,
zeigte XEROX im PARC mit einem graphischen Texteditor, der über eine Maus gesteuert wurde! 1976 bauen Steve
Wozniak und Steve Jobs den Apple I. HP und Atari interessierten sich auch schon irgendwie für das neue Zeugs.
Wo wir mit den PCs 1977 aber realistisch standen, können Sie ganz gut an dem Spruch oben auf dieser Seite
erkennen.
|
Die Programmiersprache der ersten Zeit der Mikrocomputer war BASIC (Abk. für "Beginners All-Purpose
Symbolic Instruction Code", dt.: "Allgemeiner symbolischer Anweisungscode für Anfänger").
BASIC wurde 1963/64 in Dartmouth entwickelt und nach Kompatibilitätsschwierigkeiten zwischen den
verschiedenen Versionen um 1971 wurde 1974 die Standardisierung angestrebt. 1978 schließlich wurde
der ANSI-Standard für BASIC veröffentlicht und noch im gleichen Jahr erfasste die Zeitschrift
"Datamation" ganze 22 sogenannte "Mikrocomputersysteme", von denen für 70% BASIC
verfügbar war.
|
Die einzige Alternative auf Mikrocomputern war zu der Zeit Assembler für Prozessoren wie den
Motorola 6502 (Apple und Commodore), die Intel 8008, 8080, 8085 oder den Zilog Z80. Dazu brauchte man aber
Informationen über die Hardware, die vom Hersteller super geheim gehalten wurde. Ich erinnere mich, dass ich
von meinem ersten selbst verdienten Geld einem Mitarbeiter des Computerherstellers sein Systemhandbuch abgekauft
habe, auf dem dick so witzige Sprüche wie "nur zum internen Gebrauch" aufgestempelt waren.
|
Das Jahrbuch "Taschenrechner + Mikrocomputer" von 1981 zählt bereits 183 verschiedene
Hersteller von Computern auf. Gemäß diesem Buch wurden bis Ende 1979 in Deutschland ca. 20.000
Mikrocomputer mit Preisen bis zu 10.000,- DM verkauft. 1979 war auch für mich das Jahr,
in dem ich das erste Mal vor einem Mikrocomputer saß: ein Wang mit 40x25 Großbuchstaben auf dem
Bildschirm, 4 KB RAM und einem eingebauten Kassettenlaufwerk zum dauerhaften Speichern
der BASIC-Programme und Daten. Ich war damals 17 Jahre alt und tief beeindruckt. Dies war auch das Jahr,
in dem Commodore mit seinem PET den großen Siegeszug antrat, vor allem wegen der Graphikzeichen, die auf
den Tasten vorne aufgedruckt waren und so über eine spezielle Funktionstaste direkt eingegeben werden
konnten. Neben dem Apple II war es auch der einzige bezahlbare Rechner - und es stand bereits
"Personal Computer" drauf!
|

1979
|
|
Die damals im normalen Buchhandel in deutsch verfügbaren Bücher für Mikrocomputer bestanden
aus schrecklichen Listings noch schrecklicherer Programme und enthielten wenig wirklich spannende Infos.
Aber es war halt eine Zeit, wo man sogar noch den gesamten Markt überschauen konnte und eigentlich alles
gegriffen hat, was irgendwie verfügbar war - ich zumindest. Alles, was nicht für Mikrocomputer geschrieben
wurde, war sofort super wissenschaftlich aufgezogen, sehr kompliziert und teuer und obendrein auf dem
Mikrocomputer kaum verwendbar - also out! Es gab damals halt zwei Welten: Profis an UNIX-Maschinen und
Freaks an Mikrocomputern!
|
|
In der ersten Arbeitsgruppe "Informatik" auf unserem Gymnasium half uns die Frau eines
Mathematikprofessors der Uni Bochum auf die Beine und erklärte uns das IF ... THEN ... ELSE und vor
allem das GOTO! Denn besonders strukturiert wurde damals noch nicht programmiert. Die Auszüge links und
rechts stammen aus Büchern von 1983 und 1984 und sehen immer noch nicht besonders strukturiert aus. Aber
wie viele Leute nennen sich heute noch Softwareentwickler und hauen einfach den Code in die Büchse!
|
|
|
Bereits 1972 schrieb Dijkstra seine "Notes on Structured Programming", was Ende
1973 in der Zeitschrift Datamation zur "Revolution in Programming" führte. Niklaus Wirth schrieb
zu der Zeit über "Systematisches Programmieren" und später (1975) über "Algorithmen
und Datenstrukturen". Viele griffen das auf und so konnte man denn auch durchaus schon recht früh
mehr machen als nur Runtercodieren, wenn man denn wollte.
|
|
|
Als ich mich 1980 auf meinen großen Auftritt bei "Jugend Forscht" vorbereitete,
programmierte ich bereits mit einem BASIC-Compiler, hatte in der "Triumph Adler alphatronic
meines Vaters bereits das neue 160 KB Diskettenlaufwerk, 48 KB RAM und schrieb in
meiner "Forschungsarbeit" nebenstehenden Absatz.
|
|
Ich sah zu der Zeit in einigen Büchern Diagramme, und zwar Flussdiagramme (s. links) und
Struktogramme (s. rechts) und eiferte dem nach. So hatte ich etliche einzelne Diagramme erstellt, die
ich zu einem Gesamt-Flussdiagramm zusammensetzte. Ein Photo von mir vor diesem Gesamt-Flussdiagramm bei
der Vorstellung meiner Forschungsarbeit Anfang 1981 finden Sie ganz am Ende meiner Projektreferenz auf
meiner Homepage.
|
|
|
1981 war auch das Jahr, in dem dann wirklich in den USA der PC von IBM geboren wurde. Damit wurde
der viel diskutierte Begriff "Personal Computer" (dt.: Persönlicher Computer) manifestiert
und Bill Gates bekam die Chance seines Lebens - und nutzte sie! Es sollte aber noch etwas dauern, bis sich
das System etablierte und verbreitete. Schließlich war der Erfolg des PCs ja auch nie geplant und damals
von IBM sogar nichtmal wirklich gewollt. Ich saß das erste Mal 1984 vor dem IBM PC und staunte über die
Subdirectories von MS-DOS 1.1. Ich habe heute noch einen im Keller und bin jedes Mal wieder fasziniert,
wenn ich die Kiste nur so aus Spaß ohne Systemdiskette direkt ins ROM-BASIC boote :-)
|
|
|
Auch noch 1982, als das CP/M-Betriebssystem bereits seiner Ablösung durch Microsofts
MS-DOS entgegen sah, war Programmierung für die meisten nichts, was im Auftrag eines Kunden unter
Einhaltung von Termin und Budget möglichst strukturiert oder gar systematisch erfolgen sollte.
Entweder waren es Forscher, Wissenschaftler und Ingenieure, die den Mikrocomputer zur Vereinfachung
ihrer Routineberechnungen benutzten, oder es waren Freaks, die einfach Spaß an der tollen Technik
hatten.
|
|
Die Darstellung oben aus einem CP/M-Buch ist die Einleitung zur Programmierung. Es sieht so aus,
als müsste man nur wissen, wie man den ASM aufruft, und schon kann man programmieren. Als Hauptproblem war
hier die Speicheradressierung genannt. Der Ausschnitt rechts zeigt das nächste Kapitel, in dem immerhin
darauf hingewiesen wird, wie wichtig doch die Fehlerbehebung ist. Mich erinnert das etwas an den Spruch:
"Wenn Debugging der Vorgang ist, Fehler auszubauen, dann ist Programmieren wohl der Vorgang, Fehler
einzubauen."
|
|
|
1983 erschien von Intel der "iAPX 286 Operating Systems Writer's Guide" - ja: 1983! Es
dauert ja immer ein paar Jahre, bis die Boards und die PCs gebaut sind und die Betriebssysteme angepasst sind.
Daher kommen solche Schriften oft recht früh raus. Mit dem "Protected Multitasking" revolutionierte
der 80286 von Intel die Programmierung, weil er endgültig die Statiker von den Dynamikern trennte:
|
"The role that an operating system may play in managing a multitasking execution environment depends on
the nature of the application. Applications can be classified according to the volatility of tasks executing
over a period of time. Applications in which tasks frequently begin and end are called dynamic systems.
Applications in which the mix of tasks does not change are called static systems." (dt.: Die Rolle,
die ein Betriebssystem in der Verwaltung einer Multitasking-Umgebung spielt, hängt von der Natur der Applikation
ab. Applikationen können nach der Sprunghaftigkeit der Ausführung der Tasks über einen gewissen Zeitraum
unterschieden werden. Applikationen, in denen die Tasks oft beginnen und enden werden dynamische Systeme
genannt. Applikationen, in denen sich die Zusammensetzung der Tasks nicht verändert, werden statische Systeme
genannt.) Durch die massive Segmentierung der Programme und die Berücksichtigung des Multitaskings kamen völlig neue
Aspekte auf die Softwareentwicklung zu, die eine viel planerische Vorgehensweise benötigte und uns mehrere
Jahre auf Trab gehalten hat. Insbesondere brauchten wir nun Ablaufdiagramme, in denen die simultanen Abläufe der
Tasks darstellbar war. Selbst in der UML wurden erst 2004 mit der Version 2.0 die Aktivitätendiagramme so weit
geklärt, dass sie für einen praktikablen und eindeutigen Einsatz in Multitasking- bzw. Multithreading-Umgebungen
sauber einsetzbar sind.
|
Als ich 1984 im Softwarehaus anfing, war meine BASIC- und FORTRAN-Zeit endgültig zuende und
meine Assembler-Zeit begann richtig. Es ging zunächst darum, Kopierschütze und Adaptionsroutinen für
Winchesterplatten in Assembler zu programmieren. Da sich diese Programme selbst durch den Speicher
geschoben (s. nebenstehende Quelle) und die Register der CPUs und Ports der Boards bis zum Brechen
gebogen haben, war da nicht viel Raum für Flussdiagramme und Systematik. Aber dafür wurden Dokumentation
und Testen ein riesiges Thema für mich. Damit erkannte ich, dass es nicht eine einzige richtige
Vorgehensweise in der Softwareentwicklung gibt, sondern dass im günstigsten Fall die eine beste
Vorgehensweise an das jeweilige Projekt adaptiert werden musste. 1984 war übrigens auch das Jahr des Apple
Macintosh, jenem Xerox-Nachbau von Steve Jobs. Im Vergleich zum IBM PC war der Mac zwar klein, graphisch,
mausorientiert und total interessant, aber es gab keine Software und keine Entwicklergemeinde (dies war
die zweite Chance für Bill Gates und er entwickelte Microsoft Word und Excel für den Mac - lange vor den
Windows-Versionen).
|
|
Nachdem die hardwarenahe Programmierung mit intensivem Speichermanagement und Multitasking in Assembler kein
großes Problem mehr war, kam 1985 (Mitte 84 bis Mitte 86) ein Betriebssystem für eine Speicherschreibmaschine
auf mich zu, das ich mit einem Kollegen komplett in 8080 Assembler geschrieben habe. Dazu mussten wir
Speicheraufteilungen, Ländervarianten-Mappings, Zustandsdiagramme, Flussdiagramme und Prozessabläufe ohne Ende
entwerfen. Wir haben damals nur leider keine Tool-Unterstützung gehabt und mussten alle Diagramme von Hand auf
Papier zeichnen. Selbst die Spezifikationen wurden meistens auf Papier vorgeschrieben. Das war eine Katastrophe bei
den andauernden massiven Änderungen durch neue Ideen. Außerdem steckte ein riesiges Unternehmen hinter der Entwicklung,
das parallel die Hardware zuende entwickelte und richtig Ahnung von Testen hatte. Es gab da tatsächlich eine
Hydrostößel-Apparatur, die softwaregesteuert die ganze Nacht durch getippt hat und so regressiv alle Funktionen mit
allen vorher schon einmal dagewesenen Fehlersituationen getestet hat. Das war das erste Mal, dass ich Testfälle
schreiben musste (die wir damals "Featuretests" nannten). Entwickelt haben wir auf den original
Intel-Entwicklungsmaschinen ISIS II und III mit ICE (In-Circuit-Emulator) zum Debuggen der EPROMs direkt in der
Hardware. Das reine Code-Listing brauchte schließlich über 1000 Seiten von diesem tollen grün-linierten Endlospapier.
Ohne eine gewisse Systematik hätten wir da keine Chance gehabt - aber ohne die 110-Stunden-Wochen auch nicht.
Ich glaube, das war mein erstes echtes Heldenprojekt ;-)
|
1986 saß ich vor meinem ersten C-Compiler von Lattice. Nach der Assembler-Zeit und den Gehversuchen mit
dem C-nahen PL/M (Programming Language for Microcomputers) eine Wohltat. Gelernt hatte ich C 1985 in den Hotels
aus dem Buch heraus (ich besaß tatsächlich ein Exemplar der C-Bibel aus der ersten Auflage von 1978). In C
konnte man viel schneller Programme erstellen als in Assembler und trotzdem direkt in den Speicher langen.
Und wenn es auf Taktzyklen ankam konnte man schließlich immer noch eine Assemblerfunktion aufrufen. So konnten
wir viel größere und leistungsfähigere Programme viel schneller schreiben und entwickelten nicht nur einen
neuen Texteditor, sondern auch eine eigene ISAM-Datenbank mit Maskeneditoren, Selektionsprogrammen und alles,
was zu einem Office-Paket halt so dazu gehört. Mein Lieblingssatz aus einer späteren Übersetzung des Buchs
war: "Es gibt auch ein goto in C und Sie können es beliebig mißbrauchen".
|
|
tbc ...
|
|