Секрет правильного функционального программирования

В последнее время многие увлеклись функциональным программированием. Публикации разной степени подробности объявляют ФП панацеей от всех бед, серебряной пулей, которая спасёт индустрию создания программного обеспечения. Странно все это читать. Особенно после «великой» эпохи ООП, уже обещавшей решить все проблемы homo programmaticus. Истина находится посередине.

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

В свое время объектно-ориентированное программирование решило проблемы, возникшие при разработке графических интерфейсов пользователя. С этим и связан бум ООП в 80-90-х годах. При этом ООП является надстройкой над процедурным программированием. Принципы процедурного программирования являются подмножеством ООП. Невозможно построить объектно-ориентированную систему не соблюдая принципы процедурного проектирования. При подробном рассмотрении, синтаксис ООП языков является синтаксическим сахаром в процедурном языке программирования, а широко применяемые ООП языки программирования являются развитием процедурных языков — С — С++/Objective C, Pascal — Object pascal, PHP.

При этом ООП потребовало коренного изменения принципов проектирования систем, образа мысли программиста. Программа перестала представляться только в виде потоков данных, программа стала совокупностью логических единиц, данных (объектов) обменивающихся событиями, изменяющими их состояние. Можно привести примеры объектно-ориентированных систем, выполненных на процедурных языках: gtk/gnome, unix vfs, windows gdi.

Аналогично, функциональное программирование призвано решить проблемы разработки сетевых распределенных программных систем по обработке BigData. Новый синтаксис, появляющийся в современных языках программирования и новых версиях старых языков, является всего лишь синтаксическим сахаром, призванным помочь лаконично записать мысли программиста. Как-бы не твердили адепты, ФП не отменяет ООП, а является его надстройкой, При этом должны соблюдаться все принципы ОО и процедурного программирования. В этом и состоит секрет правильного использования функционального программирования. И соответственно, для функционального программирования необходима «функциональная» архитектура системы и «функциональные» структуры данных.

Как и ранее — вся суть в мыслях программиста. Только изменив образ мыслить — программист сможет полностью использовать всю мощь функционального программирования.

Функционально программировать можно и на нефункциональных языках: unix pipe, Java streems, hadoop.

Итого.

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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>