Kürzlich Detecting habe ich versucht, die Erstellung Programm so etwas wie dies mit GCC:Endlosschleife in Python oder dynamische Sprachen
int f(int i){
if(i<0){ return 0;}
return f(i-1);
f(100000);
und es lief ganz gut. Als ich die Stack-Frames inspizierte, optimierte der Compiler das Programm so, dass nur ein Frame verwendet wurde, indem einfach zum Anfang der Funktion gesprungen wurde und nur die Argumente zu f ersetzt wurden. Und - der Compiler lief nicht einmal im optimierten Modus.
Jetzt, wenn ich das gleiche in Python versuche - ich habe maximale Rekursion Wand (oder wahrscheinlich Stapelüberlauf, wenn ich Rekursionstiefe zu hoch gesetzt).
Gibt es eine Möglichkeit, dass eine dynamische Sprache wie Python diese netten Optimierungen nutzen kann? Vielleicht ist es möglich, einen Compiler anstelle eines Interpreters zu verwenden, damit dies funktioniert?
Nur neugierig!
Schöne Frage. Etwas, das ich vergessen habe, während ich statische mit dynamischen Sprachen vergleiche. – WeNeedAnswers