March 13th, 2017

work

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

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

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



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


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

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

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

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

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

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

Старые браузеры могут тормозить из-за новых скриптов

Я любимую версию FireFox давно не обновлял и вот в последние дни она стало ощутимо тормозить и зависать. Некоторые сервисы Google (AdSense) с новым модным интерфейсом стали намертво зависать уже с декабря. Я мог бы подумать на то, что я забил папку Scrapbook огромным количеством файлов, но случай с AdSense намекает, что некоторые дизайнеры-программисты слов на ветер не бросают и действительно пишут интерфейсы уже на скриптах, которые в браузерах трехлетней давности частично или полностью становятся неработоспособны.

Попутно заметил, что Firefox стал греть ноут круче, чем Skyrim. Воет вентиляторами так, будто на взлет идет. Пришлось для части сайтов перейти на Chromе. Мир выкручивает руки, хочет, чтобы мы тоже были модными и катались на гироскутерах.