(0 голоса, среднее 0 из 5)

Машинные коды


В истории математики существовало множество параллельных течений, из которых то одно, то другое периодически выходило на передний план. Такими были отношения между арифметикой и геометрией, или между чистой и прикладной математикой. Другой парой противоположностей можно назвать алгоритмическую и «аналитическую» математику. Последнюю более интересовали лежащие в основе структуры и «красивые» теоремы, тогда как первая в основном занималась выработкой процедур, необходимых для принятия практических решений. Мы видели, например, как в различных системах счисления использовались различные методы или алгоритмы, позволяющие найти иррациональные числа вроде √2. Исследование того, какая процедура наиболее эффективна в терминах достижения необходимого уровня точности при наименьшем числе шагов, – основная забота алгоритмической математики.

Первоначально термин «алгоритм» обозначал вычисления, выполняемые при помощи индо‑арабских цифр, в отличие от вычислений на абаке или на счетной доске. По мере сокращения в Европе подсчетов на абаке, а также потому, что вычисления стали намного более трудоемкими, росло желание выполнять вычисления при помощи механического вычислительного устройства. В семнадцатом веке математики вроде Паскаля, Декарта и Лейбница мечтали создать универсальный язык, на котором можно было бы закодировать все математические проблемы, и написать методы решения, которые можно было бы выполнять механически. Они пытались построить разнообразные механические калькуляторы. Представление Лейбница об универсальном языке исчисления выходило за рамки дифференциального и интегрального исчислений и включало формальные правила, с помощью которых можно было решать вопросы науки, этики и закона. Использование вычислительных машин могло значительно увеличить мощность любого эффективного алгоритма, но лишь в двадцатом веке произошло объединение программного обеспечения и аппаратных средств.

В 1819 году Чарльз Бэббидж (1791–1871) создал первый проект «дифференциальной машины», а в 1822 году выстроил опытный рабочий образец. Он надеялся, что это улучшит и скорость, и точность вычисления очень необходимых таблиц, например таблицы логарифмов. Британское правительство поддержало полномасштабное строительство этой машины, способной к созданию беспрецедентно точных таблиц для страхового, административного и научного использования. Но к 1834 году проект намного превысил бюджет и вышел из графика. Хотя идеи Бэббиджа и его честность в отношении финансовых вопросов никогда нее вызывали сомнений, правительство отложило дальнейшее финансирование. К тому времени он перенес свое внимание на проект «аналитической машины» – настоящего предшественника современного компьютера. Ключевой особенностью этого агрегата было разделение хранилища, где находились числа во время вычисления, и машины, которая выполняла арифметические операции. Входные и выходные данные были закодированы на перфорированных картах, равно как и устройство контроля, которое осуществляло выполнение программы. Был также предусмотрен вывод на печатное устройство. Чтобы можно было выполнять эти операции, использовался паровой двигатель. Но «аналитическая машина» так никогда и не была построена, и в 1842 году правительство решило прекратить финансирование «разностной машины». Это стало еще одним подтверждением желчного отношения Бэббиджа к британской науке. Он был сооснователем Аналитического общества, главная цель которого состояла в том, чтобы довести обучение математике в Кембридже до стандартов континента. В 1830 году он написал статью, в котором яростно критиковал состояние британской науки, в основном обвиняя в этом изолированность Королевского общества, что привело к созданию британской Ассоциации развития науки. К сожалению, анализ соотношения стоимости и эффективности идей Бэббиджа показал, что они не будут реализованы в течение еще почти ста лет.

Как и предвидел Бэббидж, развитие компьютеров в значительной степени зависело от потребности ускорить выполнение расчетов с помощью механических калькуляторов. Первая автоматическая вычислительная машина была построена в Гарварде на средства IBM приблизительно в 1940 году. Первый электронный программируемый компьютер назывался «Колосс». Он был построен в 1943 году в результате сотрудничества Алана Тьюринга и Джона фон Неймана и представлял собой часть работы по взлому шифров в Блетчли‑Парке. Однако был проект, который оказал особое влияние на будущую компьютерную архитектуру, – ENIAC (электронный цифровой интегратор и калькулятор), построенный приблизительно в то же время в университете штата Пенсильвания. Фон Нейманн надеялся, что ENIAC, первоначально разработанный для расчета баллистических таблиц, сможет выполнить некоторые вычисления, необходимые для Манхэттенского проекта. Однако затем он предложил новый, свой собственный проект компьютера, сохраняющего программу, называющийся EDVAC (Электронный Автоматический Компьютер Дискретных Переменных). Новая структура состояла из пяти основных компонентов: входные данные, выходные данные, блок управления, память и арифметический блок. Компьютер с сохранением программы называется так потому, что программа вводится в память посредством числовых данных, в то время как блок управления выполняет последовательность инструкций. Первый практический компьютер этого типа был построен в 1949 году в Великобритании и назывался EDSAC (Электронный Автоматический Калькулятор с задержкой Хранения). Следующие машины были построены в США и Великобритании, и к 1960‑м годам хранение программ стало обычным делом. Использование полупроводниковых компонентов для замены электронно‑лучевых ламп привело к значительному увеличению скорости и надежности работы. Несмотря на то что эти компьютеры сильно напоминали проекты Бэббиджа, их авторы ничего не знали о его работах.

Совершенно ясно, что изобретение компьютеров было мотивировано вполне практическими проблемами в бизнесе, управлении, криптографии или в решении уравнений математической физики. Компьютеры с хранением программ отделили аппаратные средства от программного обеспечения. Но первичная работа над программами – алгоритмами для выполнения соответствующих вычислений – шла не от практических проблем, а от логического рассмотрения формальных систем.

Самый привычный пример формальной системы – обычная арифметика. В ней есть четкий набор символов, есть процедуры для того, чтобы работать с этими символами, разобраться с проблемой и найти решение. Сами символы не имеют никакого значения кроме как в отношении правил формальной системы. Например, если я хочу понять, что означает ABmBAeBEB, я могу использовать различные методы или алгоритмы, чтобы выполнить вычисление. Вероятно, будет легче понять это выражение в виде 12 х 21 = 252, но этот пример хорошо иллюстрирует, что фактические символы не важны, имеет значение лишь истинность утверждения, в данном случае вычисления, которая может быть доказана посредством выведения из установленных аксиом. Если убрать общепринятое использование букв в обозначении функций, числа могут не только обозначать количества, но могут также действовать как операторы. Это – критический фактор перехода от вычислительных устройств, разработанных для решения определенных типов задач, к общим, универсальным компьютерам. В современном компьютере любая команда, например указание показать красный пиксель в определенном месте на мониторе, – это, по существу, цепочка чисел. Фактически вся программа, преобразованная в бинарный код, есть одно (очень большое) число. Базисная простота компьютеров часто не замечается из‑за все возрастающей скорости и мощности этих машин.

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

Параллельно с фокусировкой внимания на алгоритмах появилось обобщение понятия функции. В самом общем смысле функция ƒ – произвольное соотношение между математическими объектами. Считается, что функция вычислима, если существует алгоритм, который создает на выходе ƒ(х) для любого значения х, для которого ƒ(х) определено, то есть для так называемой области определения ƒ(х). Лишь в конце девятнадцатого столетия, когда были построены патологические функции, до математиков дошло, что функция может и не быть вычислимой. В результате внимание переместилось на вычислительные алгоритмы. Стало совершенно ясно, вычисляет ли данный алгоритм именно ту функцию, которая необходима. Но если невозможно было подобрать ни одного алгоритма, необходимо было доказать, что такового алгоритма вообще не существует. Появилась необходимость в точном определении понятия алгоритма. В статье Геделя содержались идеи относительно рекурсивных функций, где необходимая функция получалась путем последовательности промежуточных функций. Эти концепции оказались очень плодотворными для определения вычислительных алгоритмов. В 1936 году Алонзо Чёрч в Принстоне и Алан Тьюринг в Кембридже независимо друг от друга опубликовали свои концепции исчисляемости. Затем Тьюринг показал, что эти два понятия полностью эквивалентны. Определение алгоритма Тьюринга было основано на модели вычислительной машины, названной Чёрчем «машина Тьюринга». На вопрос о том, существует ли алгоритм, который мог бы определить, верна формула или нет, был дан отрицательный ответ. Эти результаты, совместно с данными Геделя, окончательно похоронили надежду на то, что компьютер однажды сможет определить истинность и ложность всех математических суждений. Однако сосредоточенность на алгоритмах положила начало развитию программного обеспечения, которое объявило о начале новой эры в математической физике. Вычислительная математика вернулась к обсуждению старых проблем динамики, вроде стабильности Солнечной системы, а также обратила взор на биологические системы и саму сложную динамику жизни.

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

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

Джон фон Нейман. Статья «Общая и логическая теория автоматов»

(1948)[1]

 


[1] Цит. по: А. Тьюринг. Может ли машина мыслить? С приложением статьи Дж. фон Неймана «Общая и логическая теория автоматов». Пер. и примечания Ю. А. Данилова. М.: ГИФМЛ, 1960.

 



Похожие статьи:
Следующие статьи:
Предыдущие статьи:

Комментарии
Добавить новый Поиск
Оставить комментарий
Имя:
Email:
 
Тема:
UBB-Код:
[b] [i] [u] [url] [quote] [code] [img] 
 
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Пожалуйста, введите проверочный код, который Вы видите на картинке.

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

Поиск по сайту

Голосование

Вы бы поддержали сайт новыми материалами за символическую плату?
 

Сейчас в чате



Нет пользователей online



Rambler's Top100