, 20 tweets, 5 min read
My Authors
Read all threads
Штош, раз @_bravit не пишет про ФП, значит это могу сделать я.

Стартую #тред про мифы ФП.
Скандалы, интриги, что скрывают адепты Haskell? О чём молчат кложуристы? Подписывайся, чтобы узнать!

Акция! Первые 6 твитов бесплатно – остальное за лайки/репосты.
1/ Миф первый: ФП – это что то сложное
Да, я зашел с козырей. ФП-шники очень чтят свою элитарность и боятся, что кто то их раскроет. Если я вдруг оборву этот тред – знайте: я вовсе не забил, а меня нейтрализовала Haskell мафия за правду
2/ На самом деле, основные столпы ФП это не пресловутые монады и зигистоморфные препоморфизмы.

Главными объектами в ФП являются чистые функции, их композиция и иммутабельные коллекции
3/ Предлагают ещё такое определение.

Функциональный стиль подразумевает разделение кода на три категории

- Данные
- Вычисления
- Действия

Мне очень нравится такое описание, и я советую почитать
подробнее в отличной книге от @ericnormand manning.com/books/grokking…
4/ Миф второй: ФП – это про теоркат

ФП мир действительно имеет свои корни в академической сфере и довольно большой процент
пользователей занимаются CS.

Но если говорить о промышленной разработке, то математики
тут не больше чем в паттерне фабрика
5/ Миф идёт от желания спрятать от мейнстрима простоту фп. Да, названия паттернам пришли из научных статей. Зато у большинства из них чёткое определение и даже можно доказать, что тебе нужен тот или иной паттерн. Это явный плюс по сравнению с GoF с его размытыми примерами
6/ Совсем не обязательно знать то, как рисовать стрелки в моноидальных категориях, чтобы использовать ФП.

Если вы спросите разработчика на Elm или Clojure, что такое Профунктор, то скорее всего получите ответ "это канал с мемами в телеграмме"
7/ Миф третий: я использую Java 8 Streams, знаю map, flatmap и filter, значит, я знаю ФП.

Да, я говорил, что фп это просто. Но его нельзя импортировать как библиотеку. Это всё таки парадигма и кроме вас её некому соблюдать.

Легче всего она познаётся в настоящих фп языках
8/ Но это не значит, что нельзя писать в ФП стиле на C++ или Java!

Просто ФП языки лучше знают что нужно для этой парадигмы и изначально были заточены под это. Учиться лучше всего в дружественной среде, а в бою применять уже можно на чём угодно
/9 Помните, если в языке можно с функциями обращаться как со значениями, то на нём уже можно писать функционально. Просто где-то это проще, где то сложнее. Дальше уже дело вкуса.
/10 Для ФП языков много фич, но выделяют чаще всего следующие фишечки:
- мощный паттерн матчинг
- иммутабельность по умолчанию

Для статических:
- вывод типов по Хиндли-Милнеру
- параметрический полиморфизм

Для динамических:
- мощные API для работы с базовыми коллекциями
11/ Как только новички в фп понимают, что на самом деле тут всё проще, чем кажется, и что всё то же самое можно написать и на Java и на питоне, им на помощь приходит следующий миф: единственное ТруФП™️ – это только Haskell, а остальное – баловство.
12/ Да, на Haskell не совсем просто сделать некоторые привычные вещи, например, дебажить принтами.

Но искателей трудностей ждёт лишь сложность, возникающая из-за выбора среди множества соревнующихся подходов или недостатка документации, туториалов и каких то гайдлайнов
13/ Если вам интересен Haskell как прикладной язык программирования, а не как штука для того чтобы тешить своё тщеславие, @graninas ведёт большую работу по тому чтобы сделать Haskell ещё скучнее и пригоднее для промышленности.

Несите ему свой фидбек, особенно если вы новичок
14/ Но даже если вы не хотите учить Haskell, если вы интересуетесь ФП – вам всё равно лучше это сделать.

Хотя бы для того чтобы не учить Scala, как lingua franca №2 в ФП сообществе.
15/ Обычно хватает LYAH чтобы хоть как то разбирать написанное learnyouahaskell.com

Ещё есть замечательная книжечка "О Haskell" ohaskell.guide от @dshevchenko_biz. Её бы даже рекомендовал больше, так как она полностью на русском языке
16/ Ещё один миф: ФП – это про то чтобы избегать побочных эффектов.

Действительно, ведь лучшая программа та , которая ничего не делает
github.com/kelseyhightowe…
17/ На самом деле среди фп сообщества давно ходит довольно серьезная полушутка "Haskell – лучший язык для императивного программирования"

stackoverflow.com/questions/6622…
18/ Потому что ФП стиль – это не про то, чтобы избегать побочных эффектов, а про то, чтобы их *контролировать*.
19/ И будьте уверены, у функциональщиков все побочные эффекты на коротком поводке.

Есть целое соревнование, кто лучше, гибче и без оверхеда контроль над эффектами сделает. И тут огромный простор для сложности
Missing some Tweet in this thread? You can try to force a refresh.

Enjoying this thread?

Keep Current with Mikhail Levchenko

Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

Twitter may remove this content at anytime, convert it as a PDF, save and print for later use!

Try unrolling a thread yourself!

how to unroll video

1) Follow Thread Reader App on Twitter so you can easily mention us!

2) Go to a Twitter thread (series of Tweets by the same owner) and mention us with a keyword "unroll" @threadreaderapp unroll

You can practice here first or read more on our help page!

Follow Us on Twitter!

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just three indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3.00/month or $30.00/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!