Дело сделано: кусочек сказочной страны, на который машина указала перстом, и есть пещера. Юноше можно теперь садиться на коня и скакать к невесте напрямую.
Машина нашла Спящую красавицу довольно необычным, на взгляд человека, манером: она использовала неизменный прием поиска - делила Царство пополам да присваивала половинкам имена. Произошло множество присваиваний, целая череда переименований. И выходит, что решение совсем не словесной, а лирической задачи состоит в переработке "слов", опять в переработке "слов".
Вычислительной машине безразлично, принадлежат ли "слова" русскому языку, языку логики или представ ляют собой набор диковинных символов. Машина справ ляется с любыми "словами": заменяет буквы, разрезает склеивает, сравнивает, дополняет, присваивает. Машин ный счет тоже хоровод "слов"; эти "слова" - числа а правила их переработки - арифметические законы Само собой, машина превращается в гигантский ариф мометр, в цифромолку, в числоглота ненасытного.
Машина обрабатывает любые "слова" по правилам, диктуемым алгоритмом. В алгоритм мы вольны включить и лингвистические, и логические, и геометрические, и арифметические, и всякие иные правила...
Мало-помалу, но и мы подошли к краю пропасти, в которую заглянула когда-то А. Лавлейс. Ее потрясла способность машины, шестереночного механизма, обрабатывать самый человеческий, самый интеллектуальный материал - слова. Людское слово вездесуще - и размышления наедине с самим собой, и дружеские беседы, и ученая переписка, и пламенные речи трибунов, - всюду слово.
И, принятое в множество голов,
Оно свое вершит упрямо дело.
Я знаю, люди состоят из слов,
Которые им внутрь вошли, и тела.
Аде Лавлейс, полагаю, пришлись бы по душе эти строки поэта Е. Винокурова, они созвучны с ее пониманием роли слова.
"Машина обрабатывает любые слова, - размышляла Ада. - Она производит над ними любые операции. Машина как бы воплощает в себе науку операций, в том числе над вещами, до того не разрешенными головой и руками человека... Но может ли машина создать что-то подлинно новое? Пожалуй, нет, ее жребий -строго следовать анализу".
"Анализом" А. Лавлейс называла алгоритм. Пора и нам, читатель, разобраться в устройстве алгоритма, пора оценить его возможности.
Понятие "алгоритм" появилось в средние века, когда Европа познакомилась с книгой арабского ученого Мухаммеда бен-Муса аль Хорезми. Книга именовалась "Китаб аль-Джебр валь-Мукабала", что примерно означает: "Книга об операциях джебр (восстановления) и кабала (приведения)". Труд Хорезми произвел на европейские умы настолько сильное впечатление, что во все наши языки вошло два новых слова: алгебра (из "аль-Джебр") и алгоритм (из "аль-Хорезми").
"Алгоритм" не очень похож на "аль-Хорезми": средневековые толмачи подравняли восточное слово под древнегреческий шаблон; его родственником незаконно стал "ритм". Впрочем, так ли уж незаконно? Хорошие алгоритмы, бесспорно, обладают внутренним ритмом.
Поначалу новорожденный алгоритм означал всего лишь нумерацию, правда, но непривычной для европейцев позиционной системе счисления, той самой, с которой мы так сжились теперь. Потом смысл слова изменился: алгоритмом стали именовать набор правил, по которым следует производить вычисления. Скажем, правила умножения двух чисел в столбик - алгоритм умножения.
Естественно, возникает ехидный вопрос: неужто такой элементарной вещи, как правила умножения в столбик, обязательно присваивать пышный титул алгоритма?
На ехидный вопрос - сокрушительный ответ: умножение сегодня стало элементарной вещью, а в средние века, когда пользовались римскими цифрами, за знание правил перемножения двух трехзначных чисел присваивали степень доктора наук. Хороший алгоритм сделал умножение элементарным и общедоступным. Равно как и извлечение корня из числа, и нахождение наибольшего общего делителя, и...
Нет, вавилонские ученые знали свое дело, когда заполняли тысячи глиняных табличек алгоритмами, когда создавали библиотеки алгоритмов.
У нас тоже стала накапливаться своя библиотека, в ней уже три алгоритма - "Спинка кофточки", "Погрузка корабля" и "Спящая красавица". Пусть не смущает вас, читатель, их несерьезный, потешный характер: потешные солдаты Петра Первого составили потом ядро его гвардии.
Со всем уважением присмотримся к алгоритмам нашей библиотеки. Каждый более всего похож на цепь, звеньями которой являются операции. Почти все операции - прямые команды, они начинаются глаголами в повелительном наклонении: "найти", "взять", "поделить", "вставить", "скопировать", "отбросить", "вязать".
Цепь операций-команд нигде не прерывается; добавляя к ней звено за звеном, мы можем изобразить во всех подробностях ход самой трудоемкой работы.