В събота сутринта пералнята е пълна, а кошницата за сушене — празна. Вземаш първата тениска, поглеждаш етикета и я слагаш наляво. Следващата има щампа и отива надясно, защото не бива да се пере с горещо. След десетата дреха не мислиш. Ръцете ти сортират сами: по цвят, по плат, по това кое е ново и кое е за изхвърляне. Ако те попитат по какви правила, ще се затрудниш. Никой не ти е казал тези правила и никой не ги е записал, но те се повтарят всяка седмица почти без изключение. Но правила има, те са последователни и при достатъчно търпение можеш да ги запишеш на лист.
Алгоритъмът е точно това: краен списък от еднозначни стъпки, който превръща вход в изход. Три думи в това определение вършат цялата работа. Краен означава, че процесът свършва, а не се върти вечно. Еднозначен означава, че всяка стъпка може да бъде изпълнена без тълкуване и без спор какво точно значи. А входът и изходът трябва да са описани предварително, иначе не знаеш какво решаваш. Затова алгоритъмът е по-скоро форма на мислене, отколкото притежание на компютрите. Рецептата за гозба прилича на алгоритъм, но обикновено не е, защото съдържа израза „сол на вкус“.
Тук се крие разликата между човек и машина. Човекът попълва празните места с опит: знае, че двеста градуса са много, че доматът пуска вода, че тиганът трябва да е сух. Машината не знае нищо от това. За нея „сол на вкус“ е неоперативно указание, което не може да се изпълни. Затова програмирането е по-малко писане на заповеди и повече изброяване на случаи. Разликата между добър и лош алгоритъм често е в това колко от тези изключения са предвидени предварително. Трудното не е основният път, а изключенията: какво правим, ако файлът липсва, ако числото е отрицателно, ако потребителят натисне отказ.