2009-03-29 9 views
12

Ich frage mich, ob MATLAB ist Turing complete (= rechnerisch universell, d. H. "Wenn es verwendet werden kann, um jede single-taped Turing-Maschine zu simulieren")?Ich frage mich, ob MATLAB Turing vollständig (rechnerisch universell) ist?

+0

Ich formulierte meine Frage um zu vermitteln, was ich wirklich meinte. –

+1

Warum nicht eine Turing-Maschine in Matlab implementieren, um es selbst zu beweisen? – nibot

+0

Beachten Sie, dass eine echte Turing-Maschine ein unendliches Band benötigt. Ich denke also, streng genommen kann jede Sprache nur "Turing abgeschlossen" sein, solange wir eine beliebig große Menge an Speicher annehmen. – nibot

Antwort

38

Turing komplett zu sein ist wirklich eine ziemlich niedrige Bar für reale Sprachen. Nach Wikipedia (Hervorhebung von mir):

Um zu zeigen, dass etwas Turing abgeschlossen ist, ist es ausreichend, dass zu zeigen, es verwendet werden kann einige Turing komplettes System zu simulieren. Zum Beispiel eine imperative Sprache ist Turing vollständig, wenn es bedingte Verzweigung hat (zB „wenn“ und „goto“ Aussagen oder ein „Zweig, wenn Null“ Anweisung. Siehe OISC) und die Fähigkeit, ändere willkürlichen Speicher Positionen (zB die Möglichkeit, eine beliebige Anzahl von Variablen zu verwalten). Da dies fast immer der Fall ist, sind die meisten, wenn nicht alle Imperativsprachen Turing abgeschlossen, wenn wir irgendwelche Einschränkungen des endlichen Speichers ignorieren .

Darüber hinaus hat MATLAB viele der Funktionen, die Sie von einem relativ modernen 3GL/4GL erwarten. Es ist komplett mit VM, I/O, Benutzeroberflächenkonstrukten, mathematischen Operatoren (offensichtlich), Datentypen, benutzerdefinierten Funktionen usw. Sie können sogar Matlab-Programme außerhalb der Matlab-Umgebung bereitstellen.

Beachten Sie, ob es eine gute Sprache ist, ist eine ganz andere Frage.

+0

Und Sie können auch Matlab-Bibliotheken außerhalb von Matlab – Rodrigo

+0

verwenden, aber wäre es auch möglich, einen Matlab-Compiler vollständig in Matlab zu schreiben oder Matlab selbst in Matlab zu schreiben? – karsten

+0

@ Karsten natürlich. Ich kann mir nicht vorstellen, dass so etwas sehr praktisch ist, aber ich sehe keinen Grund, warum es nicht möglich wäre. –

3

Ich nehme an, Sie unterscheiden zwischen Programmiersprachen und Skriptsprachen, und aufgrund der Natur von MATLAB erscheint es wie eine Skriptsprache? Wenn dies der Fall ist, könnte Ihre Meinung davon abhängen, was Sie als Programmiersprache betrachten.

Ich glaube, MATLAB ist Turing-vollständig und hat eine einigermaßen strenge und verwendbare Syntax, also würde ich es eine Programmiersprache nennen. Zur gleichen Zeit ist Csh wahrscheinlich Turing-vollständig, aber es ist so dramatisch seltsam zu programmieren, dass ich es eine Skriptsprache nennen würde.

+0

Das Argument "Programmierung vs. Skripting" könnte für MATLAB noch komplizierter werden, da es Unterschiede zwischen "Skripten" und "m-Dateien" (d. H. "Funktionen") macht. – gnovice

+1

csh = c shell, eine der Shell-Skriptsprachen, die normalerweise unter linux, unix, bsd usw. zu finden sind. –

+1

lol, was ist mit ksh? k scharf ...:) –

Verwandte Themen