Литмир - Электронная Библиотека

Алгоритмы занимают важное место в истории математики. Около 300 года до н. э. греческий философ Евклид описал в своем труде “Начала” так называемый алгоритм Евклида[9] – способ нахождения наибольшего общего делителя двух чисел. И его, и “решето Эратосфена” – алгоритм III века до н. э., который находит все простые числа, не превосходящие определенного числа, – используют до сих пор, особенно в области криптографии. Однако само слово “алгоритм” происходит от имени определенного человека – или, по крайней мере, от места его рождения.

Персидский ученый Мухаммад ибн Муса аль-Хорезми родился около 780 года в Хорезме – государстве, располагавшемся на территории современных Туркменистана и Узбекистана. О его жизни мало что известно. Он добрался до Багдада, который стал интеллектуальным центром региона после того, как мусульманский халифат Аббасидов завоевал Персию в VII веке. Там ученый занимался астрологией, географией и математикой в Доме мудрости, известном также как Большая библиотека Багдада. Подобно своей предшественнице – египетской Александрийской библиотеке – Дом мудрости являлся междисциплинарным научным центром, где ценили исследования и переводили на арабский язык тексты, написанные на латыни, санскрите, греческом и персидском языках. Около 820 года аль-Хорезми завершил работу “Книга об индийском счете”, которая в конечном итоге привела к распространению в Европе современной системы записи чисел. Он также сочинил трактат о методах решения уравнений “Китаб аль-джебр ва-ль-мукабала” (“Краткая книга о восполнении и противопоставлении”). От слова “аль-джебр” из названия (которое означает “восстановление, восполнение”, то есть сокращение одинаковых членов в обеих частях уравнения) произошло слово “алгебра”. В труде аль-Хорезми описывались методы решения квадратных уравнений и вычисления площади и объема, указывались приближенные значения числа π.

В середине XII века в Испании пересекались мусульманская, иудейская и христианская культуры – иногда мирно, иногда не очень, и между цивилизациями шел обмен идеями. Живший тогда в испанском городе Сеговия английский востоковед Роберт Честерский в 1145 году перевел “Книгу о восполнении и противопоставлении” на латынь. “Аль-джебр” превратилось в algeber, а “аль-Хорезми” – в Algoritmi. В то время слово algorismus относилось ко всем математическим операциям с использованием индийско-арабских цифр, а тех, кто занимался подобным искусством, называли алгористами. (Этим термином именуют себя визуальные художники, с 1960-х годов использующие алгоритмические процессы, однако он кажется подходящим для всех, кто работает над современной версией алгоритмов.) Такой длинный путь этимологии алгоритма показывает, что вычисления являются не только продуктом воспроизводимых научных законов, но и результатом человеческого искусства и труда.

Изобретение компьютерного программирования

Работа компьютеров основана на многократно выполняемых операциях. Затем с результатами, закодированными нулями и единицами, производятся новые операции, результат которых выдается пользователю. В 1822 году британский изобретатель Чарльз Бэббидж изложил свою концепцию “применения машин для вычисления астрономических и математических таблиц” – метод автоматизации вычисления с помощью системы пронумерованных шестерней и валиков, названной разностной машиной. Это устройство так и не было построено целиком, однако его более поздние реализации выглядят как внутренности фортепиано, только вместо молоточков тянутся длинные ряды колес. Спроектированная Бэббиджем машина должна была иметь высоту восемь футов и весить четыре тонны. Затем изобретателю в голову пришла идея аналитической машины, которая могла (если бы ее удалось построить) получать команды, заданные с помощью перфокарт, и выполнять простые операции программирования (циклы и условные операторы). Она стала основой для гораздо более сложных современных вычислительных машин. Сын Бэббиджа Генри в 1888 году писал: “Это всего лишь вопрос карт и времени”.

Дочь лорда Байрона Ада Лавлейс сегодня считается первым программистом: она написала алгоритмы для машины в том виде, в каком ее спроектировал Бэббидж, включая процесс вычисления чисел Бернулли. Лавлейс также поняла, что повторяющиеся механические процессы, на которые способна машина, можно применять не только в математике. В 1843 году Лавлейс писала, что аналитическая машина “могла бы работать с другими вещами, кроме чисел, если найти объекты, взаимоотношения которых можно выразить с помощью абстрактной науки об операциях и которые также можно приспособить к рабочей нотации и механизму машины”. Иными словами, формально можно манипулировать всем, что удастся превратить в нечто похожее на данные – какой-то ряд чисел. Это может быть текст, музыка, искусство или даже игра – например, шахматы. Лавлейс представила себе одну из форм такой автоматизации: “Если предположить, например, что фундаментальные отношения звуков в науке гармонии и музыкальной композиции поддаются такому выражению и адаптации, то машина могла бы сочинять замысловатые научные музыкальные произведения любой степени сложности и объема”. Она предвосхитила нечто, подобное “генеративной музыке”; композитор Брайан Ино предложил этот термин в 1995 году для описания постоянно меняющихся синтезаторных композиций: программное обеспечение создает разные мелодии при каждом запуске программы. Лавлейс представляла, как новая технология может формировать и увековечивать культуру – как это происходит сегодня при алгоритмическом наполнении лент.

Лавлейс одной из первых обнаружила, что манипулирование такими механическими командами может оказаться формой самовыражения. В 1990-х и 2000-х годах компьютерное программирование заняло место рядом с математикой и естественными науками, превратившись в навык, необходимый для полноценного образования ребенка. Я познакомился с ним примерно в 2002 году в компьютерном классе своей школы: мы играли в обучающие видеоигры, напоминающие языки программирования. Но по-настоящему я учился с помощью громоздких графических калькуляторов TI-83, которые нам приходилось приобретать для уроков математики. Эти калькуляторы можно было программировать на языке под названием TI-BASIC, включавшем простые операторы ветвления и функции. Сначала я составлял скромные программы для формул, которые использовались в моих тестах, но когда лучше разобрался в языке, стал создавать свои собственные версии игр “Крестики-нолики” и “Четыре в ряд”. Машина стала партнером в моем творчестве; это казалось настоящим волшебством.

Спустя столетие после Лавлейс британский математик и информатик Алан Тьюринг во время Второй мировой войны работал на правительство – он помогал взломать код немецкой шифровальной машины “Энигма”. В 1946 году, когда война закончилась, Тьюринг написал для Национальной физической библиотеки доклад, в котором предложил идею проекта “автоматической вычислительной машины”. Это было первое описание искусственного интеллекта как реальной возможности, а не теоретической концепции. Тьюринг писал, что вычислительные и сортировочные машины, предназначенные для выполнения конкретных задач, уже существуют, однако его предложение выходит и за эти рамки: “Вместо того чтобы постоянно использовать человеческий труд для вывода материала из машины и ввода его обратно в нужный момент, обо всем будет заботиться сама машина”.

По мнению Тьюринга, подобное устройство могло бы выполнять любые вычисления в любом масштабе, не нуждаясь в перенастройке. У него имелся бы свой внутренний логический язык, который можно было бы приспосабливать для разных целей, чтобы решать произвольные задачи. “Как можно ожидать, чтобы машина выполняла все эти многочисленные вещи? – писал Тьюринг. – Ответ заключается в следующем: мы должны считать, что машина делает нечто довольно простое, а именно – выполняет команды, отданные ей в стандартной форме, которую она способна понять”. Она будет следовать алгоритмам. Он предвосхитил то, как современные алгоритмы машинного обучения развиваются с течением времени, внося коррективы без участия человека.

вернуться

9

Этот алгоритм был известен и до Евклида.

4
{"b":"933199","o":1}