ОДИНОЧЕСТВО БЕГУНА НА ДЛИННУЮ ДИСТАНЦИЮ
Как помнит читатель этой книги, примерно в 1830-е годы англичанин Чарльз Бэббидж придумал «Аналитический двигатель» —механическую машину, созданную с целью обработки логических операций. Леди Ада Лавлейс сразу написала для нее программы, так что эту машину можно назвать первым компьютером со своим собственным машинным языком. Здесь мы можем вспомнить Витгенштейна, в фокусе внимания которого были язык и «языковые игры» с символами, при том что великий логик сначала считал, что все без исключения значения и концепции должны передаваться через язык, а потом пришел к выводу, что есть и другие пути, следуя которым в нашем мозгу рождаются мысли: например, непосредственная визуализация. Эта поправка, скорей всего, укладывалась в его общую концепцию языка, дело было в смещении акцентов. Эта его линия мысли остается, пожалуй, недодуманной и по сей день, и здесь, пожалуй, следует ожидать каких-то новых открытий и решений.
Однако у Витгенштейна был ученик, который «пошел другим путем». Это был Алан Тьюринг. Он решил не усложнять и постараться себе представить, как может работать «человек вычисляющий». Я очень упрощаю, представляя Тьюринга учеником Витгенштейна: ведь «учитель» сильно критиковал идеи «ученика», а «ученик» не выпал после этой критики в осадок и продолжал настаивать на своем. Но их взаимные обмены, до сих пор малоизученные, были плодотворными в том смысле, что подтолкнули каждого к более тщательной проработке своих тезисов, где у обоих была своя доля истины. Такой тип отношений между учеником и учителем ничуть не хуже подхода, когда ученик безропотно делает то, что говорит ему гуру. Кстати, оба типа отношений используются в системах глубокого машинного обучения, причем, первый, Generative Adversarial Networks (GANs), или генеративно-состязательные сети, приносит особенно существенные и перспективные результаты.
Итак, Алан Тьюринг не стал слушать своего странного и эксцентричного учителя, который, с одной стороны, отличался горячим нравом и мог поколотить за тугодумие, а с другой стороны, всегда был на грани отчаяния и в любой момент мог бросить преподавание дебилам и уйти в монастырь. Ну, или в садовники.
Тьюрингу, пожалуй, был ближе Бэббидж (кстати, как и Витгенштейн, кембриджский профессор) с его незамутненным научно-технологическим оптимизмом. Родись Ада Лавлейс на сто лет позже, она могла бы подружиться с Тьюрингом (впрочем, без излишней романтики, ибо Алан, если использовать фразу Сомерсета Моэма из романа «Театр», играл в другой лиге). Она могла бы писать программы для тьюринговского «Абстрактного вычислителя» не хуже тех, что придумывала для «Аналитического двигателя» Чарльза Бэббиджа.
Машину, которая позволяла обработать любой формализованный алгоритм, работать в любой системе счисления или с символами, Тьюринг придумал в 1936 году. Это была не просто очередная попытка облегчить труд счетовода. Машина Тьюринга была отнюдь не арифмометром: с ее помощью можно было воспроизвести действие любой другой машины, основанной на алгоритмах. И сегодняшние вычислительные устройства основаны на том же принципе, что машины Тьюринга!
Интересно, что «Аналитический двигатель» Бэббиджа обладал «полнотой по Тьюрингу», то есть в теории мог работать с любой вычислимой функцией, кодируя информацию на входе и выходе. Но преимуществом машины Тьюринга перед устройством Бэббиджа была универсальность, простота и логичность концепции. Для нее не имело значения, на механической основе работать, на электрической или какой-то другой.
Машину Тьюринга можно представить как бесконечную ленту, разматывающуюся в обе стороны и разбитую на ячейки. В каждой ячейке записаны символы —например, ноль или единица в случае бинарных вычислений, но вообще может быть записан любой символ из конечного набора, например, русского или английского алфавита. В середине ленты находится устройство записи-чтения, или головка, которая может считывать символ, записанный в ячейке, стирать его или записывать туда новый символ. Головка может двигаться, в зависимости от инструкций, влево и вправо по ленте по одной ячейке за каждый шаг. Машина может находиться в одном из множества задаваемых состояний. Сердце машины Тьюринга — программа ее работы. Это таблица, в которой записаны соответствия между состояниями машины, символами в ячейке и действиями, которые машина должна произвести.
Машина Тьюринга, созданная на бумаге, позволила представить любой формально записанный алгоритм. С ее помощью можно запрограммировать что угодно, от карманного калькулятора до дрона или атомной станции. Кроме того, машина Тьюринга обладает крайне важной характеристикой: она количественно оценивает сложность алгоритмов. Ученый и разработал ее с целью оценить, сколько последовательных действий необходимо произвести, чтобы выполнить то или иное задание. Еще один важный вывод от применения машины Тьюринга состоял в том, что каждый алгоритм можно было выполнить не одним-единственным способом.