Forum: Offtopic Registermaschinen


von Dennis K. (has_an91)


Lesenswert?

Guten Abend,

beschäftige mich zur Zeit mit Registermaschinen.

Ich habe sehr viel Recherchiert und immernoch nicht herausfinden können, 
wo Registermaschinen in der Informatik bzw. in der Praxis angewendet 
werden.

Ich weiß nur, dass man die Berechenbarkeit und die Komplexität damit 
herausfinden kann, aber mehr leider nicht.

Ich hoffe, Sie können mir weiterhelfen.

Viele Grüße.

: Verschoben durch User
von Michael B. (laberkopp)


Lesenswert?

Jeder normale Computer und Mikrocontroller ist eine Registermaschine,
das Gegenteil, die reine Stack-Maschine, wären absolute Exoten, ich bin 
nicht mal sicher ob Forth Chips ohne Register sind:
http://www.greenarraychips.com/ (und zu faul, deren Datenblätter zu 
lesen).

von Karl H. (kbuchegg)


Lesenswert?

In der theoretischen Informatik ist eine Registermaschine einfach nur 
ein Modell mit dem man arbeiten kann, ohne den expliziten Begriff einer 
'Variablen' benutzen zu müssen. Lies an dieser Stelle "Register == 
Variable"

Denn Begriff der Variablen möchte man vermeiden, weil damit unweigerlich 
einhergeht, wo diese Variable gespeichert wird, bzw. weil damit dann die 
damit zusammengehörenden Fragestellungen wie Adressierung und Zugriff 
auftauchen. Das alles ist in der theoretischen Informatik völlig 
uninteressant. Man benötigt einen Mechanismus in dem man Werte 'parken' 
und für Berechnungen zur Verfügung stellen kann. Die nennt man dann eben 
Register.

: Bearbeitet durch User
von Programmierer (Gast)


Lesenswert?

Die JVM ist eine reine Stackmaschine ohne Register. Aber die ist nunmal 
kein realer Prozessor...

von Karl H. (kbuchegg)


Lesenswert?

Michael B. schrieb:

> nicht mal sicher ob Forth Chips ohne Register sind:

Ich denke letzten Endes hat jeder existierende reale Chip Register in 
der einen oder anderen Form. Und sei es nur um den Stackpointer bzw. den 
Programm Counter halten zu können.

von someone (Gast)


Lesenswert?

Registermaschinen können auch nur in der Theoretischen Informatik 
eingesetzt werden, die Forderung nach

Unendlich vielen unendlich breiten Registen steht der praktischen 
Realisierung etwas im Weg

von (prx) A. K. (prx)


Lesenswert?

Dennis K. schrieb:
> Ich weiß nur, dass man die Berechenbarkeit und die Komplexität damit
> herausfinden kann, aber mehr leider nicht.

Bei beiden Themen begegnet man in der Informatik hauptsächlich der 
Turingmaschine. Die ist freilich so abstrakt, dass all jene, die mit der 
Arbeitsweise realer Rechner vertraut sind, die Arbeitsweise der 
Turingmaschine für einigermassen bescheuert halten könnten.

Die Rolle der formalen Registermaschinen beschränkt sich im Grunde 
darauf, ein theoretisches Bindeglied zwischen der Turingmaschine und 
Arbeitsweise realer Computer herzustellen. Wenn man dann beweist, dass 
Registermaschine und Turingmaschine in den mathematischen Aussagen 
äquivalent sind, ist man mit der Turingmaschine versöhnt und kann mit 
ihr brav weiter seine theoretische Informatik betreiben.

: Bearbeitet durch User
von Dennis K. (has_an91)


Lesenswert?

Vielen Dank für die Informationen.

Leider hab ich noch ein paar Fragezeichen im Kopf. Ich muss ein Text 
verfassen und darin die relevanz der Registermaschinen in der Informatik 
beschreiben also den Anwendungsbezug.

Leider kann ich dazu nichts formulieren, da ich keine geeignete 
Literatur finde.



Viele Grüße.

von (prx) A. K. (prx)


Lesenswert?

PS: Man muss bei diesen Begriffen den Kontext beachten. So finden sich 
sowohl in der theoretischen Informatik als auch in realen Computern 
Stackmaschinen, aber die Bedeutung dieser Begriffe ist recht 
verschieden. Mit den Registermaschinen ist das nicht anders.

Ich gehe aufgrund der Erwähnung von Berechenbarkeit und 
Komplexitätstheorie davon aus, dass hier der Kontext der theoretischen 
Informatik gemeint ist. Wobei dann Begriffe wie JVM oder RISC etwas am 
Thema vorbei gehen.

: Bearbeitet durch User
von Dennis K. (has_an91)


Lesenswert?

Genau, es ist der Kontext der theoretischen Informatik gemeint.

Ich weiß leider es nicht, wie ich die Relevanz in Text-Form beschreiben 
soll.

Ich denke, ich kann nicht einfach schreiben, dass in realen Pcs sich 
Registermaschinen befinden.

Wie würdet Ihr anfangen so etwas zu formulieren?

Ich verzweile schon :(

von Karl H. (kbuchegg)


Lesenswert?

Dennis K. schrieb:

> Wie würdet Ihr anfangen so etwas zu formulieren?

Ich würde damit anfangen, klar zu stellen, dass es sich dabei um ein 
Konstrukt der theoretischen Informatik handelt.

Im Grund würde man so ein Teil nicht brauchen. Denn es wurde schon 
gezeigt, dass eine Turing Maschine alles berechnen kann, was prinzipiell 
berechnbar ist.

Leider ist aber eine Turing Maschine so primitiv, dass es schwierig und 
sehr umfangreich sein kann, zu zeigen dass eine Turing Maschine ein 
bestimmtes Problem lösen kann, und wie sie das machen könnte.

Daher benutzt man als Hilfskonstrukt eine Registermaschine.
Es wurde gezeigt, dass sich die Aussagekraft eine Registermaschine nicht 
von der einer Turing Maschine unterscheidet. Was die eine kann, kann die 
andere auch.

D.h. anstatt unendlich lange zu versuchen, alles auf einer Turing 
Maschine abzubilden, geht man den einfacheren Weg das gesuchte auf einer 
Registermaschine abzubilden. Denn man hat ja gelernt: geht es auf einer 
Registermaschine, dann geht es auch auf einer Turing Maschine. Und eine 
Turing Maschine kann alles berechnen, was prinzipiell mit einem Computer 
berechnbar ist.

Zudem ist eine Registermaschine näher an der Arbeitsweise heutiger 
Computer (SPezialrechner mal ausgenommen).
D.h. wenn man sein Problem mit einer Registermaschine gelöst bekommen 
hat, dann hat man auch schon eine recht gute Vorlage dafür, wie man die 
Dinge auf heutigen COmputer abbilden könnte. Eine Turing Maschine ist 
hingegen zwar sehr einfach, aber genau das ist auch das Problem: Habe 
ich ein Problem auf eine Turing Maschine abgebildet, dann taugt das 
nicht besonders gut für eine reale Implementierung. Eine Turing Maschine 
ist dazu zu weit von realer Hardware entfernt (wenn es auch möglich wäre 
so eztwas zu bauen. Aber so etwas würde niemand ernsthaft benutzen 
wollen. Eine Turing-Maschine ist tatsächlich ein Konstrukt das 
ausserhalb der theoretischen Informatik keinerlei Bedeutung hat).

Ich würde mich sogar soweit aus dem Fenster lehnen, dass ich sagen würde 
das eine Registermaschine eine 'auf praktisch benutzbar aufgebohrte 
Turing Maschine' handelt.

Dann kann man mal erklären, was eigentlich eine Turing Maschine ist und 
dann den Übergang zu einer Register Maschine ziehen, erwähnen dass es 
unterschiedliche Registermaschinen gibt und noch so einiges aus dem 
zugeh. Wikipedia Artikel einbauen.

: Bearbeitet durch User
von Yalu X. (yalu) (Moderator)


Lesenswert?

Hier auch noch mein Senf:

Es gibt neben der Turingmaschine ziemlich viele gleichmächtige Modelle
für die Berechenbarkeit. Hier sind ein paar Beispiele:

  https://de.wikipedia.org/wiki/Berechenbarkeitstheorie#Andere_Modelle_f.C3.BCr_Berechenbarkeit_mit_gleicher_Leistungsf.C3.A4higkeit

Die beiden ältesten dieser Modelle, die Turingmaschine und der Lambda-
Kalkül (beide von 1936), sind gleichzeitig auch mit die abstraktesten.
Abstrakt bedeutet Reduktion auf das Wesentliche,weswegen diese Modelle
leichter handhabbar in mathematischen Beweisen, formalen Definitionen
usw. sind.

Damit hängt auch zusammen, dass sich Ergebnisse von abstrakten Modellen
leichter auf weniger abstrakte übertragen lassen als umgekehrt. So lässt
sich bspw. eine Turingmaschine ganz leicht in C programmieren, hingegen
einen C-Interpreter auf einer Turingmaschine zu implementieren ist eine
ziemlich schwierige Aufgabe.

So kommen in der Berechenbarkeitstheorie der Turingmaschine und dem
Lambda-Kalkül – evtl. noch zusammen mit den µ-rekursiven Funktionen –
die wohl größte Bedeutung zu. In der Komplexitätstheorie ist die
Turingmaschine als ältester Vertreter der höchsten Mächtigkeitklasse von
Automaten das meistgenutzte Modell.

Wozu man dann überhaupt die Registermaschine?

Die Registermaschine ist später als die meisten anderen Modelle (1963)
eingeführt worden, sicherlich auch inspiriert von den Computern, die es
zur Zeit der Entstehung der Turingmaschine und des Lambda-Kalküls noch
nicht gab, inzwischen aber zu Tausenden installiert wurden (z.B. die IBM
1401). Es entwickelten sich nach und nach etliche Varianten (man könnte
sie auch "Ausbaustufen" nennen), von primitiven Maschinen, die nur
zählen und mit 0 vergleichen konnten bis hin zu Maschinen, die in
vielerlei Hinsicht (Befehlssatz, Arithmetikoperationen, Von-Neumann-
Architektur usw.) einem realen Computer (aber im Gegensatz zu diesem mit
unendlich breiten Speicherworten) entsprechen.

Im Abschnitt "Historical development of the register machine model" des
englischen Wikipedia-Artikel zu dem Thema sind einige der Beweggründe
für die Einführung der Registermaschine als ein weiteres Modell der
Berechenbarkeit aufgeführt:

  https://en.wikipedia.org/wiki/Register_machine#Historical_development_of_the_register_machine_model

Trotz alledem scheinen heute die Registermaschinen, wenn man sich die
Studienpläne der Informatikstudiengänge anschaut, in der theoretischen
Informatik eher ein Schattendasein zu fristen. Soviel zum Thema
"Relevanz".

Ich glaube, wenn du – ausgehend von den Wikipedia-Artikeln (deutsch und
englisch) – noch ein Bisschen weiterrecherchierst, insbesondere im
Zusammenhang mit Berechenbarkeits- und Komplexitätstheorie, solltest du
ziemlich schnell genügend Material für dein Referat (oder was immer das
am Ende werden soll) zusammenbekommen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.