Gehen wir zunächst in der Zeit zurück und schauen wir uns an, was Bill Gates zu Beginn seiner Karriere machte. Hier eine kurze Zusammenfassung aus Wikipedia:
Nachdem Gates die Januar-Ausgabe 1975 von Popular Electronics gelesen hatte, in der der Altair 8800 vorgestellt wurde, kontaktierte er Micro Instrumentation and Telemetry Systems (MITS), den Hersteller des neuen Mikrocomputers. Er erklärte, dass er und andere an einem BASIC-Interpreter für die Plattform arbeiteten. Tatsächlich besaßen Gates und Allen keinen Altair und hatten noch keinen Code dafür geschrieben; sie wollten lediglich das Interesse von MITS ausloten. MITS-Präsident Ed Roberts erklärte sich mit einer Vorführung einverstanden, und innerhalb weniger Wochen entwickelten sie einen Altair-Emulator, der auf einem Minicomputer lief, und anschließend den BASIC-Interpreter. Die Vorführung in den MITS-Büros in Albuquerque war erfolgreich und führte zu einer Vereinbarung, den Interpreter als Altair BASIC zu vertreiben. Paul Allen wurde bei MITS eingestellt, während Gates sein Studium in Harvard unterbrach, um ab November 1975 mit Allen bei MITS in Albuquerque zu arbeiten. Sie nannten ihre Partnerschaft „Micro-Soft“ und eröffneten ihr erstes Büro in Albuquerque. Innerhalb eines Jahres verschwand der Bindestrich, und am 26. November 1976 wurde der Handelsname „Microsoft“ beim Secretary of State von New Mexico eingetragen. Gates kehrte nie nach Harvard zurück, um sein Studium abzuschließen.
Microsoft BASIC für den 6502 basierte auf Altair BASIC, das Bill Gates und Paul Allen 1975 für den MITS Altair 8800 mit Intels 8080-CPU entwickelten – bekanntlich in einem Motel in Albuquerque, New Mexico. Im selben Jahr brachte MOS Technology den Mikroprozessor 6502 als günstigere Alternative zu den damaligen Prozessoren heraus. Später kam der 6502 in zahlreichen populären Computern wie Apple I, Apple II, Commodore VIC-20 und Commodore 64 sowie in Spielkonsolen wie dem Atari 2600 zum Einsatz.
Für Technikbegeisterte: Hier ist einer der Rechner, die den 6502-Mikroprozessor verwendeten und Microsoft BASIC ausführten.

Einige technische Daten:
OS: Commodore Basic 1.0. CPU: 6502 @ 1 mHz. RAM: 4 KB (early version) then 8 KB VRAM: 1 KB ROM: 14 KB TEXT MODES: 40 x 25. GRAPHIC MODES: None
Was lässt sich mit 4 KB RAM anfangen, wenn wir heute mindestens 4 GB benötigen? War es überhaupt möglich, Software mit nur 4 KB RAM zu schreiben?
Ja – und hier ist der Beweis: der älteste öffentlich verfügbare Quellcode von Bill Gates aus dem Jahr 1978.
Sehen wir uns einige interessante Aspekte dieses Codes an. Zunächst erzeugen wir aus den Kommentaren eine Wortwolke, um zu erkennen, womit sich die Entwickler hauptsächlich beschäftigten:

String, Pointer, Variable, Value und Space gehören zu den am häufigsten vorkommenden Wörtern. Das zeigt, dass die Speicherverwaltung bei solchen Rechnern eine zentrale Herausforderung war. Der Code ist darauf optimiert, den verfügbaren RAM bestmöglich auszunutzen. Interessant ist auch, dass das Wort „garbage“ häufig erscheint – Garbage Collection spielte bei der Optimierung der Speichernutzung eine wichtige Rolle.
So wird die Verwaltung von Strings in den Quellcode-Kommentaren beschrieben:
STRINGS
IN THE VARIABLE TABLES STRINGS ARE STORED JUST LIKE
NUMERIC VARIABLES. SIMPLE STRINGS HAVE THREE VALUE
BYTES WHICH ARE INITIALIZED TO ALL ZEROS (WHICH
REPRESENTS THE NULL STRING). THE ONLY DIFFERENCE
IN HANDLING IS THAT WHEN "PTRGET" SEES A "$" AFTER THE
NAME OF A VARIABLE, "PTRGET" SETS [VALTYP]
TO NEGATIVE ONE AND TURNS
ON THE MSB (MOST-SIGNIFIGANT-BIT) OF THE VALUE OF
THE FIRST CHARACTER OF THE VARIABLE NAME.
HAVING THIS BIT ON IN THE NAME OF THE VARIABLE ENSURES
THAT THE SEARCH ROUTINE WILL NOT MATCH
'A' WITH 'A$' OR 'A$' WITH 'A'. THE MEANING OF
THE THREE VALUE BYTES ARE:
LOW
LENGTH OF THE STRING
LOW 8 BITS
HIGH 8 BITS OF THE ADDRESS
OF THE CHARACTERS IN THE
STRING IF LENGTH.NE.0.
MEANINGLESS OTHERWISE.
HIGH
THE VALUE OF A STRING VARIABLE (THESE 3 BYTES)
IS CALLED THE STRING DESCRIPTOR TO DISTINGUISH
IT FROM THE ACTUAL STRING DATA. WHENEVER A
STRING CONSTANT IS ENCOUNTERED IN A FORMULA OR AS
PART OF AN INPUT STRING, OR AS PART OF DATA, "STRLIT"
IS CALLED, CAUSING A DESCRIPTOR TO BE BUILT FOR
THE STRING. WHEN ASSIGNMENT IS MADE TO A STRING POINTING INTO
"BUF" THE VALUE IS COPIED INTO STRING SPACE SINCE [BUF]
IS ALWAYS CHANGING.
Und so werden Fehler behandelt:
ERROR MESSAGES
WHEN AN ERROR CONDITION IS DETECTED,
[ACCX] MUST BE SET UP TO INDICATE WHICH ERROR
MESSAGE IS APPROPRIATE AND A BRANCH MUST BE MADE
TO "ERROR". THE STACK WILL BE RESET AND ALL
PROGRAM CONTEXT WILL BE LOST. VARIABLES
VALUES AND THE ACTUAL PROGRAM REMAIN INTACT.
ONLY THE VALUE OF [ACCX] IS IMPORTANT WHEN
THE BRANCH IS MADE TO ERROR. [ACCX] IS USED AS AN
INDEX INTO "ERRTAB" WHICH GIVES THE TWO
CHARACTER ERROR MESSAGE THAT WILL BE PRINTED ON THE
USER'S TERMINAL.
Bemerkenswert an diesem Quellcode ist, wie klar viele Aspekte des Programms erklärt werden. Man muss kaum zusätzliche Quellen heranziehen, um zu verstehen, was der Code macht.
Einige Beobachtungen zur Codequalität:
- Die Benennung ist leicht verständlich
Im Quellcode findet man keine Variablennamen wie a, b oder x, wie sie selbst in manchen neueren Projekten vorkommen. Die Namen sind sinnvoll gewählt und klar dokumentiert.

- Der Code ist in viele kleine Unterprogramme aufgeteilt
Die Assemblersprache des 6502 ist sehr hardwarenah. Um den Code verständlicher und wartbarer zu machen, wird deshalb das Prinzip „Teile und herrsche“ angewendet: Der Code ist in viele kleine Unterprogramme zerlegt, die sich leichter lesen und pflegen lassen. Hier ein Beispiel für ein kleines Unterprogramm aus dem Quellcode:

Nach der Analyse dieses Codes bin ich überzeugt, dass Bill Gates nicht nur ein talentierter Geschäftsmann, sondern auch ein hervorragender Entwickler war. Es überrascht daher kaum, dass er zusammen mit Steve Jobs und einigen anderen Legenden zu einer der einflussreichsten Persönlichkeiten der Computerwelt wurde.
