siehe Computer
Computer, elektronisches Gerät, das Befehlssätze oder Programme entgegennehmen und die Programme ausführen kann, indem es Berechnungen numerischer Daten oder eine Auswertung und Verarbeitung anderer Arten von Informationen vornimmt. Die moderne Welt der Hochtechnologie ist ohne die Entwicklung des Computers nicht vorstellbar. Computer verschiedener Typen und Größen finden im Bereich der Speicherung und Verarbeitung von Daten weite Verbreitung in der Gesellschaft, angefangen bei geheimen Regierungsdaten über Transaktionen der Banken bis hin zu privaten Haushaltskonten. Computer haben durch die Techniken der Automation ein neues Zeitalter der Fabrikation eröffnet und moderne Kommunikationssysteme verbessert. Sie sind grundlegende Hilfsmittel in fast jedem Gebiet der Forschung und angewandten Technik, wie z.~B. für die Konstruktion von Modellen, die man für Wettervorhersagen benutzt. Datenbankanbieter und Computernetzwerke offerieren eine große Auswahl von Informationsquellen.
Computertypen
Zwei Haupttypen von Computern werden heutzutage verwendet: analoge und digitale Computer. Meistens ist jedoch mit dem Begriff Computer der digitale Typ gemeint. Analogcomputer ziehen ihren Nutzen aus der mathematischen Ähnlichkeit physikalischer Beziehungen in bestimmten Problemen und verwenden z.~B. elektronische oder hydraulische Schaltungen, um das physikalische Problem zu simulieren. Digitalcomputer lösen Probleme durch Berechnungen und zerlegen jede Zahl in einzelne Binärzahlen.
Anlagen, die sowohl digitale als auch analoge Computerkomponenten enthalten, werden Hybridcomputer genannt. Sie kommen meist für Probleme mit einer hohen Anzahl komplexer Gleichungen – wie bei Zeitintegralen – zum Einsatz. Daten in analoger Form können mit einem Analog-Digital-Wandler auch Digitalcomputern zugänglich gemacht werden. Ebenso dienen Digital-Analog-Wandler für den umgekehrten Vorgang.
Analogcomputer
Ein Analogcomputer ist im Prinzip ein Rechenautomat, bei dem die einzelnen Rechenschritte durch analog verlaufende physikalische Prozesse dargestellt werden. Heutzutage realisiert man diese Prozesse durch elektronische Bauteile. Früher verwendete man auch mechanische, pneumatische oder auch elektromechanische Elemente. Ein typischer elektromechanischer Analogcomputer wandelt z.~B. Eingaben in Spannungen um, die mit speziellen Schaltelementen addiert oder multipliziert werden. Die resultierenden Ergebnisse werden in einem fortlaufenden Prozeß erzeugt und an einen Bildschirm weitergeleitet. Für andere Zwecke lassen sich diese Ergebnisse auch in eine andere Form umwandeln.
Digitalcomputer
Alle Handlungen, die ein Digitalcomputer vornimmt, basieren auf einer Operation: der Fähigkeit zu erkennen, ob ein Schalter oder ein „Gatter“ geöffnet oder geschlossen ist. Ein Computer kann also nur zwei Zustände in seinen mikroskopisch kleinen Schaltungen erkennen: an oder aus, hohe oder niedrige Spannung oder bei Zahlen 0 oder 1. Die Geschwindigkeit, mit der ein Computer diesen einfachen Akt bewältigt, macht ihn jedoch zu einem Wunderwerk der modernen Technologie. Computergeschwindigkeiten werden in Megahertz gemessen, also in Millionen Zustandsänderungen (Takten) pro Sekunde. Ein Computer mit einer „Taktrate“ von 100~Megahertz – einer typischen Geschwindigkeit für Mikrocomputer – ist in der Lage, hundert Millionen einzelne Arbeitsschritte in jeder Sekunde durchzuführen. Normale Mikrocomputer erreichen 66 bis 130~Millionen Operationen pro Sekunde, während Supercomputer in der Forschung Geschwindigkeiten von Milliarden Zustandsänderungen in der Sekunde erreichen.
Die Geschwindigkeit und Rechenleistung eines Digitalcomputers wird natürlich durch den Umfang der Daten beeinflußt, der in einem Takt bearbeitet werden kann. Mit einem Schalter kann man nur zwei Befehle oder Zahlen wiedergeben: AN würde eine Instruktion oder Zahl symbolisieren und AUS die andere. Durch die Zusammenfassung ganzer Gruppen von Schaltern, die als gesamte Einheiten geprüft werden können, steigert der Computer die Anzahl der Operationen, die in jedem Takt erkannt werden können. Wenn ein Computer beispielsweise zwei Schalter gleichzeitig ausliest, kann er vier Zahlen (0 bis 3) darstellen oder einen von vier Befehlen in jedem Takt ausführen: AUS-AUS~(0), AUS-EIN~(1), EIN-AUS~(2) oder EIN-EIN~(3).
Geschichte
Die erste Addiermaschine, ein Vorläufer des Digitalcomputers, wurde 1642 von Blaise Pascal erfunden. Dieses Gerät enthielt eine Reihe von zehnzähnigen Zahnrädern, bei denen jeder Zahn eine Ziffer von null bis neun darstellte. Die Zahnräder waren so miteinander verbunden, daß Zahlen addiert wurden, wenn man die Zahnräder um die richtige Anzahl von Zähnen weiterdrehte. In den siebziger Jahren des 17.~Jahrhunderts verbesserte Gottfried Wilhelm Leibniz diese Maschine. Seine Konstruktion konnte auch multiplizieren.
Der französische Erfinder Joseph Marie Jacquard verwendete bei dem Entwurf einer automatischen Webmaschine dünne, gelochte Holzbretter zur Steuerung komplizierter Webmuster. In der ersten Hälfte des 19.~Jahrhunderts entwickelte George Boole die nach ihm benannte Boolesche Algebra. Sie bildet praktisch die mathematische Grundlage für jede digitale Rechen- und Steuerschaltung. Während der achtziger Jahre des 19.~Jahrhunderts führte der amerikanische Statistiker Herman Hollerith zur Datenverarbeitung die Idee der Lochkarten ein, die Jacquards Holzbrettern ähnelten. Mit der Herstellung eines Systems zum Analysieren der gelochten Karten mittels elektrischer Kontakte war er in der Lage, die statistischen Daten der US-amerikanischen Volkszählung von 1890 zusammenzustellen.
Die analytische Maschine
Ebenfalls im 19.~Jahrhundert arbeitete der britische Mathematiker und Erfinder Charles Babbage die Prinzipien der modernen Digitalcomputer aus. Er entwarf eine Reihe von Maschinen, wie beispielsweise die Differenzmaschine. Sie diente zur Lösung komplizierter mathematischer Probleme. Viele Historiker halten Babbage und seine Assistentin und Lebensgefährtin Augusta Ada Byron (Lady Lovelace, 1815-1852), die Tochter des englischen Dichters Lord Byron, für die eigentlichen Erfinder des Digitalcomputers. 1844 veröffentlichte Babbage das Konzept der Analytical Engine. Sie wurde allerdings nie von ihm gebaut. Erst sein Sohn konnte Teile dieser analytischen Maschine verwirklichen. Sie besaß bereits zahlreiche Eigenschaften moderner Computer. Die Konstruktion hatte einen Eingabestrom in Form eines Lochkartenstapels, einen „Speicher“ zur Datensicherung und ein „Werk“ für arithmetische Operationen sowie einen Drucker zur dauerhaften Aufzeichnung von Daten.
Frühe Computer
Der Bau von Analogcomputern begann am Anfang des 20.~Jahrhunderts. Frühe Modelle verwendeten für Berechnungen rotierende Stifte und Getriebe. Numerische Näherungen von Gleichungen, die zu komplex für irgendeine andere Art der Berechnung waren, ließen sich mit diesen Maschinen auswerten.
Der deutsche Ingenieur Konrad Zuse (1910-1995) baute 1936 die erste mit dem binären Zahlensystem arbeitende programmgesteuerte Rechenanlage (Z1). Zuse war Bauingenieur und wollte rechnerische Routinearbeiten automatisieren. War der Z1 noch rein mechanisch, so enthielt sein Nachfolgemodell Z2 bereits elektromechanische Teile. Von der Deutschen Versuchsanstalt für Luftfahrt finanziert, war der Z3 der erste betriebsfähige programmgesteuerte, mit 2600~Relais ausgestattete Rechenautomat mit logischen Schaltungen (Und, Oder, Nicht). Dieser Computer hatte eine Speicherkapazität von 64~Zahlen zu je 22~Dualstellen und konnte in der Sekunde bis zu 20 arithmetische Grundoperationen durchführen. Vier Jahre später veröffentlichte Zuse die erste Programmiersprache der Welt: Plankalkül. Mit dem Z22 entwickelte Zuse seinen ersten Elektronenrechner, mit dem Z23 einen Transistorenrechner.
Elektronische Computer
Während des 2.~Weltkrieges entwickelte eine Gruppe Wissenschaftler und Mathematiker ein Gerät, das heute als erster elektronischer Digitalcomputer angesehen wird: Colossus. Im Dezember 1943 war Colossus mit seinen 1~500~Vakuumröhren betriebsbereit. Er wurde von der Gruppe unter dem Vorsitz von Alan Turing für den größtenteils erfolgreichen Versuch gebraucht, verschlüsselte Funksprüche zu dekodieren. Unabhängig davon wurde schon 1939 in den USA der Prototyp eines elektronischen Rechners von John Atanasoff und Clifford Berry am Iowa State College gebaut. Diesem Prototyp folgte 1945 der ENIAC (Electronic Numerical Integrator And Computer). Der ENIAC bekam ein Patent erteilt, das allerdings 1973 aufgehoben wurde. Die Entwickler des ENIAC hatten gegen das Urheberrecht verstoßen. Das Grundkonzept basierte auf dem Atanasoff-Berry-Computer (ABC). Der ENIAC enthielt 18~000~Elektronenröhren und konnte mehrere hundert Multiplikationen pro Minute durchführen, aber sein Programm war fest im Prozessor verdrahtet und mußte per Hand geändert werden. Ein Nachfolger des ENIAC mit einem Programmspeicher wurde nach den Konzepten des ungarisch-amerikanischen Mathematikers John von Neumann gebaut. Die Befehle wurden in einem Speicher abgelegt. Dadurch ließen sich die Geschwindigkeitseinschränkungen durch den Papierstreifenleser während der Programmausführung beseitigen. Außerdem ermöglichte dieser Programmspeicher die Lösung verschiedener Probleme, ohne den Computer neu zu verdrahten. Der Einsatz von Transistoren in Computern zum Ende der fünfziger Jahre ermöglichte den Bau von kleineren, schnelleren und vielseitiger verwendbaren Logikelementen, als mit Elektronenröhrenrechnern erreichbar gewesen wäre. Weil Transistoren weniger Strom verbrauchen und eine längere Lebensdauer aufweisen, war allein diese Entwicklung verantwortlich für die verbesserten Rechner, die als Computer der zweiten Generation bezeichnet werden.
Integrierter Schaltkreis
Zum Ende der sechziger Jahre erschien der integrierte Schaltkreis (IC: Integrated Circuit) und ermöglichte die Fabrikation zahlreicher Transistoren auf einem Siliciumsubstrat, wobei die Verbindungsdrähte ebenfalls direkt integriert werden. Der IC führte zu einer weiteren Preissenkung. Außerdem sind ICs wesentlich kleiner (Platzersparnis) und weniger fehleranfällig als Transistoren. Der Mikroprozessor wurde Mitte der siebziger Jahre aufgrund der Einführung von hochintegrierten (LSI: Large Scale Integrated) und sehr-hochintegrierten (VLSI: Very Large Scale Integrated) Schaltungen realisiert, bei denen viele tausend miteinander verbundene Transistoren auf ein einzelnes Siliciumsubstrat geätzt wurden.
Zurück zu den „schalterlesenden“ Fähigkeiten des modernen Computers: Computer der siebziger Jahre konnten im allgemeinen acht Schalter gleichzeitig überprüfen. Sie waren also in der Lage, acht binäre Datenziffern, sogenannte Bits (BInary digiTs), in jedem Takt auszuwerten. Eine Gruppe von acht Bits bezeichnet man als Byte. Jedes Byte kann eine der 256 möglichen Kombinationen von AN- und AUS-Einstellungen (oder Einsen und Nullen) enthalten. Jedes dieser Muster entspricht einer Anweisung, einem Teil einer Anweisung oder einem bestimmten Datenelement. Das kann z.~B. eine Zahl, ein Zeichen oder ein graphischen Symbol sein. Das Muster 11010010 kann beispielsweise Binärdaten darstellen – in diesem Fall die Dezimalzahl 210 (siehe Zahlensysteme). Hinter diesem Muster kann sich auch eine Handlungsanweisung für einen Vergleich von Daten verbergen, die in den Computerschaltungen gespeichert sind.
Die Entwicklung von Prozessoren, die 16, 32 oder 64~Datenbits gleichzeitig verarbeiten können, erhöhte die Geschwindigkeit der Computer. Unter dem Befehlssatz versteht man die vollständige Liste der erkennbaren Schaltmuster – also die Liste aller Operationen, die ein Computer beherrscht. Sowohl die Anzahl der gleichzeitig verarbeitbaren Bits als auch der Umfang des Befehlssatzes vergrößerte sich kontinuierlich mit der wachsenden Entwicklung der modernen Digitalcomputer.
Hardware
Moderne Digitalcomputer sind unabhängig von ihrer Größe konzeptionell ähnlich. Trotzdem können sie aufgrund der Faktoren Kosten und Leistung in verschiedene Kategorien unterteilt werden: Der Personalcomputer oder Mikrocomputer ist ein verhältnismäßig kostengünstiges Gerät, das auf dem Schreibtisch Platz findet (einige werden Laptops genannt und passen in die Aktentasche). Die Workstation ist ein Mikrocomputer mit verbesserten Graphik- und Kommunikationseigenschaften. Er eignet sich besonders für die Arbeit im Büro. Der Minicomputer ist ein Computer etwa von der Größe einer Waschmaschine, der normalerweise zu teuer für den privaten Einsatz ist und mit seinen Fähigkeiten in Betrieben, Schulen oder Laboratorien Verwendung findet. Schließlich gibt es den Großrechner (Mainframe), eine große und teure Anlage, die den Bedürfnissen von größeren Firmen, Behörden und wissenschaftlichen Forschungseinrichtungen und ähnlichen Institutionen gerecht wird (die größten und schnellsten sind die sogenannten Supercomputer).
Ein Computer setzt sich meist aus fünf Hauptelementen zusammen: (1)~eine Zentrale Verarbeitungseinheit (Zentraleinheit); (2)~Eingabegeräte; (3)~Speicher; (4)~Ausgabegeräte und (5)~ein Kommunikationsnetzwerk, der sogenannte Bus, der alle Elemente des Systems verbindet und Anschlüsse zu Geräten außerhalb des Systems anbietet. Zentrale Verarbeitungseinheit (CPU)
Die CPU (Central Processing Unit) kann aus einem einzelnen Chip oder einer Reihe von Chips bestehen, die arithmetische und logische Berechnungen sowie die zeitliche Abstimmung und Kontrolle der anderen Elemente des Systems übernehmen. Miniaturisierungs- und Integrationstechniken führten zur Entwicklung des CPU-Chips. Diesen bezeichnet man auch als Mikroprozessor, der außerdem weitere Schaltungen sowie eigene Speichereinheiten enthält. Mikroprozessoren ermöglichten den Bau kleinerer Computer. Außerdem verringert ihr Einsatz den Bedarf an zusätzlichen Schaltungen. Die meisten der heutigen Personalcomputer arbeiten mit Mikroprozessoren.
Die meisten CPU-Chips und Mikroprozessoren setzen sich aus vier funktionalen Teilen zusammen: (1)~einer arithmetisch-logischen Einheit, (2)~Registern, (3)~einer Steuerungseinheit und (4)~einem internen Bus. Die arithmetisch-logische Einheit verhilft dem Chip zu seinen Rechenfähigkeiten und gestattet arithmetische und logische Operationen. Die Register sind kurzzeitige Speicherbereiche, die Daten sowie Anweisungen vorhalten und die Orte im Speicher sowie Ergebnisse dieser Operationen aufnehmen. Die Steuerungseinheit besitzt drei prinzipielle Aufgaben. Sie übernimmt die zeitliche Abstimmung und Regulierung des gesamten Computersystems, ihr Anweisungsdekodierer liest die Datenmuster der Register und setzt diese Muster in Aktionen wie beispielsweise Addieren oder Vergleichen um. Schließlich bestimmt die Unterbrechungseinheit der Steuerung, in welcher Reihenfolge einzelne Arbeitsschritte die CPU in Anspruch nehmen und wieviel CPU-Zeit sie verbrauchen dürfen.
Die letzte Komponente des CPU-Chips oder Mikroprozessors ist sein interner Bus. Dieses Netz von Kommunikationsleitungen verbindet die internen Elemente miteinander und führt außerdem zu externen Anschlüssen, die den Prozessor mit den übrigen Komponenten des Computers verbinden. Die drei Arten von CPU-Bussen sind: (1)~ein Steuerbus aus zwei Leitungen, von denen eine Eingabesignale empfängt und die andere Steuersignale aus dem Inneren der CPU erzeugt, (2)~der Adreßbus, eine unidirektionale Leitung vom Prozessor, die die Orte verwaltet, an denen sich Daten im Speicher befinden, und (3)~der Datenbus, eine bidirektionale Übertragungsleitung, die sowohl Daten aus dem Speicher liest als auch neue Daten in den Speicher schreibt.
Eingabegeräte
Diese Geräte dienen dem Computeranwender zur Eingabe von Daten, Befehlen und Programmen für die CPU. Das gebräuchlichste Eingabegerät ist die Tastatur. Über die schreibmaschinenähnliche Tastatur eingetippte Daten werden vom Computer in erkennbare Muster übersetzt. Andere Eingabegeräte sind z.~B. Lichtgriffel, die graphische Informationen von elektronischen Tabletts in den Computer übertragen, Joysticks und die Maus, die physikalische Bewegung in Bewegungen auf dem Computerbildschirm umsetzt. Lichtscanner „lesen“ die Wörter oder Symbole von einer gedruckten Seite ab und übersetzen sie in elektronische Muster, die der Computer verändern und speichern kann. Wie schon ihr Name andeutet, erkennen Spracherkennungsmodule gesprochene Wörter und wandeln sie in digitale Signale für den Computer um. Speichergeräte lassen sich ebenfalls als Eingabegeräte für die Zentraleinheit einsetzen.
Speicher
Computer können Daten intern (im Arbeitsspeicher) oder extern (auf Speichermedien) speichern. Interne Anweisungen oder Daten können temporär in RAM-Siliciumchips (RAM: Random Access Memory, wahlfreier Zugriffspeicher) direkt auf der Hauptplatine des Computers oder auf Speichersteckkarten abgelegt werden. Diese RAM-Chips bestehen aus bis zu einer Million Schaltern, die auf Veränderungen des elektrischen Stromes reagieren. Sogenannte statische RAM-Chips behalten ihre Daten, solange elektrischer Strom durch die Schaltung fließt. Dynamische RAM-Chips (DRAM) benötigen dagegen in regelmäßigen Intervallen hohe oder niedrige Spannungen – etwa alle zwei Millisekunden –, um ihre Informationen nicht zu verlieren.
Eine andere Art von internem Speicher besteht aus Siliciumchips, deren Schalter schon alle eingestellt sind. Die Muster in diesen ROM-Chips (Read-Only Memory: Nur-Lese-Speicher) bilden die Befehle, Daten und Programme, die der Computer für eine korrekte Funktionsweise benötigt. RAM-Chips sind im Prinzip wie Papierseiten, die beschrieben, wieder radiert und neu verwendet werden können. ROM-Chips dagegen sind wie Bücher, bei denen schon alle Wörter auf den Seiten gedruckt stehen. Sowohl RAM- als auch ROM-Chips sind über Schaltungen mit der CPU verbunden.
Externe Speichermedien, die sich im Computergehäuse befinden können, stehen aber außerhalb der Hauptplatine. Diese Geräte speichern Daten z.~B. durch Ladungen auf einem magnetisch reagierenden Medium wie einem Magnetband oder häufiger einer Platte, die mit einer dünnen Schicht metallischer Partikel überzogen ist. Die gebräuchlichsten externen Speichermedien sind die sogenannten Disketten und Festplatten, obwohl in den meisten großen Computeranlagen Magnetbandeinheiten eingesetzt werden. Disketten können mehrere hunderttausend Bytes bis hin zu über einer Million Datenbytes enthalten – je nach verwendetem System. Festplatten können nicht aus ihrem Laufwerksgehäuse entfernt werden, denn hier ist die Elektronik zum Auslesen und Schreiben der Daten auf der magnetischen Plattenoberfläche enthalten (Wechselplatten werden mit Laufwerksgehäuse ausgewechselt). Festplatten haben eine Speicherkapazität von mehreren Millionen bis zu einigen Milliarden Bytes. Im Bereich der CD-ROM wird die gleiche Lasertechnik wie bei der Audio-CD verwendet, so daß eine CD Datenmengen bis zu 800~Megabyte aufnehmen kann.
Ausgabegeräte
Diese Geräte setzen den Anwender in die Lage, die Ergebnisse der Computerberechnungen oder Datenverarbeitung anzusehen. Das häufigste Ausgabegerät ist der Bildschirm, der Zeichen und Graphiken wie auf einem Fernsehschirm anzeigt. Der klassische Bildschirm enthält wie ein Fernseher eine Kathodenstrahlröhre. Kleine, tragbare Computer sind heutzutage allerdings mit Flüssigkristallanzeigen (LCD: Liquid Crystal Displays) oder elektronischen Leuchtschirmen ausgerüstet. Andere Standardausgabegeräte stellen beispielsweise Drucker und Modems dar. Ein Modem verbindet zwei oder mehr Computer durch die Übersetzung von digitalen in analoge Signale zur Übertragung von Daten über Telekommunikationsleitungen.
Betriebssysteme
Peripheriegeräte wie z.~B. Laufwerke, Drucker, Kommunikationsnetzwerke verarbeiten und speichern Daten anders, als der Computer sie behandelt. Interne Betriebssysteme sind hauptsächlich dazu ausgelegt, den Datenfluß verschiedener Quellen zu koordinieren und zu übersetzen, wie beispielsweise von Laufwerken oder Koprozessoren (Prozessoren, die zwar gleichzeitig mit dem Hauptprozessor arbeiten, aber andere Aufgaben wahrnehmen). Ein Betriebssystem ist ein ständig im Speicher befindliches Hauptsteuerprogramm. Es setzt die Befehle des Anwenders um, wie z.~B. Anzeigen, Drucken, Kopieren von Dateien, Auflisten aller Dateien eines Verzeichnisses oder das Ausführen eines bestimmten Programms.
Programmierung
Ein Programm besteht aus einer Folge von Anweisungen, die der Hardware des Computers angeben, welche Operationen mit welchen Daten durchzuführen sind. Programme können direkt in die Hardware eingebaut werden oder unabhängig in einer Form existieren, die Software genannt wird. In einer speziellen Art von Computern sind die Verarbeitungsanweisungen direkt in ihrer Schaltung integriert. Derartige Mikrocomputer sind z.~B. in Taschenrechnern, Armbanduhren, Automotoren und Mikrowellenherden eingebaut. Andererseits gibt es Allzweckcomputer, die einige Programme bereits in ihrem ROM oder Anweisungsfolgen im Prozessorchip eingebaut haben, aber trotzdem auf externe Programme zur Ausführung sinnvoller Aufgaben angewiesen sind. Wenn ein Computer einmal programmiert wurde, kann er nur soviel oder sowenig vollbringen, wie seine Steuerungssoftware zu jedem Zeitpunkt zuläßt. Für viele Gebiete umfaßt Software einen weiten Bereich von Anwendungsprogrammen, also Anweisungen für den Computer zur Durchführung verschiedener Aufgaben.
Sprachen
Computer erhalten ihre Anweisungen in einer Programmiersprache, also als bestimmte Muster binärer digitaler Informationen. Das Programmieren der ersten Computer war eine schwierige und mühevolle Aufgabe, weil Elektronenröhren-EIN-AUS-Schalter per Hand gesetzt werden mußten. Gruppen von Programmierern benötigten oft Tage, um einfache Aufgaben wie z.~B. das Sortieren einer Namensliste zu programmieren. Seitdem wurde eine große Zahl von Computersprachen entwickelt, einige davon für besondere Anwendungen. Andere Computersprachen zielten stärker auf eine bequeme Bedienung und einen anwendungsfreundlichen Zugang.
Maschinensprache
Die eigene, auf Binärcode basierende Sprache eines Computers, die Maschinensprache, ist äußerst kompliziert. Der Programmierer muß jeden Befehl und alle Daten in binärer Form eingeben, so daß eine einfache Aufgabe, wie der Vergleich eines Registerinhalts mit den Daten an einer Adresse im Speicherchip, wie folgt aussehen kann: 11001010 00010111 11110101 00101011. Maschinensprachen-Programmierung stellt daher eine sehr zeitraubende Tätigkeit dar, bei der die durch das Programm eingesparte Zeit kaum die Tage oder Wochen für seine Erstellung rechtfertigt.
Assemblersprache
Um den Programmieraufwand zu verringern, steht die Assemblersprachen-Programmierung zur Verfügung. Durch die Zuweisung eines kurzen (meist dreibuchstabigen) Merkwortes (Mnemonic) für jeden Maschinensprachen-Befehl können Assemblersprachen-Programme in einem Bruchteil der Zeit, die von Maschinensprachen-Programmierern benötigt wird, erstellt und „debugged“ – von logischen und datenbezogenen Fehlern befreit – werden. In Assemblersprache entsprechen jedes Merkwort und seine symbolischen Operanden einem Maschinenbefehl. Ein Assembler übersetzt den Quellcode, eine Liste von mnemonischen Befehlswörtern und symbolischen Operanden, in den Objektcode, also in Maschinensprache, und führt das entstandene Programm aus.
Assemblersprache kann jedoch immer nur für einen bestimmten Typ von CPU-Chip oder Mikroprozessor verwendet werden. Programmierer, die viel Zeit und Mühe investiert haben, um die Programmierung eines Computers zu erlernen, müssen jedesmal, wenn sie auf einem anderen Rechner arbeiten wollen, einen neuen Programmierstil lernen. Was benötigt wurde, war eine Kurzschriftmethode, bei der eine symbolische Anweisung eine ganze Folge vieler Maschinensprachen-Anweisungen darstellt. Gleichzeitig suchte man eine Methode, um das gleiche Programm auf verschiedenen Arten von Computern ausführen zu können. Dies führte zur Entwicklung der höheren Programmiersprachen.
Höhere Programmiersprachen
Höhere Programmiersprachen setzen sich häufig aus englischsprachigen Befehlen zusammen, wie z.~B. LIST (liste auf!), PRINT (drucke!) und OPEN (öffne!). Sie bedeuten jeweils eine Folge von zehn oder Hunderten von Maschinensprachen-Anweisungen. Diese Befehle werden entweder über die Tastatur eingegeben oder einem Programm aus dem Arbeitsspeicher bzw. einem anderen Speichermedium entnommen. Ein spezielles Programm übersetzt die Befehle in Maschinensprachen-Anweisungen und verarbeitet sie anschließend.
Es gibt zwei Arten von Übersetzungsprogrammen: Interpreter und Compiler. Bei der Verwendung eines Interpreters wird jede Anweisung erneut übersetzt, auch wenn ein Programm während des Ablaufs mehrmals die gleichen Anweisungen durchläuft. Aus diesem Grund sind interpretierte Programme sehr viel langsamer als Maschinensprachen-Programme. Im Gegensatz dazu übersetzen Compiler das gesamte Programm vor der Ausführung, so daß die Programme genauso schnell ablaufen, als wären sie direkt in Maschinensprache erstellt worden.
Die amerikanische Computerwissenschaftlerin Grace Hopper implementierte die erste kommerziell orientierte Computersprache. Nachdem sie zunächst experimentelle Computer an der Universität Havard programmierte, arbeitete sie mit UNIVAC I- und II-Computern und entwickelte eine kommerziell einsetzbare Programmiersprache, die FLOW-MATIC hieß. Um die Verwendbarkeit von Computern für wissenschaftliche Anwendungen zu erreichen, entwickelte später die Firma IBM eine Sprache, die das Arbeiten mit komplizierten mathematischen Formeln vereinfachte. 1954 begonnen und 1957 vollendet, wurde FORTRAN (FORmula TRANslator: Formelübersetzer) die erste umfassende, allgemein verbreitete Programmiersprache. 1957 setzte die Association for Computing Machinery (Gesellschaft für Computeranlagen) mit der Entwicklung einer Universalsprache an, die einige der bei FORTRAN begangenen Fehler vermeiden sollte. Ein Jahr später gab sie mit ALGOL (ALGOrithmic Language: Algorithmensprache) eine weitere wissenschaftlich orientierte Sprache heraus, die sich zwar in den sechziger und siebziger Jahren in Europa weit verbreitete, aber danach von neueren Sprachen verdrängt wurde. FORTRAN wird weiterhin aufgrund der hohen Investitionen in bestehenden Programmen verwendet. COBOL (COmmon Business Oriented Language: allgemeine, betrieblich orientierte Sprache), eine kommerzielle und betriebliche Programmiersprache, setzte den Schwerpunkt in den Bereichen der Datenorganisation sowie Dateienverwaltung und wird in der Wirtschaft heutzutage noch häufig eingesetzt.
BASIC (Beginner‘s All-purpose Symbolic Instruction Code: Allzweck-Symbolbefehlssprache für Anfänger) wurde Anfang der sechziger Jahre am Dartmouth College für nichtprofessionelle Computeranwender entwickelt. Mit der starken Verbreitung von Mikrocomputern in den siebziger und achtziger Jahren wurde diese Sprache fast universell eingesetzt. Von ihren Gegnern als langsam, uneffizient und unelegant bezeichnet, ist BASIC jedoch einfach zu erlernen und bequem anzuwenden. Weil viele Mikrocomputer mit in der Hardware (im ROM) integriertem BASIC verkauft wurden, verbreitete sich die Sprache sehr schnell. Um ein sehr einfaches Beispiel für ein BASIC-Programm darzustellen, wird die Addition der Zahlen 1 und 2 und die Ausgabe des Ergebnisses betrachtet. Dies wird folgendermaßen aufgeschrieben (die Zahlen 10 bis 40 sind Zeilennummern):
Obwohl Hunderte verschiedener Computersprachen und Varianten davon existieren, verdienen einige eine besondere Erwähnung: PASCAL wurde ursprünglich als Lehrmittel entworfen und ist heute eine der populärsten Mikrocomputersprachen. LOGO wurde entwickelt, um Kindern das Programmieren beizubringen. Die von der Firma Bell Laboratories in den siebziger Jahren eingeführte Sprache C findet hauptsächlich Verwendung bei der Erstellung von Systemprogrammen, ebenso ihre Nachfolgerin C++. LISP (List Processing) und PROLOG haben ihr Einsatzgebiet in der künstlichen Intelligenz.
Zukünftige Entwicklungen
Ein fortschreitender Trend in der Computerentwicklung ist die Mikrominiaturisierung, also die Bemühung, immer mehr Schaltelemente auf immer geringerem Platz auf dem Chip zu konzentrieren. Forscher versuchen außerdem, Schaltfunktionen durch die Verwendung von Supraleitfähigkeit noch stärker zu beschleunigen.
Das Bemühen mit Computern der „fünften Generation“, Rechner zu entwickeln, die komplexe Probleme in einer als kreativ zu bezeichnenden Weise lösen können, ist ein weiterer Trend in der Computerentwicklung, deren Idealziel die echte künstliche Intelligenz darstellt. Eine derzeit aktiv erforschte Möglichkeit bieten parallel verarbeitende Computer. Dieser Computertyp enthält viele Chips, um zahlreiche verschiedene Aufgaben zur gleichen Zeit zu bewältigen. Parallelverarbeitung könnte eventuell Möglichkeiten erschließen, zu einem gewissen Grad die komplexen Rückkopplungs-, Näherungs- und Bewertungsfunktionen des menschlichen Denkens nachzubilden. Ein weiterer fortschreitender Trend ist die wachsende Vernetzung der Computer, bei der sogar Satelliten eingesetzt werden, um Computer auf der ganzen Welt miteinander zu verbinden. Großes Forschungspotential stellt die Möglichkeit „optischer“ Computer dar, deren Hardware nicht mit elektrischen, sondern mit viel schnelleren Lichtimpulsen arbeitet.