Recientemente he intentado compilar el programa algo como esto con GCC:recursividad infinita en Python o lenguajes dinámicos
int f(int i){
if(i<0){ return 0;}
return f(i-1);
f(100000);
y corrió muy bien. Cuando inspeccioné los marcos de la pila, el compilador optimizó el programa para usar solo un cuadro, volviendo al principio de la función y solo reemplazando los argumentos a f. Y - el compilador ni siquiera se ejecutaba en modo optimizado.
Ahora, cuando intento lo mismo en Python, alcanzo la pared de recursividad máxima (o probablemente desborde la pila si establezco una profundidad de recursión demasiado alta).
¿Existe alguna manera de que un lenguaje dinámico como python pueda aprovechar estas bonitas optimizaciones? Tal vez sea posible usar un compilador en lugar de un intérprete para que esto funcione.
¡Solo curiosidad!
Buena pregunta. Algo que he olvidado al comparar las lenguas estáticas con las dinámicas. – WeNeedAnswers