Zurück zur Übersicht

Begriff

Turing Complete

Computer Science Theory S2
2 Quellen 0 Lernpfade 0 Backlinks enriched

Warum wichtig?

Dieser Begriff ist ein Knoten im SengakujiWorks-Wissensnetz. Nutze Level 0 für die erste Einordnung, Level 1 für Praxis, Level 2 für technische Struktur und Level 3 für Grenzen, Fallstricke und Expertenkontext.

Wann ist eine Sprache eine "echte" Programmiersprache? Wenn sie Turing-vollständig ist. Das heißt: Sie kann (theoretisch) jedes mathematische Problem lösen, das überhaupt lösbar ist. Egal ob Python, Java, C++ oder Excel (ja, Excel ist Turing-vollständig!): Sie sind alle gleich mächtig. Was Python kann, kann Excel auch (es ist nur viel umständlicher und langsamer). Wenn eine Sprache nicht Turing-vollständig ist (wie einfaches HTML), kann sie bestimmte Dinge (z. B. unendliche Schleifen oder komplexe Entscheidungen) prinzipiell nicht.

Merksatz: Eine Eigenschaft eines Systems (z. B. Programmiersprache), die besagt, dass es jede Berechnung durchführen kann, die auch eine universelle Turing-Maschine durchführen könnte (vorausgesetzt, es gibt genug Speicher und Zeit).


Quick-Check

  1. Ist HTML Turing-vollständig?
    Nein. HTML ist deklarativ. Du kannst nicht sagen "Wiederhole diesen Absatz 100 mal". Du musst ihn 100 mal kopieren. (Mit HTML5 + CSS + JS ist die Kombination natürlich mächtig, aber HTML allein nicht).
  2. Solidity (Ethereum)?
    Ja. Smart Contracts sind Turing-vollständig. Das ist ein Risiko (Endlosschleifen). Deshalb hat Ethereum "Gas". Jeder Befehl kostet Geld. Wenn das Geld alle ist, bricht die Schleife ab. Das löst das Halte-Problem ökonomisch.
  3. Brainfuck?
    Eine esoterische Sprache mit nur 8 Befehlen (+, -, <, >, [, ], ., ,). Sie ist Turing-vollständig. Beweis, dass man für Mächtigkeit keine komplexe Syntax braucht.