Москва 2001 г тайный язык информатики Чарльз Петцольд ббк 32. 973. 26–018



Pdf көрінісі
бет23/26
Дата07.04.2020
өлшемі3,29 Mb.
#61783
1   ...   18   19   20   21   22   23   24   25   26
Байланысты:
Petcold Kod-Taynyy-yazyk-informatiki.535358

Глава 25

Графическая революция

10 сентября 1945 г. читателей журнала «Life» ожидала в основ-

ном обычная пестрая мозаика статей и фотографий: материа-

лы о конце Второй мировой войны, описание жизни танцора

Вацлава Нижинского в Вене, иллюстрированное эссе о профсо-

юзе United Auto Workers. Кроме того, в номере был и неожи-

данный материал: статья Ванневара Буша (Vannevar Bush) (1890–

1974) о будущем научных исследований. В 1927–1931 гг., рабо-

тая в Массачусетском технологическом институте, Буш уже внес

свою лепту в историю компьютеров, разработав один из самых

удачных аналоговых компьютеров — дифференциальный ана-

лизатор. Во время написания статьи для «Life» Буш руководил

Управлением научных исследований и разработок США, кото-

рое в годы войны отвечало за координацию различных науч-

ных исследований, включая «Манхэттенский проект».

Статья Буша «Как мы предполагаем» представляла собой

сжатый вариант публикации, появившейся за два месяца до

этого в «The Atlantic Monthly». В ней описывались некие гипо-

тетические будущие изобретения, призванные облегчить

жизнь ученого и исследователя, которому приходится иметь

дело со все возрастающим объемом специализированных из-

даний. Буш видел выход в использовании микропленок. Он

предложил использовать для хранения книг, статей, звуков и

изображений воображаемое устройство «Memex». Между от-

дельными элементами хранилища предполагалось создание


460

Глава двадцать пятая

тематических связей, основанных на ассоциациях, которые

обычно рождаются в человеческом мышлении. По мнению

Буша, разработкой этих связей должны заниматься специаль-

но подготовленные профессионалы.

В XX в. статьи о технологических чудесах будущего появ-

лялись довольно часто. Но статья Буша выпадает из общего

ряда. Речь в ней идет не о диковинных бытовых устройствах

или фантастических средствах передвижения. Буша интересо-

вала  информация  и технологические способы ее хранения и

обработки.

За шесть с половиной десятилетий, отделяющих нас от пер-

вых релейных вычислительных машин, компьютеры стали

компактнее, быстрее и дешевле. Благодаря этому изменилась

сама природа работы с информацией. Из сложного научного и

инженерного прибора компьютер перешел в разряд бытовой

техники.

Повышение мощности и быстродействия компьютеров

необходимо, хотя бы частично, использовать для совершен-

ствования самой важной части компьютерной системы —



пользовательского интерфейса, т. е. точки, в которой компью-

тер соприкасается с человеком. Человек и компьютер — раз-

ные, и, увы, многие считают, что легче человека приспособить

к компьютеру, чем наоборот.

Первые цифровые компьютеры не отличались интерактив-

ностью. Некоторые из них нужно было программировать с

помощью переключателей и кабелей, другие — с помощью

перфокарт и перфолент. В 1950-е и 1960-е годы (да и в 1970-е)

пользователь зачастую был отделен от процесса вычислений:

он писал программу на бумаге и отдавал ее в вычислительный

центр. Сотрудники ВЦ переносили ее на перфокарты, вводи-

ли в компьютер и запускали. Затем пользователь получал от-

печатанные на бумаге результаты работы программы (при ус-

ловии, конечно, что компиляция прошла успешно).

Первые интерактивные устройства для обмена информа-

цией с компьютером напоминали пишущие машинки. К од-

ному компьютеру их можно было подключить несколько.

Пользователь набирал на клавиатуре команду, которая тут же

отпечатывалась на рулоне бумаги и отправлялась в компью-

тер. Тот обрабатывал ее и печатал на том же рулоне результа-

ты. Обмен информацией между терминалом и компьютером


461

Графическая революция

осуществлялся исключительно в виде ASCII-кодов (или в дру-

гой аналогичной кодировке), т. е. поток данных целиком состо-

ял из букв, цифр, знаков препинания и простых управляющих

кодов, например, кодов возврата каретки и перевода строки.

Катодно-лучевые трубки, широко распространившиеся в

1970-е годы, позволяли осуществлять вывод информации с

большей гибкостью, но создатели первых программ для не-

больших компьютеров пользовались этой гибкостью неохот-

но, вероятно, не желая отступать от общепринятой в то время

логики представления информации. Во многих случаях мо-

ниторы оставались «стеклянными пишущими машинками»:

экран заполнялся информацией построчно, а когда места на

нем не оставалось, строки «прокручивались» вверх, по одной

исчезая за верхней границей экрана. В таком режиме действу-

ют все программы для CP/M и многие программы для MS-DOS.

В манере пишущей машинки до сих пор работает UNIX.

Интересно, что в кодировке ASCII изначально предусмот-

рено средство для работы с катодно-лучевым экраном: сим-

вол 1Bh (Escape). В 1979 г. Американский институт по стан-

дартизации опубликовал стандарт «Дополнительные управля-

ющие символы для использования с ASCII». Вводился он с

целью «удовлетворить ожидаемые потребности в управлении

вводом-выводом информации на двумерных устройствах…

включая интерактивные терминалы с катодно-лучевыми эк-

ранами и принтеры».

Вот здесь и нашлось применение коду 1Bh. Символ Escape

в потоке информации означает, что несколько следующих за

ним символов нужно не отображать, а интерпретировать как

код действия. Например, последовательность:

1Bh 5Bh 32h 4Ah

т. е. Escape-код и символы  [2J стирает содержимое экрана и

перемещает курсор в его верхний левый угол. Понятно, что с

пишущей машинкой такое проделать не удастся. Последова-

тельность:

1Bh 5Bh 35h 3Bh 32h 39h 48h

т. е. Escape-код и символы [5;29H, передвигает курсор в 29-й

столбец 5-й строки.



462

Глава двадцать пятая

Монитор, изображение на котором формируется ASCII-

кодами и Escape-последовательностями, поступающими с уда-

ленного компьютера, вкупе с клавиатурой иногда называют



«немым» терминалом (dumb terminal). Терминалы работают

быстрее телетайпных аппаратов и обладают большей гибкос-

тью, но для радикальных перемен в пользовательском интер-

фейсе их быстродействия все же маловато. Настоящая рево-

люция в этой области началась лишь в 1970-е — с появлением

небольших компьютеров, у которых видеопамять была час-

тью общего адресного пространства процессора.

Первым указанием на то, что небольшие компьютеры бу-

дут радикально отличаться от своих больших дорогостоящих

«собратьев», стала, вероятно, программа VisiCalc (1979) для ком-

пьютера «Apple II», разработанная и написанная Дэном Брик-

лином (Dan Bricklin) (род. 1951) и Бобом Фрэнкстоном (Bob

Frankston) (род. 1949). До тех пор для вычислений с наборами

чисел использовались разлинованные листы бумаги. В VisiCalc

двумерное изображение таблицы впервые оказалось не на бу-

маге, а на экране компьютера. Пользователь мог свободно пе-

ремещать курсор по таблице, вводя в ее ячейки числа и форму-

лы, которые по его команде вычислялись.

Пожалуй, одно из наиболее удивительных качеств VisiCalc в

том, что создание аналогичной программы на большом компь-

ютере принципиально невозможно. У подобных программ часто

возникает потребность в быстром обновлении содержимого

экрана. Поэтому программа VisiCalc записывала отображаемые

данные прямо в видеопамять дисплея «Apple II», входившую в

адресное пространство процессора. Скорость обмена данными

между большим компьютером и «немым» терминалом для опе-

ративного обновления изображения слишком низка.

Чем быстрее компьютер реагирует на сигналы клавиатуры

и обновляет содержимое экрана, тем шире возможности для

организации его взаимодействия с пользователем. Большин-

ство программ, написанных в первое десятилетие существо-

вания IBM PC (1980-е), записывали данные прямо в видеопа-

мять. Поскольку аппаратным стандартам IBM следовали и дру-

гие производители компьютеров, авторы ПО могли спокойно

обходить ОС и обмениваться данными прямо с оборудовани-

ем, не опасаясь, что на каких-то компьютерах их программы

работать откажутся. Если бы на различных клонах PC обмен


463

Графическая революция

данных с дисплеем был организован по-разному, писать для

них программы было бы гораздо сложнее.

Первые приложения для IBM PC выводили на экран почти

исключительно текст, без графики. Это позволяло создавать

максимально быстрые приложения. В компьютере, подобном

тому, что мы обсуждали в главе 21, для отображения на экра-

не конкретного символа программа просто записывает в ви-

деопамять его ASCII-код. В графическом режиме для вывода

на экран изображения того же символа в видеопамять придет-

ся передать не менее 8 байт.

И все же именно переход из текстового в графический ре-

жим стал чрезвычайно важным шагом в эволюции компью-

теров. Поначалу разработка аппаратного и программного обес-

печения для работы не просто с цифрами и буквами, а с изоб-

ражениями шла очень медленно. Еще в 1945 г. Джон фон Ней-

ман обсуждал возможность создания дисплея, работающего

по принципу осциллографа, на котором можно было бы ото-

бражать графику. Но в жизнь эти идеи начали воплощаться

лишь в начале 1950-х, когда Массачусетский технологический

институт при участии IBM организовал Лабораторию им. Лин-

кольна, которая разрабатывала компьютеры для системы ПВО

ВВС США. В систему SAGE (Semi-Automatic Ground Environ-

ment, полуавтоматическая наземная система) входили графи-

ческие дисплеи, помогавшие  операторам анализировать боль-

шие объемы информации.

Действие современных мониторов для персональных ком-

пьютеров основано на иных принципах, чем действие первых

графических систем типа SAGE. В наши дни в компьютерах

применяются в основном растровые дисплеи, напоминающие

обычные телевизионные экраны. Изображение состоит из на-

бора горизонтальных строк, прорисовываемых электронным

лучом. Наглядно экран можно представить в виде двумерного

массива точек — пикселов. В компьютере для хранения изоб-

ражения отводится специальная область памяти, в которой

каждому пикселу на экране соответствует один или несколько

битов. Значения этих битов определяют яркость и цвет соот-

ветствующего пиксела.

Разрешение большинства современных мониторов состав-

ляет минимум 640 пикселов по горизонтали и 480 по вертика-

ли. Полное число пикселов, таким образом, равно 307 200. Если


464

Глава двадцать пятая

каждому пикселу в памяти сопоставить единственный бит,

можно будет закодировать всего два цвета — черный и белый.

При этом для содержимого экрана понадобится 307 200 бит

или  38 400 байт.

Чтобы отображать на экране большее количество цветов,

придется увеличить число битов, приходящихся на пиксел. Так,

чтобы отображать одним пикселом 256 оттенков серого, по-

надобится уже целый байт. Его значение 00h может соответ-

ствовать черному, значение FFh — белому, а промежуточные

значения — различным оттенкам серого.

Чтобы получить на экране электронно-лучевой трубки

цвет, приходится использовать уже не одну, а три электрон-

ные пушки, по одной для каждого из основных цветов — крас-

ного, зеленого, синего (посмотрите на экран через увеличи-

тельное стекло и убедитесь, что так оно и есть). Сочетание крас-

ного и зеленого дает желтый цвет, красного и синего — мали-

новый, зеленого и синего — голубой, сочетание всех трех ос-

новных цветов — белый.

В простейшем адаптере цветного дисплея на каждый пиксел

должно приходиться  по 3 бита — по одному на каждый основ-

ной цвет. Таблица кодирования цветов может выглядеть так:



Биты

Цвет

000


Черный

001


Синий

010


Зеленый

011


Голубой

100


Красный

101


Малиновый

110


Желтый

111


Белый

Конечно, ни для чего, кроме мультиков, такая палитра не год-

на. Чтобы получить на экране реалистичное изображение, надо

уметь отображать на нем оттенки основных цветов. Если вы

готовы пожертвовать по 2 байта на пиксел, каждому основно-

му цвету будет сопоставлено по 5 бит (1 бит останется не у

дел). Это позволит кодировать 32 градации яркости каждого

основного цвета или всего 32 768 различных цветов. Такую

систему кодирования часто называют палитрой High Color.


465

Графическая революция

Следующий шаг к реалистичности — кодировать каждый

пиксел 3 байтами, по байту на основной цвет. В такой схеме

кодируются уже не 32, а 256 градаций яркости красного, зеле-

ного и синего, или всего 16 777 216 различных цветов (палит-

ра True Color). При разрешении дисплея 640 

´ 480 для 3-бай-

тового представления цветов понадобится видеопамять объе-

мом 921 600 байт, т. е. почти мегабайт.

Число битов на пиксел называют иногда цветовой глуби-



ной (color depth). Количество доступных цветов связано с цве-

товой глубиной соотношением:

Число цветов = 2

Число битов на пиксел

Объем памяти на видеоплате не бесконечен, что накладывает

ограничение на доступные комбинации разрешения и цветовой

глубины. Если на плате адаптера установлена видеопамять объе-

мом 1 Мб, при разрешении 640 

´ 480 можно будет использовать

палитру True Color. Но если вы решите установить разрешение

800 

´ 600, выделить каждому пикселу по 3 байта уже не удастся;



придется ограничить свои амбиции палитрой High Color.

Теперь растровые дисплеи кажутся нам вполне естествен-

ными, но в начале компьютерной эры они не находили широ-

кого распространения именно по причине чрезмерных требо-

ваний к памяти. Дисплеи системы SAGE были  векторными

(vector), более напоминая не телевизор, а осциллограф. Сиг-

нал от компьютера произвольно перемещал электронную

пушку, и луч электронов рисовал на экране прямые и кривые

линии. Нарисованная линия некоторое время сохранялась на

экране, благодаря чему на нем можно было создавать простые

изображения.

На компьютерах SAGE также использовались световые ка-



рандаши (light pens), позволявшие оператору рисовать прямо

на экране. Принцип работы карандаша нелегко разгадать даже

технически подготовленному человеку, а фокус в том, что све-

товой карандаш не излучает свет, он его детектирует. Элект-

ронная схема, управляющая движением пушки, попутно оп-

ределяет, попал ли свет, излученный под воздействием элект-

ронного пучка, на световой карандаш, таким образом вычис-

ляя его экранные координаты.

Одним из первых пришествие новой эры интерактивных

вычислений предугадал Айвен Сазерленд (Ivan Sutherland)



466

Глава двадцать пятая

(род. 1938). В 1963 г. он продемонстрировал революционную

графическую программу Sketchpad для компьютеров SAGE.

Она сохраняла описания изображений в памяти компьютера

и могла при необходимости выводить их на экран. Световым

карандашом можно было рисовать на экране новые изобра-

жения и корректировать уже имеющиеся, сохраняя внесенные

изменения в памяти.

Другим провидцем эры интерактивных вычислений был

Дуглас Энджелбарт (Douglas Engelbart) (род. 1925), с 1950 г.

разрабатывавший компьютерные интерфейсы. В середине

1960-х Энджелбарт предложил использовать в качестве уст-

ройств ввода небольшую клавиатуру, специально приспособ-

ленную для набора команд (она так и не стала популярной), и

устройство с колесиками и кнопкой, которой он назвал мы-

шью (mouse). Мышь теперь используется для работы с объек-

тами на экране практически повсеместно.

Многие сторонники графического компьютерного интер-

фейса работали в фирме Xerox. В 1970 г. фирма организовала

в Пало-Альто (штат Калифорния) исследовательский центр

PARC (Palo-Alto Research Center) с целью создания продуктов,

которые позволили бы ей выйти на компьютерный рынок.

Первым большим проектом PARC был компьютер «Alto»

(1972–1973). По тем временам это было впечатляющее устрой-

ство: 16-битовая обработка чисел, два диска емкостью по 3 Мб,

128 кб памяти (с возможностью расширения до 512 кб) и мышь

с тремя кнопками! Об однокристальных микропроцессорах в

ту пору еще не слышали, поэтому процессор «Alto» собирался

из 200 отдельных микросхем.

В конструкцию «Alto» входило несколько нетривиальных

устройств, в том числе, растровый дисплей. По размеру экран

почти не отличался от стандартного листа бумаги — 8 дюй-

мов в ширину и 10 дюймов в высоту. Дисплей работал в гра-

фическом режиме с разрешением 606 пикселов по горизонта-

ли и 808 пикселов по вертикали (всего 489 648 пикселов). Каж-

дому пикселу соответствовал 1 бит, т. е. доступны были лишь

два цвета — черный и белый. Видеопамять емкостью 64 кб

входила в адресное пространство процессора.

Записывая информацию в видеопамять, программа фор-

мировала на экране изображение, в частности, оформленный

различными шрифтами текст. Передвигая мышь по столу,



467

Графическая революция

пользователь перемещал по экрану указатель и работал с эк-

ранными объектами. Дисплей «Alto» уже совершенно не на-

поминал телетайпный аппарат с одномерной последователь-

ностью команд и ответов на них. Он окончательно превратил-

ся в емкий двумерный массив информации.

В конце 1970-х у программ для компьютера «Alto» появи-

лось несколько очень интересных особенностей. На экране

одновременно могли отображать информацию несколько про-

грамм; у каждой из них для этого имелось свое окно. Появи-

лись и первые графические элементы пользовательского ин-

терфейса — кнопки, меню и маленькие значки-«иконки»

(icons), которые приводились в действие мышью. То были пер-

вые признаки того, что компьютеры перестают быть достоя-

нием профессионалов и переходят в мир обычных людей, а

область их применения выходит за рамки простого «переже-

вывания» чисел.

Разработки центра PARC для компьютера «Alto» положи-

ли начало графическому интерфейсу пользователя (Graphic User

Interface, GUI). Правда, на рынок компьютеры «Alto» так и не

поступили (стоил бы такой компьютер свыше 30 000 долла-

ров), и прошло целое десятилетие, прежде чем заложенные в

них идеи получили дальнейшее развитие.

В 1979 г. центр PARC посетил Стив Джобс и его коллеги из

«Apple Computer». Увиденное произвело на них большое впе-

чатление, но собственный компьютер с графическим интер-

фейсом они создали лишь 3 года спустя, в январе 1983 г. Это

была печально известная машина «Apple Lisa». Годом позже

появился куда более удачный «Macintosh».

Первые «Macintosh» комплектовались процессором Moto-

rola 68000, ПЗУ емкостью 64 кб, оперативной памятью 128 кб,

3,5-дюмовым дисководом для дискет емкостью 400 кб, клави-

атурой, мышью и монитором с разрешением 512 

´ 342 и диа-

гональю 9 дюймов. Каждому пикселу соответствовал 1 бит;

объем видеопамяти составлял 22 кб.

Оборудование первого «Macintosh» было элегантным, но

не экстравагантным. От других компьютеров, продававшихся

в 1984 г., его существенно отличала операционная система, в

то время называвшаяся системным программным обеспечени-



ем, а позже прославившаяся под именем Mac OS.

468

Глава двадцать пятая

Текстовые однопользовательские ОС наподобие CP/M или

MS-DOS очень компактны и развитым интерфейсом приклад-

ного программирования (API) не обладают. В главе 22 я гово-

рил, что от этих ОС в основном требовалось дать другим про-

граммам доступ к файловой системе. Графическая ОС, напри-

мер Mac OS, занимает гораздо больше места и наделена сотня-

ми функций API. Каждая из них обозначается именем, в кото-

ром коротко зашифровано ее назначение.

В текстовой ОС, подобной MS-DOS, достаточно пары функ-

ций API, которые позволяли бы приложениям построчно пе-

чатать на экране текст. В графической ОС приложениям тре-

буется возможность выводить на экран изображения. Теорети-

чески для этого достаточно единственной функции API, кото-

рая задавала бы цвет и яркость пиксела с определенными ко-

ординатами. Однако на практике поточечное формирование

изображения оказывается слишком медленным.

Программировать для ОС гораздо легче, если она предо-

ставляет в распоряжение разработчика полную систему гра-

фического программирования, т. е. набор функций API для

отображения текста и рисования прямых линий, прямоуголь-

ников и эллипсов (в том числе окружностей). Удобно, если

можно линии делать не только сплошными, но и пунктирны-

ми или штриховыми, для замкнутых фигур задавать заливку,

для текста выбирать шрифты, размеры и начертания (полу-

жирное, подчеркнутое и пр.). Преобразованием этих объек-

тов в набор разноцветных точек на экране занимается не про-

граммист, а система графического программирования.

Программы, работающие под управлением графической

ОС, обращаются к одним и тем же функциям API для рисова-

ния изображений на экране и их печати на принтере. Благода-

ря этому документ текстового процессора на экране выглядит

практически так же, как и на печати. Такая технология назы-

вается WYSIWYG (What You See Is What You Get, что видишь,

то и получаешь).

Привлекательность графических ОС отчасти обусловлена

тем, что различные приложения в целом организованы оди-

наково, и потому опыт, приобретенный при работе с одним

приложением, применим и во всех остальных. Для практичес-

кой реализации такого единообразия в набор API включены

функции для отображения элементов пользовательского ин-



Достарыңызбен бөлісу:
1   ...   18   19   20   21   22   23   24   25   26




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет