Слон в Каире

Слон в Каире — это термин, используемый в программировании, чтобы описать элемент данных, который соответствует критериям поиска и намеренно помещается в конец области поиска, чтобы гарантировать завершение работы алгоритма. Данное выражение является шутливым примером «сторожевого» или «сигнального» значения. Термин происходит из юмористического эссе, распространявшегося интернете, которое было опубликовано в журнале Byte в сентябре 1989 года, в котором описывалось, как различные профессии охотятся на слона[1][2].

Алгоритм

Способ охоты на слона программистом описывается в статье следующим алгоритмом:[1]

  1. Идём в Африку.
  2. Начинаем с мыса Доброй Надежды.[notes 1]
  3. Двигаемся на север в упорядоченной манере, пересекая континент попеременно с востока на запад и с запада на восток,
  4. Во время каждого прохода:
    • Ловим каждое увиденное животное.
    • Сравниваем его с известным слоном.
    • Останавливаемся, когда совпадение обнаружено.

Этот алгоритм имеет баг, а именно ошибку контроля границ — если слон не найден, программист продолжает поиск севернее и закончит в Средиземном море, вызвав аварийное завершение (утонет).

Поэтому опытные программисты подправляют вышеизложенный алгоритм, помещая известного слона в Каире, чтобы алгоритм завершился наверняка[3]. Модифицированный алгоритм выглядит так:

  1. Идём в Африку.
  2. Помещаем слона в Каир.
  3. Начинаем с мыса Доброй Надежды.
  4. Двигаемся на север в упорядоченной манере, пересекая континент попеременно с востока на запад и с запада на восток,
  5. Во время каждого прохода:
    • Ловим каждое увиденное животное.
    • Сравниваем его с известным слоном.
    • Останавливаемся, когда совпадение обнаружено.
  6. Если вы обнаружили слона в Каире, это означает, что в Африке нет слонов (за исключением того, которого вы сами поместили в Каир).

См. также

  • Слоновий тест

Примечания

  1. Мыс Доброй Надежды традиционно считается самой южной точкой Африки, хотя на самом деле таким является мыс Игольный.
  1. 1 2 Peter C. Olsen. Pachydermic Personnel Prediction // Stop Bit, Byte. — 1989. — Сентябрь. — С. 404.
  2. Аналогичную шуточную статью о ловле льва в пустыне можно найти в книге «Физики шутят»
  3. Michael Steuben. Twenty Years Before the Blackboard. — Cambridge University Press, 1998. — С. 62. — ISBN 9780883855256.

Ссылки