Die Compiler, die ich in C oder Java verwendet habe, verhindern toten Code (Warnung, wenn eine Zeile niemals ausgeführt wird). Mein Professor sagt, dass dieses Problem von Compilern niemals vollständig gelöst werden kann. Ich habe mich gefragt, warum das so ist. Ich bin mit der tatsächlichen Codierung von Compilern nicht allzu vertraut, da dies eine theoretische Klasse ist. Aber ich habe mich gefragt, was sie überprüfen (wie mögliche Eingabezeichenfolgen gegenüber akzeptablen Eingaben usw.) und warum dies nicht ausreicht.
if (isPrime(1234234234332232323423)){callSomething();}
Wird dieser Code jemals etwas aufrufen oder nicht? Es gibt viele andere Beispiele, bei denen die Entscheidung, ob eine Funktion jemals aufgerufen wird, weitaus teurer ist, als sie nur in das Programm aufzunehmen.
public static void main(String[] args) {int counterexample = findCollatzConjectureCounterexample(); System.out.println(counterexample);}
<- Ist der Println Call Dead Code? Nicht einmal Menschen können dieses Problem lösen!