A programmer decided to write a function that converts any English noun to its plural form. He estimated it would take an afternoon.
Rule 1: add ‘-s.’ Done.
Rule 2: words ending in s, x, z, ch, sh add ‘-es.’ Fine. Box → boxes. Church → churches.
Rule 3: consonant + y becomes -ies. Lady → ladies. Baby → babies.
“Three rules,” he thought. “Twenty minutes.”
Then he encountered: mouse → mice. “Exception.” Goose → geese. “Another exception.” Man → men. Tooth → teeth. Foot → feet. Louse → lice. Ox → oxen. Child → children. Person → people.
He now had more exceptions than rules.
He tried: sheep → sheep. Deer → deer. Fish → fish. “Words that don’t change. Fine. New category.”
Cactus → cacti? Or cactuses? Both? “Category: depends who you ask.”
Octopus → octopi? Octopuses? Octopodes? “Category: no one agrees.”
At midnight, his function was 300 lines long, with 147 exception lists. The core logic was three lines.
The documentation read: “This function attempts to pluralize English nouns. It fails approximately 40% of the time. This is better than most English speakers.”
He committed the code and never spoke of it again.