Размышления о думающих машинах. Тьюринг. Компьютерное исчисление - Коллектив авторов (полная версия книги TXT) 📗
Алан Тьюринг (стоит) работает с двумя коллегами за компьютером Ferranti Mark I в Манчестерском университете в 1951 году.
1952 год, оператор управляет предварительной версией Pilot АСЕ — компьютера, разработанного Тьюрингом для общего применения.
ДЖОН ФОН НЕЙМАН: ОДИН ИЗ САМЫХ БЛЕСТЯЩИХ УМОВ XX ВЕКА
Фон Нейман (1903- 1957) работал над очень разными темами и, как и Тьюринг, во все проекты привносил свой талант и блестящие интеллектуальные способности. Он занимался исследованиями в области квантовой механики, теории игр, информатики, участвовал в Манхэттенском проекте по разработке первой атомной бомбы, работал консультантом в ЦРУ, в корпорации RAND (РЭНД), являющейся исследовательским центром, сотрудничающим с американской армией, в таких предприятиях, как IBM, и в нефтяной компании Standard Oil. Работа фон Неймана в проекте, связанном с созданием одного из первых компьютеров, ENIAC, позволила ему сформулировать правила организации компонентов компьютера, или архитектуру фон Неймана. Он работал с самыми первыми компьютерами в мире, например EDVAC или, на этапе разработки, IAS — компьютером, созданным для Института перспективных исследований в Принстоне. Описание, объясняющее, как построить IAS, свободно распространялось по университетам и предприятиям всего мира, так что возникла целая серия машин IAS: Johniac, Mistic, Oracle, ORDVAC, Weizac, MUSALINO-I, SILLIAC и другие.
Джон фон Нейман рядом с компьютером IAS.
Другие достижения ученого
Еще одним достижением фон Неймана является введение понятия самовоспроизводящейся машины, то есть автомата, способного создавать другие автоматы и обладающего свойством самовоспроизведения подобно микроорганизмам или бактериям. В Манхэттенском проекте фон Нейман совместно с математиком Станиславом Уламом (1909-1984) разработал метод Монте-Карло — вид численных методов с широким применением, в которых используются компьютер и случайные числа. Выяснив, что разрушительная сила бомбы больше, если она сдетонирует до момента столкновения с землей, фон Нейман рассчитал, на какой высоте должны взорваться бомбы над Хиросимой и Нагасаки, чтобы взрыв причинил как можно больший ущерб. В 1957 году ученый умер от рака. Его последняя работа «Компьютер и мозг» была опубликована посмертно.
В 1944 году он присоединился к команде, строившей ENI АС, для того чтобы усовершенствовать и исправить некоторые ограничения и недостатки этой довольно примитивной машины. Результаты его работы были воплощены в следующем после ENIAC поколении компьютеров. Два самых известных — EDVAC (Electronic Discrete Automatic Computer) и ORDVAC (Ordnance Discrete Variable Automatic Computer). ORDVAC был первой машиной в истории, для которой был написан компилятор для языка программирования FORAST. Пользователь писал программу на исходном коде, а компилятор переводил ее в исполняемую версию, машинный код.
В 1945 году фон Нейман опубликовал знаменитый доклад «Первый черновик отчета о EDVAC» (First Draft of a Report on EDVAC), где излагались принципы архитектуры фон Неймана (см. схему).
Ученый попытался определить, каким образом, с точки зрения логики, должны быть организованы компоненты компьютера, не учитывая электронных комплектующих. С тех пор этой модели следуют все разработчики компьютеров. Согласно архитектуре фон Неймана, компьютер состоит из следующих элементов.
— Устройство ввода, или input ("например, клавиатура для ввода данных).
— Выходное устройство, или output (например, монитор, на котором видны результаты операций).
— Арифметико-логическое устройство (АЛУ): выполняет арифметические (суммирование, вычитание, умножение, деление) и логические операции. К логическим операциям относятся операции сравнения, допустим в такой задаче: проверить, является ли А меньше, чем В(А< В), или условные выражения, например на языке BASIC-256 выражение IF-THEN:
if chr(a) = "A" then
print "Ты нажал на А!!!"
Также это могут быть повторяющиеся задачи или операторы цикла. Например, в этой версии языка BASIC мы можем записать символы кода ASCII, используя оператор цикла FOR-ТО:
for i=l to 256
print chr(i)
next i
— Контрольное устройство — элемент, управляющий обработкой команд программы. Например, в программе BASIC-256 последовательность инструкций rem, clg, f astgraphics... должна выполняться одна за другой в порядке появления. Еще одна задача контрольного устройства — интерпретировать значения инструкции и передавать их АЛУ. Например, если в кодовой строке стоит оператор *, АЛУ дается указание осуществить операцию умножения.
— Для того чтобы программа выполнялась, она должна храниться в основной памяти. В современных компьютерах основная память — это память ОЗУ.
ТЬЮРИНГ КАК ПРОГРАММИСТ: МАНЧЕСТЕРСКИЙ УНИВЕРСИТЕТ
В 1948 году Тьюринг ушел из Национальной физической лаборатории (NPL) и начал работать в Манчестерском университете. Там уже трудился его друг и учитель Макс Ньюман, математик из Кембриджа, который принимал участие в разработке и строительстве Colossus в Блетчли-парке. Ученые хотели организовать в университете лабораторию для разработки и конструирования компьютеров для научных, а не военных целей. Этот амбициозный проект начался под покровительством Королевского общества, одного из старейших научных обществ Британии, обладавшего высоким авторитетом в Европе. Так появилась вычислительная лаборатория Королевского общества в Манчестерском университете. Тьюринг взял на себя задачу разработки программ по численному анализу — разделу математики, занимающемуся созданием алгоритмов для решения с помощью компьютера задач по оптимизации, интегральному исчислению, дифференциальных уравнений, операций с матрицами и других, то есть для всех инструментов прикладной математики. После разработки программ должен был появиться компьютер для их выполнения.
Несмотря на азарт, с которым Тьюринг принялся за программирование, он никогда не оставлял спорт и даже стал кандидатом на участие в Олимпийских играх 1948 года, правда, в конце концов ученый не вошел в сборную Королевства.
В этой лаборатории появилось еще одно британское изобретение — компьютер, сначала названный Baby. Позже популярным стало название MADAM — сокращение от Manchester Automatic Digital Machine (Манчестерская автоматическая цифровая машина), но официально он назывался Manchester Mark I. Его создателями были Фредерик Уильямс (1911-1977) и Том Килбурн (1921-2001). Запуск компьютера был осуществлен весной 1948 года. У него была основная память и электронно-лучевая трубка, направлявшая поток электронов на стеклянный экран со свинцово-фосфорным покрытием. Manchester Mark I мог хранить программу с 17 командами в виде изображения на экране.
ЯЗЫК ПРОГРАММИРОВАНИЯ ТЬЮРИНГА 4.1.1
Язык Тьюринга, названный так в его честь, был создан в 1982 году Риком Хольтом и Джеймсом Корди в Университете Торонто (Канада). Этот язык программирования похож на Pascal и используется для изучения программирования студентами вузов. Существует несколько версий этого языка: классическая, объектно-ориентированная и Turing Plus. С 2007 года предприятие Holt Software Associates, занимающееся этой версией, прекратило участие в проекте, но среду разработки можно бесплатно скачать на http://compsci.ca/holtsoft/ . Как и многие другие языки программирования, этот также считается Тьюринг-полным, так как с его помощью можно написать любую программу, которую способна выполнить универсальная машина Тьюринга. Примерами неполных по Тьюрингу систем являются формулы листов для расчетов, например Excel, или XML, используемый в интернете для обмена информацией в структурированном формате. Простой пример такой программы: