белый. Такой видеодисплей требует 307 200 бит памяти, или 38 400 байт.
Чтобы расширить диапазон отображаемых цветов, необходимо выделить для каждого пиксела большее количество битов, а это увеличивает требования видеоадаптера к памяти. Например, для кодирования оттенков серого под каждый пиксел можно предоставить один байт памяти. При таком подходе значение 00h будет соответствовать черному цвету, значение FFh — белому, а промежуточные — оттенкам серого.
Цветное изображение ЭЛТ создается с помощью трех электронных пушек, по одной для каждого из трех основных цветов: красного, зеленого и синего. (В этом можно убедиться, рассмотрев цветной экран телевизора или компьютера через увеличительное стекло; в принтерах другой набор цветов.) Сочетание красного и зеленого дает желтый цвет, красного и синего — малиновый, зеленого и синего — голубой, а комбинация всех трех основных цветов — белый.
Простейший цветной графический адаптер требует, чтобы на один пиксел приходилось три бита, по одному биту на каждый из основных цветов. Цвет пикселов может быть закодирован следующим образом.
Биты
Цвет
000
Черный
001
Синий
010
Зеленый
011
Голубой
100
Красный
101
Малиновый
110
Желтый
111
Белый
Однако такой набор подходит только для очень простых «мультяшных» изображений. Большинство цветов, встречающихся в реальном мире, — это комбинации различных уровней красного, зеленого и синего. Если вы выделите два байта на пиксел, то на каждый основной цвет будет приходиться пять бит (один бит останется незадействованным). Это даст 32 уровня красного, зеленого и синего, что в общей сложности составит 32 768 разных цветов. Такая схема кодирования часто называется палитрой High color («высококачественное цветовоспроизведение»), или Thousands of colors («тысяча цветов»).
Следующий шаг — использование трех байтов на пиксел, или одного байта для каждого из основных цветов. Такая схема кодирования предусматривает 256 уровней красного, зеленого и синего, что в общей сложности дает 16 777 216 различных цветов. Часто эта палитра называется True Color («истинный/настоящий цвет»), или Millions of colors («миллионы цветов»). При разрешении дисплея 640 × 480 объем требуемой памяти составляет 921 600 байт — почти целый мегабайт.
Количество битов на пиксел иногда называется глубиной цвета или цветовым разрешением. Количество различных цветов связано с количеством битов на пиксел следующим соотношением:
Количество цветов = 2количество битов на пиксел.
Плата видеоадаптера имеет определенный объем памяти, что ограничивает количество возможных комбинаций разрешения и глубины цвета. Например, плата видеоадаптера с памятью один мегабайт может обеспечить разрешение 640 × 480 при глубине цвета, равной трем байтам на пиксел. Однако если вы хотите использовать разрешение 800 × 600, для такой глубины цвета имеющейся памяти окажется недостаточно, поэтому придется довольствоваться двумя байтами на пиксел.
Несмотря на то что растровые дисплеи кажутся нам вполне естественным выбором, поначалу они редко использовались, поскольку предъявляли огромные требования к памяти. В системе SAGE употреблялись векторные дисплеи, больше напоминающие осциллограф, чем телевизор. Управляемая электрическим сигналом электронная пушка рисовала на экране прямые и кривые линии, которые в течение некоторого времени сохранялись на экране, что и создавало из них примитивные изображения.
Компьютеры SAGE также поддерживали использование световых карандашей, которые позволяли операторам изменять кадры на дисплее. Световой карандаш — это стилус с прикрепленным к одному концу проводом. С помощью специального программного обеспечения компьютер определяет точку экрана, на который указывает световой карандаш, и изменяет изображение в соответствии с его движением.
Принцип работы светового карандаша иногда ставит в тупик даже технически подкованных людей. Суть в том, что световой карандаш не излучает, а улавливает свет. Электронная схема, управляющая электронной пушкой в ЭЛТ (вне зависимости от типа используемого дисплея), также фиксирует момент, когда свет от электронной пушки попадает на световой карандаш, определяя при этом точку экрана, на которую он указывает.
Одним из тех, кто первым предвосхитил начало эры интерактивных вычислений, был Айвен Сазерленд (род. 1938), который в 1963 году продемонстрировал революционную графическую программу Sketchpad, разработанную им для компьютеров SAGE. Эта программа могла хранить описания изображений в памяти и выводить их на экран. Кроме того, она предусматривала возможность использования светового карандаша для рисования и изменения изображений на экране, причем все это отслеживалось компьютером.
Еще одним провидцем эры интерактивных вычислений был Дуглас Энгельбарт, который прочитал статью Вэнивара Буша «Как мы можем мыслить» в 1945 году, сразу после ее публикации, а пять лет спустя начал развивать новые идеи в области компьютерных интерфейсов. В середине 1960-х годов, работая в Стэнфордском исследовательском институте, Энгельбарт полностью переосмыслил концепцию устройств ввода и придумал пятиклавишную клавиатуру для ввода команд (которая так и не прижилась), а также небольшое устройство с колесиками и кнопкой, которое он назвал мышью. Теперь мышь практически повсеместно применяется для перемещения указателя и выбора объектов на экране.
К счастью, многие из первых энтузиастов интерактивных графических вычислений собрались в компании Xerox в то время, когда использование растровых дисплеев стало экономически целесообразным. В 1970 году Xerox в Пало-Альто учредила исследовательский центр PARC для разработки продуктов, с которыми эта компания могла бы выйти на рынок. Вероятно, самым известным прогнозистом в центре PARC был Алан Кэй (род. 1940), который в возрасте 14 лет узнал о библиотеке микрофильмов Вана Буша из рассказа Роберта Хайнлайна, а затем придумал портативный компьютер Dynabook.
Первый крупный проект 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, каждая из которых имеет описательное название.