kvisaz (kvisaz) wrote,
kvisaz
kvisaz

Category:

Функциональное программирование в Java 8

Пока я вижу из прочитанного, что функциональное программирование не отменяет объектно-ориентированного, а дополняет его, особенно на обработке массивов.

Упрощается внешний вид кода. Как кто-то сказал "писать тяжелее, а читать легче". Вместо цикла со скобками и отступами



Получаем более ровный читабельный код


Смысл примера: есть массив Numbers, из него надо выбрать все числа больше 100 во второй массив.  Чем больше операций, тем нагляднее получается выигрыш при чтении, так как все, что приходится наворачивать в цикле, преобразуется в элегантные цепочки вызываемых функций.

Вычисление факториала для n:

Можно сказать, избавляемся и от записи циклов в явном виде, и от рекурсии. После освоения методов, такие работы с массивами и пишутся, и читаются гораздо быстрее, чем классические варианты (циклы или рекурсия).

Технически, как уверяют адепты функциональщины, их подход еще и лучше параллелится. Но я не нашел пока хорошего короткого примера, который бы наглядно показал ускорение при распараллеливании на разных процессорах. Цикл из первого варианта, увы, по скорости рвет функциональный подход на массивах до миллиона элементов. Разница в сотни раз.

pS: "Распараллеленный поток ожидаемо существенно медленнее для очень коротких операций." (с) https://habrahabr.ru/post/255813/

PPS: на гигантских n - параллельный факториал быстрее обычного в несколько раз. Таким образом, вижу пользу функциональных методов так
1. улучшение читабельности кода
2. ускорение написания алгоритмов для обработки цепочек+массивов
3. хорошее распараллеливание для больших вычислений
Tags: java, javarush
Subscribe

  • Кобра метаинтеллектуалов

    смотрю сейчас фильм Кобра со Сильвестром Сталлоне по интеллектуальной нагрузке — простое, примитивное но снято красиво, технологично, почти каждая…

  • Первый сезон Breaking Bad

    Скрытое послание Breaking Bad многим взрослым - вы в молодости наверняка подавали надежды, были в пяти минутах от изменения социального статуса и…

  • Восставший из сингулярности

    Фильм "Hellraiser" 1987 года показывает распечатку человеческого тела наноботами. Сцена появления беглеца из ада - технически передовая по…

  • Post a new comment

    Error

    default userpic
    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments