Как поймать рекурсию за хвост

Преобразование хвостовой рекурсии в цикл является популярной оптимизацией в фунциональных языках программирования, однако в Java-мире это преобразование окутано загадками.

Мы разберемся, можно ли в Java заменить хвостовой рекурсивный вызов на цикл, зачем вообще это делать, какие виртуальные машины этим занимаются (и легально ли?). Также попробуем сторонние инструменты, которые могут помочь вам оптимизировать ваши программы в функциональном стиле. И конечно же посмотрим на дружественные JVM-языки, имеющие более выраженные функциональные наклонности (Scala, Kotlin, …).


Владимир Парфиненко,

Huawei


Как поймать рекурсию за хвост
Владимир Парфиненко,
Huawei
Преобразование хвостовой рекурсии в цикл является популярной оптимизацией в фунциональных языках программирования, однако в Java-мире это преобразование окутано загадками.

Мы разберемся, можно ли в Java заменить хвостовой рекурсивный вызов на цикл, зачем вообще это делать, какие виртуальные машины этим занимаются (и легально ли?). Также попробуем сторонние инструменты, которые могут помочь вам оптимизировать ваши программы в функциональном стиле. И конечно же посмотрим на дружественные JVM-языки, имеющие более выраженные функциональные наклонности (Scala, Kotlin, …).
О докладчике
О докладчике
9 лет работал в Excelsior, выпускавшей Excelsior JET, сертифицированную реализацию Java SE. Внес значительный вклад в создание AOT и JIT компиляторов, написанных на Scala и Java.

Последние два года работает в Huawei над компиляторами, JVM и новыми языками программирования.

Много лет преподавал основы программирования студентам ФФ НГУ.
Все спикеры SnowOne
Все спикеры SnowOne
Показать ещё