Elephant in Cairo

From Wikipedia, the free encyclopedia

An elephant in Cairo is a term used in computer programming to describe a piece of data inserted at the end of a search space, which matches the search criteria, in order to make sure the search algorithm terminates. The term derives from a humorous essay circulated on the Internet and published in Byte magazine in September 1989 that described how various professions would go about hunting elephants, with programmers following the algorithm:

  1. Go to Africa.
  2. Start at the Cape of Good Hope.
  3. Work northward in an orderly manner, traversing the continent alternately east and west,
  4. During each traverse pass:
    • Catch each animal seen.
    • Compare each animal caught to a known elephant.
    • Stop when a match is detected

Experienced programmers modify the above algorithm by placing a known elephant in Cairo to ensure that the algorithm will terminate. In technical terms, they use the elephant in Cairo as a sentinel value. The modified algorithm is therefore as follows:

  1. Go to Africa.
  2. Put an elephant in Cairo.
  3. Start at the Cape of Good Hope.
  4. Work northward in an orderly manner, traversing the continent alternately east and west,
  5. During each traverse pass:
    • Catch each animal seen.
    • Compare each animal caught to a known elephant.
    • Stop when a match is detected.
  6. If you are in Cairo, then there are no elephants in Africa (other than the one you placed there).

Without the Cairo elephant, it might be possible to traverse all of Africa without finding an elephant. The search would then run to the end of the map and not know how to terminate—the equivalent of a bounds checking error.

Assembler programmers follow the same algorithm but crawling on their knees.

See also

References

  • Olsen, Peter C. "Pachydermic Personnel Prediction", Byte, Stop Bit column, September 1989.

External links

This article is issued from Wikipedia. The text is available under the Creative Commons Attribution/Share Alike; additional terms may apply for the media files.