Galileo Computing < openbook >
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.
Galileo Computing - Professionelle Buecher. Auch fuer Einsteiger.


Kompendium der Informationstechnik
 von Sascha Kersken
EDV-Grundlagen, Programmierung, Mediengestaltung
Buch: Kompendium der Informationstechnik
gp Kapitel 1 Einführung
  gp 1.1 Informationstechnik, Informatik und EDV
  gp 1.2 Die Geschichte der Rechenmaschinen und Computer
    gp 1.2.1 Die Vorgeschichte
    gp 1.2.2 Die Entwicklung der elektronischen Rechner
    gp 1.2.3 Entwicklung der Programmiersprachen
  gp 1.3 Digitale Speicherung und Verarbeitung von Informationen
    gp 1.3.1 Digitale Bilddaten
    gp 1.3.2 Digitale Audiodaten
    gp 1.3.3 Digitale Speicherung von Text

gp

Prüfungsfragen zu diesem Kapitel (extern)


Galileo Computing

1.2 Die Geschichte der Rechenmaschinen und Computer  downtop

In diesem Buch ist von Computern die Rede, und natürlich wissen Sie ganz genau, was das ist. Wenn Sie allerdings den Versuch machen sollten, einen Computer mit allen Dimensionen seiner heutigen Möglichkeiten griffig zu definieren – wie würde diese Definition lauten? Vergangene Generationen sprachen etwa von programmgesteuerten Rechenautomaten, und gerade Fachleute scheinen noch heute lieber Rechner als Computer zu dieser Maschine zu sagen.

Sind Computer nur Rechner?

Aber ist Rechnen heutzutage die wichtigste Aufgabe der Computer? Es scheinen schließlich mehr Leute einen Webbrowser zu verwenden als die Tabellenkalkulation Excel, und das Bildbearbeitungsprogramm Photoshop ist erheblich populärer als spezielle Mathematikersoftware wie Mathematica oder Maple. Nun, dennoch ist ein Computer ein Gerät, das Probleme durch Berechnungen löst: Ein Computer kann nur diejenigen Sachverhalte »verstehen«, die man in Form von Zahlen und mathematischen Formeln darstellen kann. Dass es sich dabei heute auch um Bilder, Töne, Animationen, 3-D-Welten oder Filme handeln kann, liegt einfach an der enormen Rechengeschwindigkeit und Kapazität moderner Rechner.

Sehen Sie sich den Begriff »programmgesteuerter Rechenautomat« noch einmal genau an: Ein »Rechenautomat« ist ein Gerät, das automatisch etwas berechnet, sodass man dies nicht manuell erledigen muss. Das kann auch ein Taschenrechner oder sogar eine mechanische Rechenmaschine. Das Besondere, was ein Computer zu bieten hat, beschreibt der Begriff »programmgesteuert«. Ein Computerprogramm ist eine Abfolge von Rechenvorschriften, die aufeinander aufbauen können und Schritt für Schritt ausgeführt werden.

Algorithmen

Mit anderen Worten ist ein Computer nicht nur ein Rechenautomat, sondern ein Algorithmen-Automat. Ein Algorithmus, benannt nach dem arabischen Mathematiker Al Chwarismi, ist eine Schritt-für-Schritt-Anleitung zum Lösen mathematischer Probleme. Jeder Computer versteht eine oder mehrere formale Sprachen, in denen man ihm solche Algorithmen einprogrammieren kann. Ist ein Algorithmus erst einmal im Computer gespeichert, kann er immer wieder mit anderen Daten ausgeführt werden. Betrachten Sie etwa den folgenden Algorithmus aus dem Alltagsleben, der die Internet-Nutzungskosten verschiedener Kunden eines Providers berechnet:

1. Eingabe Tarif: Flatrate oder minutenbasiert?
       
2. War es die Flatrate? Macht 29,99 EUR. Berechnung beendet.
       
3. Minutenbasiert: Eingabe der Minuten.
       
4. Multipliziere die Minuten mit 0,01 EUR.
       
5. Addiere die Grundgebühr von 5,- EUR hinzu. Berechnung beendet.
       

Dieser einfache Algorithmus kann natürlich ohne weiteres von einem Menschen abgearbeitet werden. Er wird zwar langsamer rechnen als ein heutiger Computer, aber durchaus innerhalb einer annehmbaren Zeit damit fertig werden. Andererseits kann der Computer Millionen solcher Berechnungen in der Sekunde ausführen. Zwar wird er gewisse Leistungen des menschlichen Geistes wahrscheinlich niemals erreichen, aber schneller rechnen kann er allemal.

Darüber hinaus gibt es Algorithmen, an denen wir Menschen schlichtweg verzweifeln würden: Oder hätten Sie Lust, jeden einzelnen Pixel eines 10 x 10 cm großen hochauflösenden Bildes anhand der Farben seiner acht umgebenden Pixel neu zu berechnen, um das Bild zu vergrößern oder zu verkleinern? Ohne Sie entmutigen zu wollen: Ein solches Bild besteht, wenn es für den Druck geeignet sein soll, aus etwa 1 392 400 Pixeln – viel Spaß beim Rechnen!

So macht der Computer sich selbst immer unentbehrlicher: Sobald Computersysteme eine gewisse Komplexität erreichen, wird eine Anwendung erfunden, die ohne sie nicht zu bearbeiten wäre. Um diese Anwendung dann schneller und effizienter ausführen zu können, entsteht die nächste Computergeneration, für die dann wieder neue Anwendungsgebiete gefunden werden. Auf diese Weise ist der Fortschritt in der Computerentwicklung nicht aufzuhalten, und was auch immer als unüberwindbare Grenze galt, wurde von cleveren Ingenieuren irgendwann überschritten. Der vorliegende Abschnitt versucht, diesen Weg ein wenig konkreter zu beschreiben.

Seit Menschen überhaupt sesshaft in größeren Gemeinschaften zusammenleben, sind sie zum Rechnen gezwungen, um diese Gemeinschaften zu organisieren. Zu diesem Zweck wurden im Laufe der Zeit immer komplexere und ausgeklügeltere Geräte erfunden.


Galileo Computing

1.2.1 Die Vorgeschichte  downtop

Das erste Rechenhilfsmittel in der Geschichte war die Rechentafel oder der Abakus. Ähnliche Geräte wurden unabhängig voneinander zum Beispiel in China und im alten Rom entwickelt. Es handelte sich um eine Tafel mit verschiebbaren Steinen, die in mehreren Spalten angeordnet waren – das Ganze ähnelte den heutigen kugelbestückten Rechenhilfen, wie sie etwa in Grundschulen eingesetzt werden. Interessant ist, dass die Römer gar nicht erst versuchten, ihr recht umständliches Zahlensystem auf den Abakus zu übertragen, sondern ein modernes Stellenwertsystem darauf verwendeten.

Stellenwertsysteme

Überhaupt kann die Erfindung der Stellenwertsysteme zum Schreiben von Zahlen als eine der wichtigsten Errungenschaften auf dem Weg zum Computer betrachtet werden: Die brillante Idee, den Wert einer Ziffer von ihrer Position innerhalb der ganzen Zahl abhängig zu machen, hatten die Inder; die heutigen »arabischen« Zahlen wurden in Indien erfunden und später von den Arabern übernommen. Die wichtigste Erfindung überhaupt ist in diesem Zusammenhang die Null. Die indischen Mathematiker notierten sie zunächst als Punkt, später dann – und bis heute – als Kreis. Ohne die Null ist es nicht möglich, den Wert einer einzelnen Ziffer zu vervielfachen. Auch wenn sie für sich allein keinen mathematischen Wert besitzt, werden Sie zugeben, dass 2 000 etwas völlig anderes bedeutet als 2.

Die Erfindung der Stellenwertsysteme war der Ausgangspunkt für die Konstruktion immer ausgefeilterer mechanischer Rechenmaschinen: Im 17. Jahrhundert konstruierte der französische Mathematiker und Philosoph Blaise Pascal eine Addiermaschine; 1722 erfand Gottfried Wilhelm Leibniz eine komplexere Maschine, die bereits sämtliche Grundrechenarten beherrschte. Solche mechanischen Rechenapparaturen arbeiteten mit einem komplexen Gefüge aus Zahnrädern und ähnlichen Bauteilen, die aus der Uhrmacherei übernommen wurden.

Babbages Analytical Engine

Erst im 19. Jahrhundert entstand die Idee zu einer Apparatur, die mit heutigen Computern vergleichbar ist. Der britische Wissenschaftler Charles Babbage hatte bereits eine klassische mechanische Rechenmaschine namens Differential Engine gebaut und plante um 1850 den Bau eines weiteren mechanischen Geräts namens Analytical Engine. Es sollte der erste frei programmierbare Rechenautomat der Welt werden. Ohne es zu ahnen, nahm Babbage einige der wichtigsten Designprinzipien des Computers vorweg: Das Gerät sollte aus einem Rechenwerk namens »mill«, einem Programm- und Datenspeicher und einer Ein- und Ausgabeeinheit bestehen. Auch wenn spätere Rekonstruktionen auf der Basis von Babbages Aufzeichnungen ergaben, dass die Maschine funktioniert hätte, konnte Babbage selbst sie nicht fertig stellen, weil die damalige Mechanik keine Bauteile in ausreichender Präzision liefern konnte.

Interessant ist dagegen, dass es Grundideen einer Programmiersprache für die Analytical Engine gab. Babbage engagierte Ada Lovelace, die Tochter des berühmten Dichters Lord Byron, für die Entwicklung einer solchen Sprache. Ihr zu Ehren wurde eine in den 70er-Jahren entwickelte Programmiersprache Ada genannt.

Die Zuse Z3

Während die Rechenmaschinen in der zweiten Hälfte des 19. Jahrhunderts immer leistungsfähiger und komplexer wurden, beachtete dennoch niemand den Gedanken der Programmierbarkeit. Alle Rechenmaschinen bis etwa 1940, auch die elektrischen, waren auf die Berechnung einzelner eingegebener Rechenaufgaben beschränkt. Erst um diese Zeit erfand der Bauingenieur Konrad Zuse in Berlin programmierbare elektromechanische Rechenautomaten. Sein dritter Versuch, die Z3, funktionierte tatsächlich. Die Maschine arbeitete mit Relais, elektromagnetischen Schaltern aus der Telefontechnik. Sie verwendete eine binäre Fließkommaarithmetik mit einer Wortbreite von 22 Bit: 1 Bit für das Vorzeichen, 14 Bits für die Mantisse und 7 Bits für den Exponenten. Der Hauptspeicher besaß eine Kapazität von 64 Maschinenwörtern, also 64 x 22 Bits.


Elektrizität, Elektromechanik und Elektronik Bereits Anfang des 20. Jahrhunderts wurden die ersten elektrischen Rechenmaschinen konstruiert. Die Rechner, die Konrad Zuse seit den 30er-Jahren baute, waren elektromechanisch. In den 40er-Jahren begann man in den USA und Großbritannien mit der Entwicklung elektronischer Rechner.
In diesem Zusammenhang ist es wichtig, den Unterschied zwischen Elektrizität, Elekromechanik und Elektronik klarzumachen: Ein elektrisches Gerät ist jede Maschine, bei der mechanische Bauteile durch elektrischen Strom angetrieben werden. Elektromechanisch werden alle Schaltelemente genannt, die durch einen Elektromagneten gesteuert werden, beispielsweise die Relais, die Zuse für seine ersten Computer verwendet hat. Mit anderen Worten geschieht die Steuerung des Geräts durch elektrischen Strom, allerdings indirekt durch mechanische beziehungsweise magnetische Bauteile. Elektronische Geräte schließlich werden allein durch elektrischen Strom gesteuert – Bauteile wie die klassische Elektronenröhre oder der neuere Transistor dienen als elektrisch gesteuerte Schalter ohne mechanische Teile.


Galileo Computing

1.2.2 Die Entwicklung der elektronischen Rechner  downtop

Computer im heutigen Sinne sind alle programmierbaren Rechner, die elektronisch arbeiten. Die elektronischen Computer lassen sich grob in vier Generationen einteilen:

gp  1. Generation: Röhrenrechner
Seit den 40er-Jahren wurden Rechner auf der Basis von Elektronenröhren entwickelt.
gp  2. Generation: Transistorrechner
Ab den 50er-Jahren wurden die teuren und stromhungrigen Röhren durch Transistoren ersetzt.
gp  3. Generation: Rechner mit integrierten Schaltkreisen
In den 60er-Jahren gelang es, durch fotolithografische Verfahren große Mengen von Transistorschaltungen auf Halbleiterplatten unterzubringen – es begann die Entwicklung der integrierten Schaltkreise (englisch integrated circuits, abgekürzt ICs oder Chips).
gp  4. Generation: Rechner mit Mikroprozessor
Die frühen ICs waren fest verdrahtet – sie konnten nur eine einzelne, festgelegte Aufgabe erfüllen. Solche Chips für spezielle Anwendungszwecke gibt es noch heute. Anfang der 70er-Jahre wurden zusätzlich frei programmierbare ICs entwickelt, die man Mikroprozessoren nannte. Es dauerte allerdings noch über fünf Jahre, bis die ersten Computer mit diesen Prozessoren konstruiert wurden.

Abbildung 1.1   Eine kleine Auswahl verschiedener Elektronenröhren

Abbildung
Hier klicken, um das Bild zu Vergrößern


Röhrenrechner

Auf der Grundlage der Forschungen von John von Neumann, der das theoretische Modell eines Computers formulierte, wurden in den USA Geräte wie Harvard Mark I und Mark II oder der berühmte ENIAC gebaut. Diese erste Generation elektronischer Computer arbeitete mit Elektronenröhren als Schaltelementen. Diese mit den Glühlampen verwandten Vakuum-Bauteile wurden seit Ende des 19. Jahrhunderts entwickelt und dienten verschiedenen Zwecken – denken Sie beispielsweise an das Röhrenradio, in dem die Elektronenröhre als Verstärkerelement eingesetzt wird. Abbildung 1.1 zeigt eine Auswahl verschiedener Elektronenröhren, die zwischen 1927 und 1960 hergestellt wurden. Das Bild stammt übrigens aus dem virtuellen Physik-Museum der Universität Innsbruck (http://exphys.uibk.ac.at/museum/); Herr Professor Denoth stellte es mir freundlicherweise zur Verfügung. Auf der angegebenen Website finden Sie noch viele weitere interessante Bilder und Informationen zur Physikgeschichte, darunter auch weitere Röhren, die seit 1870 entwickelt wurden.

Das für die Computertechnik interessanteste Röhrenmodell war die Triode, die mit ihren drei Anschlüssen die früheste Verwirklichung eines rein elektronischen Schalters darstellt: Einer der drei Anschlüsse dient der Steuerung; wenn dort eine Spannung anliegt, fließt auch Strom durch die beiden anderen Anschlüsse.

Programmiert wurden die meisten Röhrenrechner durch Schalter und Steckverbindungen an großen Schalttafeln. Die einzige Möglichkeit, ein bestimmtes Programm für die spätere erneute Ausführung zu »speichern«, bestand darin, den Zustand der Schalttafel aufzumalen oder zu fotografieren. So dauerte es oft mehrere Stunden, den Computer in die Lage zu versetzen, komplexe Aufgaben zu erfüllen.

Erst allmählich begann man mit der Verwendung von Lochkarten zur Programm- und Dateneingabe. Die Lochkarte selbst wurde im 19. Jahrhundert erfunden, um mechanische Webstühle zu steuern; der Ingenieur Hermann Hollerith, ein Mitbegründer der späteren IBM, setzte sie um 1900 zur Speicherung von Daten einer US-Volkszählung ein, was die Berechnung der Ergebnisse mit Hilfe von Rechenmaschinen von den erwarteten Jahren auf wenige Wochen reduzierte.

Transistorrechner

Röhrenrechner hatten einige gravierende Nachteile: Sie waren zu groß, zu stromhungrig und wegen der gewaltigen Hitzeentwicklung zu störanfällig. Aus diesen Gründen wurde bald der 1947 erfundene Transistor für die Computerentwicklung eingesetzt. Transistoren sind Halbleiterbauteile, die prinzipiell dieselben Schaltaufgaben erledigen können wie die verschiedenen Arten von Röhren, aber kleiner, billiger und weniger stromhungrig sind. Der Begriff »Halbleiter«, der im Zusammenhang mit Computern immer wieder genannt wird, bezeichnet übrigens ein Material, dessen elektrische Leitungsfähigkeit etwa in der Mitte zwischen den Leitern (vielen Metallen) und Isolatoren liegt – das beliebteste chemische Element zur Fertigung von Halbleiterbauteilen ist Silizium, was der berühmten Gegend in Kalifornien, in der sich in den 60er-Jahren zahlreiche Elektronikfirmen ansiedelten, den Namen Silicon Valley eingebracht hat.

Miniaturisierung durch Transistoren

Erst durch die Einführung des Transistors gelangte die Elektronik zu ihrer vollen Blüte. Dies zeigte sich vor allem an den Transistorradios, die seit den 50er-Jahren zuhauf verkauft wurden. Auch für die entstehende Computerindustrie ergaben sich neue Impulse: Durch die Transistortechnik ließen sich kleinere, leistungsfähigere und weniger störanfällige Rechner konstruieren. Natürlich ist »klein« und »leistungsfähig« relativ – angesichts eines heutigen PCs oder gar Notebooks waren auch die Transistorrechner monströs, mindestens so groß wie eine ganze Reihe gewaltiger Kleiderschränke.

Auch die Transistorrechner wurden anfangs vor allem durch Lochkarten gesteuert. Mitte der 60er-Jahre begann man allerdings mit der Entwicklung von Terminals für den direkten Dialog mit dem Computer. Ein Programmierer konnte über eine Tastatur Befehle eingeben und ein unmittelbares Feedback erhalten, anfangs über einen Fernschreiber-Endlosdrucker, später über einen Monitor. Die Geschichte der Steuerung von Computern wird in Kapitel 4, Betriebssysteme, genauer behandelt.

Computer mit integrierten Schaltkreisen

Der Übergang von Transistorrechnern zu Computern mit ICs verlief unspektakulär und allmählich. Bereits in den frühen 70er-Jahren waren deshalb Computer in verschiedenen Größen verfügbar: Die Großrechner oder Mainframes – vor allem von IBM produziert – bildeten die Rechenzentren von großen Behörden, Versicherungskonzernen oder Universitäten. Daneben kamen die so genannten Kleincomputer auf (noch immer größer als die meisten Kleiderschränke); einer der führenden Hersteller war die Digital Equipment Corporation (DEC). Die Kleincomputer waren zwar nicht ganz so leistungsfähig wie Mainframes, dafür aber flexibler und sogar – mit entsprechend großen LKWs – transportfähig. Besonders wichtige Beispiele für Kleincomputer sind die Geräte der DEC-PDP-Baureihe, die untrennbar mit der Geschichte des Betriebssystems UNIX verknüpft ist.

Durch die Verwendung von ICs kam eine weitere Klasse von Geräten hinzu: die so genannten Minicomputer. Sie waren etwa so groß wie eine größere Kommode und verhältnismäßig leicht, aber durch die fortschreitende Miniaturisierung nicht viel weniger leistungsfähig als Kleincomputer. Ein herausragendes Beispiel für den Minicomputer ist die ebenfalls von DEC stammende VAX-Baureihe.

Für Klein- und Minicomputer wurden übrigens die ersten standardisierten Betriebssysteme und Anwendungsprogramme entwickelt. Dies erforderte die Entwicklung leicht kopierbarer Speichermedien. Ein wichtiger Schritt in diese Richtung war die Verwendung von Magnetbandspulen als Datenspeicher, ihr Aussehen und ihre Funktionsweise entsprachen den etwa zur selben Zeit verbreiteten Tonbändern.

Mikrocomputer

1971 wurde der erste programmierbare Mikrochip entwickelt, genannt Mikroprozessor. Allgemein wird der Intel 4004 als erster Prozessor betrachtet; später stellte sich aber heraus, dass ein anderes Unternehmen bereits einige Monate vor Intel einen ähnlichen Chip entwickelt hatte. Allerdings wussten die Intel-Entwickler nichts davon.

Der 4004 war ein 4-Bit-Mikroprozessor. Er konnte also Informationen verarbeiten, die aus einer Abfolge von vier Einsen oder Nullen bestanden. Mit dieser Wortbreite lassen sich sechzehn verschiedene Werte darstellen, zum Beispiel die Zahlen 0 bis 15. Der Prozessor verstand verschiedene Arten von grundlegenden Befehlen: Er beherrschte arithmetische Operationen, also Berechnungen in den Grundrechenarten, und konnte logische Verknüpfungen und Vergleiche durchführen und auf der Basis ihrer Ergebnisse die »Entscheidung« treffen, an einer anderen Stelle im Programm fortzufahren. Die mathematisch-logischen Grundlagen und ihre Verwirklichung durch elektronische Bauteile werden im nächsten Kapitel, Mathematische und technische Grundlagen, vorgestellt.

Die ersten Personal Computer

Intel unterschätzte zu Anfang die Möglichkeiten des Mikroprozessors; er wurde in Rechenmaschinen und Ampelanlagen eingebaut, aber nicht in einen Computer. Erst 1975 baute die Rechenmaschinenfirma MITS einen einfachen Mikrocomputer-Bausatz, den Altair 8800. Er war mit einer Reihe von DIP-Schaltern für die Eingabe der einzelnen Bits und einer Reihe von Leuchtdioden zur Anzeige der Ergebnisse ausgestattet. Der verwendete Mikroprozessor war der Intel 8080, der bereits 8 Bit verarbeiten konnte. Für dieses zunächst nicht besonders nützliche Gerät entwarfen Bastler Schnittstellen für Monitor und Tastatur, und ein junger Programmierenthusiast schrieb einen Interpreter (zeilenweisen Übersetzer) für die einfache Großrechner-Programmiersprache BASIC, der auf dem Gerät lief. Der Programmierer war Bill Gates. Die Entwicklung von Programmiersprachen-Paketen für die beginnende Personal- und Homecomputer-Industrie war das erste Geschäftsfeld seiner 1976 gegründeten Firma Microsoft.

Der erste weit verbreitete »richtige« Personal Computer auf Mikroprozessorbasis wurde von dem Bastelgenie Steve Wozniak entworfen und von dem brillanten Strategen und Visionär Steve Jobs vermarktet: Apple II hieß das 1977 entstandene Gerät, das sich in seinen verschiedenen Versionen bis 1984 Millionen Mal verkaufte. Dieser Computer definierte für fast zehn Jahre, was ein Homecomputer haben musste: Einen eingebauten BASIC-Interpreter, eine fest in das Gerät integrierte Tastatur, gewöhnliche Audiokassetten und später Disketten als Datenspeicher sowie einen Anschluss für die Bildausgabe auf einem gewöhnlichen Fernseher (die privaten User oder kleine Unternehmen konnten sich nicht auch noch einen Monitor leisten, zumal es ihn zu dem Zeitpunkt nur einfarbig gegeben hätte).

Der IBM PC

1981 stieg auch der Großrechner-Multi IBM in das Geschäft mit Personal Computern ein. Es war zwar untypisch für dieses Unternehmen, nicht alle Bauteile eines Computers selbst zu entwickeln, aber aus Gründen des Zeitdrucks kauften sie sich die Bestandteile ihres Geräts auf dem freien Markt zusammen. Der IBM PC war nicht unbedingt besser als seine Vorgänger, aber allein der gute Name des Herstellers schaffte das Vertrauen der Wirtschaft und der Industrie, dass PCs eine solide und zukunftsträchtige Technologie seien.

Einige Jahre war IBM Marktführer im Bereich der Personal Computer. Da jedoch immer mehr Hersteller kompatible Nachbauten auf den Markt brachten, die zunehmend billiger wurden, verlor der Konzern irgendwann den ersten Platz. Zudem zerstritten sie sich 1990 mit ihrem Betriebssystemlieferanten Microsoft. Seitdem wird nicht mehr von IBM definiert, wie ein »richtiger PC« auszusehen hat, sondern von Intel und Microsoft – wegen der Kombination aus Intel-Prozessoren und Microsoft-Windows-Betriebssystemen werden PCs heute mitunter als »WinTel«-PCs bezeichnet.

8-Bit-Homecomputer

Parallel blühte in der ersten Hälfte der 80er-Jahre der Markt mit reinen Homecomputern ohne professionelle Ambitionen. Interessant war auf diesem Gebiet zunächst der ZX81, den der Brite Clive Sinclair entwickelt hatte. Trotz seiner bescheidenen Ausstattung mit 1 KByte Arbeitsspeicher, Schwarzweißgrafik und Folientastatur verkaufte sich das Gerät vorzüglich, weil es der erste Computer war, der weniger als 100 £ kostete.

Der beliebteste Homecomputer der 8-Bit-Generation wurde allerdings der 1983 auf den Markt gebrachte Commodore C64. Eines der wichtigsten Verkaufsargumente war die reichhaltige Auswahl an Software, vor allem Computerspielen. Ein nicht ganz so beliebtes, aber durchaus konkurrenzfähiges Gerät war der Atari 800 XL; für diesen gab es zwar weniger Spiele, aber dafür war er besser programmierbar. Die Unterschiede zwischen diesen beiden Geräten waren allerdings relativ gering. Beide waren mit dem 8-Bit-Prozessor 6502 von MosTek ausgestattet, verfügten über 64 KByte RAM, Grafik mit 320 x 240 Pixeln und 16 Farben (beim Atari mit geringerer Auflösung sogar 256) sowie mehrstimmigen Synthesizer-Sound, der an das angeschlossene Fernsehgerät übertragen wurde. Obwohl die beiden Rechner sich also technisch sehr ähnlich waren, tobten zu jener Zeit »Systemkriege«, die sich ohne weiteres mit den heutigen PC/Macintosh- oder Linux/Windows-»Glaubenskriegen« vergleichen lassen.

16-Bit-Homecomputer

Die nächste Generation von Homecomputern, die in der zweiten Hälfte der 80er-Jahre erschien, basierte auf dem 16-Bit-Prozessor 68000 von Motorola und seinen Nachfolgern und war mit »richtigen« Betriebssystemen mit grafischer Benutzeroberfläche ausgestattet. Wieder stritten sich Commodore und Atari um den ersten Platz; auch die verschiedenen Modelle von Commodore Amiga und Atari ST waren mit vergleichbaren Features ausgestattet. Schon früher, nämlich 1984, war der ähnlich gestaltete Apple Macintosh erschienen; allerdings war er nicht für Heimanwender konzipiert.

Bemerkenswert ist, dass Standard-PCs erst viele Jahre später mit Multimedia-Fähigkeiten ausgestattet wurden, die auch nur ansatzweise mit Geräten wie Amiga oder ST vergleichbar waren. Noch heute sind diese Rechner bei manchen Künstlern oder Musikern beliebt.

Ausblick in die nähere Zukunft

Offiziell zählen alle heutigen Computer zur vierten Generation, den Computern mit Mikroprozessoren. Selbst mächtige Servermaschinen oder Großrechner werden durch zahlreiche parallel betriebene Prozessoren realisiert. Eine offizielle fünfte Generation ist niemals ausgerufen worden.

Dennoch zeichnen sich zurzeit verschiedene Entwicklungen ab, die in Zukunft zu einem Wandel auf dem Computermarkt führen könnten. Die wichtigsten sind folgende:

gp  Es entstehen immer mehr spezielle mobile Geräte, die Teile der Funktion des universellen PCs übernehmen. Dazu gehören Mobiltelefone mit Internet- und Multimedia-Funktionen, PDAs oder spezielle Geräte, die wie eine Armbanduhr oder ein Gürtel getragen werden können oder in Kleidungsstücke eingebaut sind (»Wearable Computers«). Im gleichen Maße wird das Internet, besonders in seiner drahtlosen Form, immer wichtiger.
gp  Über die klassische binäre Elektronik hinaus entstehen neue Ansätze für den Bau von Computern. Dazu gehören beispielsweise DNA-basierte »Bio-Rechner« oder Computer auf der Basis von Lichtwellenleitern. Ein weiteres interessantes Projekt ist der Quantencomputer: Da die Quantenmechanik besagt, dass ein Teilchen mehrere Zustände zur selben Zeit aufweisen kann, können so genannte QBits (Quanten-Bits) codiert werden, die »1 und 0 gleichzeitig« beinhalten – das Durchprobieren zahlreicher verschiedener Fälle muss nicht mehr nacheinander geschehen, sondern kann gleichzeitig erfolgen.
gp  Überraschend ruhig ist es dagegen in den letzten Jahren in der Öffentlichkeit um die »künstliche Intelligenz« geworden. Inzwischen hat sich die Forschung vorläufig von dem Gedanken verabschiedet, das komplexe menschliche Gehirn nachzuahmen. Stattdessen betreibt man erst einmal Grundlagenforschung und simuliert beispielsweise das Zusammenspiel weniger einzelner Nervenzellen in so genannten neuronalen Netzen.

Galileo Computing

1.2.3 Entwicklung der Programmiersprachen  toptop

Damit ein Computer nützliche Aufgaben erledigen kann, muss er programmiert werden. Da in der kurzen Übersicht über die Computergeschichte bereits von Programmiersprachen die Rede war, folgt hier ein kurzer Abriss über ihre Entwicklung.

Die Maschinensprache des Prozessors

Die einzige Sprache, die ein Mikroprozessor wirklich versteht, ist seine Maschinensprache. Sie besteht aus nichts weiter als Zahlen: Jeder Befehl, den der Prozessor »versteht«, besitzt einen bestimmten numerischen Code. Je nach Art des Befehls folgen auf die Befehlsnummer ein oder mehrere Argumente verschiedener Länge.

Ein Maschinenprogramm ist für Menschen so gut wie unlesbar und schon gar nicht schreibbar. Wenn Sie eine binäre Programmdatei mit einem Texteditor öffnen, werden die gespeicherten Zahlen als Zeichen interpretiert; es erscheint merkwürdiger Zeichensalat, an manchen Stellen unterbrochen von kleinen Textblöcken, wenn das Programm normalen Text enthält.

Angenommen, ein Programm enthält den folgenden Befehl:

65 0 0 0 98 

Bei dem Befehl 65 könnte es sich beispielsweise um die Anweisung handeln, einen bestimmten Wert auf einen Speicherstapel zu legen; der Wert wird als 32-Bit-Ganzzahl angegeben, hier 98. Im Texteditor würde dies etwa so aussehen:

A   b

Das große A besitzt den Zeichencode 65, das kleine b 98. Die drei Null-Bytes werden in manchen Editoren als merkwürdige Sonderzeichen, in anderen als Leerzeichen angezeigt. Ein Rückschluss auf die tatsächlichen Befehle ist so gut wie unmöglich.

Wenn Sie überhaupt jemals gezwungen sein sollten, Maschinensprachdateien von Hand zu modifizieren (zum Beispiel, um ein Computerspiel zu überlisten), verwenden Sie besser einen Hex-Editor, der die einzelnen Werte nicht nur als ASCII-Zeichen, sondern zusätzlich auch hexadezimal darstellt. Hier könnte das Ganze folgendermaßen aussehen:

41 00 00 00 52   A   b

Assembler – die »benutzerfreundliche« Maschinensprache

Um Maschinensprache halbwegs benutzbar zu machen, wurde der Assembler entwickelt. Statt die Befehle mit ihren tatsächlichen Zahlencodes zu schreiben, werden sie durch Kürzel dargestellt, die man sich mehr oder weniger gut merken kann – daher auch der Name »Mnemonics«. In der Regel werden diese Namen für die jeweiligen Assembler-Befehle unmittelbar vom Prozessorhersteller selbst festgelegt, um jegliches Chaos zu vermeiden.

Die Assembler-Sprache ist von Prozessor zu Prozessor völlig verschieden. Jede Prozessorarchitektur versteht ihre ganz eigenen Arten von Befehlen, die entsprechend unterschiedlich in Assembler umgesetzt werden.

Assembler ist sowohl der Name für diese vereinfachte Schreibweise der Maschinensprache als auch der Name für das Programm, das diese Sprache in die eigentliche Maschinensprache umsetzt (im Englischen wird die Sprache allerdings eher als Assembly Language bezeichnet).

Das Assembler-Programm führt gegenüber der eigentlichen Maschinensprache oft eine Reihe von Erleichterungen ein. Viele Assembler beherrschen etwa die Definition so genannter Makros: Immer wiederkehrende Abfolgen von Befehlen erhalten einen eindeutigen Namen und können dann später unter diesem Namen aufgerufen werden.

Assembler – praktischer Einsatz

Assembler wird heutzutage kaum noch zur Programmierung verwendet, zumindest nicht zur Erstellung vollständiger Programme. Wichtige Ausnahmen sind folgende:

1. In Betriebssystemen sind einige der besonders hardwarenahen Kernroutinen im Assembler des jeweiligen Prozessors geschrieben, und zwar vor allem deswegen, damit der gesamte Rest des Systems so weit von der Hardware abstrahiert wird, dass er vollständig in einer höheren Sprache – meist C – geschrieben werden kann. Diese Vorgehensweise wurde in den 70er-Jahren bei der Implementierung von UNIX entwickelt und gilt noch heute.
       
2. Auch Gerätetreiber, die zu den wichtigsten Bestandteilen der Betriebssysteme gehören, müssen manchmal in Assembler geschrieben werden.
       
3. Bestimmte Teile von Computerspielen werden hin und wieder in Assembler geschrieben. Spiele-Programmierern, besonders von schnellen 3-D-Spielen, kommt es vor allem auf Geschwindigkeit an.
       
4. Besonders systemnahe Computerviren (Bootsektorviren, die den Startbereich eines Datenträgers infizieren, und Programmviren, die ausführbare Programme befallen) sind meistens vollständig in Assembler geschrieben.
       

Die ersten höheren Programmiersprachen (Fortran, Cobol, BASIC)

Als praktischen Ersatz für die maschinenorientierten Sprachen wurden seit Mitte der 50er-Jahre die problem- oder benutzerorientierten Programmiersprachen eingeführt. Ihr Vorrat an möglichen Befehlen und ihre Syntax orientierten sich eher an den Bedürfnissen der Programmierer als an denen des Rechners.

Diese Programmiersprachen müssen in die Maschinensprache des konkreten Prozessors übersetzt werden. Dazu wurden zwei grundlegende Vorgehensweisen entwickelt:

gp  Der Compiler erzeugt ein dauerhaft lauffähiges Maschinensprach-Programm und speichert es als ausführbares Programm (binary executable) ab.
gp  Der Interpreter übersetzt den Quellcode dagegen Zeile für Zeile; der Code wird also während der Ausführung (zur Laufzeit) übersetzt. Interpretierte Sprachen werden häufig auch als Skriptsprachen bezeichnet.

Die erste Generation der höheren Programmiersprachen war sehr einfach. Beispielsweise gab es noch keine echte Programmstrukturierung. Das ursprüngliche BASIC verwendete etwa Zeilennummern, zu denen gesprungen werden konnte; Fortran benutzt spezielle Sprungmarken.

Jede dieser frühen Sprachen hatte eine spezielle Ausrichtung oder einen besonderen Verwendungszweck:

gp  Fortran, entwickelt in den 50er-Jahren, ist die Abkürzung für »Formula Translator«. Es handelt sich um eine besonders im Hinblick auf mathematische Bedürfnisse geschriebene Sprache. Sie wird manchmal auch heute noch von Ingenieuren oder Mathematikern gern verwendet.
gp  Cobol wurde ebenfalls in den 50er-Jahren entwickelt. Der Name ist die Abkürzung für »Common Business-Oriented Language«; es handelt sich also um eine Sprache für kaufmännische Anwendungszwecke, für Handel und Wirtschaft. Cobol ist eine relativ »geschwätzige« Sprache. Es braucht relativ viele Worte, um verhältnismäßig kurze Anweisungen auszudrücken. Beispielsweise können Sie in fast jeder Programmiersprache folgendermaßen den Wert der Variablen b durch 7 teilen und das Ergebnis in einer zweiten Variablen namens a speichern:
 a = b / 7
    In Cobol wird dagegen folgende Anweisung verwendet:
       
DIVIDE B BY 7 GIVING A
gp  BASIC wurde 1960 am britischen Dartmouth College entwickelt. Der Name steht für »Beginners’ All-purpose Symbolic Instruction Code«; es handelt sich also um eine eher einfache Sprache für Anfänger. Die Sprache fand seit der zweiten Hälfte der 70er-Jahre, als die neu gegründete Firma Microsoft sie zum ersten Mal für Personal Computer anpasste, eine gewaltige Verbreitung: So gut wie jeder 80er-Jahre-Homecomputer hatte irgendeine BASIC-Variante im ROM eingebaut.

Ein BASIC-Beispiel

    Zur Verdeutlichung sehen Sie hier ein kleines Beispielprogramm in »allgemeinem« BASIC, das fast jeder klassische BASIC-Interpreter verstehen würde:
       
10 PRINT "Wie heißt du?"
20 INPUT A$
30 PRINT A$; " ist ein interessanter Name."
40 PRINT "Noch mal (j/n)?"
50 INPUT J$
60 IF J$ = "j" THEN GOTO 10
    Die einzelnen Programmzeilen bedeuten Folgendes:
       
10: Ausgabe des Textes »Wie heißt du?«. 20: Eingabe der Variablen A$, die durch das Dollarzeichen als String-Variable (Textinhalt) gekennzeichnet wird. 30: Der eingegebene Name wird ausgegeben, gefolgt von »ist ein interessanter Name«. 40: Der User wird gefragt, ob er einen weiteren Durchgang wünscht. 50: Eingabe der Variablen J$. 60: Hat J$ den Wert »j«, dann geht es weiter bei Zeile 10; das Programm wird erneut ausgeführt.

Imperative oder prozedurale Programmiersprachen (Pascal, C)

Diese Programmiersprachen erlauben eine Strukturierung von Programmen, darüber hinaus ist eine gewisse Modularisierung möglich: Programme können in kleinere logische Einheiten eingeteilt werden, Prozeduren oder Funktionen genannt. Diese sind bis zu einem gewissen Grade wieder verwendbar.

Pascal wurde seit 1968 von dem Schweizer Mathematikprofessor Niklaus Wirth ausdrücklich als Lehrsprache entwickelt. Noch heute ist Pascal eine der beliebtesten Sprachen, um Schülern oder Studenten das Programmieren beizubringen, weil die Sprache zu einer klaren Programmstrukturierung zwingt.

C wurde 1971 von Dennis Ritchie und Brian Kernighan bei AT&T entwickelt, insbesondere, um eine portierbare (auf andere Rechnerplattformen übertragbare) Version des Betriebssystems UNIX zu schreiben. Ursprünglich wurde C für einen ganz bestimmten Computer und dessen Besonderheiten entwickelt, die DEC PDP-7. Aus diesem Grund ist C erstaunlich nah an den Fähigkeiten von Assembler, ohne so benutzerunfreundlich zu sein wie dieser.

Ein Pascal-Beispiel

Hier sehen Sie zunächst ein einfaches Pascal-Programm:

PROGRAM tagesgruss;
VAR name: STRING;
    zeit: INTEGER;
 
BEGIN
   writeln ('Hallo. Gib deinen Namen ein!');
   readln (name);
   writeln ('Gib die Uhrzeit ein - nur Stunde!');
   readln (zeit);
   IF zeit < 12 THEN
      writeln ('Guten Morgen ', name)
   ELSE       IF zeit < 18 THEN
         writeln ('Guten Tag ', name)
      ELSE
         writeln ('Guten Abend', name);
END.

Das Programm begrüßt den User freundlich mit »Hallo«, und er wird aufgefordert, seinen Namen einzugeben. Daraufhin wartet es auf die Eingabe, die in der Variablen name gespeichert wird. Als Nächstes fragt das Programm nach der Uhrzeit beziehungsweise genauer nach der Stunde.

In den verschachtelten IF-ELSE-Bedingungen wird dann je nach Tageszeit »Guten Morgen«, »Guten Tag« oder »Guten Abend« ausgegeben.

Ein C-Beispiel

C wird in Kapitel 5, Grundlagen der Programmierung, ausführlich behandelt. Trotzdem sehen Sie hier als Kontrast zu Pascal bereits ein kleines C-Beispielprogramm:

#include <stdio.h>
 
int main ()
{
   int a, b;
   printf ("Geben Sie die erste Zahl ein: ");
   scanf ("%d", &a);
   printf ("Geben Sie die zweite Zahl ein: ");
   scanf ("%d", &b);
   if (a < b)
      printf ("%d ist kleiner als %d.\n", a, b);
   else if (a > b)
      printf ("%d ist groesser als %d.\n", a, b);
   else
      printf ("Zweimal die Zahl %d.\n", a);
   return 0;
}

Es wird die Eingabe zweier Zahlen erwartet. Anschließend werden die beiden Zahlen verglichen; je nach Größe der beiden Zahlen wird eine entsprechende Meldung ausgegeben.

Die wichtigste Besonderheit ist, dass es kein Hauptprogramm gibt wie in Pascal, sondern nur die spezielle Funktion main(), die vom Betriebssystem aufgerufen wird. Die weiteren Eigenheiten von C werden, wie gesagt, in Kapitel 5 erläutert.

Objektorientierte Programmiersprachen (Smalltalk, C++, JAVA, C#)

In einer objektorientierten Sprache wird in wieder verwendbaren Paketen programmiert, den so genannten Klassen. Eine Klasse ist eine allgemeine Vorlage für die Konstruktion von Objekten. Ein Objekt ist eine Datenstruktur, die selbst Funktionen enthält, um sich auf die gewünschte Art und Weise zu »verhalten«.

Die wichtigsten Vorteile dieser Art der Programmierung sind folgende:

gp  Kapselung: Datenstrukturen außerhalb eines Objekts können nicht direkt dessen innere Daten manipulieren, sondern nur seine offiziellen Methoden (Schnittstellen nach außen) benutzen. Dies sorgt für ein klares Programmdesign und schützt vor vielen Fehlern.
gp  Vererbung: Klassen können ihre Eigenschaften und Methoden an »Kind-Klassen« abgeben, in denen nur noch die Unterschiede programmiert werden müssen. Dies beschleunigt die Softwareentwicklung und macht Programme noch einmal erheblich übersichtlicher.

Zu den wichtigsten objektorientierten Programmiersprachen gehören folgende:

gp  SmallTalk war die erste objektorientierte Sprache überhaupt. Sie wurde in den 70er-Jahren zur Programmierung der ersten grafischen Benutzeroberfläche entwickelt.
gp  C++ ist die objektorientierte Erweiterung der Programmiersprache C und wurde von Bjarne Stroustrup entwickelt. Da C++ abwärts kompatibel zu C ist, wurde die Sprache bald von C-Programmierern eingesetzt; ihre besonderen Vorteile als objektorientierte Sprache wurden aber erst langsam angenommen.
gp  Java besitzt vor allem die Besonderheit, dass es sich um eine plattformunabhängige Sprache handelt. Sie brauchen ein Java-Programm nur einmal zu kompilieren, es läuft innerhalb eines speziellen Programms für die verschiedenen Plattformen, der virtuellen Java-Maschine (JVM).
gp  C# ist eine recht neu entwickelte Sprache von Microsoft. Es handelt sich um eine der Sprachen, mit denen Anwendungen für das .NET-Framework entwickelt werden können. Zwar betont Microsoft aus Marketing-Erwägungen stets die Verwandtschaft mit C++, aber dennoch hat C# mehr mit Java gemeinsam als mit C++.





  

Einstieg in PHP 5

Einstieg in Java

C von A bis Z

Einstieg in C++

Einstieg in Linux

Einstieg in XML

Apache 2




Copyright © Galileo Press GmbH 2004
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de