[Закрыть]
 
popoff.donetsk.ua
Хорошо управляемое предприятие - это спокойное место. Зато фабрика, отличающаяся «кипучей» деятельностью и «трудовым героизмом» работников, который бросается в глаза любому посетителю, является на самом деле плохо управляемой.
Начало | Новости | Статьи | Форум | Опросы | Карта сайта | Обо мне
popoff.donetsk.ua - Статьи - Программирование - Технологии программирования - Болезни программистов - Рекурсофобия
Я это делаю
Персональное меню
Голосование
Деньги, либо любимое занятие? Постоянный адрес этого вопроса
Ваш возраст (не обязательно):

Введите целое число от 3 до 99.
Почему? (не обязательно):
Другие вопросы
Поиск по сайту
Реклама
Программное обеспечение любой сложности
koins.com.ua
Статистика

Рекурсофобия

Постоянный адрес статьи

Рекурсофобия - панический страх перед рекурсией и всем, что с ней связано, в том числе и перед самим словом «рекурсия».

Симптомы

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

  • Пытаются любыми способами обойти рекурсию. Считают, что потеря производительности и читаемости программы, в случае если они имеют место быть при переходе от рекурсии к итерационным циклам - это ничто, по сравнению с тем злом, которое несёт в себе рекурсия.

  • Считают, что чем больше рекурсивных итераций, тем дольше выполняется программа. Уверены, что это утверждение является доказательством того, что обычные итерационные циклы - лучше (подразумевая, что итерационные циклы не обладают таким свойством или у итерационных циклов имеет место обратная зависимость)

  • Для хранения деревьев везде используют только вложенные множества. Считают, что вложенные множества спасают от рекурсии. При ближайшем рассмотрении выясняется, что больные рекурсофобией не знают всех достоинств и недостатков разных способов хранения деревьев или игнорируют их, обычно прикрываясь тем, что хуже рекурсии ничего нет.

  • Пытаются использовать нерекурсивные алгоритмы даже там, где их использовать практически невозможно, например, для обработки рекурсивных структур данных. Для того, чтобы задачу всё-таки решить без рекурсии, добавляют в программу Флаги и/или оператор GOTO.

  • Известны случаи, когда больной рекурсофобией начинает выяснять: «является ли вот этот код рекурсивным?» Ответ на этот вопрос выясняют для того, чтобы избавиться от рекурсии, если она там вдруг окажется. Больные рекурсофобией готовы заподозрить рекурсию даже там, где её нет.

  • Многие больные не способны написать рекурсивную функцию, более сложную, чем функция для вычисления факториала. В сложных случаях - функцию для рекурсивного вычисления факториала написать тоже не могут, обычно прикрывая своё неумение вопросом: «а зачем?». Почти все больные рекурсофобией, даже если и могут разработать рекурсивную функцию, будут испытывать затруднения с ней: будут тратить много времени на то, чтобы понять, как эта функция должна быть устроена, потом - чтобы написать её, и, естественно, много времени - на отладку. Потерю времени используют как доказательство того, что рекурсивные функции - это зло.

  • Все обвинения в неумелом использовании (или в неумении использования) рекурсии воспринимают как оскорбление в личный адрес, и почти всегда на словах говорят, что рекурсию они могут использовать на «отлично».

В тяжёлых случаях

  • Больной тяжёлой формой рекурсофобии может даже не знать, что такое «рекурсия».

  • Потеряв много времени на разработку рекурсивной функции, больные тяжёлой формой так и не могут заставить функцию работать правильно. Могут коллекционировать такие случаи для доказательства утверждения «рекурсия - это зло».

  • Когда слышат или читают слово «рекурсия», их сознание отключается и вся дальнейшая информация не воспринимается. Требуется от 40 минут до нескольких часов полного покоя для того, чтобы больной тяжёлой формой рекурсофобии снова смог воспринимать информацию из окружающего мира.

Причины возникновения

Основная причина - комбинация двух фактов:

  1. неумение разрабатывать рекурсивные функции и
  2. желание это неумение скрыть.

Все доказательства того, что «рекурсия - это зло» используются больными рекурсофобией для того, чтобы скрыть своё неумение, убедив себя и остальных в том, что рекурсия не используется не потому, что сам больной не способен использовать рекурсию, а потому, что она здесь просто не нужна или приносит вред.

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

Лечение

Лечение - амбулаторное, консервативное. В тяжёлых случаях может потребоваться госпитализация.

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

Больному, следует объяснить, что ничего плохого в неумении что-то делать нет, и скрывать своё неумение ни от кого не нужно. Однако такая терапия не должна быть слишком активной, так как при передозировке возможен побочный эффект, когда больной рекурсофобией может попытаться манипулировать другими людьми, в том числе и начальником, махинируя своим незнанием. Например: «Конечно, как Вы можете от меня этого требовать - я ведь этого не умею!» (подразумевая: «но зарплату Вы должны мне платить такую, как и всем остальным, которые умеют и поэтому должны будут делать мою работу за меня»).

Для того, чтобы избежать подобного побочного эффекта, следует проводить политику дружбы, сплочённости и взаимоуважения в группе разработчиков. Это поможет больному рекурсофобией осознать, что перекладывать работу на плечи друзей - это очень и очень плохо, и, хотя своё неумение скрывать не нужно, всё же заявления типа «я не умею» - это проявление неуважения ко всем, кто мог от этого заявления пострадать. Вместо фразы «я не умею» больному можно предложить говорить фразу: «расскажите, пожалуйста, где об этом можно прочитать?» или «какие эксперименты мне нужно провести, чтобы убедиться в этом?» Чтобы такие вопросы не появлялись слишком часто, следует поощрять больного к использованию поисковых систем и как можно чаще давать ответы типа: «воспользуйся поисковиком и поищи по фразе: ... или по какой-нибудь похожей».

Больному рекурсофобией следует объяснять его обязанности. Следует проводить политику патриотизма, верности своему предприятию и максимальной ответственности за качество выпускаемого продукта - это подтолкнёт больного к тому, чтобы не пожалеть своего времени, разобраться с рекурсией, провести ряд экспериментальных сравнений и выяснить, что рекурсия - это не всегда так плохо.

Для профилактики, а также для лечения лёгких форм рекурсофобии больного следует обучать программированию и поощрять к самообучению.

Следует на примерах рассматривать разные виды задач, решение которых естественно реализовывать рекурсивными функциям. Эти задачи следует реализовать разными способами и выявить достоинства и недостатки всех реализаций.

Хорошим средством профилактики рекурсофобии является выделение части рабочего времени на самообучение и работа в паре с человеком, не больным рекурсофобией.

Смотрите также

Рекурсия и накапливающие аргументы. Поиск минимума в списке (на Прологе) - как эту задачу решают в процедурных языках при помощи циклов и почему такой подход принципиально не подходит при использовании рекурсии.
http://popoff.donetsk.ua/text/work/prg/goto/min.html

Генерация перестановок в антилексикографическом порядке (на Си и на Прологе). Количество отличий между циклами и рекурсией такое, что циклы вообще никак нельзя сравнивать с рекурсией. Это принципиально разные, не сравнимые между собой вещи.
http://popoff.donetsk.ua/text/donntu/flp/antilex.html

Обработка списков на Лиспе. Что говорят о рекурсии люди, которые не знают, что такое рекурсия.
http://popoff.donetsk.ua/text/donntu/flp/QuestionsAndAnsers/lisp-lists.html

Последняя модификация: 15.12.06 03:12