image Привет, Хаброжители!

Вам кажется, что функциональное программирование — это нечто сложное, доступное только гуру программирования? Эта книга развенчает миф об элитарности и позволит любому программисту с легкостью разобраться в хитросплетениях кода.

От знакомых и простых идей ООП вы перейдете к ФП, рассматривая его на простых примерах, захватывающих упражнениях и большом количестве иллюстраций.

Вы начнете с решения простых и маленьких задач, иллюстрирующих базовые понятия, такие как чистые функции и неизменяемые данные, научитесь писать код, лишенный типичных ошибок, обусловленных наличием сложного распределенного состояния, разберетесь с подходами к реализации ввода-вывода, параллельного выполнения и потоковой передачи данных. К концу книги вы будете создавать ясный функциональный код, который легко читается, тестируется и сопровождается.
Кому адресована книга
Книга адресована читателям, имеющим хотя бы небольшой опыт разработки коммер-
ческого программного обеспечения на любом из основных объектно-ориентированных
языков программирования, таких как Java. Учебные примеры написаны на языке Scala,
но, вообще говоря, эта книга — не о Scala. Никаких предварительных знаний этого языка
или функционального программирования не требуется.

Нечистые функции и изменяемые значения наносят ответный удар


image

Использование Java Streams для сортировки списка


image

Сигнатуры функций должны рассказывать всю правду


image

Изменение требований


До сих пор мы пытались удовлетворять начальные требования и придерживаться правил чистых функций, оптимизировать функции так, чтобы сделать их более читабельными и удобными в сопровождении. Это важно, поскольку в реальном мире код чаще читают, чем пишут. Это также важно для изменения какого-то кода по мере изменений бизнес-требований. Чем проще понять текущий код, тем проще его изменить.

Версия 4: изменение алгоритма ранжирования


Посмотрим, как поведет себя функция rankedWords в новых обстоятельствах. Вот первоначальные и дополнительные требования.

Первоначальные требования
1. Оценка слова вычисляется как сумма баллов, по одному за каждую букву, отличную от буквы 'a'.
2. Для заданного списка слов нужно вернуть отсортированный список, начинающийся со слова с наибольшей оценкой.

Дополнительные требования
1. Если в слове есть буква 'c', то к его окончательной оценке следует прибавить пять баллов.
2. Код должен поддерживать старый способ вычисления оценки (без начисления дополнительных баллов за букву 'c').

image

Мы можем передавать код в аргументах!


image

Использование значений Function в Java


image

Использование синтаксиса Function для устранения повторяющегося кода


image

Об авторе
Михал Плахта — опытный инженер-программист и активный участник сообщества функционального программирования. Регулярно выступает на конференциях, проводит семинары, организует встречи и ведет блоги о создании поддерживаемого программного обеспечения.

Более подробно с книгой можно ознакомиться на сайте издательства:

» Оглавление
» Отрывок

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 25% по купону — Программирование

Комментарии (10)


  1. aleksandy
    10.10.2023 15:53
    -4

    А что у издательства нет доступа к исходному тексту книги, что приходится вот так, скринить страницы и вставлять их в статью?


    1. IMnEpaTOP
      10.10.2023 15:53
      +5

      Там слишком сложное форматирование, что бы его можно было повторить в текстовом редакторе хабра. А показать читателям хочется именно то, как будет выглядеть купленный ими экземпляр.


  1. MAXH0
    10.10.2023 15:53

    Серия "Грокаем" мне не зашла, но стоит посмотреть именно эту книгу, которая расказывает о божественном функциональном программировании. :)))


  1. PlatinumKiller
    10.10.2023 15:53
    -4

    Примеры лишь на одном языке, а других в мире нет?!


    1. PlatinumKiller
      10.10.2023 15:53
      -1

      И да есть языки на которых функциональщина в ожидаемом виде не возможна, а есть те на которых вопрос: «а что можно иначе?»


    1. sspotanin
      10.10.2023 15:53

      Много вы книг читали, где примеры на нескольких языках одновременно?


  1. venanen
    10.10.2023 15:53
    +6

    Да, после прошлой рекомендации купил книгу "Грокаем глубокое обучение". И вот что хочу сказать - я бы выдал ИД Питер огромный грант по дальнейшей разработке нанотехнологий, ведь настолько тонкую бумагу я вижу впервые. На странице я вижу текст страницы, текст этой страницы с обратной стороны, текст следующей страницы оборота. И это с учетом того, что текст напечатан далеко толстым и жирным шрифтом.
    Фонарик телефона просвечивает через 12(!!!!) страниц. Ребят, я понимаю, что так книга стоит не дорого, но честное слово, напечатайте нормально, я бы взял даже в 2 раза дороже - ну это же реально читать невозможно. Спасибо.


  1. qwert_ukg
    10.10.2023 15:53

    Я бы добавил происхождение слова "Грокать" а то не все читали Хайнлайна


    1. eton65
      10.10.2023 15:53

      Спасибо, а то все боялся спросить… Тут и тут.


    1. ykira
      10.10.2023 15:53

      Купишь книгу прочитаешь значение на обложке