Tail-Call-Optimierung in JavaJava

Java-Forum
Anonymous
 Tail-Call-Optimierung in Java

Post by Anonymous »

Ab Java 8 bietet Java keine Tail-Call-Optimierung (TCO).
Als ich darüber recherchierte, erfuhr ich den Grund dafür:
In JDK-Klassen [...] gibt es eine Reihe sicherheitsrelevanter Methoden, die auf der Zählung von Stapelrahmen zwischen JDK-Bibliothekscode und aufrufendem Code basieren, um herauszufinden, wer sie aufruft.

Allerdings Scala, das auf JVM basiert, unterstützt die Tail-Call-Optimierung. Scala führt zur Kompilierungszeit eine Tail-Rekursionsoptimierung durch. Warum kann Java nicht den gleichen Ansatz verwenden?
PS: Ich bin mir nicht sicher, ob die neueste Version (derzeit Java 11) von Java jetzt TCO hat. Wäre toll, wenn jemand, der es weiß, dies auch teilen könnte.
Anmerkungen:
  • Ich weiß, dass TCO ist im Rückstand und hat eine niedrigere Priorität, möchte aber wissen, warum Java in der Kompilierungszeit keine Änderungen ähnlich wie bei Scala vornehmen kann.
  • Java tut dies nicht Es gibt keine Tail-Call-Optimierung aus demselben Grund, aus dem die meisten imperativen Sprachen sie nicht haben. Imperativschleifen sind der bevorzugte Stil der Sprache, und der Programmierer kann die Schwanzrekursion durch Imperativschleifen ersetzen. (Quelle)

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post