Проекты

Новости


Архив новостей

Опрос

Какой проект интересней?

Инновационное образование и технологическое развитие

Рабочие материалы прошедших реакторов

Русская онтологическая школа

Странник

Ничего не интересно


Видео-галерея

Фотогалерея

Подписка на рассылку новостей

 

Как Аристотель создал компьютер

Философы, на которых он повлиял, подготовили почву для технологической революции, перевернувшей наш мир.

Крис Диксон

История компьютеров часто рассказывается как история объектов, от счётов до машины Бэббиджа и кодовых машин Второй мировой войны. На самом деле это больше история идей, возникших из математической логики, неясной и почти религиозной дисциплины, которая впервые возникла в XIX веке. Математическая логика была впервые разработана философами-математиками, в первую очередь Джорджем Булом и Готлобом Фреге, которые сами были вдохновлены мечтой Лейбница об универсальном «понятийном языке» и древней логической системой Аристотеля.

Математическая логика изначально считалась безнадёжно абстрактным предметом без мыслимых приложений. Как замечал один компьютерный учёный: «Если в 1901 году талантливому и отзывчивому наблюдателю было бы предложено изучить науки и назвать отрасль, которая будет наименее плодотворной в предстоящем столетии, его выбор вполне мог бы пасть на математическую логику. И все же, именно она обеспечила бы основу для области, которая оказала большее влияние на современный мир, чем любая другая.

Эволюция информатики из математической логики достигла своей кульминации в 1930-х годах, и была связана с двумя важными статьями: «Символический анализ коммутационных и релейных схем» Клода Шеннона и «О вычислимых числах с приложением к задаче Entscheidungs» Алана Тьюринга. В истории компьютерной науки Шеннон и Тьюринг – значимые фигуры, но важность философов и логиков, которые им предшествовали, часто упускается из виду.

Известная история информатики описывает работу Шеннона как «возможно, самый важный, а также самый известный, магистерский тезис века». Шеннон написал её будучи студентом-электротехником в Массачусетском технологическом институте. Его советник Ванневар Буш построил прототип компьютера, известного как Дифференциальный анализатор, который мог быстро вычислять дифференциальные уравнения. Устройство было главным образом механическим, с подсистемами, управляемыми электрическими реле, которые были организованы определённым образом, поскольку ещё не существовала систематическая теория, лежащая в основе схемы. Тема тезисов Шеннона возникла, когда Буш рекомендовал попытаться найти такую ​​теорию.

Математика может быть определена как предмет, в котором мы никогда не знаем, о чем мы говорим

Работа Шеннона во многом является типичной статьёй из области электромеханики, наполненной уравнениями и схемами электрических цепей. Что необычно, так это то, что основной ссылкой в ней было произведение из математической философии возрастом 90 лет, «Законы мышления» Джорджа Буля.

Сегодня имя Буля хорошо известно компьютерным учёным (многие языки программирования имеют базовый тип данных, называемый булевым), но в 1938 году его редко знали за пределами философских факультетов. Сам Шеннон столкнулся с работой Буля изучая философию на бакалавриате. «Просто случилось так, что никто больше не был знаком с обеими сферами одновременно» — рассказывал он позже.

Буля часто описывают как математика, но он считал себя философом, следующим по стопам Аристотеля. «Законы мышления» начинаются с описания целей — изучения фундаментальных законов действия человеческого разума:

«Цель следующего трактата состоит в том, чтобы исследовать фундаментальные законы тех операций ума, посредством которых осуществляется рассуждение; Выражать их на символическом языке Исчисления и на этом основании устанавливать науку о Логике … и, наконец, собрать… некоторые вероятные зацепки относительно природы и строения человеческого разума».

Затем он воздаёт должное Аристотелю, изобретателю логики, оказавшему первостепенное влияние на его собственную работу:

«В своей древней и схоластической форме предмет логики почти исключительно связан с великим именем Аристотеля. Поскольку она была представлена ​​Древней Греции в частично технических, частично метафизических исканиях «Органона», и, почти без существенных изменений, она доступна и по сей день».

Попытка улучшить логическую работу Аристотеля была интеллектуально смелым шагом. Логика Аристотеля, представленная в его шеститомной книге «Органон», занимала центральное место в академическом каноне уже более 2000 лет. Широко распространено мнение, что Аристотель написал почти все, что можно было сказать по этой теме. Великий философ Эммануил Кант говорил, что, начиная с Аристотеля, логика была «неспособна сделать ни шага вперёд, а потому выглядит законченной и завершённой».

Центральное наблюдение Аристотеля состояло в том, что аргументы основываются на их логической структуре, независимо от нелогичных слов в них включённых. Наиболее известная схема аргументов, которую он обсуждал, называется силлогизмом:

Все люди смертны.

Сократ — человек.

Поэтому Сократ смертен.

Вы можете заменить «Сократа» любым другим объектом и «смертный» любым другим предикатом, и аргумент останется в силе. Справедливость аргумента определяется исключительно логической структурой. Логические слова — «все», «есть», и «поэтому» — не имеют значения.

Аристотель также определил ряд базовых аксиом, из которых он вывел остальную часть своей логической системы:

Объект есть то, что он есть (Закон Идентичности).

Никакое утверждение не может быть одновременно как истинным, так и ложным (Закон непротиворечия).

Каждое утверждение либо истинно, либо ложно (Закон Исключенного Ближнего).

Эти аксиомы не предназначались для описания того, как люди на самом деле думают (это область психологии), но как должен мыслить идеализированный, совершенно рациональный человек.

Аксиоматический метод Аристотеля повлиял на ещё более известную книгу «Элементы Евклида», которая, по оценкам, уступает только Библии в количестве напечатанных копий.

Фрагмент «Элементов» Евклида (Wikimedia Commons)

Несмотря на то, что это труд якобы о геометрии, Элементы стали стандартным учебником для обучения строгим дедуктивным рассуждениям. (Авраам Линкольн однажды сказал, что он научился здравой юридической аргументации у Евклида). В системе Евклида геометрические идеи были представлены как пространственные диаграммы. Геометрию продолжали практиковать таким образом, пока Рене Декарт в 1630-х годах не показал, что её можно представить в виде формул. Его «Дискурс о методе» был первым математическим текстом на Западе, популяризовавшим то, что теперь является стандартной алгебраической записью — x, y, z для переменных, a, b, c для известных величин и т. д.

Алгебра Декарта позволила математикам выйти за пределы пространственной интуиции, манипулируя символами, используя строго определённые формальные правила. Это перевело доминирующий способ математики с диаграмм на формулы, что привело, среди прочего, к развитию исчисления (calculus), которое изобрели примерно через 30 лет после смерти Декарта  Исаак Ньютон и Готфрида Лейбниц независимо друг от друга.

Целью Буля было сделать для аристотелевской логики то, что Декарт сделал для евклидовой геометрии: освободить его от пределов человеческой интуиции, придав ему точную алгебраическую нотацию. Приведём простой пример. Когда Аристотель писал:

Все люди смертны.

Буль заменил слова «люди» и «смертный» на переменные, а логические слова «все» и «есть» на арифметические операторы:

X = x * y

Что можно было бы интерпретировать как «Все в множестве x также находится в множестве y».

«Законы мышления» создали новую научную дисциплину: математическую логику, которая в последующие годы стала одной из самых активных областей исследований для математиков и философов. Бертран Рассел назвал «Законы мышления» «работой, в которой была открыта чистая математика».

Понимание Шеннона заключалось в том, что система Буля может быть отображена непосредственно на электрических цепях. В то время в основе электрических схем не было систематической теории, определяющей их конструкцию. Шеннон понял, что правильная теория будет «в точности аналогична исчислению высказываний, используемых в символическом изучении логики».

Он показал соответствие между электрическими цепями и булевыми операциями в простой схеме:

Отображение электрических цепей Шеннона в символической логике (Университет Вирджинии)

Эта переписка позволила учёным-компьютерщикам использовать десятилетия работы по логике и математике Буля и последующих логиков. Во второй половине своей работы Шеннон показал, как Булевую логику можно использовать для создания схемы с добавлением двух бинарных значений.

Схема цепи Шеннона (Университет Вирджинии)

Объединив эти схемы, оказалось возможным построить произвольно сложные арифметические операции. Эти схемы стали основами того, что сейчас известно, как арифметические логические блоки, ключевой компонент современных компьютеров.

Другим способом охарактеризовать достижения Шеннона является то, что он первым выделил логический и физический уровни компьютеров (это различие стало настолько фундаментальным для компьютерной науки, что для современных читателей это может показаться удивительным, как поразительно оно было для своего времени – излишнее напоминание о том, что «философия одного столетия — это здравый смысл следующего»).

Со времени работы Шеннона был достигнут значительный прогресс на физическом уровне компьютеров, включая изобретение транзистора в 1947 году Уильямом Шокли и его коллегами из Bell Labs. Транзисторы — это значительно улучшенные версии электрических цепей Шеннона — самый известный способ физически кодировать логические операции. В течение последующих 70 лет полупроводниковая промышленность упаковывала все больше и больше транзисторов в меньшие пространства. В 2016 году iPhone имеет около 3,3 млрд. транзисторов, каждый из которых является «реле-переключателем», как показано на диаграммах Шеннона.

Пока Шеннон демонстрировал как привнести логику в физический мир, Тьюринг показал, как проектировать компьютеры с помощью языка математической логики. Когда Тьюринг написал свою статью, в 1936 году он пытался найти ответ «проблему решения» (decision problem – ред.), впервые определённую математиком Дэвидом Гильбертом, который задался вопросом, существует ли алгоритм, который мог бы определить: является ли произвольное математическое выражение истинным или ложным. В отличие от материала Шеннона, статья Тьюринга очень технична. Главное историческое значение этого труда заключается не в его ответе на решение проблемы, а в шаблоне для создания компьютера.

Тьюринг работал в традиции, уходящей к Готфриду Лейбницу, философскому гиганту, который развивал исчисление независимо от Ньютона. Среди многочисленных вкладов Лейбница в современную мысль одной из самых интригующих была идея нового языка, которую он назвал «универсальной характеристикой», который, по его представлениям, смог бы представить все возможные математические и научные знания. Вдохновлённый отчасти религиозным философом 13-го века Рамоном Ллуллом, Лейбниц предположил, что язык будет идеографическим, как египетские иероглифы, за исключением того, что символы будут соответствовать «атомным» понятиям математики и науки. Он утверждал, что этот язык дал бы человечеству «инструмент», который мог бы усилить человеческий разум «в гораздо большей степени, чем оптические инструменты», такие как микроскоп и телескоп.

Он также представлял себе машину, которая могла бы обрабатывать язык, который он называл рационализатором исчисления.

«При возникновении разногласий между двумя философами необходимости в диспутах будет не больше чем между двумя бухгалтерами. Ибо будет достаточно просто взять карандаши в руки и сказать друг другу: Calculemus — Давайте вычислим».

У Лейбница не было возможности развить свой универсальный язык или соответствующий ему аппарат (хотя он и изобрёл относительно простую вычислительную машину, ступенчатый счётчик). Первая заслуживающая доверия попытка осуществить мечту Лейбница появилась в 1879 году, когда немецкий философ Готлоб Фреге опубликовал свой знаменитый логический трактат «Begriffsschrift». Воодушевлённый попыткой Буля улучшить логику Аристотеля, Фреге разработал гораздо более продвинутую логическую систему. Логика, преподаваемая сегодня в классах философии и компьютерной науки — логика первого порядка или предикатов, — это лишь небольшая модификация системы Фреге.

Фреге обычно считают одним из самых важных философов XIX века. Среди прочего, ему приписывают катализирование того, что известный философ Ричард Рорти назвал «лингвистическим поворотом» в философии. Поскольку философия Просвещения была одержима вопросами знания, философия после Фреге стала одержима вопросами языка. Среди его учеников были два самых важных философа XX века — Бертран Рассел и Людвиг Витгенштейн.

Важнейшим новшеством логики Фреге является то, что она намного точнее представляет логическую структуру обычного языка. Среди прочего, Фреге был первым, кто использовал квантификаторы («для каждого», «существует») и отделил объекты от предикатов. Он также первым разработал то, что сегодня является фундаментальными понятиями в компьютерной науке, например, рекурсивные функции и переменные с областью действия и привязки.

Формальный язык Фреге — то, что он назвал своим «концепт-скриптом» — состоит из бессмысленных символов, которые управляются чётко определёнными правилами. Языку присваивается значение только посредством интерпретации, которая указана отдельно (это различие позже будет называться синтаксисом или семантикой). Это превратило логику в то, что выдающиеся компьютерные ученые Аллан Ньюэлл и Герберт Саймон назвали «символьной игрой», «в которую играют бессмысленными токенами в соответствии с определёнными чисто синтаксическими правилами».

«Все значения были очищены. Появилась механическая система, в которой можно было доказать различные вещи. Таким образом, прогресс был достигнут прежде всего путём ухода от всего, что казалось релевантным смыслу и человеческим символам».

Как Бертран Рассел когда-то точно подметил: «Математика может быть определена как предмет, в котором мы никогда не знаем, о чём говорим, и не является ли то, о чём мы говорим, верным».

Неожиданным следствием работы Фреге было обнаружение слабых сторон в основах математики. Например, «Элементы» Евклида, считавшиеся золотым стандартом логической строгости в течение тысяч лет, оказались полными логических ошибок. Поскольку Евклид использовал обычные слова типа «линия» и «точка», он — и вековые читатели — обманывал себя, делая предположения в предложениях, содержащих эти слова. Один простой пример: в обычном использовании слово «линия» подразумевает, что, если вам даны три различные точки, одна точка должна находиться между двумя другими. Но когда вы определяете «линию» с использованием формальной логики, выясняется, что понятие «между объектами» также должно быть определено это Евклид упустил. Формальная логика делает такие пробелы легко различимыми.

Это осознание привело к кризису в фундаментальной математике. Если «Элементы» — библия математики — содержала логические ошибки, то что же говорить о других областях? Что можно сказать о науках, подобных физике, которые были построены на основе математики?

Хорошей новостью является то, что те же логические методы, которые используются для выявления этих ошибок, также можно использовать для их исправления. Математики начали перестраивать основы своей науки с самого начала. В 1889 году Джузеппе Пеано разработал аксиомы для арифметики, и в 1899 году Дэвид Гильберт сделал то же самое для геометрии. Гильберт также изложил программу формализации остальной части математики с особыми требованиями, которым должна удовлетворять любая такая попытка, среди них:

Полнота. должно быть доказательство того, что все истинные математические утверждения могут быть доказаны в формальной системе.

Разрешимость. Должен существовать алгоритм для определения истины или ложности любого математического утверждения. (Это «проблема Entscheidungs» или «проблема решения», упомянутая в статье Тьюринга.)

Восстановление математики таким образом, чтобы удовлетворить этим требованиям, стало известно как программа Гильберта. Вплоть до 1930-х годов это было в центре основной группы логиков, включая Гильберта, Рассела, Курта Гёделя, Джона фон Ноймана, Алонзо и, конечно же, Алана Тьюринга.

В науке новизна возникает только в результате преодоления сложностей

Программа Гильберта продолжалась по крайней мере по двум направлениям. На первом логики создали логические системы, которые пытались доказать, что требования Гильберта либо выполнимы, либо нет.

На втором математики использовали логические понятия для восстановления классической математики. Например, система Пеано для арифметики начинается с простой функции, называемой функцией-преемником, которая увеличивает любое число на единицу. Она использует функцию-преемник для рекурсивного определения сложения, дополнение для рекурсивного определения умножения и т. д., пока не будут определены все операции теории чисел. Затем она использует эти определения вместе с формальной логикой для доказательства теорем арифметики.

Историк Томас Кун однажды заметил, что «в науке новизна возникает только в результате преодоления сложностей». Логика в эпоху программы Гильберта — бурный процесс творения и разрушения. Один логик должен был создать сложную систему, а другой — разрушить её.

Благоприятным инструментом разрушения было построение самоориентированных, парадоксальных заявлений, которые показали, что аксиомы, из которых они были получены, являются противоречивыми. Простой формой этого парадокса лжеца является предложение:

Это предложение ложно.

Если это правда, тогда оно ложно, и если оно ложно, то оно истинно, приводя к бесконечной петле самопротиворечия.

Рассел впервые обратил внимание на парадокс лжеца в математической логике. Он показал, что система Фреге позволила вывести противоречивые множества:

Пусть R — множество всех множеств, которые не являются членами самих себя. Если R не является членом самого себя, то его определение диктует, что оно должно содержать себя, а если оно содержит себя, то оно противоречит своему определению как множество всех множеств, которые не являются членами самих себя.

Это стало известно как парадокс Рассела и было расценено как серьёзный недостаток в работе Фреге. (Сам Фреге был шокирован этим открытием и ответил Расселу: «Ваше открытие противоречия вызвало у меня наибольшее удивление и, я бы сказал, ужас, поскольку оно поколебал основание, на котором я намеревался построить свою арифметику»).

Рассел и его коллега Альфред Норт Уайтхед предложили самую амбициозную попытку завершить программу Гильберта с Principia Mathematica, опубликованную в трёх томах между 1910 и 1913 годами. Метод Principia был настолько подробным, что потребовалось более 300 страниц, чтобы добраться до доказательства того, что 1 + 1 = 2.

Рассел и Уайтхед пытались разрешить парадокс Фреге, представив так называемую теорию типов. Идея состояла в том, чтобы разделить формальные языки на несколько уровней или типов. Каждый уровень мог ссылаться на уровни ниже, но не на свои или более высокие уровни. Это разрешило самоориентированные парадоксы, по сути, запретив самореференцию. (Это решение не пользовалось популярностью у логиков, но оно повлияло на компьютерную науку — большинство современных компьютерных языков имеют функции, основанные на теории типов).

Самореференциальные парадоксы в конечном итоге показали, что программа Гильберта никогда не сможет быть успешной. Первый удар случился в 1931 году, когда Гёдель опубликовал свою знаменитую теорему о неполноте, которая доказала, что любая последовательная логическая система, достаточно мощная для того, чтобы охватить арифметику, должна также содержать утверждения, которые являются истинными, но не могут быть доказаны, что они истинны. (Теорема Гёделя о неполноте является одним из немногих логических результатов, получивших широкую популярность, благодаря таким книгам, как «Гёдель, Эшер, Бах» и «Новый ум Короля«).

Последний удар наступил, когда Тьюринг и Алонсо Черч независимо доказали, что не существует алгоритма, определяющего, было ли произвольное математическое утверждение истинным или ложным. (Церковь сделала это, изобрести совершенно другую систему, называемую лямбда-исчислением, которая позже вдохновит компьютерные языки, такие как Lisp). Ответ на проблему решения был отрицательным.

Ключевое понимание Тьюринга появилось в первом разделе его знаменитой статьи 1936 года «О вычислимых числах с приложением к задаче о проблемах энцелад». Чтобы строго сформулировать проблему решения («проблема энцеладности»), Тьюринг сначала создал математическую модель понятия «компьютер» (сегодня машины, соответствующие этой модели, известны как «универсальные машины Тьюринга»). Как описывает это логик Мартин Дэвис:

Тьюринг знал, что алгоритм обычно определяется списком правил, которым человек может следовать в точном механическом порядке, как рецепт в кулинарной книге. Он смог показать, что такого человека можно ограничить несколькими чрезвычайно простыми базовыми действиями, не изменяя конечный результат вычисления.

Затем, доказав, что ни одна машина, выполняющая только эти основные действия, не может определить, следует ли данный предполагаемый вывод из заданных помещений с использованием правил Фреге, он смог сделать вывод о том, что алгоритм для проблемы Entscheidungs ​​не существует.

В качестве побочного продукта он нашёл математическую модель универсальной вычислительной машины.

Затем Тьюринг показал, как программа может быть сохранена внутри компьютера наряду с данными, на которых она работает. В сегодняшнем лексиконе мы бы сказали, что он изобрел архитектуру «хранимой программы», которая лежит в основе большинства современных компьютеров:

До Тьюринга общее предположение заключалось в том, что при работе с такими машинами три категории — машина, программа и данные — были совершенно отдельными объектами. Машина была физическим объектом; сегодня мы бы назвали её аппаратным. В программе был план выполнения вычислений, возможно, воплощённый в перфокартах или соединениях кабелей в коммутационной панели. Наконец, данные представляли собой числовые данные. Универсальная машина Тьюринга показала, что чёткость этих трёх категорий является иллюзией.

Это была первая строгая демонстрация того, что любая вычислительная логика, которая может быть закодирована на аппаратном уровне, также может быть закодирована в программном обеспечении. Описанная архитектура Тьюринга позже была названа «архитектурой фон Неймана», но современные историки, как, по-видимому, и сам фон Нейман, в целом согласны, что она была создана Тьюрингом.

Хотя на техническом уровне программа Гильберта была неудачной, усилия на этом пути продемонстрировали, что большие области математики могут быть построены на логике. И после интерпретации Шеннона и Тьюринга — показавшей связи между электроникой, логикой и вычислительной техникой — теперь стало возможным экспортировать этот новый концептуальный механизм в компьютерный дизайн.

Во время Второй мировой войны эта теоретическая работа была претворена в жизнь, когда в правительственных лабораториях работал целый ряд элитных логиков. Фон Нейман присоединился к проекту атомной бомбы в Лос-Аламосе, где он работал над компьютерным дизайном для поддержки физических исследований. В 1945 году он написал спецификацию EDVAC — первого логического компьютера, который обычно считается основным источником создания современного компьютера.

Тьюринг присоединился к секретному подразделению в Блетчли-парке, северо-западнее Лондона, где он помог создавать компьютеры, которые способствовали дешифровке немецких кодов. Его самым долговременным вкладом в практический компьютерный дизайн была его спецификация ACE, или Automatic Computing Engine.

Как и первые компьютеры, основанные на булевой логике и архитектурах с хранимой программой, ACE и EDVAC были во многом схожи. Но у них также были интересные различия, некоторые из которых предвосхитили современные дебаты в компьютерном дизайне. Привилегированные проекты фон Неймана были похожи на современные CISC («сложные») процессоры, обеспечивающие богатые функциональные возможности аппаратным средствам. Дизайн Тьюринга больше походил на современные RISC («уменьшенные») процессоры, сводя к минимуму аппаратную сложность и заставляя больше работать с программным обеспечением.

Фон Нейман считал, что компьютерное программирование — утомительное дело. Тьюринг, напротив, говорил, что компьютерное программирование «должно быть очень увлекательным. Нет никакой реальной опасности, что оно когда-либо станет нудным, поскольку любые процессы, которые являются механическими, могут быть переданы самой машине».

С 1940-х годов компьютерное программирование стало значительно более сложным. Одна вещь, которая не изменилась, заключалась в том, что оно по-прежнему зависит от программистов, определяющих правила для компьютеров. С философской точки зрения, мы бы сказали, что компьютерное программирование следовало традиции дедуктивистики, ветви логики, рассмотренной выше, которая касается манипулирования символами в соответствии с формальными правилами.

В последнее десятилетие или около того, программирование начало меняться с ростом популярности машинного обучения, которое включает в себя создание структур для машин, способных обучаться с помощью статистического вывода. Это приблизило программирование к другой основной ветви логики — индуктивной логике, которая имеет дело с выводом правил из конкретных экземпляров.

В самых перспективных машинных технологиях обучения используются нейронные сети, которые были впервые изобретены в 1940-х годах Уорреном Маккаллохом и Уолтером Питтсом, чья идея состояла в том, чтобы разработать исчисление для нейронов, которое могло бы, подобно булевой логике, использоваться для построения компьютерных схем. Нейронные сети оставались экзотическими до того момента, пока их не объединили со статистическими методами, что позволяло им улучшаться по мере накопления большего количества данных. В последнее время, когда компьютеры становятся все более искусными в обработке больших наборов данных, эти методы дали замечательные результаты. Программирование в будущем, скорее всего, означает развитие нейронных сетей всему миру и предоставление им возможности учиться.

Это было бы подходящим вторым актом в истории компьютеров. Логика начиналась как способ понять законы мысли. Затем она помогла создать машины, которые могли бы рассуждать в соответствии с правилами дедуктивной логики. Сегодня дедуктивная и индуктивная логика объединяются для создания машин, которые и рассуждают, и учатся. То, что началось, по словам Буля, с исследования «о природе и строении человеческого разума» может привести к созданию новых умов — искусственных умов — которые когда-нибудь могут сравняться или даже стать лучше человеческих.

Источник