Случилось это в те времена, когда компьютеры были большими.
Люди есть люди, даже программисты. А людям надо иногда отдыхать. Короче, придумывали себе программисты разные забавы.
Устраивали, к примеру, поединки программ-«гладиаторов» в специально отведённой области памяти. Кто чужой код, в той же памяти размещённый, первым сурово повредит до полной неработоспособности. А для этого надо уметь вычислить положение соперника, даже чинить себя по ходу. От разработчиков требовались очень нетривиальные ходы мысли.
Меряться кодами скоро наскучило, замахнулись на мироздание, буквально. Так и назвали очередной обеденный проект: «Эволюция». Снова область память отвели, накидали в неё «пищевых» кодов и кодов-«потребителей». Запустили отсчёт времени и сели наблюдать.
Вначале всё шло, как ожидалось. Едоки находили еду, ели её и модифицировались с расчётом, чтобы лучше искать и есть. «Расти» начали, то есть удлинять код.
Появление «хищников» тоже мало кого удивило. Какая, на самом деле, разница, что поглощать? И там, и там – код. Как будто вспомнив гладиаторское прошлое, некоторые программы сначала делали чужой код неработоспособным, а затем поступали с ним как с простым кодом-«пищей».
Заметили их не сразу. Не все программы пошли развиваться по пути увеличения кода. Некоторые, наоборот, предпочли уменьшиться, чтобы тихонько прицепиться к кому-нибудь полноразмерному, повторять его путь в поисках пищи. Если хозяин вдруг погибал, прицеплялись к другому. Паразиты.
Через несколько периодов удивлённые программисты обнаружили коды, паразитирующие уже на паразитах. А когда эксперимент решили прекратить, насчитывалось уровней двадцать таких вот паразитов на паразитах на паразитах на паразитах… «Эволюция» нашла оптимальный путь развития. Всем отчего-то стало стыдно смотреть друг другу в глаза.
Ну а поскольку были они программистами, то попросту очистили многострадальную память и занялись алгоритмами сортировки. И в конце концов сделались маститыми классиками, уважаемыми авторами толстых учебников по хитрому искусству программирования.