Различия императивного и функционального программиста.

Hes 2014 M09 14
345
0
2
0

Или как различный подход в выборе парадигмы проектирования влияет на проект в целом. Все, кто изучал только императивное программирование (к нему относится и ООП), т.е. не изучал специально...

Или как различный подход в выборе парадигмы проектирования влияет на проект в целом.


Все, кто изучал только императивное программирование (к нему относится и ООП), т.е. не изучал специально функциональное или логическое программирование, размышляя о программе или алгоритме, мыслят категориями «как сделать», а не «что сделать».

Но "императивный программист" - это всего лишь образ мышления, а не приговор. Для того, чтобы писать высокоэффективные функциональные программы, обладающие таким признаком как отсутствие побочных эффектов (в отличие от императивных аналогов), необходимо перестроить сознание и это является большой проблемой - перестройка сознания на мышление категориями «что сделать» и, соответственно, восприятия кода, написанного в манере «что требуется получить», а также нескольких весьма простых приемов, позволяющих писать код более декларативно.

Огромная проблема популяризаторов ФП заключается в том, что они не мыслят по-другому и, как следствие, разговаривают на другом языке, нежели те, кому они что-то пытаются объяснить. Вкупе с весьма специфичным (и непривычным для нас, императивных программистов) синтаксисом функциональных языков, изучение ФП превращается в весьма неприятный и трудный процесс самостоятельной ломки своего сознания. И все это без наркоза и соответствующего врачебного контроля! :)

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

Функциональное программирование – это гетто

Оцените пост

-7