Две идеи, на которых основана эта книга, пришли мне в голову в середине 1970-х годов, когда я еще жил в Москве. Первая идея состояла в том, чтобы разбивать программы на небольшие (5-15 строк) алгоритмические части, каждая из которых сама по себе могла бы использоваться в других программах. Вторая идея состояла в том, что каждый такой алгоритм должен работать на любых типах данных, к которым он применим. Я называю их обобщенными алгоритмами. Мне казалось, что эти две идеи самоочевидны. К моему удивлению, мне много лет не удавалось изложить их удовлетворительно для самого себя. Несколько лет назад Пол Мак-Джонс уговорил меня вспомнить мою математическую молодость, и мы вместе написали Начала программирования. Эта книга не учит программировать, не объясняет новую программную технологию, не пропагандирует новый язык программирования. Некоторым читателям может показаться, что она содержит случайный набор алгоритмов. Это не так. Надеюсь, что у читателя будет достаточно интереса, чтобы разобраться в структуре книги, ибо цель книги именно в том, чтобы показать глубокую взаимосвязь отдельных алгоритмов. Надеюсь, что русский перевод нашей книги позволит мне хотя бы в малой мере воздать за то, что я получил от русской науки. Посвящаю это издание всем замечательным российским математикам, меня учившим.