На моей предыдущей работе в команде было несколько программистов на Haskell, поэтому наша кодовая база была насыщена функциональным программированием. Я почувствовал необходимость изучить парадигму и выбрал эту книгу в качестве отправной точки, потому что она не добавляет сложности к изучению нового языка - и к тому же бесполезного (наша кодовая база была JavaScript и Kotlin) - к задаче.
На момент написания этой книги в книге было 12 глав, все из которых я изучил. «Изучал» означает, что я их читал, делал заметки, задавал вопросы и решал задачи в конце. Также есть черновик главы 13, который я не читал. Думаю, важно подчеркнуть, что я сначала познакомился с функциональным производственным кодом, и только потом начал изучать парадигму более формально с помощью этой книги.
Мне очень понравился язык книги. Это забавно и очень легко понять. Автор не слишком углубляется в технические детали (то есть в теорию категорий) и не прибегает к упрощенным аналогиям. Текст усилен довольно большим количеством ссылок на североамериканскую культуру, поэтому, будучи здесь новичком, я потратил много времени на поиск в Google несвязанных вещей, работая над книгой. Я не помню, было ли это следствием того, что я был любопытным человеком от природы, или было понимание аналогий, необходимых для понимания точки зрения автора.
Задачи в конце каждой главы немного разочаровывали - я обнаружил, что они слишком легкие на мой вкус. Тем не менее, они помогают материалу усвоить (я из тех людей, которые лучше учатся на практике) - за исключением, может быть, последней или двух глав, где упражнения были легкими, почти до бесполезности. Кроме того, время от времени полагаться на Ramda кажется чрезмерной. Не связанный с этим мелочь: книга с открытым исходным кодом.
Намного веселее представляет Глава 6, где находится проект. Мой совет по этой главе: лучший способ продолжить здесь - это использовать ее как асинхронное парное программирование. Каждому фрагменту кода предшествует описание того, что он делает. Не спешите читать код! Сначала прочтите описание, а затем попробуйте написать его самостоятельно. После того, как вы закончите, посмотрите на код в книге и сравните со своим.
К сожалению, в проекте вообще не используются функторы - они будут представлены позже, в главе 8. Однако вы можете вернуться к проекту и приукрасить его самостоятельно.
Подводя итог, я настоятельно рекомендую эту книгу не только всем, кто интересуется функциональным программированием, но и любому программисту в целом, потому что даже если вы не используете функциональную парадигму (по крайней мере, не до точки функторов) в своей работе , книга по-прежнему учит вас кое-чему полезному (например, к главе 2). Между прочим, мне очень приятно видеть хорошую книгу по функциональному программированию, в которой используется практичный, распространенный язык.
Книгу можно найти здесь: https://mostly-adequate.gitbooks.io/mostly-adequate-guide/
Также: https://egghead.io/courses/professor-frisby-introduces-composable-functional-javascript