В конце пятидесятых годов прошлого века руководство Массачусетского Технологического Института (MIT) передало университетскому городку вычислительную машину TX-0. Каждый студент и аспирант MIT получил право использовать TX-0 для любых целей раз в день в течение часа. Вряд ли кто-то подозревал, что из этого выйдет.
Без того компьютера, возможно, не появилась бы одна из первых компьютерных игр — Spacewar. Не будь Spacewar, молодой аспирант Айвен Сазерленд, вероятно, выбрал бы совсем другую тему для своей докторской диссертации. Тогда, скорее всего, не увидел бы свет и его Sketchpad — уникальный программно-аппаратный комплекс, оказавший огромное влияние на развитие систем автоматизированного проектирования и формирование базовых принципов графических пользовательских интерфейсов. История вычислительной техники пошла бы по иному пути.
Вычислительный «Вихрь»
В середине прошлого века MIT стал одним из центров, где совершенствовались американские системы противовоздушной обороны. В 1940 году на его базе была организована лаборатория сервомеханизмов под управлением профессора Гордона Брауна. Задача, стоящая перед лабораторией, была не из простых: реализовать взаимодействие корабельных радарных установок и бортовой артиллерии с компьютером. Кроме того, лётчики хотели получить универсальный авиасимулятор, который мог быть легко перенастроен под любой тип самолёта.Аспирант Брауна Джей Форрестер быстро понял, что аналоговые вычислители, традиционно применяемые в этой области, недостаточно эффективны. А успешное применение для баллистических расчётов цифрового компьютера ENIAC только закрепило в нём это убеждение.
Трудность заключалась в том, что существовавшие тогда способы взаимодействия операторов с цифровыми вычислительными машинами решительно не годились ни для симуляции, ни для автоматизированного управления артиллерией. Оператор не мог получать результаты вычислений в режиме реального времени или быстро вводить информацию. Самые простые операции требовали длительной возни с перфокартами или перфолентами.
Вычислительная машина Whirlwind
Для визуализации компьютерных данных решили применить хорошо зарекомендовавшие себя в радарных установках экраны на электронно-лучевых трубках. Чтобы указать координаты цели, оператор крутил рукоятки, расположенные вокруг дисплея. Whirlwind стал, вероятно, первым компьютером, использующим для взаимодействия с человеком графические образы.
Дисплей Whirlwind имел немало общего с экраном радарной установки
Первые шаги САПР
Инженеры лаборатории Линкольна существенно усовершенствовали средства ввода-вывода Whirlwind. Дисплей, отображавший всего 256 точек, получил матрицу 64×64 точки. Оператору Whirlwind больше не приходилось запоминать координаты объектов и возиться с рукоятками ввода координат. Вместо этого он использовал «световой пистолет», которым можно было указать на дисплее нужный объект. Компьютер вычислял координаты светового пятна и по ним идентифицировал связанный с ним объект.Оператор использует световой пистолет
Результатом работы учёных MIT стала представленная в сентябре 1952 года система ЧПУ, считывающая данные об обрабатываемой детали с перфоленты и управляющая трёхосевым фрезерным станком. Трудоёмкий процесс разработки и отладки программ-перфолент ЧПУ вскоре был полностью автоматизирован с использованием Whirlwind и TX-0. Эта технология автоматизации получила название APT (Automatically Programmed Tool) и фактически стала прародителем современных САПР.
Алюминиевая деталь, выточенная под управлением APT III
Под руководством Росса были решены задачи программной унификации компонентов чертежа с использованием высокоуровневых операторов. Подобный подход позволил устранить непреодолимый ранее барьер между инженером-проектировщиком и компьютером, превращая последний из специализированного вычислителя в инструмент общего назначения.
Суммируя технологии
Рассказ о Sketchpad не случайно начался с истории Whirlwind и APT. Технические решения, использованные Айвеном Сазерлендом, появились именно в ходе реализации этих проектов. Whirlwind и его последователи обладали уникальным для своего времени интерфейсом — экраном и световым пистолетом, или пером, — который, однако, использовался лишь для узкого круга военных задач. Система автоматизированного проектирования APT оперировала описаниями графических объектов, но их приходилось задавать с помощью традиционных перфокарт и перфолент. Sketchpad объединил лучшие стороны этих проектов.Научную карьеру Айвена Сазерленда можно назвать блестящей. Ещё школьником он увлекся программированием, самостоятельно собрав простенький релейный компьютер SIMON, придуманный популяризатором вычислительной техники Эдмундом Беркли. Бакалавром Сазерленд стал в Технологическом институте Карнеги, выиграв стипендию за разработку умной робомыши Фрэнкен. Докторскую диссертацию, для написания которой Сазерленд перебрался в MIT, вызвался консультировать сам Клод Шеннон.
Панель управления TX-0 и TX-2
Это само по себе было очень необычным. Spacewar, которую разработали студенты MIT, считается едва ли не первой компьютерной игрой в истории. По экрану перемещались космические корабли, стреляющие друг в друга. Чтобы победить, нужно было уничтожить вражеский корабль и уцелеть самому.
В этой игрушке Сазерленд увидел то, что другие проглядели: люди, не имеющие навыков программирования, легко взаимодействовали с компьютером, используя его дисплей.
Spacewar! — первая компьютерная игра
Сазерленд решил пойти дальше. Если экран компьютера можно использовать в качестве интерактивного «визуального принтера», то почему бы его вкупе со световым пером не превратить в «визуальный плоттер» — инструмент проектировщика? Ведь наиболее естественный способ передать компьютеру чертёж — нарисовать его на экране компьютера! Сейчас идея кажется очевидной, но пришла бы она Сазерленду на ум без той обстановки, в которую он погрузился, будучи аспирантом MIT?
Sketchpad изнутри
Сазерленд начал трудиться над Sketchpad (в переводе название означает «блокнот для набросков») в 1960 году. Для начала он реализовал рисование прямых линий. Решение Сазерленда было простым и изящным: чтобы нарисовать отрезок, пользователь должен был навести световое перо на точку его начала, нажать на пульте клавишу LINE и указать пером конечную точку отрезка. Sketchpad считывал координаты точек и соединял их линией.Сазерленд за Sketchpad
Процедура рисования окружностей отняла у Сазерленда массу сил и времени. Разработать подпрограмму, с помощью которой можно было бы указать центр окружности и точку, ограничивающую её радиус, было просто. Но вот описать границу для дуги, завершающей рисование окружности, было весьма непросто.
Под указательным пальцем на световом пере находилась кнопка спуска
Структура n-компонентного элемента «линия»
Следующий логичный шаг, сделанный Сазерлендом, заключался в применении рекурсии для масштабирования изображений. Вместо того, чтобы многократно вручную рисовать элементы разного масштаба, процедура рекурсии позволяла пользователю Sketchpad сгенерировать подмножество любого элемента в разных масштабах и под разными углами, просто пересчитав значения его дочерних компонентов.
Выравнивание фигур с помощью ограничителя «параллельность». Обратите внимание на ряд функциональных клавиш у левого края дисплея
Чтобы унифицировать эти данные, Сазерленд позаимствовал подход, применявшийся в редакторе Scopewriter, где файл, содержащий сведения о том или ином символе, представлял собой стек шестнадцатибитных указателей на элемент. Сазерленд расширил это представление, введя так называемую «кольцевую структуру» — замкнутый буфер, содержащий указатели на элементы n-компонентной структуры.
Родительские элементы в кольцевой структуре именовались «курица» (hen), а следовавшие за ней дочерние элементы логично обзывались «цыплятами» (chicken). Специальная процедура позволяла дополнить любую n-компонентную структуру новыми дочерними элементами, разместив «цыплят» позади «курицы». Кольцевая структура обеспечивала компьютеру возможность быстро просматривать множество родительских и дочерних элементов, выбирая необходимые для отображения на экране.
Создав в Sketchpad элементы лица, Сазерленд научил картинку подмигивать
Программа позволяла не только рисовать, но и визуализировать результаты расчётов других программ, необходимые на этапе проектирования. Например, создав проект арочного моста с определёнными пропорциями элементов, проектировщик мог в режиме реального времени получить на экране сведения о напряжениях, возникающих в разных точках конструкции, что существенно облегчало процесс оптимизации чертежа.
Сделанный на Sketchpad чертёж моста с «привязанными» к элементам его конструкции расчётами механических напряжений
Демонстрация программы вызвала настоящий фурор. Стало ясно, что для специалистов, использующих системы проектирования, появился инструмент, обеспечивающий удобный ввод чертёжной информации в систему. Разработанные чертежи можно хранить в памяти компьютера и многократно использовать их или же легко редактировать при необходимости.
Опыт действительно оказался бесценным. С одной стороны, из Sketchpad выросли современные системы автоматизированного проектирования. С другой — эта программа стимулировала разработки в области человеко-машинного взаимодействия и, в конечном счёте, стала прародителем всех систем с графическим интерфейсом пользователя, в том числе Windows и Mac OS.
Мечтал ли о таком развитии событий Айвен Сазерленд? Конечно! В основе Sketchpad лежала идея простого общения людей и компьютеров, подмеченная им однажды в университетском кампусе. А ведь именно такие идеи и обеспечивают очередной рывок вперёд мира технологий.
Ученики Сазерленда
Работая в исследовательском центре Xerox, Алан Кей создал первый объектно-ориентированный язык Smalltalk и первые компьютеры с GUI, окнами и мышью — Xerox Alto и Xerox Star. |
Эдвин Катмулл — один из основателей анимационной студии Pixar и основоположник исследований в области трёхмерной компьютерной графики. Достаточно сказать, что именно он изобрёл наложение текстур и z-буфер. |
Анри Гуро — ещё один известный специалист в области трёхмерной компьютерной графики, изобретший один из первых алгоритмов тонирования 3d-моделей, который так и называется — «метод Гуро». |