V 9 Computer Algorithmus Programm

Größe: px
Ab Seite anzeigen:

Download "V 9 Computer Algorithmus Programm"

Transkript

1 Vorlesung 9 Inhalt 1 Computer Was ist ein Computer? Analogrechner Die Ausführungsvarianten moderner Computer Die Leistungsfähigkeit (Performance) moderner Computer 6 2 Zur Geschichte des Computers Die grundlegenden Eigenschaften eines Computers Die Entwicklungen bis Entwicklung ab Der moderne Computer 13 3 Modelle des Computers Turingmaschinen Registermaschinen Minimalmaschinen 18 4 Algorithmen Der Begriff Algorithmus Formulierung von Algorithmen Der Euklidische Algorithmus 21 5 Programme Die historische Entwicklung der Programmiersprachen Programmiersprachenparadigmen Compiler versus Interpreter Virtuelle Maschinen 33

2 Vorlesung 9 V 9 Computer Algorithmus Programm Ziel dieser Vorlesung ist die Klärung von drei grundlegenden Begriffen: Computer, Algorithmus und Programm. Der geschichtliche Hintergrund wird kurz behandelt und die Begriffe versucht zu erläutern und zu diskutieren. Ausführliche historische Betrachtungen wurden in einen Anhang verbannt (und ist auch noch nicht vollständig). Für eine Grundlagenvorlesung ist er viel zu umfangreich geworden, aber für die eine oder andere LeserIn vielleicht interessant. 1 Computer Bisher gingen wir bei allen Betrachtungen davon aus, dass die den Programmen zugrunde liegenden Rechenmaschinen vorgegeben sind. Computer sind selbstverständlich geworden in der heutigen Welt aber was sind eigentlich Computer? In einem Satz sei dies nach heutigem Verständnis formuliert: Ein Computer ist eine (digitalelektronische) Maschine zur Speicherung und automatischen Verarbeitung von Daten, respektive Informationen (z.b. für mathematische Berechnungen oder allgemeiner Zeichenersetzungen) durch Angabe einer programmierbaren (flexiblen, veränderbaren) (Rechen-)vorschrift.. Dies ist vielleicht richtig, aber ist es auch vollständig? Informatikerinnen und Informatiker sollten es schon etwas genauer wissen: Wir wollen dies in diesem Kapitel näher untersuchen. 1.1 Was ist ein Computer? Zwar behauptete der bekannte Informatiker Edsger Dijkstra, In der Informatik geht es genauso wenig um Computer wie in der Astronomie um Teleskope.., aber, wenn wir nicht alle zu Zauberlehrlingen werden wollen, die Rituale anwenden, aber sie nicht beherrschen, dann müssen wir auch unser Hauptgerät verstehen: In allen Informatik-Curricula ist die technische Informatik (auch wenn sie heute in die Systeminformatik eingegliedert wird) essentieller Bestandteil: Elektronik, Rechnertechnologien, Digitale Schaltungen, Rechnerarchitekturen ( in Ihrem Studium mindestens durch die Module Hardware und das Hardwarepraktikum vertreten). Vieles, was in der Software (den Programmen) möglich und üblich ist, ist durch die benutze Hardware (die Rechnertechnik) bedingt. Ändert sich unsere Hardwarebasis, so ändern sich auch die Sprachelemente, um sie zu bedienen. Der Begriff Computer steht für Rechner oder Rechenanlage und lässt sich aus 1

3 dem lateinischen computare (zählen, rechnen) herleiten. Im modernen Deutsch wurde es aber eher aus dem Englischen computer abgeleitet, was eine meist unbekannte Vorgeschichte hat. Der englische Begriff computer, abgeleitet vom Verb to compute (rechnen), bezeichnete Menschen, die beginnend im späten Mittelalter für Astronomen die quälend langwierigen Berechnungen vornahmen. Zunächst wurden die Hilfskräfte, die dies von Hand ausführten oder einfache Rechenhilfen bedienten, als Computer bezeichnet, später wurde der Begriff Computer auch für diese Maschinen benutzt. Noch Ende der 40er und Anfang der 50er Jahren untersagte der damalige Geschäftsführer der IBM (International Business Machines) Thomas J. Watson (Senior) die Benutzung des Begriffs Computer für die IBM- Systeme. Man nannte die Maschinen dann Calculator. Der Hauptgrund soll gewesen sein, dass er bei den Bedienern der damals üblichen Rechenmaschinen, den Computern, keine Angst bezüglich ihres Ersatzes und Arbeitsplatzverlustes hat aufkommen lassen wollen. Zu Anfang war die Informationsverarbeitung mit Computern meist auf die Verarbeitung von Zahlen beschränkt (es waren flexible Rechenhilfen!) mit Ausnahme von Colossus, siehe unten. Mit zunehmender Leistungsfähigkeit eröffneten sich viele neue Einsatzbereiche, so dass Computer heute aus unserem modernen Leben nicht mehr wegzudenken sind. 1.2 Analogrechner Wir haben uns in unserer Definition eingeschränkt auf Digitalrechner, also solche Rechner, die mit diskreten endlichen Zahlenmengen oder Zeichenmengen arbeiten. Historisch gibt es eine andere Art: die Analogcomputer oder Analogrechner: Diese führen ihre Berechnungen auf der Basis kontinuierlicher Zustandsübergänge durch. Sie repräsentieren ihre Daten nicht als diskrete Werte (wie die Digitalcomputer), sondern als kontinuierliche eben analoge Größen, zum Beispiel in Form von geometrischen Längen oder Winkeln (mechanisch, z.b. Rechenschieber, Planimeter) oder elektrischen Spannungen oder Strömen. Abgesehen von den frühen Rechenhilfsmitteln wurden elektronische Analogrechner insbesondere in den 1930/40er (bis 60er)Jahren entwickelt, vor allem zur Lösung Gewöhnlicher Differentialgleichungen (das war mit Digitalrechnern zu der Zeit noch nicht realisierbar). Angewendet wurden diese Rechner zum Beispiel zur Simulation von Flugbahnen von Artilleriegeschossen und vor allem in der Regelungstechnik. Elementare Bausteine des Programmierens eines Analogrechners sind damit mathematische Operationen wie z. B. Integratoren, Summierer, Multiplizierer, Funktionssignalerzeuger (Sinus, Sprung, Impuls, etc.), Koeffizientenpotentiometer zur Eingabe von Parametern k (realisiert durch Spannungsteiler mit der Beziehung U a = k*u i ) mit denen insbesondere gewöhnliche Differenzialgleichungssysteme nachgebildet werden können. Die Ergebnisse stehen als physikalische Messwerte sofort (nach kurzem Stabilisieren) zur Verfügung und werden mittels Messgeräten, z. B. Voltmeter oder Oszillograph, angezeigt. In Abbildung 1a) ist ein solcher Aufbau gezeigt. Ein Beispielproblem, die Simulation eines Räuber-Beute-Systems, ist als Schaltung in Abbildung 1b) abgebildet. Die Messergebnisse, der zeitliche Verlauf der Signale, ist in Abbildung 1c) vorhanden. Näheres dazu ist in Anhang 1 beschrieben. 2

4 b) Grundsätzlich ist deshalb jeder Rechner einem Digitalcomputer vorzuziehen, der die für ein Problem notwendigen Operationen direkt mit Hilfe physikalischer Effekte umsetzen kann. Beispielsweise sind einfache Mustererkennungsoperationen ultraschnell in Hardware implementierbar, so dass sie anstelle digitaler Rechner bei der Analyse von Elementarteilchenprozessen im CERN verwendet werden. Solche spezialisierten Computer, bei denen die Prozessoreinheit direkt aus physikalischen Prozessen bestehen, werden auch heute noch in Spezialfällen gebaut und eingesetzt. Ein Stichwort dafür sind Molekulare Compua) c) Abbildung 1: a) Typischer Aufbau eines Analog-(Tisch!)computers um 1970, hier mit einem Telefunken RA 741. b) zeigt ein Programmierschaltbild, hier für das Volterra -Differentialgleichungssystem, das die Populationsdynamik einer Räuber Beute Beziehung beschreibt. Näheres siehe Anhang 1. c) zeigt das charakteristische Ergebnis dieses Systems als Ausgabe auf dem Oszilloskop: Die Populationskurven bilden also stabile periodische Wellen mit zeitlich versetzten Maxima. Auf das Maximum der Beutepopulation erfolgt das Maximum der Räuberpopulation. Zur Ableitung des Schaltbilds siehe Anhang 1. [Quelle: Bernd Ullmann, Workshop Analog Computing, 19.April 2006 (siehe )]. Ein entscheidendes Problem analoger Rechner ist ihre Rechengenauigkeit. Selbst heute haben Messgeräte einen maximalen Arbeitsbereich von 6 7 Zehnerpotenzen, mehr ist technisch nicht realisierbar. Damit könnte man zwar das Gewicht eines Lkws auf wenige Milligramm genau messen, aber das reicht bei vielen Problemen nicht aus, beispielsweise für den Umsatz eines Großunternehmens in Cent (z.b Cent) oder die Berechnung einer Flugbahn zum Mars. Hinzu kommt das grundsätzliche Problem der physikalischen Genauigkeit der Signale (Rauschen) aller elektronischen Geräte. Generell ist damit auch eine Zeichenverarbeitung, z.b. Textverarbeitung, sehr schwierig zu realisieren. Heute spielen Analogrechner deshalb quasi keine Rolle mehr. Ende der sechziger Jahre hat man zwar versucht, mit so genannten Hybridrechnern (Kombinationen aus Digital- und Analogrechnern) Probleme lösbar zu machen, die digitaltechnisch schwierig zu lösen sind. Warum? Beachten Sie: Die Lösung schon eines einfachen Differentialgleichungssystems auf einem Digitalrechner ist wesentlich aufwendiger als auf einem Analogrechner, da Integrieren und Differenzieren nicht zu den elementaren Operationen eines Digitalrechners gehören. Hier muss ein erheblicher Grad algorithmischen und numerischen Wissens herangezogen werden (siehe Numerische Mathematik) um solche elementaren mathematischen Operationen zu simulieren. 3

5 ter auf Molekülbasis oder auch DNA-Computer auf Basis der biologischen Mechanismen der DNA-Stränge und Replikation. Allerdings haben sie sich als Spezialmaschinen nicht gegen die allgemeinen Rechner durchgesetzt und blieben bisher auf ihre Spezialanwendungen beschränkt. Heute verstehen wir unter Computer eigentlich nur noch Digitalcomputer, also solche Rechner, die auf diskreter Basis, in aller Regel der binären Basis, arbeiten. 1.3 Die Ausführungsvarianten moderner Computer Computer sind heute extrem vielgestaltig, z.b. als PDA: Personal Digital Assistant ist ein handflächengroßer tragbarer Computer (Handcomputer; Palmtop); seit 1993 verfügbar der Erste unter der Bezeichnung Newton Message- Pad von der US-amerikanischen Firma Apple. Laptop (= "auf dem Schoß"), oder Notebook (notebook = Notizbuch) ist ein tragbarer Personal-Computer (persönlicher Rechner) in der Größe eines Buches. Speziell für den Einssatz im Internet ist eine nur mit kleinem Bildschirm und geringen Ressourcen ausgestattete (Sub-)Notebook-Version vorgesehen, das Netbook. Personalcomputer oder PC: übersetzt "persönlicher Rechner", ist ursprünglich der Handelsname einer Reihe von Computersystemen, die von Firma IBM hergestellt wurden (Einführung 1981) Der Begriff PC wird heute aber auch als Gattungsbezeichnung benutzt. Es handelt sich um einen Rechner, der nur einer einzelnen Person zur Verfügung steht und auf deren Bedürfnisse anpasst ist oder werden kann. Davor war der Rechnerzugang für Menschen nur über mehrere so genannte Terminals möglich, die an größere Rechner angeschlossen waren: mehrere Nutzer teilten sich einen Rechner (multi-user Betrieb / Teilnehmerbetrieb). Ein Arbeitsplatzrechner (Workstation, Desktop/Deskside Computer, Arbeitsplatzsystem), ist seit Ende der 70er Jahre gebräuchlich (XEROX Star, Apple Lisa, PERQ, SUN, SGI, etc.). Hierunter versteht man Einbenutzersysteme (wie ein PC) direkt am Arbeitsplatz des Benutzers im Unterschied zu den großen Rechnern, die nur in klimatisierten Räumen laufen. Wünschenswert für Einbenutzersysteme sind gute ergonomische Eigenschaften, u.a. geringe Geräusch- und Wärmeentwicklung, keine oder sehr geringe Strahlung und geringer Energieverbrauch der sehr leistungsfähigen Bildschirme (ggf. auch Lautsprecher) sowie Netzwerkfähigkeit. Zumindest zur Zeit der Einführung des PCs war dieser wesentlich weniger leistungsfähig als die konkurrierenden Workstations heute aber verwischen sich die Grenzen zunehmend: Eine Unterscheidung zwischen PC und Workstation ist kaum noch sinnvoll! Workstations sind heute Kernelemente einer modernen Client-Server -Infrastruktur. Ein Server ist ein Rechner, "auf dem ein Serverprogramm läuft", der für sogenannte Clients, z.b. auf Arbeitsplatzsystemen spezifische Dienstleistungen anbietet: Print-Server (Zugriff auf Drucker), Mailserver ( -Server), Datenbankserver; Webserver; Dateiserver, etc. Die Hardware, auf der ein oder mehrere Serverprogramme laufen, bezeichnet man manchmal als Host. Ein Mainframe (Großrechner, ggf. Host) ist ein großes und umfangreiches Computersystem, das weit über die Kapazitäten eines Personal Computers und oft sogar über die typischer Serversysteme hinausgeht, und wird meist im kommerziellen und kaufmännischen 4

6 Bereich eingesetzt (z.b. für Buchungssysteme, etc.). Im Gegensatz zu Supercomputern, die auf hohe Rechenleistung ausgelegt sind, ist ein Großrechner auf Zuverlässigkeit und hohen Datendurchsatz optimiert, um tausende parallel auszuführende Transaktionen (z.b. Geldüberweisungen) durchzuführen. Eine Datensicherung und die Konsistenz der Daten ist auf einem Mainframe leichter zu gewährleisten als in einem Netzwerk verteilter Daten. Deshalb werden Mainframes gern im Bankenbereich eingesetzt. Supercomputer sind Hochleistungsrechner, die zum Zeitpunkt ihrer Einführung im obersten realisierbaren Leistungsbereich operieren, siehe (Vierteljährlich wird die Liste der 500 schnellsten Supercomputer veröffentlicht).ein typisches Merkmal eines heutigen Supercomputers ist seine große Anzahl an Prozessoren (einige Hundert bis mehr als Hunderttausend), die oft auf einen sehr großen Hauptspeicher zugreifen. Zum Vergleich: Sämtliche Berechnungen aller Computer weltweit, im Zeitraum on 1960 bis 1970 (innerhalb 10 Jahre) könnte ein heutiger Supercomputer in etwa 30 Minuten durchführen. Spezialrechner (also Hardware) für spezielle Anwendungsprobleme waren früher z.b. gebräuchlich für die Bildverarbeitung, Computergraphik, Sichtsimulation, etc heute eher selten, da diese vergleichsweise teuer wären. Die Leistungsfähigkeit moderner Universalrechner reicht oft aus; ggf. werden stattdessen Cluster, also mehrere Universalrechner, benutzt. Ein besonderer Fall von Spezialrechnern sind Spielkonsolen. Sie haben meist eine normale Systemstruktur, verfügen aber über spezielle Grafikprozessoren und spezielle Hardware, um den Spielern einen schnellen Spielverlauf zu präsentieren oder spezielle Eingabegeräte zu ermöglichen. Dies gilt auch für PCs, die als Spielcomputer genutzt werden. Sie enthalten meist sehr anspruchsvolle Hardware (schneller, großer Speicher, Multi-Prozessorkerne, schnelle Festplatten, schnelle Grafikkarten), so dass sie inzwischen die Vorreiter der PC-Entwicklung repräsentieren. Treibendes Element dieser Entwicklung ist die Notwendigkeit, die reale Welt für Spiele möglichst gut und schnell zu simulieren. Von dieser Entwicklung profitieren natürlich auch andere Simulationen, etwa in der Medizin oder bei Industrieprozessen. Ein Embedded (eingebettetes) System ist ein (voll-)integriertes Computersystem, häufig nicht sichtbar, in einem Gesamtgerät oder -system: Handy, Waschmaschine, Auto, etc. 90 % der heute hergestellten Prozessoren arbeiten bereits in eingebetteten Systemen. Der Wertanteil der Computersysteme am Endprodukt nimmt beständig zu. Man erwartet, dass dieser bis 2010 folgende Anteile annimmt: Industrieautomation 22%, Telekommunikation 37% Consumer Electronics and Intelligent Homes 41% Medizintechnik 33% Automobile 30% (heute schon ca. 20%) in Oberklasseautos sind heute schon bis zu 160 Prozessoren. Die embedded systems sind ein Aspekt des sog. ubiquitous Computing. Die Ubiquitäre Computertechnik (kurz UbiComp); ubiquitous = allgegenwärtig) bezeichnet die Allgegenwärtigkeit der Informationsverarbeitung im Alltag von Unternehmen und Menschen überhaupt. Der Begriff wurde von Mark Weiser in seinem Aufsatz The Computer for the 21st Century geprägt. Grundidee ist dabei, dass Computer immer kleiner werden, dann direkt in den Gegenständen wie Teppiche oder Kleidung integriert verschwinden bzw. durch "intelligente Gegenstände" ersetzt und dabei überall gegenwärtig werden. 5

7 1.4 Die Leistungsfähigkeit (Performance) moderner Computer Computer bestehen aus verschiedenen Komponenten. Schnelle Speicher oder Prozessoren sind nur eine Vorraussetzung für einen schnellen Computer, reichen aber nicht aus. Entscheidend ist das gut aufeinander abgestimmte Zusammenspiel der Komponenten. Aus diesem Grund wurden gerade für den kommerziellen Einsatz Vergleichsmaßstäbe gesucht, um die Leistungsfähigkeit des Gesamtsystems beurteilen zu können. Früher wurde die Leistungsfähigkeit (Performanz, performance) gemessen in MIPS (Millionen Instruktionen pro Sekunde) und/oder MFLOPS (Millionen Floating Point Operationen pro Sekunde) = Gleitkommaoperationen Diese Maße haben aber sehr weinig Aussagekraft für die Gesamtleistung eines Systems, da Rechenoperationen nicht den Hauptteil von Programmen ausmachen. In den frühen 80er- Jahren wurde deshalb eine Messung durch sogenannte Benchmarks definiert. Sie sind fest vereinbarte Test-Programme, die jeweils einen typischer Mix von Anweisungen für eine Anwendungsart aufweisen. Bei jedem ist die Anzahl der Operationen dieser Mischung angegeben. Whetstone (dt. Wetzstein) wurde schon 1976 in den National Physical Laboratories in Großbritannien entwickelt. Er verwendet Fließkomma-Operationen, aber auch Integer- Arithmetik und Zugriffe auf Array-Elemente: [KWIPS oder MWIPS] entsprechend den damals vorherrschenden numerischen Berechnungen. Dhrystone (von Reinhold Weicker 1984 entwickelt) enthält nur Integer-Operationen (Ganze Zahlen). Sein Name ist ein Wortspiel auf den damals sehr populären Gleitkomma- Benchmark Whetstone. Heute wird meist SPEC verwendet (seit 1989): Es handelt sich um eine Serie von Anwendungen (z.b. neuronale Netze, finite Elemente, Videoenkodierung usw.), die in Integer-bezogene (SpecInt) und Floating-point-bezogene (SpecFp)-Programme eingeteilt werden. Entsprechend bilden das Endergebnis der Tests immer zwei Zahlen, die die Leistung bezogen auf eine Referenzmaschine (benchmark) angeben. Bei Spec2000 ist dies z.b. eine Sun UltraSparcIIi/256MB. 2 Zur Geschichte des Computers In vielen einführenden Büchern zur Informatik findet man hier mehr oder weniger geistreiche Ausführungen zur Geschichte. Oft beginnt man beim Abakus, beleuchtet kurz die Leibnitzschen Rechenmaschinen, kommt dann je nach Herkunft auf die Z1 und Z3 zu sprechen (Zuses Entwicklungen in Deutschland) oder auf die ENIAC (mit Mauchly und Eckert in den USA) oder auf die Analytical Engine (Babbage) oder gar Collossus und den Entwicklungen in England. Wir haben dies in einen Anhang verbannt hier können Sie, wenn Sie Lust haben durchaus interessante Details nachlesen. Um uns nicht mitten in den plumpen Streit über den Erfinder des modernen Computers hineinzubegeben (Wer baute den erste Computer?), müssen wir uns kritisch mit den kennzeichnenden Attributen eines Computers auseinandersetzen, denn etwa ab Mitte der 30er Jahre des 20. Jahrhunderts gab es diverse Entwicklungen, die wegbereitend waren. Wir kehren also zu unserer eingangs vorgestellten Definition zurück: 6

8 2.1 Die grundlegenden Eigenschaften eines Computers Ein Computer ist eine (digitalelektronische) Maschine zur Speicherung und automatischen Verarbeitung von Daten, respektive Informationen (z.b. für mathematische Berechnungen oder allgemeiner Zeichenersetzungen) durch Angabe einer programmierbaren (flexiblen veränderbaren) (Rechen-)vorschrift. Die hieraus abzuleitenden Eigenschaften sind: 1. (digital-elektronisch) 2. Speicherung von Daten 3. automatische Verarbeitung von Daten 4. programmierbare (flexibel veränderbare) Rechenvorschrift. Zu 1.: Mit dieser Eigenschaft rein mechanische oder elektromechanische (auf Relais basierende) Lösungen auszuschließen ist nach heutigem Stand zwar kennzeichnend, aber dieses als ausschließende Eigenschaft zu betrachten ist schon sehr willkürlich und steht deshalb in Klammern! Zu 2.: Tatsächlich war die zuverlässige Speicherung von Daten zumindest in größerem Umfang (z.b zehnstellige Zahlen) anfangs ein erhebliches Problem, deren unvollkommene (weil unzuverlässige) Lösung einige frühe Ansätze (Z1, ABC) zum Scheitern brachten. Hier gab es also erhebliche technologische Probleme zu lösen. Aber auch die Repräsentation der Daten (anfangs nur Zahlen) war verschieden: Dezimal vs. Binär und Festkomma vs. Gleitkomma. Zu 3.: Was heißt automatisch? - Automatisch bedeutet selbsttätig ablaufend. Der Wortstamm ist aus zwei altgriechischen Stämmen zusammengesetzt und bedeutet etwa von selbst tun, sich selbst bewegend. (Wikipedia). Was soll der Computer selbst tun? Nach der Eingabe der Aufgabe (insbesondere der Eingabeparameter) soll das Ergebnis also ohne weitere menschliche Intervention ggf. schrittweise errechnet werden. Was braucht man dazu minimal? Eine Antwort hierauf liefert die Theorie: Alles was intuitiv berechenbar ist, kann mit einer Maschine schrittweise errechnet werden, welche die folgende Operationen ausführen und sich die Zwischenergebnis merken (speichern) kann: das Nullsetzen eines Wertes, das Inkrement bilden (um 1 erhöhen zählen) eines Wertes und eine datenabhängige Verzweigung:, z.b. der Form: Wenn ein (Zwischen-) Wert 0 ist, dann führe die Operationsfolge 1 aus, sonst die Operationsfolge 2. Eine solche Maschine nennt man Turing-vollständig (Turing-complete). Dies ist (erschreckend) wenig, aber auch wenig praktisch: die Anzahl der Schritte, selbst für einfache Aufgaben, wäre viel zu groß, die nötigen Operationsfolgen schwer zu finden und setzt auch einen theoretisch unendlich großen Speicher voraus, etc. Allerdings ist dies minimal, um alle (überhaupt) vom Menschen berechenbare Funktionen zu errechnen (Church-Turing-These). Zu 4.: Die Programmierbarkeit unterscheidet einen Computer von Rechenhilfsmitteln wie dem Abakus oder einer Rechenmaschine, die nur einige spezielle Rechenoperationen (entweder ein- 7

9 fache, wie Addition und Subtraktion, oder auch aufwendigere, wie die Division komplexer Zahlen) ausführen kann und ggf. darauf angewiesen ist, dass der Benutzer die benötigten Rechenschritte für eine kompliziertere Berechnung nacheinander veranlasst. Allerdings: Wie die Programmiermöglichkeit realisiert wurde ist prinzipiell unerheblich. Hier wurden durchaus verschiedene Varianten implementiert: durch Umlöten von elektrischen Verbindungen (z.b. noch 1957: Versandsystem für Quelle von Karl Steinbuch Preisänderung durch Lötkolben-Eingriff - 11 Jahre in Betrieb), durch Stecken von Schaltdrähten, durch Lochstreifen, durch Eingabe und Speicherung eines Programms (speicherprogrammierbare Rechenanlage, stored program computer). Ein im Computer gespeichertes Programm erlaubt prinzipiell, dass sich dieses Programm selbst modifiziert. Wenn man unterstellt, dass neben einer Verzweigung mindestens ein unbedingter Sprung realisiert ist, ergeben damit sich die Möglichkeit, bedingte Sprünge zu realisieren und auch das Programm im Speicher beliebig zu verschieben. Auf der Basis dieser knappen Diskussion und beim Betrachten der nachfolgenden Tabelle wird klar, dass es nicht möglich ist, den Erfinder des Computers zweifelsfrei auszumachen. Viele haben mit ihren Ideen und Entwicklungen zum heutigen Rechnerstand beigetragen. Das ist nicht selbstverständlich: Als klar wurde, dass die elektronischen Rechenmaschinen auch wirtschaftlich bedeutend wurden, war es unvermeidbar das Patentstreite entstanden, insbesondere in den USA von Eckert und Mauchly (vs. Atanasoff) betrieben und in Deutschland von Zuse. Auch wenn die Gerichte lange benötigten (bis fast 1970), so wurde (zum Glück!) kein Patent für die Erfindung des Computers vergeben. Je nachdem, welche Eigenschaften und Ideen man wie gewichtet: das Konzept oder die Realisierung die Technologie: Mechanik Relais Röhren (Transistoren) (oder gar integrierte Schaltkreise) die Programmierbarkeit und das Programmmedium die theoretische Turing-Vollständigkeit oder (praktische) Verfügbarkeit eines bedingten Sprungs oder weitere Kriterien, die von Zeit zu Zeit angeführt werden, wie Dezimal vs. Binär Repräsentationen, Festkomma vs. Gleitkomma Repräsentation, sequentielle oder parallele Arithmetik, usw. kommt man zu sehr verschiedenen Ergebnissen, was als erster Computer bezeichnet werden darf! Wer Lust hat, darf also weiter streiten! 2.2 Die Entwicklungen bis 1950 Nach Babbages wegweisender Entwicklung der Analytical Engine (die er allerdings nicht rea- 8

10 lisieren konnte) brauchte es einhundert Jahre, bis viele seiner Ideen neuentwickelt und umgesetzt wurden. Obwohl (die Mathematiker) Howard Aiken in Havard, Vannevar Bush. und Georg Stibitz an den Bell Laboratories seine Ideen kannten, war der direkte Einfluss vermutlich sehr beschränkt: Konrad Zuse kannte diese Ideen nach eigenem Bekunden nicht! Man muss auch feststellen, dass viele Entwicklungen im Zeitraum ihre Finanzierung aufgrund der Kriegsereignisse und der Einstufung als kriegswichtig erlangten, so insbesondere Colossus in England (zur Dechiffrierung der deutschen ENIGMA-Codes), Havard Mark 1 (ASCC) zum Berechnen von Tabellenwerken von ballistischen Kurven für die Marine, ENIAC (ballistische Geschoßbahnberechnung /Tafelwerke für die Army). Auch Zuse hat dem deutschen Militär seine Entwicklungen mehrfach angeboten, aber ohne Erfolg. Diese militärische Einflussnahme setzte sich in der Geschichte fort: Der Koreakrieg beflügelte die US- Computerindustrie enorm und später die Entwicklungen für den kalten Krieg. Bei den ersten Entwicklungen gab es sowohl tischgrosse Systeme (Z1, Z3, ABC) als auch mechanische Ungetüme wie die Havard Mark 1 (Gewicht 35 Tonnen sowie eine Frontlänge von 16 Metern), und auch elektronische Ungetüme. Die komplette ENIAC Anlage war in U-Form aufgebaut und beanspruchte eine Fläche von 10m 17m bei 27 Tonnen Gewicht. Bis 1948 hatte keines der realisierten Rechensysteme alle geforderten Qualitäten erfüllt, die einen richtigen Computer ausmachen, siehe nachfolgende Tabelle. Name Analytical Engine nicht realisiert Hauptentwickler Charles Babbage Jahr der Rechen- Fertigstellung Technologie ( ) Programmierbar? Turingvollständig Mechanik Lochstreifen Ja Z 1 Conrad Zuse 1938 Mechanik Lochstreifen Nein CNC 1 Complex Number Computer George Stibitz S.Williams Bell Labs 1940 Relais Nein Nein 1941 Nein Nein Harvard Mark I (ASCC) ENIAC Z 4 von Neumann Architektur Howard H. Aiken Havard Univ. IBM John Mauchley Presper Eckert U Pennsylvania Conrad Zuse Zuse AG 1944 Mechanik Lochstreifen Ja an ETH Atanasoff-Berry Computer (ABC) nicht voll John V. Atanasoff Clifford Berry funktionsfähig realisiert Iowa State Elektronenröhren Z 3 Konrad Zuse 1941 Relais Lochstreifen Ja Datenband M.H. Newman I.J. Elektronenröhren 1944 und Nein Bletchley Park Good Verkabelung Elektronenröhren Relais Verkabelung Lochstreifen John von Neumann Architekturkonzept Ja Ja (1950 bedingter Sprung ergänzt!) 9

11 Manchester Mark I Prototyp Baby SSEC EDVAC - Electronic Discreet Variable Computer EDSAC - Electronic Delay Storage Automatic Calculator UNIVAC I (1103) Universal Automatic Computer F. Williams U Manchester Ferranti Wallace Eckert IBM Eckert Mauchly von Neumann U Pennsylvania. Maurice Wilkes Alan Turing, U Cambridge UK) Relais (1949) Elektronenröhren Elektronenröhren Elektronenröhren 1951 Eckert Mauchly Elektronenröhren 1950 Prototyp ATLAS UNIVAC Whirlwind I MIT 1951 Elektronenröhren IBM 650 IBM 1953 Elektronenröhren stored program stored program stored program stored program stored program stored program stored program Ja Ja Ja Ja Ja Ja Ja Tabelle 1 Kerneigenschaften früher Rechensysteme der ersten Computer Ein entscheidender und bedenkenswerter Wendepunkt trat ein, als John von Neuman den First Draft of Report on the EDVAC vorlegte mit Datum vom , der Geburtstag der von Neumann-Architektur und des stored program computers, siehe Er war zu der Zeit militärischer Consultant (Manhattan Projekt, Target Group) und Mitglied des Teams um Eckert und Mauchly (Moore School an der University of Pennsylvania). Dieses Team stand kurz vor der Inbetriebnahme der ENIAC. Viele Mitglieder des Teams hatten Urlaub genommen und von Neuman machte wohl nicht mehr und nicht weniger, als die Ideen und Diskussionen zusammen zu fassen, die wohl maßgeblich von Eckert und Mauchly geführt worden waren so zumindest eine Anekdote. Es war lediglich als internes Memo gedacht, das einen Zwischenstand dokumentierte, nicht als Veröffentlichung. Das dieses Papier dann sehr weit bekannt wurde und seinen grundlegenden Einfluss auf die weitere Computerentwicklung ausübte, lag wohl daran, dass es viel Streit gab im Team von Eckert und Mauchly gab und diese auch im Frühjahr 1946 ausschieden (Sie gründeten eine Firma.) Nachdem das Papier fast ein Jahr herum gelegen hatte (als handschriftliche Notiz), entschloss Herman Hine Goldstine, es auf Maschine abschreiben zu lassen, setzte von Neumann als alleinigen Autor darauf und verschickte am mindestens 24 Kopien an Teammitglieder und viele Kollegen an Universitäten in den ganzen USA und auch nach England damit war es öffentlich und entwickelte seine bahnbrechende Wirkung! Dieses Papier war wohl den meisten Teilnehmers des Seminars an der Moore School der U Pennsylvania Theorie and Techniques of Electronic Digital Computers im Zeitraum 8.7. bis bekannt. Quasi alle bedeutenden Computerentwickler waren vertreten: Stibitz (Bell Labs), Eckert und Mauchly (früher Moore School), Aiken (Havard), von Neuman, Goldstine (Princeton), D.R. Hartree (UK), usw. Dabei spielte von Neumann eine Nebenrolle, aber hielt zumindest auch einen Vortrag. Die notwendige Neuorientierung vieler an zuvor militärischen Projekten beteiligten hat diese erste Computer-Konferenz ermöglicht und sicher zur Verbreitung der von Neumann Architektur entscheidend beigetragen. Ab 1948 basierten eigentlich alle Rechner auf den Ideen und Konzepten, die von Neumann zusammengefasst hatte. Das Papier selbst enthält keine Architekturzeichnung. Auch wenn die Prinzipien meist einheitlich beschrieben werden, so findet man in der Literatur doch sehr verschiedene Varianten. Nachfolgendes Bild illustriert die Kernideen und ist direkt mit Textauszügen aus dem Originalpapier beschriftet. 10

12 R outside recording medium... a stack of punch-cards, a teletype tape, etc.: information can be produced directly by human action and sensed directly by human organs I input: organs to transfer numerical (or other) information from R to M O output: organs to transfer numerical information from M to R M conciderable memory for at least the four following phases a) intermediate (partial) results must be remembered b) the instructions which govern the complicated problems c) specific functions, usually in form of a table d)... h) diverse other data... tempting to treat the entire memory as one organ instructions CC proper sequencing of the machines operations... a general / central organ functions: (1) receive orders from M (2) interpret them (3) carry them out or stimulate other organs to carry them out A very high speed automatic digital computing system I CA J CA (numerical) data CA + x perform the elementary operations of aritmetic: +,, x, O CA C Abbildung 2: Die Original von Neumann-Architektur. Extrahiert aus dem Text First Draft of Report on the EDVAC mit Datum (DK) Die Kernideen der von Neumann Architektur sind: 1. Ein Computer besteht aus 5 Funktionseinheiten: Speicher, Steuerwerk oder Leitwerk, Rechenwerk, Eingabe, Ausgabe (Steuerwerk und Rechenwerk bilden den Prozessor) 2. Im Speicher sind sowohl die zu bearbeitenden Daten als auch das Programm abgelegt. 3. Ein Befehls-Ausführungszyklus besteht aus der Folge: Befehl aus dem Speicher holen FETCH Befehl im Steuerwerk interpretieren DECODE Operanden holen FETCH OPERANDS Befehl ausführen (von einer der Funktionseinheiten) EXECUTE (Erhöhen des Befehlszählers UPDATE INSTRUCTION POINTER Das Konzept des Befehlszählers ist in dem Konzept nicht explizit erwähnt, aber notwenig.) Natürlich gab es Weiterentwicklungen oder Alternativkonzepte wie z.b. die sogenannte Harvard Architektur (Aiken) mit der Trennung von Daten und Programm in zwei verschiedene Speicher, die den so genannten von Neumann Flaschenhals vermeidet, aber das stored program Prinzip wurde allgegenwärtig. 2.3 Entwicklung ab 1950 Waren bis etwa 1950 alle Rechner Laborprototypen ggf. mit wenigen Kopien, z.b. Collossus oder one-of-a-kind Systeme, so entwickelte sich um diese Zeit die Kommerzialisierung der Rechnerentwicklung (und dabei auch die zum Teil hoffnungslos übertriebenen Erwartungen wie Elektronengehirn ) und es etablierten sich ab 1950 verschiedene Computerhersteller mit speziellen Rechnern für wissenschaftliche Zwecke, andere für kaufmännische Anwendungen sowie wieder andere für Militärzwecke: 11

13 In USA mit Starthilfe von Howard Aiken der Computerhersteller IBM sowie Eckert und Mauchly UNIVAC In England F. Williams ( U Manchester) Ferranti In Deutschland Konrad Zuse Zuse KG (AG) Während Zuse seine Z22 (ab 1957) für ihn sehr erfolgreich ca. 50 Mal weltweit verkaufte, arbeitete IBM in dieser Zeit in schon ganz anderen Dimensionen. Allein das Modell 650 wurde weltweit 800 Mal verkauft. Wenn man um 1960 in den USA über den Computermarkt sprach, so sprach man von IBM und den sieben Zwergen gemeint waren UNIVAC 12 % Marktanteil, Burroughs 3 %, NCR 3 %, CDC, RCA, Honeywell, GE mit kleineren Anteilen: IBM beherrschte 70% des US Marktes (und auch des Weltmarktes). Diese absolute Dominanz blieb bis weit in die 70er Jahre erhalten, etwas eingeschränkt durch das Aufkommen so genannter Minicomputer (z.b. von Digital Equipment DEC) ab Ende der 60er Jahre. Wirklich ändern sollte sich die Situation aber erst in den 80er Jahren, mit dem Aufkommen integrierten Schaltungen und damit der PCs, Workstations und des Internets. Wollte man die Geschichte der Computer weitererzählen, so müsste man ab den siebziger Jahren verschiedene Entwicklungslinien verfolgen, jede mit ihren eigenen Wurzeln und spezifischen Entwicklungen für Arbeitsplatzrechner (Workstations) Personalcomputer (PCs) und Laptops Server Hosts und Mainframes. Homecomputer Spielkonsolen PDAs: Personal Digital Assistant Spezialrechner Embedded (eingebettetes) System Rechnernetze Rechnertechnologie Diese verschiedenen Linien zu verfolgen, würde eindeutig zu weit führen und tragen kaum noch was zu Verständnis des Begriffs Computer bei. Vielleicht noch einige Quantitäten zum Schluss: 2005 wurden weltweit ca. 300 Millionen PCs und Laptops verkauft. Das sind nur 10% der verkauften Prozessoren, die übrigen 90% stecken im Wesentlichen in Embedded Systems! Vielleicht noch ein weiterer Aspekt: die heute üblichen Begriffe Software und Hardware traten erst relativ spät in Erscheinung. In der heutigen Bedeutung wurde der Begriff erstmalig 1958 von John W. Tukey benutzt. Software bezeichnet alle nichtphysischen Funktionsbestandteile eines Computers bzw. eines jeden technischen Gegenstandes, der mindestens einen Prozessor (in embedded systems) enthält. Dies umfasst vor allem Computerprogramme sowie die zur Verwendung mit Computerprogrammen bestimmten Daten und auch die technischen Beschreibungen hierzu. Also alles das, was nach damaligem Kenntnisstand das relativ einfach zu Ändernde war. Hardware hingegen ist der Oberbegriff für die maschinentechnische Ausrüstung eines Computersystems. Dazu gehören alle Baugruppen (Prozessor, Arbeitsspeicher etc.) und Peripheriegeräte, insbesondere also der Computer selbst. 12

14 Diese Begriffsbildung ist möglicherweise die Lebenslüge der Informatik, denn schon bald stellte sich heraus, das die Software das eigentlich beständige werden sollte Hardware kommt und geht: Viele Softwareprogramme aus den 60er Jahren laufen bis heute mehr oder weniger unverändert die Hardware hat sich, z.b. Emulation (Nachbildung von Systemen) ggf. in der Zwischenzeit mehrfach angepasst. 2.4 Der moderne Computer Bis heute hat sich trotzt vielfältiger Kritik, Überlegungen und Variantenbildung die von Neumann Architektur erhalten. Fast alle Computer enthalten die von Neumann Architektur. In den heutigen Computern sind die ALU (Arithmetisch-Logische Unit) und die Steuereinheit meistens in einem Baustein verschmolzen, der so genannten CPU (Central Processing Unit, zentraler Prozessor). Der Speicher ist eine Anzahl von ganzzahlig durchnummerierte Zellen, die heute in der Regel 8 bit (0 oder 1) umfassen. Die Nummer einer Zelle nennt man Adresse. Ein Charakteristikum der Von Neumann-Architektur ist, dass der Inhalt einer Speicherzelle entweder (als Teil) eines Datums (also zum Beispiel der Buchstabe A ), oder auch als (Teil eines) Befehls für die CPU ( Addiere... ) betrachtet werden kann. Das Steuerwerk ist dafür zuständig, den aktuell auszuführenden Befehl oder eher die Speicherzelle, in der dieser steht, zu kennen. Diese Adresse wird in einem speziellen Register, dem Befehlszähler (program counter) gehalten. Das Steuerwerk liest einen Befehl aus dem Speicher, erkennt zum Beispiel , erkennt dies als Springe zu und holt den Operanden, in diesem Fall die Sprungadresse (ein bis acht Byte lang). Dann setzt sie den Befehlszähler auf eben diese Speicherzelle, um dort wiederum ihren nächsten Befehl auszulesen; der Sprung ist vollzogen. Wenn der Befehl zum Beispiel Addiere lauten würde, dann würde sie aus der in der Folge angegebenen Adresse den Inhalt auslesen, um ihn dann beispielsweise an die ALU als Operanden weiterzuleiten. Operanden können in heutigen Prozessoren sehr verschieden adressiert werden: direkt (die vollständige Adresse folgt direkt dem Begfehl) oder indirekt, z. B. über ein weiteres spezielles Register, dem Indexregister., als Einadress-, Zweiadress oder Dreiadressbefehl, usw. Hier gibt es sehr viele Varianten. Die ALU hat neben der Logik zur Ausführung der Operationen in der Regel mindestens ein Register, den so genannten Akkumulator, meistens aber einen Registersatz, die als Zwischenspeicher für Operanden dienen. Aktuell ist nach wie vor die Diskussion um die Prozessorarchitekturen RISC (reduced instruction set computer) oder CISC ( complex instruction set computer) aktuell. Historisch hatten sich immer mehr und mächtige Befehlsarten entwickelt, was zwar einen erheblichen Dekodierungsaufwand bedeutete, aber für einen Befehl nur wenig des teuren Speicherplatzes belegte. Mit dem Aufkommen billigen Halbleiterspeichers kam die Idee auf, bei viel Codespeicher mit möglichst wenigen, einfachen Befehlen auszukommen und durch den geringen Dekodierungsaufwand pro Befehl den Prozessortakt und dadurch die Geschwindigkeit erheblich erhöhen zu können. Worin unterscheiden sich RISC- und CISC-Prozessoren besonders? 13

15 Eigenschaften CISC RISC Anzahl der Register Wenige ( ca. 20) Viele (bis zu 200) Befehlssatz Ca. 300 Befehle und mehr als Nur rund 100 meist Registerorientierte 50 Befehlstypen Befehle Adressierungsarten Viele, z.b. 12 unterschiedlicher Nur 3 bis 5 Arten, alle gleich Befehlscodelänge lang Speicher /Caches Gemeinsame Caches, aber Getrennte Daten und Befehls- heute auch getrennte Caches (nach Harvard) Taktzyklen zur Ausführung 1 bis 20, durchschnittlich z.b. 1 bei den meisten Befehlen, eines Befehls (CPI) 4 im Schnitt 1,5 Befehlssteuerung Mikrocode, z.t. auch hartverdrahtet Meistens hartverdrahtet Beispielprozessoren Intel x86 und AMD Sun UltraSparc und PowerPC Tabelle 2 Übersicht: Eigenschaften von CISC- und RISC-Prozessoren Die Eigenschaften sind durch die unterschiedlichen Architekturen bedingt. In Abbildung 3 sind beide Architekturen gegenüber gestellt. Abbildung 3 : Aufbau eines CISC und eines RISC-Prozessors Hierzu werden Sie noch viele weitere Details in der Veranstaltung Hardware im 2. Semester hören. 3 Modelle des Computers Insbesondere für theoretische Untersuchungen lassen sich konkrete Rechnerarchitekturen, die sich ja auch ständig ändern, wenig gebrauchen. Modellbildung ist eine der zentralen Methoden der Informatik und zwingend findet dies in verschiedenen Formen auch für die Subjekte der Informatik selbst statt. Ziel der Modellbildung und die Art der Abstraktion können dabei sehr verschieden sein. Wir wollen zwei Modelle kurz betrachten. 3.1 Turingmaschinen Die Turingmaschine ist ein von dem britischen Mathematiker Alan Turing schon 1936 entwickeltes Modell, um eine Klasse von berechenbaren Funktionen zu bilden. Sie wurde speziell 14

16 zur Lösung des so genannten Entscheidungsproblems (nach Hilbert) in der Schrift "On Computable Numbers, with an Application to the Entscheidungsproblem" vorgestellt. Alan Turing beabsichtigte mit der Turingmaschine, ein Modell des mathematisch arbeitenden Menschen zu schaffen. In der Theorie der Berechenbarkeit spielt dieses Modell eine große Rolle, für Sie erst im 4. Semester. Abbildung 4: Funktionsschema einer Turing Maschine Die so genannte deterministische Turing Maschine arbeitet auf Zuständen und benutzt Einund Ausgabezeichen, die zu Alphabeten zusammengefasst werden können. Formal besteht sie aus einem 7-Tupel: M = ( Q, Σ, Γ, δ, q, ε, F ) Q ist die endliche Zustandsme nge Σ ist das endliche Eingabealp habet Γ ist δ : Q x Γ Q x Γx 0 ε Γ \ Σ 0 das endliche Bandalphab et q ist der Anfangszu stand { links, unveränder t, rechts } steht für das leere Feld F Q ist die Menge der Endzuständ e ist die Überführun gsfunktion Die Turingmaschine führt eine Berechnung aus, indem sie schrittweise eine Eingabe in eine Ausgabe umwandelt. Ein-, Ausgabe und Zwischenergebnisse werden auf dem ggf. unendlich langen Band gespeichert. Zu Beginn steht ein Wort als Eingabe auf dem Band (pro Bandfeld ein Zeichen des Eingabewortes), der Rest des Bandes ist mit dem leeren Feld formatiert. Der Schreib-/Lesekopf steht auf dem ersten Zeichen der Eingabe und die TM befindet sich im (Start-)Zustand q 0. Die Überführungsfunktion gibt an, wie die Turingmaschine schrittweise den Bandinhalt, ihren Zustand und die Position des Schreib-/Lesekopfes ändert. Diese Funktion nimmt als Argument den aktuellen Zustand und das Zeichen, was sich im aktuellen Schritt unter dem Schreib- /Lesekopf befindet. Als Ergebnis liefert sie dann genau einen Zustand (dieses wird dann der Nachfolgezustand der Turingmaschine), ein Zeichen (mit diesem Zeichen wird dann der Inhalt des Feldes, auf das der Schreib-/Lesekopf weist, überschrieben) und entweder das Symbol links (in diesem Fall bewegt sich der Schreib-/Lesekopf um ein Feld nach links), ein rechts (in diesem Fall bewegt er sich ein Feld nach rechts) oder ein unverändert (dann verharrt er auf dem selben Feld). Damit hat die Turing Maschine einen Schritt ihres Arbeitsablaufs durchlaufen und steht für einen weiteren bereit. Erreicht die Turingmaschine einen Endzustand, also einen Zustand der Menge F, ist die Berechnung beendet. Die Ausgabe ist dann der Inhalt des Bandes. Je nach Bandalphabet können Ein-/Ausgaben und Zwischenspeicherungen ggf. unterschiedlich kenntlich gemacht werden. 15

17 Das Besondere an einer Turingmaschine ist ihre konstruktive Einfachheit und die Tatsache, dass man mit einer Turing Maschine alle Probleme lösen kann, die von einem Computer überhaupt gelöst werden könnten. Turing bewies dies, bevor echte Computer realisiert waren und zeigte damit das Potential, aber auch die Grenzen des Berechenbaren auf. Die Church-Turing- These stellt schließlich die Behauptung auf, (beweisen lässt sich das nicht,) dass eine Turingmaschine alle überhaupt von Menschen berechenbaren mathematischen Funktionen lösen kann. Umgekehrt aber kann der Mensch Probleme formulieren, so z.b. das sog. Halteproblem, die nicht von Menschen (und folglich auch nicht von einer Turingmaschine) berechnet werden können. Im Kern bedeutet das Halteproblem, ob es möglich ist, bei jedem beliebigen Programm anzugeben, ob es irgendeinmal anhalten (zu Ende gehen) wird. Die wichtigste Fragestellung bezüglich des Halteproblems ist, ob es entscheidbar ist, also ob eine Turingmaschine existiert, die für jedes Paar aus kodierter Turingmaschine und Eingabe berechnen kann, ob die kodierte Maschine auf dieser Eingabe anhält. In der praktisch/angewandten Informatik lautet dieselbe Frage: Kann man ein Programm entwickeln, das als Eingabe den Quelltext eines zweiten Programms sowie dessen Eingabewerte erhält und entscheiden kann, ob das zweite Programm terminiert, d. h. nicht endlos weiterläuft? Alan Turing bewies 1936, dass es einerseits keine Turingmaschine gibt, die das Halteproblem für alle Eingaben löst. Zum anderen zeigte Turing, dass auch andere Herangehensweisen, die menschliches Denken formalisieren, nicht erfolgreicher sein können. So wurde von Turing historisch zuerst die Äquivalenz von Churchs Lambdakalkül zur Turingmaschine bewiesen. Es folgten darauf viele weitere vorgeschlagene Algorithmenbegriffe (Rechenmodelle), die alle in ihrer Berechnungsfähigkeit nicht mehr leisteten als die Turingmaschine. Man bezeichnet diese Berechnungsmöglichkeiten demzufolge als Turingvollständig. Dies ließ vermuten, dass es keinen mächtigeren Formalismus als den der Turingmaschine hinsichtlich der Berechenbarkeit gebe und der Mensch ebenfalls algorithmisch arbeitend auch nicht mehr Funktionen ausrechnen könne: die Church-Turing-These. Setzt man nun die Churchsche-Turing-These als wahr voraus, so können Maschinen und letztlich Menschen das Halteproblem (und viele andere Probleme) grundsätzlich nicht lösen. Das führt zu der philosophisch weitreichenden Aussage, dass nicht jedes Problem lösbar ist, selbst dann nicht, wenn man eigentlich alle relevanten Informationen kennt und sich streng an einen mächtigen Formalismus hält. Für die Softwareentwicklung bedeutet die Nichtentscheidbarkeit des Halteproblems, dass im Allgemeinen eine automatisierte Überprüfung jeder beliebigen Programmlogik nicht möglich ist (siehe auch Verifikation). Insbesondere bedeutet das, dass es nicht möglich ist, automatisiert festzustellen, welche Programme jemals zu einem Ende finden werden, d. h. anhalten werden. 3.2 Registermaschinen Eine Modellbildung, die vor allem in der Komplexitätstheorie (2. und 3. Semster) in der Theorie benutzt wird, sind sog. Registermaschinen. Das Modell geht auf eine Arbeit von John C. Shepherdson und Howard E. Sturgis aus dem Jahr 1963 zurück. Diese Modelle sind sehr ähnlich zu RISC-Prozessoren, nur noch ein wenig mehr vereinfacht. Die Registermaschine besteht aus einem Programm. Dieses enthält endlich viele durchnummerierte Befehle (beginnend mit Nummer 1), einen Befehlszähler b, einen Akkumulator c(0) und 16

18 einen unendlich großem Speicher aus durchnummerierten Speicherzellen (hier Register genannt) c(1), c(2), c(3),... Alle Register inklusive b und c(0) enthalten beliebig große, natürliche Zahlen. Zu Beginn enthält der Befehlszähler b den Wert 1, der Akkumulator den Wert 0. Die Speicherzellen ab Nummer 1 enthalten zu Beginn die endliche Eingabe das Programm und die Daten. Die restlichen Speicherzellen enthalten den Wert 0. Die Registermaschine führt nacheinander die Befehle des Programms aus. Es wird immer der Befehl mit der Nummer b ausgeführt. Wie man aus der Tabelle entnehmen kann, erhöhen fast alle Befehle den Befehlszähler um 1, so dass der nächste Befehl ausgeführt werden kann. Die Registermaschine endet, sobald sie den Befehl END ausführt. Das Ergebnis der Berechnung steht dann in (zuvor) definierten Registern. Das Programm kann aus folgenden Befehlen bestehen. Befehl Wirkung auf Register Wirkung auf b LOAD i c(0):=c(i) b:=b+1 CLOAD i c(0):=i b:=b+1 INDLOAD i c(0):=c(c(i)) b:=b+1 STORE i c(i):=c(0) b:=b+1 INDSTORE i c(c(i)):=c(0) b:=b+1 ADD i c(0):=c(0)+c(i) b:=b+1 CADD i c(0):=c(0)+i b:=b+1 INDADD i c(0):=c(0)+c(c(i)) b:=b+1 SUB i c(0): = max(c(0) c(i),0) b:=b+1 CSUB i c(0): = max(c(0) i,0) b:=b+1 INDSUB i c(0): = max(c(0) c(c(i)),0) b:=b+1 MUL i c(0):=c(0)*c(i) b:=b+1 CMUL i c(0):=c(0)*i b:=b+1 INDMUL i c(0):=c(0)*c(c(i)) b:=b+1 DIV i ( 0) : c(0) / c( i) c = b:=b+1 CDIV i ( 0) : c (0) / i ) c = b:=b+1 INDDIV i ( 0) : c (0) / c( c( i )) c = b:=b+1 GOTO i IF c(0) op l GOTO i b:=i b:=i falls Bedin- 17

19 op { <,, =,, > } gung c(0) op l wahr, b:=b+1 sonst. END b:=b Tabelle 3 Die Befehle der Registermaschine Wir erkennen unter den Befehlen die vier Grundrechenarten, jeweils in drei Varianten: (Ein-) adressbefehl, Direkt (Konstante) und indirekt adressiert. Hinzu kommen Lade und Speicherbefehle sowie Sprungbefehle und ein END. Wenn man so will, ist die Registermaschine eine extreme RISC-Variante, gerade so komfortabel, dass man viele Algorithmen noch bequem notieren kann, aber mathematisch noch so übersichtlich, dass man sie gut formal fassen kann. Eine Registermaschine kann alles das berechnen, was auch ein realer Rechner kann. Da man auch beweisen kann, dass sich die Registermaschine und die Turingmaschine gegenseitig (mit polynomieller Laufzeit) simulieren können, gelten Aussagen, die man für die Turingmaschine beweisen kann, auch für die Registermaschine und damit auch für reale Rechner. 3.3 Minimalmaschinen Sind all diese Befehle wirklich nötig? Eindeutig nein: Es geht sogar nur mit einem Befehl. Mit dem ultimativen RISC ist es möglich ist, einen Prozessor zu kreieren, der genau einen Befehl kennt und doch alle Aufgaben erledigen kann, die jeder andere Prozessor auch kann. Dabei wird angenommen, dass dem Computer ein unendlich großer Speicher zur Verfügung steht. Des Weiteren wird angenommen, dass die Konstante 1 fest in der Hardware vorhanden ist, woraus alle anderen Ganzzahlen konstruiert werden können. Der einzige Befehl, der gegeben wird, ist der folgende: STJ x,y,z steht dabei für "Substract, Test and Jump". Folgendes wird durch den Befehl ausgeführt: Substract: <x>:= <x> - <y>; if x<=0 then goto z else goto next instruction x, y und z sind Adressen des Speichers Wenn man unbedingt (unverzweigt) in der Befehlsfolge weitergehen will, benutzt man für z die relative Adressangabe ".+1". 18

20 4 Algorithmen In der Informatik haben wir es meist mit Programmen zu tun. Grundlage eines Programms ist aber ein sog. Algorithmus. Was verstehen wir darunter? 4.1 Der Begriff Algorithmus Unter einem Algorithmus versteht man allgemein eine genau definierte Handlungsvorschrift zur Lösung eines Problems oder einer bestimmten Art von Problemen. Im täglichen Leben lassen sich leicht Beispiele für Algorithmen finden: Zum Beispiel ist ein Koch- oder Backrezept ein Algorithmus zumindest dann, wenn alle Angaben genau genug sind und es ggf. für alle Teilaufgaben, wie Braten, Rühren, etc., ebenfalls (Teil-) Algorithmen gibt. Auch Reparatur- und Bedienungsanleitungen oder Hilfen zum Ausfüllen von Formularen sind prinzipiell Algorithmen. Das Wort Algorithmus ist eine Abwandlung oder Verballhornung des Namens von Muhammad ibn Musa al-chwarizmi (* ca. 783, ca. 850), dem Autor des Buchs Hisab al-dschabr wa-lmuqabala (825, Regeln zur Wiederherstellung und Reduktion), durch das die Algebra im Westen verbreitet wurde. Die lateinische Fassung beginnt mit Dixit Algoritmi... (Algoritmus sprach...), womit der Autor gemeint war. 4.2 Formulierung von Algorithmen Für Algorithmen gibt es unterschiedliche Repräsentationen, umgangsprachig, graphisch, als Pseudo-Programmiersprache und in einer Programmiersprache, als Maschinenprogramm einer Turingmaschine, usw. Diese reichen vom Algorithmus als abstraktes Gegenstück zum konkret auf eine Maschine zugeschnittenen Programm (d. h., die Abstraktion erfolgt hier im Weglassen der Details der realen Maschine, das Programm ist eine konkrete Form des Algorithmus, angepasst an die Notwendigkeiten und Möglichkeiten der realen Maschine) bis zur Ansicht, Algorithmen seien gerade die Maschinenprogramme von Turingmaschinen (wobei hier die Abstraktion in der Verwendung der Turingmaschine an sich erfolgt, d. h., in einem mathematischen Modell). Der erste für einen Computer gedachte Algorithmus wurde 1842 von Ada Lovelace in ihren Notizen zu Charles Babbages Analytical Engine festgehalten. Sie gilt deshalb als die erste Programmiererin. Die mangelnde mathematische Genauigkeit des Begriffs Algorithmus störte aber viele Mathematiker und Logiker des 19. und 20. Jahrhunderts. Insbesondere steht die natürliche Sprache mit ihren Unschärfen und Widersprüchlichkeiten der Forderung nach Eindeutigkeit und Widerspruchsfreiheit im Wege; man betrachte zum Beispiel nur einmal ein Kochrezept oder eine Bedienungsanleitung. Wir benötigen für den Computer eine erheblich höhere Präzision der Anweisungen als für den Menschen, der noch über semantisches Zusatzwissen verfügt. Insbesondere in der ersten Hälfte des 20. Jahrhunderts wurde eine ganze Reihe von Ansätzen entwickelt, um zu einer genauen Definition zu kommen. Formalisierungen des Berechenbarkeitsbegriffs sind die Turing-Maschine (Alan Turing), das Lambda-Kalkül (Alonzo Church), rekursive Funktionen und Chomsky-Grammatiken viele dieser Formalismen werden Sie in Ihrem Studium noch kennenlernen. 19

Brückenkurs / Computer

Brückenkurs / Computer Brückenkurs / Computer Sebastian Stabinger IIS 23 September 2013 Sebastian Stabinger (IIS) Brückenkurs / Computer 23 September 2013 1 / 20 Content 1 Allgemeines zum Studium 2 Was ist ein Computer? 3 Geschichte

Mehr

1 Vom Problem zum Programm

1 Vom Problem zum Programm 1 Vom Problem zum Programm Ein Problem besteht darin, aus einer gegebenen Menge von Informationen eine weitere (bisher unbekannte) Information zu bestimmen. 1 Vom Problem zum Programm Ein Algorithmus ist

Mehr

2.2 Rechnerorganisation: Aufbau und Funktionsweise

2.2 Rechnerorganisation: Aufbau und Funktionsweise 2.2 Rechnerorganisation: Aufbau und Funktionsweise é Hardware, Software und Firmware é grober Aufbau eines von-neumann-rechners é Arbeitsspeicher, Speicherzelle, Bit, Byte é Prozessor é grobe Arbeitsweise

Mehr

Einführung in die Informatik

Einführung in die Informatik Einführung in die Informatik Geschichte und Einteilung der Informatik 01101101 01011001 11010011 10011000 00000011 00011100 01111111 11111111 00110100 00101110 11101110 01110010 10011101 00111010 2 Der

Mehr

Brückenkurs / Computer

Brückenkurs / Computer Brückenkurs / Computer Sebastian Stabinger IIS 22 September 2014 1 / 24 Content 1 Allgemeines zum Studium 2 Was ist ein Computer? 3 Geschichte des Computers 4 Komponenten eines Computers 5 Aufbau eines

Mehr

1. Übung - Einführung/Rechnerarchitektur

1. Übung - Einführung/Rechnerarchitektur 1. Übung - Einführung/Rechnerarchitektur Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: Was ist Hard- bzw. Software? a Computermaus b Betriebssystem c Drucker d Internetbrowser

Mehr

Geschichte der Informatik

Geschichte der Informatik Entwicklung von Informationstechnik und Durchdringung des Alltags seit der 2. Hälfte des 20 Jahrhunderts explosionsartig Informationsgesellschaft Zunehmende Bedeutung und Wert von Informationen Schnelle

Mehr

Die Erfindung der ersten Computer und Vergleich der Intentionen der Erfinder

Die Erfindung der ersten Computer und Vergleich der Intentionen der Erfinder Die Erfindung der ersten Computer und Vergleich der Intentionen der Erfinder Konrad Zuse John Atanasoff John Mauchly Inwiefern ist Konrad Zuse der Erfinder des Computers? von Ivo Adrian Knabe 20. März

Mehr

Die Geschichte des Computers

Die Geschichte des Computers Inhaltsverzeichnis Der Vorbote des Computers... 3 Der Erfinder des ersten Computers... 3 Die Computer... 4 Der erste Computer Z1... 4 Der zweite Computer Z3... 5 Der Mark I... 6 Der ENIAC... 7 Der SSEC...

Mehr

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München

Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (0) Erster funktionsfähiger programmgesteuerter Rechenautomat Z3, fertiggestellt 1941 Bild: Nachbau im Deutschen Museum München Einführung (1) Was ist ein Rechner? Maschine, die Probleme für

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Das Von-Neumann-Prinzip Prinzipien der Datenverarbeitung Fast alle modernen Computer funktionieren nach dem Von- Neumann-Prinzip. Der Erfinder dieses Konzeptes John von Neumann (1903-1957) war ein in den

Mehr

Das Rechnermodell von John von Neumann

Das Rechnermodell von John von Neumann Das Rechnermodell von John von Neumann Historisches Die ersten mechanischen Rechenmaschinen wurden im 17. Jahhundert entworfen. Zu den Pionieren dieser Entwichlung zählen Wilhelm Schickard, Blaise Pascal

Mehr

Informatik Mensch Gesellschaft. Historische Entwicklung der Informationstechnik (von Anfang bis Heute)

Informatik Mensch Gesellschaft. Historische Entwicklung der Informationstechnik (von Anfang bis Heute) Informatik Mensch Gesellschaft Historische Entwicklung der Informationstechnik (von Anfang bis Heute) Algorithmen-Automat Schritt-für-Schritt-Anleitung zum Lösen mathematischer Probleme kann immer wieder

Mehr

Elektromechanische Computer

Elektromechanische Computer Elektromechanische Computer Erfinder, ihre Biographien und Maschinen Konrad Zuse George Stibitz Howard Aiken Konrad Zuse: Biographie I Geburt: 22.06.1910 in Berlin 1928 Studium Maschinenbau (TH Berlin-Charl.),

Mehr

Algorithmus, siehe (1)

Algorithmus, siehe (1) Der Computer als elektronische Rechenmaschine entstand in den vierziger Jahren des 20. Jahrhunderts. Die Gedankenwelt der Informatik lässt sich aber bedeutend weiter zurückverfolgen. Mit diesem Kapitel

Mehr

Die Mikroprogrammebene eines Rechners

Die Mikroprogrammebene eines Rechners Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten, z.b. Befehl holen Befehl dekodieren Operanden holen etc.

Mehr

L3. Datenmanipulation

L3. Datenmanipulation L Datenmanipulation Aufbau eines Computers Prozessor, Arbeitsspeicher und system Maschinensprachen und Maschinenbefehle Beispiel einer vereinfachten Maschinensprache Ausführung des Programms und Befehlszyklus

Mehr

Informatik Historie, Übersicht, Teilgebiete

Informatik Historie, Übersicht, Teilgebiete Informatik Historie, Übersicht, Teilgebiete Seite 1 Informatik als akademische Disziplin Informatik = Information + Automation (Karl Steinbuch) Informatique in Frankreich,... Computer Science in angels.

Mehr

Programmieren. Kapitel 2: Der Traum vom automatischen Rechnen ein Streifzug durch die Computergeschichte. Wintersemester 2008/2009

Programmieren. Kapitel 2: Der Traum vom automatischen Rechnen ein Streifzug durch die Computergeschichte. Wintersemester 2008/2009 Institut für Telematik Universität zu Lübeck Programmieren Kapitel 2: Der Traum vom automatischen Rechnen ein Streifzug durch die Computergeschichte Wintersemester 2008/2009 Prof. Dr. Christian Werner

Mehr

Ideen der Informatik. Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann

Ideen der Informatik. Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann Ideen der Informatik Was ist ein Computer? Was ist ein Programm? Können Computer Alles? Kurt Mehlhorn und Adrian Neumann Was ist ein Computer? 2 Übersicht Was ist ein Computer, ein Programm? Turings Antwort

Mehr

1. Entwicklung der Datenverarbeitung

1. Entwicklung der Datenverarbeitung 1. Entwicklung der Datenverarbeitung 1.1. Vom Abakus zum Pentium Schon im Altertum war man bestrebt, sich Hilfsmittel zu schaffen, die das Zählen und Rechnen erleichterten. Formulierung mechanischer Abläufe

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 1 Vom Abakus bis zum Personal Computer... 1-2 1.1 Einleitung... 1-2 1.2 Geschichte der Informatik... 1-3 1.2.1 Rechenhilfsmittel... 1-3 1.2.2 Mechanische Rechenmaschinen... 1-3 1.2.3 0. Generation

Mehr

1. Geschichte des Computers

1. Geschichte des Computers 1. Geschichte des Computers Als erster Computer galt "Abakus", der vor rund 5 000 Jahren von den Chinesen erfunden wurde. Blaise Pascal (1623-1662): erfand 1643 einen Apparat, mit dem man einfache Additionen

Mehr

Aufbau und Funktionsweise eines Computers

Aufbau und Funktionsweise eines Computers Aufbau und Funktionsweise eines Computers Thomas Röfer Hardware und Software von Neumann Architektur Schichtenmodell der Software Zahlsysteme Repräsentation von Daten im Computer Hardware Prozessor (CPU)

Mehr

GESCHICHTE DER COMPUTERTECHNIK

GESCHICHTE DER COMPUTERTECHNIK GESCHICHTE DER COMPUTERTECHNIK Rebekka Mönch Projekt ://reisefieber WS 2005/06 Bauhaus-Universität Weimar Ich glaube, dass es auf der Welt einen Bedarf von vielleicht fünf Computern geben wird. Künftige

Mehr

Technische Informatik. Der VON NEUMANN Computer

Technische Informatik. Der VON NEUMANN Computer Technische Informatik Der VON NEUMANN Computer Inhalt! Prinzipieller Aufbau! Schaltkreise! Schaltnetze und Schaltwerke! Rechenwerk! Arbeitsspeicher! Steuerwerk - Programmausführung! Periphere Geräte! Abstraktionsstufen

Mehr

Instruktionssatz-Architektur

Instruktionssatz-Architektur Institut für Informatik 3: Rechnerarchitektur Friedrich-Alexander-Universität Erlangen-Nürnberg WS 2005/2006 Übersicht 1 Einleitung 2 Bestandteile der ISA 3 CISC / RISC Übersicht 1 Einleitung 2 Bestandteile

Mehr

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt:

Zur Vereinfachung betrachten wir nun nur noch Funktionen f, die einen Funktionswert f nµberechnen. Sie werden alle in einer Tabelle dargestellt: Informatik 13: Gierhardt Theoretische Informatik III Berechenbarkeit Nicht-berechenbare Funktionen Nach der Church-Turing-These kann alles, was berechenbar ist, mit einer Turing-Maschine oder einer While-Maschine

Mehr

FHZ. K01 Geschichte des Computers. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt

FHZ. K01 Geschichte des Computers. Lernziele. Hochschule Technik+Architektur Luzern. Inhalt Inhalt 1. Geschichte Folie 1 Lernziele Sie kennen die wichtigsten Punkte in der Geschichte des Computers Sie sind mit einigen Begriffen vertraut Folie 2 Seite 1 Computer als elektronische Rechenmaschine:

Mehr

Theoretische Informatik 1

Theoretische Informatik 1 Theoretische Informatik 1 Bernhard Nessler Institut für Grundlagen der Informationsverabeitung TU Graz SS 2007 Übersicht 1 Allgemein Teilgebiete der Informatik ohne Theoretische Grundlagen 2 Fragen an

Mehr

Grundlagen der Rechnerarchitektur

Grundlagen der Rechnerarchitektur Grundlagen der Rechnerarchitektur Einführung Unsere erste Amtshandlung: Wir schrauben einen Rechner auf Grundlagen der Rechnerarchitektur Einführung 2 Vorlesungsinhalte Binäre Arithmetik MIPS Assembler

Mehr

Kap 4. 4 Die Mikroprogrammebene eines Rechners

Kap 4. 4 Die Mikroprogrammebene eines Rechners 4 Die Mikroprogrammebene eines Rechners Das Abarbeiten eines Arbeitszyklus eines einzelnen Befehls besteht selbst wieder aus verschiedenen Schritten (Befehl holen, Befehl dekodieren, Operanden holen etc.).

Mehr

Das Prinzip an einem alltäglichen Beispiel

Das Prinzip an einem alltäglichen Beispiel 3.2 Pipelining Ziel: Performanzsteigerung é Prinzip der Fließbandverarbeitung é Probleme bei Fließbandverarbeitung BB TI I 3.2/1 Das Prinzip an einem alltäglichen Beispiel é Sie kommen aus dem Urlaub und

Mehr

Programmieren was ist das genau?

Programmieren was ist das genau? Programmieren was ist das genau? Programmieren heisst Computerprogramme herstellen (von griechisch programma für Vorschrift). Ein Computerprogramm ist Teil der Software eines Computers. Als Software bezeichnet

Mehr

Angewandte Informatik

Angewandte Informatik Angewandte Informatik Teil 2.1 Was ist Hardware? Die Zentraleinheit! 1 von 24 Inhaltsverzeichnis 3... Was ist Hardware? 4... Teile des Computers 5... Zentraleinheit 6... Die Zentraleinheit 7... Netzteil

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Funktionsweise von Computern Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Inhalt 1. Ein Blick zurück 2. Stand

Mehr

IT für Führungskräfte. Zentraleinheiten. 11.04.2002 Gruppe 2 - CPU 1

IT für Führungskräfte. Zentraleinheiten. 11.04.2002 Gruppe 2 - CPU 1 IT für Führungskräfte Zentraleinheiten 11.04.2002 Gruppe 2 - CPU 1 CPU DAS TEAM CPU heißt Central Processing Unit! Björn Heppner (Folien 1-4, 15-20, Rollenspielpräsentation 1-4) Harald Grabner (Folien

Mehr

Teil VIII Von Neumann Rechner 1

Teil VIII Von Neumann Rechner 1 Teil VIII Von Neumann Rechner 1 Grundlegende Architektur Zentraleinheit: Central Processing Unit (CPU) Ausführen von Befehlen und Ablaufsteuerung Speicher: Memory Ablage von Daten und Programmen Read Only

Mehr

ODER I EINFÜHRUNG, GESCHICHTE, PROGRAMMIEREN. Marcel Götze

ODER I EINFÜHRUNG, GESCHICHTE, PROGRAMMIEREN. Marcel Götze GRUNDKURS INFORMATIK ODER WIE DENKEN INFORMATIKER? I EINFÜHRUNG, GESCHICHTE, PROGRAMMIEREN Marcel Götze Überblick 1. Organisatorisches 2. Themen und Ziele der Vorlesung 3. Übungen 4. Wb Web 5. Literatur

Mehr

D A T E N... 1 Daten Micheuz Peter

D A T E N... 1 Daten Micheuz Peter D A T E N.....! Symbole, Alphabete, Codierung! Universalität binärcodierter Daten! Elementare Datentypen! Speicherung binärcodierter Daten! Befehle und Programme! Form und Bedeutung 1 Daten Micheuz Peter

Mehr

Informatik im Studiengang Allgemeiner Maschinenbau Sommersemester 2014

Informatik im Studiengang Allgemeiner Maschinenbau Sommersemester 2014 Informatik im Studiengang Allgemeiner Maschinenbau Sommersemester 2014 Prof. Dr.-Ing. habil. Peter Sobe Fakultät Informatik / Mathematik Zur Person: Prof. Dr.-Ing. habil. Peter Sobe Fakultät Informatik/Mathematik

Mehr

Grundlagen der Computertechnik

Grundlagen der Computertechnik Grundlagen der Computertechnik Aufbau von Computersystemen und Grundlagen des Rechnens Walter Haas PROLOG WS23 Automation Systems Group E83- Institute of Computer Aided Automation Vienna University of

Mehr

L 371/128 DE Amtsblatt der Europäischen Union 30.12.2014

L 371/128 DE Amtsblatt der Europäischen Union 30.12.2014 L 371/128 DE Amtsblatt der Europäischen Union 30.12.2014 KATEGORIE 4 RECHNER Anmerkung 1: Rechner, verwandte Geräte und Software für Telekommunikations- oder Local Area Network - Funktionen sind auch nach

Mehr

Herzlichen Glückwunsch!... 9

Herzlichen Glückwunsch!... 9 Inhalt Einführung Herzlichen Glückwunsch!...................... 9 Teil I Darwins Algorithmus 1. Geradewegs ins Chaos....................... 17 2. Was Darwin nicht wusste..................... 36 3. Die

Mehr

Vorlesung Technische Grundlagen der Informatik ( TGI)

Vorlesung Technische Grundlagen der Informatik ( TGI) Vorlesung Technische Grundlagen der Informatik ( TGI) Prof. Dr. Rudolf Latz Fachbereich Informatik & Kommunikation Westfälische Hochschule Gelsenkirchen Bocholt Recklinghausen Die Unterlagen sind als Arbeitsgrundlage

Mehr

2 Der Schnelleinstieg *

2 Der Schnelleinstieg * 7 2 Der Schnelleinstieg * Eine Programmiersprache können Sie auf verschiedene Art und Weise lernen. Sie können sich zuerst mit den Konzepten befassen und anschließend mit der Praxis oder umgekehrt. Damit

Mehr

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1

Ein kleiner Einblick in die Welt der Supercomputer. Christian Krohn 07.12.2010 1 Ein kleiner Einblick in die Welt der Supercomputer Christian Krohn 07.12.2010 1 Vorschub: FLOPS Entwicklung der Supercomputer Funktionsweisen von Supercomputern Zukunftsvisionen 2 Ein Top10 Supercomputer

Mehr

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011

Rechnerorganisation 2 TOY. Karl C. Posch. co1.ro_2003. Karl.Posch@iaik.tugraz.at 16.03.2011 Technische Universität Graz Institut tfür Angewandte Informationsverarbeitung und Kommunikationstechnologie Rechnerorganisation 2 TOY Karl C. Posch Karl.Posch@iaik.tugraz.at co1.ro_2003. 1 Ausblick. Erste

Mehr

Ein kleines Computer-Lexikon

Ein kleines Computer-Lexikon Stefan Edelmann 10b NIS-Klasse Ein kleines Computer-Lexikon Mainboard Die Hauptplatine! Sie wird auch Motherboard genannt. An ihr wird das gesamte Computerzubehör angeschlossen: z.b. Grafikkarte Soundkarte

Mehr

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Stefan Lucks Diskrete Strukturen (WS 2009/10) 57 2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik Uhr: Stunden mod 24, Minuten mod 60, Sekunden mod 60,... Rechnerarithmetik: mod 2 w, w {8, 16, 32,

Mehr

Grundlagen der Informatik

Grundlagen der Informatik Grundlagen der Informatik Prof. Dr. Bernhard Schiefer bernhard.schiefer@fh-kl.de http://www.fh-kl.de/~schiefer Wesentliche Inhalte Einführung Rechnergrundlagen Grundlagen der Programmierung Kern imperativer

Mehr

Codesigned Virtual Machines

Codesigned Virtual Machines Codesigned Virtual Machines Seminar Virtualisierung Philipp Kirchhofer philipp.kirchhofer@student.kit.edu Institut für Technische Informatik Lehrstuhl für Rechnerarchitektur Universität Karlsruhe (TH)

Mehr

Computeria Urdorf. Treff vom 16. Januar 2013. Was ist ein Computer?

Computeria Urdorf. Treff vom 16. Januar 2013. Was ist ein Computer? Computeria Urdorf Treff vom 16. Januar 2013 Was ist ein Computer? Der Vater des Computers Charles Babbage (26.12.1791 18.10.1871) Erfinder der mechanische Rechenmaschine Die Entwicklung des Computers Karl

Mehr

Lektion 3: Was ist und was kann ein Computer?

Lektion 3: Was ist und was kann ein Computer? Lektion 3: Was ist und was kann ein Computer? Helmar Burkhart Informatik burkhart@ifi.unibas.ch EINFÜHRUNG IN DIE INFORMATIK I 3-0 Übersicht Lektion 3 Hardware Software Aufbau eines Computers Rechnerkern

Mehr

Zahlendarstellungen und Rechnerarithmetik*

Zahlendarstellungen und Rechnerarithmetik* Zahlendarstellungen und Rechnerarithmetik* 1. Darstellung positiver ganzer Zahlen 2. Darstellung negativer ganzer Zahlen 3. Brüche und Festkommazahlen 4. binäre Addition 5. binäre Subtraktion *Die Folien

Mehr

Approximationsalgorithmen

Approximationsalgorithmen Ausarbeitung zum Thema Approximationsalgorithmen im Rahmen des Fachseminars 24. Juli 2009 Robert Bahmann robert.bahmann@gmail.com FH Wiesbaden Erstellt von: Robert Bahmann Zuletzt berarbeitet von: Robert

Mehr

Vom Chip zum Gehirn Elektronische Systeme zur Informationsverarbeitung

Vom Chip zum Gehirn Elektronische Systeme zur Informationsverarbeitung Vom Chip zum Gehirn Elektronische Systeme zur Informationsverarbeitung Johannes Schemmel Forschungsgruppe Electronic Vision(s) Lehrstuhl Prof. K. Meier Ruprecht-Karls-Universität Heidelberg Mitarbeiter:

Mehr

3. Ziel der Vorlesung

3. Ziel der Vorlesung 3. Ziel der Vorlesung Der Zweck der Vorlesung ist das Studium fundamentaler Konzepte in der Algorithmentheorie. Es werden relevante Maschinenmodelle, grundlegende und höhere Datenstrukturen sowie der Entwurf

Mehr

Grundlagen der Informatik

Grundlagen der Informatik : : : : : : : : : : : : : : : : : : : : : : Grundlagen der Informatik Unter Verwendung von Folien von Prof. Helmut Balzert MICHAEL M. RESCH (HLRS) Rechnersysteme II : : : : : : : : : : : : : : : : : :

Mehr

Vorlesung Computational Engineering I Rechnerarchitektur WS 2012/13

Vorlesung Computational Engineering I Rechnerarchitektur WS 2012/13 Vorlesung Computational Engineering I Rechnerarchitektur WS 2012/13 Professor Dr.-Ing. Dietmar Fey Lehrstuhl Informatik 3 - Rechnerarchitektur WS 2012/13, 16./18.10.2012 Folie 1 Inhalt Vorlesung Organisatorisches

Mehr

Ausarbeitung Seminarvortrag High-Performance-Computing WS 2011/2012

Ausarbeitung Seminarvortrag High-Performance-Computing WS 2011/2012 Ausarbeitung Seminarvortrag High-Performance-Computing WS 2011/2012 Matthias Bott 9. Januar 2012 2 VOM PC ZUM HPC 2 1 Movtivation Auf die Frage, wofür Computer in der Kernphysik benötigt werden, gibt es

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Algorithmen und deren Programmierung Prof. Dr. Nikolaus Wulff Definition Algorithmus Ein Algorithmus ist eine präzise formulierte Handlungsanweisung zur Lösung einer gleichartigen

Mehr

Technischer Aufbau und allgemeine Funktionsweise eines Computers

Technischer Aufbau und allgemeine Funktionsweise eines Computers Technischer Aufbau und allgemeine Funktionsweise eines Computers Jannek Squar Proseminar CiS Physik 01.11.2011 Technischer Aufbau und allgemeine Funktionsweise eines Computers -Was ist ein Computer S.

Mehr

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE:

3. Turingmaschinen FORMALISIERUNG VON ALGORITHMEN. Turingmaschinen Registermaschinen Rekursive Funktionen UNTERSCHEIDUNGSMERKMALE DER ANSÄTZE: FORMALISIERUNG VON ALGORITHMEN Wegen der beobachteten Zusammenhänge zwischen Berechnungs-, Entscheidungs- und Aufzählungsverfahren genügt es Berechnungsverfahren zu formalisieren. Weiter genügt es Verfahren

Mehr

Computer-Generationen

Computer-Generationen (K.Zuses Z3, 1941) (Vorschlag) Generation Beispiel Technologie Geschw./Speich. Software Vorgeneration Z3 Elektro- 0,0002 MIPS Verdrahtet 1941-1944 Mark1 mechanik 1.Generation ENIAC, Z22 Elektronen- 0,02

Mehr

Geschichte des Computers. Die Geschichte des Computers

Geschichte des Computers. Die Geschichte des Computers Die Geschichte des Computers Die Entwicklung macht vor niemandem Halt! Woher kommen die Zahlen? Die ersten primitiven Zahlenzeichen entstanden ca. 30 000 Jahre v. Chr. Die ersten bekannten Schriftsysteme

Mehr

Pr og r ammier kur s

Pr og r ammier kur s Pr og r ammier kur s SoSe 2013 Markus Geveler Inst. f. Applied Mathematics, TU Dortmund markus.geveler@math.tu-dortmund.de HOME http://www.mathematik.tu-dortmund.de/sites/pk-ss13 Lesson 1 Was machen wir

Mehr

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen

Entscheidungsprobleme. Berechenbarkeit und Komplexität Entscheidbarkeit und Unentscheidbarkeit. Die Entscheidbarkeit von Problemen Berechenbarkeit und Komlexität Entscheidbarkeit und Unentscheidbarkeit Wolfgang Schreiner Wolfgang.Schreiner@risc.uni-linz.ac.at Research Institute for Symbolic Comutation (RISC) Johannes Keler University,

Mehr

Der Zahlen-Hellseher. Der Zahlen-Hellseher. Der Zahlen-Hellseher. Der Zahlen-Hellseher

Der Zahlen-Hellseher. Der Zahlen-Hellseher. Der Zahlen-Hellseher. Der Zahlen-Hellseher Bitte acht Bit für ein Byte oder warum funktioniert der Computer Ich denke mir eine Zahl, die ist abgebildet bild auf Winter, Herbst und Frühling. 1 Es ist die 13 2 Ich denke mir eine Zahl, die ist abgebildet

Mehr

Information in einem Computer ist ein

Information in einem Computer ist ein 4 Arithmetik Die in den vorhergehenden Kapiteln vorgestellten Schaltungen haben ausschließlich einfache, Boole sche Signale verarbeitet. In diesem Kapitel wird nun erklärt, wie Prozessoren mit Zahlen umgehen.

Mehr

Informatik und Informationstechnik (IT)

Informatik und Informationstechnik (IT) Informatik und Informationstechnik (IT) Abgrenzung Zusammenspiel Übersicht Informatik als akademische Disziplin Informations- und Softwaretechnik Das Berufsbild des Informatikers in der Bibliothekswelt

Mehr

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5)

Einführung. Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Vorlesungen zur Komplexitätstheorie. K-Vollständigkeit (1/5) Einführung 3 Vorlesungen zur Komplexitätstheorie: Reduktion und Vollständigkeit (3) Univ.-Prof. Dr. Christoph Meinel Hasso-Plattner-Institut Universität Potsdam, Deutschland Hatten den Reduktionsbegriff

Mehr

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt

x 2 2x + = 3 + Es gibt genau ein x R mit ax + b = 0, denn es gilt - 17 - Die Frage ist hier also: Für welche x R gilt x = x + 1? Das ist eine quadratische Gleichung für x. Es gilt x = x + 1 x x 3 = 0, und man kann quadratische Ergänzung machen:... ( ) ( ) x x + = 3 +

Mehr

Ausarbeitung des Interpreter Referats

Ausarbeitung des Interpreter Referats Ausarbeitung des Interpreter Referats Gliederung 1. Programmiersprache 1.2. Syntax 1.2.1. Konkrete Syntax 1.2.2. Abstrakter Syntax Baum (Abstrakte Syntax) 2. Parser 2.1. Syntaktische Struktur einer Sprache

Mehr

Technische Informatik - Eine Einführung

Technische Informatik - Eine Einführung Martin-Luther-Universität Halle-Wittenberg Fachbereich Mathematik und Informatik Lehrstuhl für Technische Informatik Prof. P. Molitor Ausgabe: 2005-02-21 Abgabe: 2005-02-21 Technische Informatik - Eine

Mehr

Vom Abitur zur Informatik (computer science)

Vom Abitur zur Informatik (computer science) Vom Abitur zur Informatik (computer science) André Frimberger, andre@frimberger.de 16.06.2009 André Frimberger Vom Abitur zur Informatik (computer science) 1 1 Einleitung Was ist Informatik? 2 Das Informatikstudium:

Mehr

Lösungsvorschlag für das Übungsblatt 1. Aufgabe 1.

Lösungsvorschlag für das Übungsblatt 1. Aufgabe 1. Lösungsvorschlag für das Übungsblatt 1. Aufgabe 1. Zusammengefasst aus Ihren Beiträgen Wie bewerten sie das System ingesamt? Das Watson System verdeutlicht den Fortschritt der Künstlichen Intelligenz Forschung/Computerlinguistik/Informatik

Mehr

Berühmte Informatiker

Berühmte Informatiker Berühmte Informatiker Teil 5: Konrad Zuse 1910-1995 Konrad Zuse * 22.06.1910 in Berlin 18.12.1995 in Hünfeld bei Fulda Erfinder des ersten funktionsfähigen Computers Erfinder der ersten funktionalen (!)

Mehr

Zuschauer beim Berlin-Marathon

Zuschauer beim Berlin-Marathon Zuschauer beim Berlin-Marathon Stefan Hougardy, Stefan Kirchner und Mariano Zelke Jedes Computerprogramm, sei es ein Betriebssystem, eine Textverarbeitung oder ein Computerspiel, ist aus einer Vielzahl

Mehr

HISTORISCHES INFORMATIK-MUSEUM DER UNIVERSIDAD POLITECNICA DE MADRID

HISTORISCHES INFORMATIK-MUSEUM DER UNIVERSIDAD POLITECNICA DE MADRID HISTORISCHES INFORMATIK-MUSEUM DER UNIVERSIDAD POLITECNICA DE MADRID Die Initiative, ein historisches Informatik-Museum zu gründen, ist Pionier im Rahmen der spanischen Universitäten. Sie hat das Sammeln

Mehr

Kann ein Computer denken?

Kann ein Computer denken? Kann ein Computer denken? Fachbereich Betriebswirtschaft FH www.fh-koblenz.de/bw/komus www.komus.de www.fh-koblenz.de/bw/komus www.fh-koblenz.de/bw/komus 2 www.fh-koblenz.de/bw/komus 3 www.fh-koblenz.de/bw/komus

Mehr

Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen

Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen Binärcodierung elementarer Datentypen: Darstellung negativer Zahlen Statt positive Zahlen von 0 bis 2 n -1mit einem Bitmuster der Länge n darzustellen und arithmetische Operationen darauf auszuführen,

Mehr

1.4.12 Sin-Funktion vgl. Cos-Funktion

1.4.12 Sin-Funktion vgl. Cos-Funktion .4. Sgn-Funktion Informatik. Semester 36 36.4.2 Sin-Funktion vgl. Cos-Funktion Informatik. Semester 37 37 .4.3 Sqr-Funktion Informatik. Semester 38 38.4.4 Tan-Funktion Informatik. Semester 39 39 .5 Konstanten

Mehr

Entwicklung eines korrekten Übersetzers

Entwicklung eines korrekten Übersetzers Entwicklung eines korrekten Übersetzers für eine funktionale Programmiersprache im Theorembeweiser Coq Thomas Strathmann 14.01.2011 Gliederung 1 Einleitung

Mehr

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens

Mathematische Grundlagen der Kryptographie. 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe. Stefan Brandstädter Jennifer Karstens Mathematische Grundlagen der Kryptographie 1. Ganze Zahlen 2. Kongruenzen und Restklassenringe Stefan Brandstädter Jennifer Karstens 18. Januar 2005 Inhaltsverzeichnis 1 Ganze Zahlen 1 1.1 Grundlagen............................

Mehr

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär

Zahlensysteme. Digitale Rechner speichern Daten im Dualsystem 435 dez = 1100110011 binär Zahlensysteme Menschen nutzen zur Angabe von Werten und zum Rechnen vorzugsweise das Dezimalsystem Beispiel 435 Fische aus dem Teich gefischt, d.h. 4 10 2 + 3 10 1 +5 10 0 Digitale Rechner speichern Daten

Mehr

2. Rechnerarchitektur 2.1 einfache Computer

2. Rechnerarchitektur 2.1 einfache Computer Fakultät Informatik Institut Systemarchitektur Professur Rechnernetze WS 2012 LV Informatik-I für Verkehrsingenieure 2. Rechnerarchitektur 2.1 einfache Computer Dr. rer.nat. D. Gütter Mail: WWW: Dietbert.Guetter@tu-dresden.de

Mehr

Zum Einsatz von Operatoren im Informatikunterricht

Zum Einsatz von Operatoren im Informatikunterricht Friedrich-Schiller-Universität Jena Fakultät für Mathematik und Informatik Professur für Didaktik der Informatik/Mathematik Claudia Strödter E-Mail: claudia.stroedter@uni-jena.de Zum Einsatz von Operatoren

Mehr

1. Grundlegende Konzepte der Informatik

1. Grundlegende Konzepte der Informatik 1. Grundlegende Konzepte der Informatik Inhalt Algorithmen Darstellung von Algorithmen mit Programmablaufplänen Beispiele für Algorithmen Aussagenlogik Zahlensysteme Kodierung Peter Sobe 1 Algorithmen

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 1 Algorithmen und Programme... 1-2 1.1 Algorithmus... 1-3 1.2 Programm... 1-4 1.2.1 Hauptkomponenten des Aufbaus eines Rechners... 1-4 1.2.2 Ein Programm für einen Algorithmus... 1-6 1.2.3 Rekursion...

Mehr

Lösungsvorschlag zur 4. Übung

Lösungsvorschlag zur 4. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 4. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche Aussagen zu Bewertungskriterien

Mehr

Im Original veränderbare Word-Dateien

Im Original veränderbare Word-Dateien Binärsystem Im Original veränderbare Word-Dateien Prinzipien der Datenverarbeitung Wie du weißt, führen wir normalerweise Berechnungen mit dem Dezimalsystem durch. Das Dezimalsystem verwendet die Grundzahl

Mehr

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13

Enterprise Computing Einführung in das Betriebssystem z/os. Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 UNIVERSITÄT LEIPZIG Enterprise Computing Einführung in das Betriebssystem z/os Prof. Dr. Martin Bogdan Prof. Dr.-Ing. Wilhelm G. Spruth WS2012/13 Verarbeitungsgrundlagen Teil 2 Virtual Storage el0100 copyright

Mehr

Projekt für Systemprogrammierung WS 06/07

Projekt für Systemprogrammierung WS 06/07 Dienstag 30.01.2007 Projekt für Systemprogrammierung WS 06/07 Von: Hassan Bellamin E-Mail: h_bellamin@web.de Gliederung: 1. Geschichte und Definition 2. Was ist Virtualisierung? 3. Welche Virtualisierungssoftware

Mehr

Technische Informatik 2 Computer Geschichte

Technische Informatik 2 Computer Geschichte Technische Informatik 2 Computer Geschichte Prof. Dr. Miroslaw Malek Sommersemester 2009 www.informatik.hu-berlin.de/rok/ca Thema heute Mechanisches Zeitalter: Personen und Maschinen Babbage Erste Programme

Mehr

Kapitel 1. Programmierkurs. 1.2 Allgemeiner Aufbau des Computers. 1.1 Hallo, Computer...?

Kapitel 1. Programmierkurs. 1.2 Allgemeiner Aufbau des Computers. 1.1 Hallo, Computer...? Kapitel 1 Programmierkurs Birgit Engels, Anna Schulze ZAIK Universität zu Köln Einführung Hallo, Computer...? Aufbau eines Computers Was ist eine Programmiersprache? Der Programmierprozess Warum Java?

Mehr

Geschichte des Hochleistungsrechnens. Prof. Dr. Thomas Ludwig

Geschichte des Hochleistungsrechnens. Prof. Dr. Thomas Ludwig Geschichte des Hochleistungsrechnens Prof. Dr. Thomas Ludwig DKRZ / UHH Prediger 1,9 Was geschehen ist, wird wieder geschehen, was man getan hat, wird man wieder tun: Es gibt nichts Neues unter der Sonne.

Mehr

Programmierung mobiler Kleingeräte

Programmierung mobiler Kleingeräte Programmierung mobiler Kleingeräte Computergeschichte und Ubiquitous Computing Wolfgang Auer, Patrick Ritschel Automation Urzeit Wildfallen Griechisches Altertum Tempeltor des Heron Automatentheater Arabische

Mehr

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke

bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke Rechnerarithmetik Rechnerarithmetik 22 Prof. Dr. Rainer Manthey Informatik II Übersicht bereits in A,3 und A.4: Betrachtung von Addierschaltungen als Beispiele für Schaltnetze und Schaltwerke in diesem

Mehr

CHARON-AXP Alpha Hardwarevirtualisierung

CHARON-AXP Alpha Hardwarevirtualisierung Alpha virtualisierung Nutzung von Softwareinvestitionen auf neuer plattform Jörg Streit, Reinhard Galler Inhalt: Alpha überblick Wozu Alpha? Prinzip der Produkte Performance Cluster Support Zusammenfassung

Mehr