Sketchpad Айвена Сазерленда и сила случая Евгений Лебеденко
Sketchpad Айвена Сазерленда и сила случая
Евгений Лебеденко
Опубликовано 09 ноября 2012 года
В конце пятидесятых годов прошлого века руководство Массачусетского Технологического Института (MIT) передало университетскому городку вычислительную машину TX-0. Каждый студент и аспирант MIT получил право использовать TX-0 для любых целей раз в день в течение часа. Вряд ли кто-то подозревал, что из этого выйдет.
Без того компьютера, возможно, не появилась бы одна из первых компьютерных игр — Spacewar. Не будь Spacewar, молодой аспирант Айвен Сазерленд, вероятно, выбрал бы совсем другую тему для своей докторской диссертации. Тогда, скорее всего, не увидел бы свет и его Sketchpad — уникальный программно-аппаратный комплекс, оказавший огромное влияние на развитие систем автоматизированного проектирования и формирование базовых принципов графических пользовательских интерфейсов. История вычислительной техники пошла бы по иному пути.
Вычислительный «Вихрь»
В середине прошлого века MIT стал одним из центров, где совершенствовались американские системы противовоздушной обороны. В 1940 году на его базе была организована лаборатория сервомеханизмов под управлением профессора Гордона Брауна. Задача, стоящая перед лабораторией, была не из простых: реализовать взаимодействие корабельных радарных установок и бортовой артиллерии с компьютером. Кроме того, лётчики хотели получить универсальный авиасимулятор, который мог быть легко перенастроен под любой тип самолёта.
Аспирант Брауна Джей Форрестер быстро понял, что аналоговые вычислители, традиционно применяемые в этой области, недостаточно эффективны. А успешное применение для баллистических расчётов цифрового компьютера ENIAC только закрепило в нём это убеждение.
Трудность заключалась в том, что существовавшие тогда способы взаимодействия операторов с цифровыми вычислительными машинами решительно не годились ни для симуляции, ни для автоматизированного управления артиллерией. Оператор не мог получать результаты вычислений в режиме реального времени или быстро вводить информацию. Самые простые операции требовали длительной возни с перфокартами или перфолентами.
Вычислительная машина Whirlwind
Чтобы преодолеть эти проблемы, была начата разработка интерактивной вычислительной системы Whirlwind («Вихрь»). Для своего времени это была невероятно мощная машина. Арифметический модуль Whirlwind состоял из 12500 электронных ламп и трудился на частотах 1 и 2 мегагерца, выполняя двадцать тысяч операций в секунду. Whirlwind обеспечивал параллельную обработку шестнадцатибитных данных, используя для этого тридцать две команды.
Для визуализации компьютерных данных решили применить хорошо зарекомендовавшие себя в радарных установках экраны на электронно-лучевых трубках. Чтобы указать координаты цели, оператор крутил рукоятки, расположенные вокруг дисплея. Whirlwind стал, вероятно, первым компьютером, использующим для взаимодействия с человеком графические образы.
Дисплей Whirlwind имел немало общего с экраном радарной установки
В пятидесятые годы его вычислительная мощь стала основой SAGE (Semiautomatic Ground Environment) — автоматизированной системы ПВО, объединившей Whirlwind с радарными установками на обеих побережьях США. Из главного кампуса MIT занимавший целый этаж Whirlwind переехал в мозговой центр SAGE — лабораторию Линкольна.
Первые шаги САПР
Инженеры лаборатории Линкольна существенно усовершенствовали средства ввода-вывода Whirlwind. Дисплей, отображавший всего 256 точек, получил матрицу 64х64 точки. Оператору Whirlwind больше не приходилось запоминать координаты объектов и возиться с рукоятками ввода координат. Вместо этого он использовал «световой пистолет», которым можно было указать на дисплее нужный объект. Компьютер вычислял координаты светового пятна и по ним идентифицировал связанный с ним объект.
Оператор использует световой пистолет
Whirlwind и его преемники, компьютеры TX-0 и TX-2, годились не только для управления системами ведения огня. В 1949 году лаборатории поручили разработку системы компьютерного управления фрезерным станком. Дело в том, что создание новых реактивных истребителей требовало изготовления компонентов корпуса с высочайшей точностью, которая была недостижима даже самыми квалифицированными фрезеровщиками.
Результатом работы учёных MIT стала представленная в сентябре 1952 года система ЧПУ, считывающая данные об обрабатываемой детали с перфоленты и управляющая трёхосевым фрезерным станком. Трудоёмкий процесс разработки и отладки программ-перфолент ЧПУ вскоре был полностью автоматизирован с использованием Whirlwind и TX-0. Эта технология автоматизации получила название APT (Automatically Programmed Tool) и фактически стала прародителем современных САПР.
Алюминиевая деталь, выточенная под управлением APT III
Важнейшую роль в формировании программной части APT сыграл Дуглас Росс, одним из первых осознавший необходимость унификации описания обрабатываемых деталей и создания независимой от типа контроллера среды программирования.
Под руководством Росса были решены задачи программной унификации компонентов чертежа с использованием высокоуровневых операторов. Подобный подход позволил устранить непреодолимый ранее барьер между инженером-проектировщиком и компьютером, превращая последний из специализированного вычислителя в инструмент общего назначения.
Суммируя технологии
Рассказ о Sketchpad не случайно начался с истории Whirlwind и APT. Технические решения, использованные Айвеном Сазерлендом, появились именно в ходе реализации этих проектов. Whirlwind и его последователи обладали уникальным для своего времени интерфейсом — экраном и световым пистолетом, или пером, — который, однако, использовался лишь для узкого круга военных задач. Система автоматизированного проектирования APT оперировала описаниями графических объектов, но их приходилось задавать с помощью традиционных перфокарт и перфолент. Sketchpad объединил лучшие стороны этих проектов.
Научную карьеру Айвена Сазерленда можно назвать блестящей. Ещё школьником он увлекся программированием, самостоятельно собрав простенький релейный компьютер SIMON, придуманный популяризатором вычислительной техники Эдмундом Беркли. Бакалавром Сазерленд стал в Технологическом институте Карнеги, выиграв стипендию за разработку умной робомыши Фрэнкен. Докторскую диссертацию, для написания которой Сазерленд перебрался в MIT, вызвался консультировать сам Клод Шеннон.
Панель управления TX-0 и TX-2
На идею, из которой вырос Sketchpad, молодой аспирант MIT наткнулся в институтском кампусе, куда руководство лаборатории переместило TX-0. Использовать машину мог кто угодно и как угодно, благо компьютер был совершенно автономен и, что важно, обладал ЭЛТ-дисплеем. Конечно же, студенческая братия приспособила его для игр.
Это само по себе было очень необычным. Spacewar, которую разработали студенты MIT, считается едва ли не первой компьютерной игрой в истории. По экрану перемещались космические корабли, стреляющие друг в друга. Чтобы победить, нужно было уничтожить вражеский корабль и уцелеть самому.
В этой игрушке Сазерленд увидел то, что другие проглядели: люди, не имеющие навыков программирования, легко взаимодействовали с компьютером, используя его дисплей.
Spacewar! — первая компьютерная игра
К тому времени Джек Гилмор, один из предшественников Сазерленда в лаборатории Линкольна, разработал Scopewriter — видимо, первый интерактивный текстовый редактор, способный отображать на экране числа, символы алфавита и простые блок-схемы. До этого программистам приходилось работать с рулонами распечаток своих программ.
Сазерленд решил пойти дальше. Если экран компьютера можно использовать в качестве интерактивного «визуального принтера», то почему бы его вкупе со световым пером не превратить в «визуальный плоттер» — инструмент проектировщика? Ведь наиболее естественный способ передать компьютеру чертёж — нарисовать его на экране компьютера! Сейчас идея кажется очевидной, но пришла бы она Сазерленду на ум без той обстановки, в которую он погрузился, будучи аспирантом MIT?
Sketchpad изнутри
Сазерленд начал трудиться над Sketchpad (в переводе название означает «блокнот для набросков») в 1960 году. Для начала он реализовал рисование прямых линий. Решение Сазерленда было простым и изящным: чтобы нарисовать отрезок, пользователь должен был навести световое перо на точку его начала, нажать на пульте клавишу LINE и указать пером конечную точку отрезка. Sketchpad считывал координаты точек и соединял их линией.
Сазерленд за Sketchpad
Вдохновлённый успехом, Сазерленд в декабре 1961 года показывает прототип системы Клоду Шеннону и... получает от него ряд критических замечаний. Консультант докторской Сазерленда предлагает расширить функциональность «блокнота», добавив возможность рисования окружностей и максимально приблизив функции аппаратных клавиш Sketchpad к стандартным инструментам проектировщика.
Процедура рисования окружностей отняла у Сазерленда массу сил и времени. Разработать подпрограмму, с помощью которой можно было бы указать центр окружности и точку, ограничивающую её радиус, было просто. Но вот описать границу для дуги, завершающей рисование окружности, было весьма непросто.
Под указательным пальцем на световом пере находилась кнопка спуска
Решение этой проблемы вылилось в разработку обобщённого понятия «ограничитель» (constraint), описывающего границы самых разнообразных объектов, формируемых Sketchpad. Тогда же Сазерленд пришёл к мысли об унификации элементов, составляющих рисунок в Sketchpad. Он предложил представлять любой нарисованный элемент n-компонентной структурой, в которой атомарной единицей был бы компонент.
Структура n-компонентного элемента «линия»
Например, компонент «отрезок» представлялся двумя компонентами «точка», каждый из которых представлялся двумя компонентами "X"- и "Y"-координаты. В свою очередь, треугольник составляется из трёх компонентов «отрезок». С помощью компонентов типа «ограничитель» можно было задать отношения между визуальными компонентами. Установив ограничитель «параллельность» между двумя отрезками, можно было менять координаты одного из них, не заботясь об изменении координат другого отрезка. Тот автоматически перерисовывался параллельным первому. Точно так же, выбрав ограничитель «равенство», можно было сделать все грани многоугольника одинаковыми, превратив его в равнобедренный.
Следующий логичный шаг, сделанный Сазерлендом, заключался в применении рекурсии для масштабирования изображений. Вместо того, чтобы многократно вручную рисовать элементы разного масштаба, процедура рекурсии позволяла пользователю Sketchpad сгенерировать подмножество любого элемента в разных масштабах и под разными углами, просто пересчитав значения его дочерних компонентов.
Выравнивание фигур с помощью ограничителя «параллельность». Обратите внимание на ряд функциональных клавиш у левого края дисплея
Разработав базовые подходы к визуализации элементов рисунка, Сазерленд озаботился его хранением. Для быстрого вывода рисунка на экран компьютеру требовалась структура, хранящая координаты массива точек, составляющих рисунок. В Sketchpad каждая точка описывалась 36-разрядным словом, двадцать бит которого содержали координаты X и Y, а шестнадцать были указателем на элемент n-компонентной структуры, к которой принадлежит точка. Для проектировщика же требовалось хранить сведения обо всех элементах n-компонентоной структуры, составляющей рисунок.
Чтобы унифицировать эти данные, Сазерленд позаимствовал подход, применявшийся в редакторе Scopewriter, где файл, содержащий сведения о том или ином символе, представлял собой стек шестнадцатибитных указателей на элемент. Сазерленд расширил это представление, введя так называемую «кольцевую структуру» — замкнутый буфер, содержащий указатели на элементы n-компонентной структуры.
Родительские элементы в кольцевой структуре именовались «курица» (hen), а следовавшие за ней дочерние элементы логично обзывались «цыплятами» (chicken). Специальная процедура позволяла дополнить любую n-компонентную структуру новыми дочерними элементами, разместив «цыплят» позади «курицы». Кольцевая структура обеспечивала компьютеру возможность быстро просматривать множество родительских и дочерних элементов, выбирая необходимые для отображения на экране.
Создав в Sketchpad элементы лица, Сазерленд научил картинку подмигивать
Усилиями Сазерленда в библиотеку хранимых компонентов Sketchpad попали не только геометрические фигуры, но и символы алфавита, цифры, научные символы, радиотехнические элементы и даже такие элементы, как «глаз», «нос», «рот», позволяющие нарисовать, например, такое лицо.
Программа позволяла не только рисовать, но и визуализировать результаты расчётов других программ, необходимые на этапе проектирования. Например, создав проект арочного моста с определёнными пропорциями элементов, проектировщик мог в режиме реального времени получить на экране сведения о напряжениях, возникающих в разных точках конструкции, что существенно облегчало процесс оптимизации чертежа.
Сделанный на Sketchpad чертёж моста с «привязанными» к элементам его конструкции расчётами механических напряжений
В 1963 году вторая версия Sketchpad, а также полное описание структур хранимых «компьютерным блокнотом» данных и математических процедур, обеспечивающих реализацию ограничений и рекурсии элементов, была готова.
Демонстрация программы вызвала настоящий фурор. Стало ясно, что для специалистов, использующих системы проектирования, появился инструмент, обеспечивающий удобный ввод чертёжной информации в систему. Разработанные чертежи можно хранить в памяти компьютера и многократно использовать их или же легко редактировать при необходимости.
Безусловно, представленная версия Sketchpad была лишь прототипом. Для своей работы «рисовалка» требовала всей мощности компьютера TX-2, занимающего несколько комнат лаборатории. «Полученный опыт — самый важный результат разработки Sketchpad. В настоящее время использовать компьютер стоит, если вы хотите получить нечто большее, чем просто рисунок, — писал Сазерленд. — Для обычных рисунков всё же пока экономнее применять обычные карандаш и бумагу».
Опыт действительно оказался бесценным. С одной стороны, из Sketchpad выросли современные системы автоматизированного проектирования. С другой — эта программа стимулировала разработки в области человеко-машинного взаимодействия и, в конечном счёте, стала прародителем всех систем с графическим интерфейсом пользователя, в том числе Windows и Mac OS.
Мечтал ли о таком развитии событий Айвен Сазерленд? Конечно! В основе Sketchpad лежала идея простого общения людей и компьютеров, подмеченная им однажды в университетском кампусе. А ведь именно такие идеи и обеспечивают очередной рывок вперёд мира технологий.
Ученики Сазерленда
К оглавлению