В последнее время я много читал о функциональном программировании, и я могу понять большую часть этого, но единственное, что я просто не могу оборачивать, - это кодирование без гражданства. Мне кажется, что упрощение программирования путем удаления изменчивого состояния похоже на "упрощение" автомобиля путем удаления панели управления: готовый продукт может быть проще, но удача в том, что он взаимодействует с конечными пользователями.
Почти каждое пользовательское приложение, о котором я могу думать, включает состояние как основную концепцию. Если вы пишете документ (или сообщение SO), состояние изменяется с каждым новым входом. Или, если вы играете в видеоигру, есть множество переменных состояния, начиная с позиций всех персонажей, которые постоянно перемещаются. Как вы можете сделать что-нибудь полезное, не отслеживая изменение значений?
Каждый раз, когда я нахожу то, что обсуждает эту проблему, оно написано на действительно техническом функциональном обеспечении, которое предполагает тяжелый фон FP, которого у меня нет. Кто-нибудь знает способ объяснить это кому-то с хорошим, твердым пониманием императивного кодирования, но кто полный n00b на функциональной стороне?
EDIT: Кажется, что куча ответов, похоже, пытается убедить меня в преимуществах неизменных ценностей. Я получаю эту часть. Это имеет смысл. Я не понимаю, как вы можете отслеживать значения, которые должны меняться и постоянно меняться без изменяемых переменных.