Первый крупный проект PARC — компьютер Alto, сконструированный в 1972–1973 годах. По меркам тех лет это устройство впечатляло: массивный системный блок, обработка 16-разрядных чисел, два диска емкостью по три мегабайта, 128 килобайт оперативной памяти (расширяемой до 512 килобайт) и мышь с тремя кнопками. Поскольку во времена создания Alto однокристальных 16-разрядных микропроцессоров еще не существовало, его процессор пришлось собирать из 200 отдельных интегральных микросхем.
Видеодисплей Alto был одним из нескольких элементов, выделявших этот компьютер на фоне других. Экран напоминал лист бумаги шириной 20,3 и высотой 25,4 сантиметра. Он работал в режиме растровой графики с разрешением 606 пикселов по горизонтали и 808 пикселов по вертикали (всего 489 648 пикселов). Для каждого пиксела выделялся один бит памяти, то есть он мог быть либо черным, либо белым. Всего для видеоизображения предоставлялось 64 килобайта памяти в общем адресном пространстве процессора.
Записывая данные в эту видеопамять, программа могла выводить на экран изображения или отображать текст различных шрифтов и размеров. Перемещая по столу мышь, пользователь мог позиционировать указатель и взаимодействовать с объектами на экране. В отличие от телетайпного аппарата, реагирующего на действия пользователя с задержкой, дисплей Alto — чрезвычайно емкий двумерный массив информации — позволял пользователю взаимодействовать с компьютером более непосредственно.
В конце 1970-х годов у программ, написанных для компьютера Alto, появились интересные особенности. На экране могли одновременно отображаться несколько программ, каждая в своем окне. Графические возможности компьютера позволяли выйти за рамки текста и по-настоящему воплощать мысли пользователя. В интерфейсе появились такие графические объекты, как кнопки, меню, а также небольшие изображения, называемые иконками. Мышь использовалась для выбора окон и активации программных функций посредством взаимодействия с графическими объектами.
Такое программное обеспечение упростило непосредственный контакт между человеком и машиной. Работа с компьютерами не ограничивалась простым перемалыванием чисел. Как выразился Дуглас Энгельбарт в своей легендарной статье, написанной в 1963 году, такие программы были разработаны «для усиления человеческого интеллекта».
Разработки центра PARC легли в основу так называемого графического пользовательского интерфейса (Graphic User Interface, GUI). Однако Xerox не стала продавать компьютер Alto (который в этом случае стоил бы более 30 тысяч долларов). Прошло более десяти лет, прежде чем идеи, воплощенные в этом компьютере, нашли применение в коммерческих продуктах.
В 1979 году PARC посетили Стив Джобс и другие сотрудники компании Apple Computer, которых впечатлило увиденное. А в январе 1983 года они представили печально известный компьютер с графическим интерфейсом Lisa, за которым год спустя последовал гораздо более успешный Macintosh.
Первый компьютер Macintosh был оснащен микропроцессором Motorola 68000, ПЗУ емкостью 64 килобайта, 128 килобайтами оперативной памяти, 3,5-дюймовым дисководом (позволяющим сохранять на дискете до 400 килобайт), клавиатурой, мышью, а также монитором с разрешением 512 × 342 (всего 175 104 пикселов) и диагональю девять дюймов. Каждому пикселу соответствовал один бит памяти, он мог быть либо черным, либо белым, поэтому объем достигал лишь 22 килобайт.
Аппаратное обеспечение первого компьютера Macintosh было элегантным, но отнюдь не революционным. От других машин, присутствовавших на рынке в 1984 году, его отличала операционная система, которая в то время именовалась системным программным обеспечением, а позже получила название Mac OS.
Такие текстовые однопользовательские операционные системы, как CP/M или MS-DOS, отличаются небольшим размером и не предусматривают обширного интерфейса прикладного программирования (API). В главе 22 я уже объяснил, что от этих текстовых операционных систем в основном требовалось предоставление приложениям доступа к файловой системе. В отличие от них такая графическая операционная система, как Mac OS, занимает намного больше памяти и предоставляет сотни функций API, каждая из которых имеет описательное название.
В то время как текстовая операционная система, вроде MS-DOS, позволяла производить лишь несколько простых функций API, например отображать на экране текст в стиле телетайпных аппаратов, графическая операционная система Mac OS должна была выводить на экран графическое изображение. Теоретически этого можно достичь за счет реализации одной функции API, которая разрешает приложению задавать цвет пиксела с определенными горизонтальной и вертикальной координатами. Однако такой способ оказывается неэффективным, поскольку при его применении изображение формируется очень медленно.
Разумнее сделать так, чтобы операционная система предоставляла исчерпывающую систему графического программирования, состоящую из функций API для отрисовки линий, прямоугольников, эллипсов (включая окружности) и текста. Эта система должна позволять создавать сплошные или пунктирные линии, заполнять прямоугольники и эллипсы различными узорами, а для текста задавать разные шрифты, размеры и стили начертания. Система графического программирования также должна отвечать за визуализацию этих объектов в виде набора точек на экране.
Программы, работающие под управлением графической ОС, используют одни и те же функции API для вывода изображений на экран компьютера и для их печати на принтере. Именно поэтому документ текстового редактора отображается на экране почти так же, как и на распечатке. Этот принцип называется WYSIWYG (What You See Is What You Get — «что видишь, то и получишь»).
Привлекательность графического пользовательского интерфейса отчасти в том, что различные приложения основаны на одних и тех же принципах, благодаря чему опыт, накопленный пользователем при работе с одной программой, применим и с другими. Это означает, что операционная система также должна предусматривать функции API, позволяющие приложениям реализовывать различные компоненты пользовательского интерфейса, например кнопки и меню. Вопреки распространенному убеждению, графический интерфейс облегчает работу не только пользователям, но и программистам, поскольку допускает написание программы с современным интерфейсом. Получается, нет необходимости изобретать велосипед.
Еще до появления Macintosh несколько компаний пытались разработать графическую операционную систему для IBM PC и совместимых с ним компьютеров. В некотором смысле разработчикам компании Apple было легче, поскольку они работали над аппаратным и программным обеспечением одновременно. Системное программное обеспечение компьютера Macintosh должно было поддерживать только один тип флоппи-дисковода, один дисплей и два принтера. Однако реализация графической ОС для IBM PC предполагала поддержку множества дополнительных аппаратных средств.
Несмотря на то что компьютер IBM PC был представлен всего несколькими годами ранее (в 1981-м), многие уже привыкли к приложениям MS-DOS и не были готовы от них отказываться. И поэтому было важно, чтобы графическая ОС для IBM PC предусматривала использование приложений MS-DOS наряду с приложениями, специально написанными для новой операционной системы. (Программное обеспечение для компьютера Apple II на Macintosh не работало, поскольку в нем был другой микропроцессор.)