469
Графическая революция
терфейса, например, кнопок и меню. Обычно считают, что
стандартизированный графический интерфейс облегчает
жизнь пользователю, но на самом деле он не менее удобен и
для программиста. При создании нового приложения автору
не приходится изобретать велосипед.
Еще до появления «Macintosh» некоторые компании пыта-
лись создать графическую ОС для IBM-совместимых компь-
ютеров. В каком-то смысле перед разработчиками «Apple» сто-
яла более легкая задача, поскольку они проектировали обору-
дование и программы одновременно. Системной программе
«Macintosh» достаточно было поддерживать один тип диско-
вода для гибких дисков, один дисплей и два принтера. При
создании графической ОС для PC приходилось учитывать куда
более широкое аппаратное разнообразие.
И это не единственная проблема. За несколько лет суще-
ствования IBM PC многие люди привыкли к приложениям MS-
DOS и не собирались от них отказываться. К графической ОС
для PC предъявлялось непременное требование: под ней дол-
жны были работать программы для MS-DOS (на «Macintosh»
программы для «Apple II» не работали главным образом из-за
различий в микропроцессорах).
В 1985 г. появились сразу три графических оболочки для
PC: GEM компании Digital Research (в свое время создавшей
CP/M), VisiOn компании VisiCorp (она распространяла про-
грамму VisiCalc) и Windows 1.0 компании Microsoft. Скоро ста-
ло ясно, что победителем в «войне окон» станет последняя.
Однако массовое внимание пользователей Windows привлек-
ла лишь в мае 1990 г., после выхода версии 3.0. С тех пор попу-
лярность Windows возросла неимоверно, и в наши дни под
управлением этой ОС работает 90% персональных компьюте-
ров. Внешне системы Windows и Mac OS довольно похожи, но
интерфейсы API у них совершенно разные.
Теоретически графическая ОС по сравнению с текстовой
требует установки на компьютере лишь одного дополнитель-
ного устройства — дисплея с графическими возможностями.
Даже жесткий диск необязателен: у первого «Macintosh» его
вовсе не было, для работы Windows 1.0 он тоже был не нужен.
Не требовалась в Windows 1.0 и мышь, хотя по общему мне-
нию она существенно облегчала работу с системой.
470
Глава двадцать пятая
И все же именно развитие компьютерного оборудования
— повышение быстродействия процессоров, увеличение объе-
ма оперативной памяти и емкости жестких дисков — обусло-
вило растущую популярность графических ОС. По мере того
как ОС становится удобнее, растут и ее потребности. Совре-
менной графической ОС нужны пара сотен мегабайт на жест-
ком диске и оперативная память не менее 32 Мб.
Приложения для графических ОС практически никогда не
писались на ассемблере. В прежние годы программы для
«Macintosh» разрабатывались на Паскале, а для Windows — на
С. В 1972 г. сотрудники центра PARC приступили к разработке
языка SmallTalk, опирающегося на концепцию объектно-ори-
ентированного программирования (object-oriented program-
ming), на которой основан новый подход к созданию графи-
ческих программ.
В традиционных языках программирования имеется чет-
кое различие между программой (т. е. операторами, начинаю-
щимися с какого-либо ключевого слова — Set, For, If и т. д.) и
данными (т. е. константами и переменными). Корни этого раз-
личия, несомненно, лежат в архитектуре неймановского ком-
пьютера, в котором нет ничего, кроме машинного кода и дан-
ных, на которые этот код воздействует.
В объектно-ориентированном программировании код и
данные сосуществуют в составе единого объекта (object). Кон-
кретный способ хранения данных в объекте понятен лишь
коду, связанному с этим объектом. Друг с другом объекты вза-
имодействуют, отправляя и принимая сообщения (messages), в
которых содержатся команды или запросы на информацию.
Объектно-ориентированные языки особенно удобны при
создании приложений для графических ОС. Благодаря им про-
граммист, работая с экранными объектами (окнами, кнопка-
ми), воспринимает их практически так же, как и пользователь.
Возьмите в качестве примера объекта кнопку. Она характери-
зуется следующими данными: размерами, положением на эк-
ране, текстом. А связанный с кнопкой код отслеживает, была
ли она «нажата» с помощью клавиатуры или мыши, и отправ-
ляет другим объектам сообщение об этом.
Несмотря на новый подход к программированию, все по-
пулярные объектно-ориентированные языки для небольших
компьютеров являются расширенными вариантами традици-
471
Графическая революция
онных «алголоподобных» языков, например, С или Паскаля.
Объектно-ориентированный вариант языка С называется С++.
Он разработан в основном Бьерном Страуструпом (Bjarne
Stroustrup) (род. 1950) из Bell Telephone Laboratories. Поначалу
С++ был реализован как транслятор, который преобразовы-
вал программу на С++ в программу на С (весьма неуклюжую
и совершенно нечитабельную). Затем программа на С компи-
лировалась обычным способом.
Разумеется, возможностей у объектно-ориентированных язы-
ков ничуть не больше, чем у традиционных. Но решения про-
граммистских задач, подсказываемые объектно-ориентирован-
ными языками, зачастую технически более совершенны. При из-
вестном старании можно (хотя и не обязательно легко) написать
даже объектно-ориентированную программу, которая будет ком-
пилироваться как под Mac OS, так и под Windows. В такой про-
грамме прямого обращения к API-функциям быть не должно.
Программа обращается к объектам, а уже объекты вызывают API-
функции. При компиляции программы под Mac OS и под
Windows используются различные определения объектов.
В наши дни запускать компилятор из командной строки,
как правило, уже не приходится. Большинство программис-
тов перешли на интегрированные среды разработки — удоб-
ные программы, в которых объединены все инструменты на-
писания и отладки программ. Широкое распространение по-
лучил также метод визуального программирования (visual
programming), позволяющий разрабатывать окна приложения
в интерактивном режиме, размещая в них кнопки и другие
элементы с помощью мыши.
В главе 22 я рассказывал о текстовых файлах, которые со-
держат только коды ASCII и понятны человеку без использо-
вания дополнительных приспособлений. В текстовых ОС та-
кие файлы — идеальное средство для обмена информацией
между приложениями. У них есть одно большое преимуще-
ство: в текстовом файле легко найти нужную последователь-
ность символов. Но как только у вас возникает желание ото-
бражать текст во множестве шрифтов, размеров и начертаний,
вы понимаете, что возможностей текстового файла для этого
недостаточно. Большинство современных текстовых процес-
соров хранят свои документы в двоичном формате. И уже со-
всем не годится текстовый формат для хранения изображений.
472
Глава двадцать пятая
Точнее сказать, закодировать в текстовом файле такие ат-
рибуты текста, как параметры шрифта или абзаца, можно. В
формате RTF (Rich Text Format), разработанном фирмой
Microsoft, для этого применяются фигурные скобки и обрат-
ная косая черта, за которой следует команда, описывающая
форматирование текста.
В текстовом формате PostScript эта концепция доведена до
крайности. Его разработал один из основателей компании
Adobe Systems Джон Уорнок (John Warnock) (род. 1940). Он
представляет собой настоящий универсальный язык графи-
ческого программирования. Сейчас PostScript применяется в
основном для печати текста и изображений на высококаче-
ственных принтерах.
Изображения украсили экраны ПК благодаря совершен-
ствованию компьютерного оборудования и его удешевлению.
Микропроцессоры заработали быстрее, память подешевела,
экраны и листы бумаги, выползающие из принтеров, запест-
рели яркими красками, существенно возросло экранное и пе-
чатное разрешение. Все эти достижения сразу находили при-
менение в компьютерной графике.
Компьютерные изображения, как и мониторы, бывают ра-
стровыми и векторными.
Векторные изображения создаются алгоритмически, в виде
сочетания прямых и кривых линий и заполненных фигур. Их
активно используют в системах автоматизированного проек-
тирования (computer-aided drawing) для создания технических
или архитектурных чертежей. Формат для хранения вектор-
ного изображения на диске компьютера называют метафай-
лом (metafile). Обычно в метафайл входят просто команды для
рисования компонентов векторного изображения, записанные
в двоичном виде.
Замкнутых и разомкнутых линий вполне достаточно для
создания проекта, скажем, моста, но они абсолютно непригод-
ны, если вам нужно показать, как этот мост выглядит «в жиз-
ни». Мост — объект из реального мира. Он слишком сложен,
чтобы его можно было представить в виде комбинации про-
стых геометрических фигур.
Вот здесь-то на помощь и приходят растровые, или точеч-
ные (bitmap) изображения. В точечном формате изображение
представлено в виде прямоугольного массива пикселов, соот-
473
Графическая революция
ветствующих пикселам устройства вывода. Подобно монито-
рам, точечные изображения характеризуются размерами по
горизонтали и вертикали в пикселах и цветовой глубиной, за-
висящей от того, сколько битов соответствует 1 пикселу.
Хотя точечное изображение двумерно, файл, в котором оно
записано, представляет собой всего лишь длинную последо-
вательность битов. В ней, как правило, сначала закодирована
первая строка пикселов, потом вторая и т. п.
Создавать точечные изображения можно как «вручную», с
помощью специального графического приложения, так и про-
граммно. В точечный формат можно перевести и изображе-
ние, созданное более традиционным способом: рисунок или
фотографию. Для переноса в компьютер образов из реально-
го мира придумано несколько устройств, основу которых, как
правило, составляет прибор с зарядовой связью (ПЗС, charge-
coupled device, CCD) — полупроводниковый прибор, выраба-
тывающий электрический ток при облучении светом.
Старейшее устройство подобного рода — сканер. В нем, как
и в копировальном аппарате, по сканируемому изображению
(например, по фотографии) проходит ПЗС-линейка, состав-
ленная из отдельных ПЗС-элементов. В зависимости от ин-
тенсивности света, отраженного от изображения, каждый ПЗС-
элемент вырабатывает определенный электрический заряд.
Программа, обслуживающая сканер, переводит сигналы от
отдельных элементов в пикселы точечного изображения и за-
писывает его в файл.
В видеокамерах для записи изображения используются дву-
мерные ПЗС-матрицы. Обычно запись осуществляется на маг-
нитную ленту, но сигнал с ПЗС-матрицы можно направить и
в устройство для захвата кадра (video frame grabber) — ком-
пьютерную плату, преобразующую аналоговый видеосигнал
в последовательность битов. Источником видеосигнала может
быть не только видеокамера, но и видеомагнитофон, проиг-
рыватель лазерных видеодисков и даже обычный телевизор.
В недавнее время в разряд бытовых приборов попали циф-
ровые видеокамеры. Выглядят они, как обычные видеокаме-
ры, но сигнал с ПЗС-матрицы записывается в них не на ленту,
а в электронную память, откуда его позже можно переписать
на диск компьютера.
474
Глава двадцать пятая
Зачастую в графической ОС для хранения точечных изоб-
ражений используется свой специфический формат. На
«Macintosh», например, применяется формат Paint. Это назва-
ние происходит от имени графического редактора MacPaint, в
котором формат был впервые применен (в настоящее время
предпочтительнее формат PICT, в котором могут храниться
как точечные, так и векторные изображения). Точечный фор-
мат для Windows называется BMP (такое расширение в этой
ОС имеют файлы с точечными изображениями).
Точечные изображения зачастую весьма объемны, поэто-
му желательно придумать какой-то способ делать их компак-
тнее. Изобретение подобных способов относится к компетен-
ции раздела информатики, известного как уплотнение данных.
Рассмотрим в качестве примера изображение, в котором каж-
дому пикселу соответствуют 3 бита. На нем запечатлено голу-
бое небо и дом с лужайкой, т. е. существенные части изображе-
ния окрашены в голубой и зеленый цвета. Допустим, верхняя
строка изображения содержит 72 пиксела голубого цвета, иду-
щих друг за другом. Чтобы сделать файл компактнее, нужно
записывать в него не все 72 пиксела, а лишь один, но с указа-
нием повторить его 72 раза. Такой способ уплотнения называ-
ется кодированием повторяющихся последовательностей
(Run-Length Encoding, RLE) и применяется в обычных факси-
мильных аппаратах для сжатия изображения перед его отправ-
кой по телефонной линии. Поскольку факс-аппарат различа-
ет только черный и белый цвета, в отправляемом изображе-
нии обычно не бывает недостатка в длинных последователь-
ностях одноцветных пикселов.
Для сжатия графических файлов уже больше десятилетия
используется метод LZW, названный так по именам его созда-
телей (Lempel, Ziv, Welch). Он, в частности, применяется в гра-
фическом формате GIF (Graphics Interchange Format, формат
для обмена изображениями), разработанном в 1987 г. компа-
нией CompuServe. Метод LZW в отличие от RLE способен рас-
познавать не только идущие подряд одинаковые пикселы, но
и более сложные закономерности в их расположении.
Методы RLE и LZW обеспечивают уплотнение без потерь.
Это значит, что при восстановлении уплотненного файла он
полностью возвращается в исходное состояние. Иными сло-
вами, уплотнение методом RLE или LZW обратимо. Легко до-
475
Графическая революция
казать, что сжать без потерь можно не всякий файл. Иногда
файл, «уплотненный» по обратимому методу, оказывается
больше исходного!
В последние годы выросла популярность «затратных»
методов сжатия. Они обратимостью уже не обладают, посколь-
ку часть исходных данных в уплотненный файл не записыва-
ется. Разумеется, никто не посоветует вам таким способом сжи-
мать документ текстового процессора или файл электронной
таблицы, в которых важна каждая цифра или буква. Но к гра-
фическим файлам затратное сжатие вполне применимо, при
условии, конечно, что выброшенные данные не ухудшают су-
щественно качества изображения. Вот почему разработчикам
затратных методов приходится опираться на результаты пси-
хологических исследований, в которых определяется, что ка-
жется человеческому взгляду важным, а что — нет.
Самые популярные затратные методы сжатия точечных
изображений известны под общим обозначением JPEG (Joint
Photography Experts Group, Объединенная группа специалистов
по фотографии). Правда, формат JPEG включает в себя несколь-
ко методов сжатия, из которых затратными являются не все.
Преобразовать метафайл в точечное изображение доволь-
но просто. Концептуально видеопамять и точечное изображе-
ние организованы одинаково. Если программа «умеет» рисо-
вать изображение на экране компьютера, она с тем же успехом
может записать его в точечный файл.
Обратное преобразование выполнить гораздо сложнее, если
вообще возможно. Частный случай такого преобразования —
оптическое распознавание символов (Optical Character
Recognition, OCR). Оно используется, когда нужно перевести
печатные символы, содержащиеся в точечном изображении, в
соответствующие коды ASCII. OCR-программа анализирует
последовательности пикселов и пытается определить, изобра-
жение какого символа ей встретилось. Алгоритмически эта
задача очень сложна, поэтому 100%-ую точность программы
OCR обеспечивают редко. Еще хуже дело обстоит с переводом
в коды ASCII рукописного текста.
Точечные и векторные изображения являют собой способ
цифрового представления визуальной информации. В биты и
байты можно преобразовать также и звуковую информацию.
476
Глава двадцать пятая
Цифровой звук произвел фурор в 1983 г., когда на рынке
появились первые компакт-диски (compact-disks, CD). Это со-
бытие положило начало самому успешному этапу развития
бытовой электроники. Компакт-диск разработан фирмами
Philips и Sony для записи 74 минут цифрового звука на одной
стороне диска диаметром 12 см. Такая продолжительность за-
писи выбрана для того, чтобы на одном диске можно было
целиком хранить Девятую симфонию Бетховена.
Звук на компакт-диске кодируется с помощью кодово-им-
пульсной модуляции (pulse code modulation, PCM). Несмотря
на заковыристое название, концепция метода PCM проста.
Звук — это вибрация. Вибрируют голосовые связки чело-
века, труба в оркестре, падающее дерево. Вибрация заставляет
воздух двигаться. Он начинает периодически разрежаться и
сжиматься с частотой несколько сотен или тысяч раз в секун-
ду — по воздуху распространяется звуковая волна. Долетев до
уха, она колеблет барабанные перепонки, благодаря чему мы
слышим звук.
В фонографе Томаса Эдисона, изобретенном в 1877 г., зву-
ковые волны продавливалась на поверхности цилиндра, по-
крытого оловянной фольгой. Записанный на цилиндре звук
позже можно было воспроизвести. До появления компакт-дис-
ков этот принцип записи оставался практически неизменным,
хотя вместо цилиндров позже стали использовать диски, а
вместо фольги — сначала воск, а потом пластмассу. Первые
фонографы были полностью механическими, затем для уси-
ления звука в них начали применять электрические схемы.
Переменный резистор в микрофоне превращает звук в элект-
рический сигнал, а электромагнит в динамике преобразует
электричество обратно в звук.
Электрический ток, которым закодирован звук, не похож
на те дискретные сигналы, о которых мы говорили на протя-
жении всей книги. Давление в звуковой волне меняется непре-
рывно, и потому непрерывно меняется также и напряжение
тока. Этот электрический сигнал является аналоговым, и для
его преобразования в двоичную форму необходимо специаль-
ное устройство, обычно изготавливаемое в виде микросхемы,
— аналого-цифровой преобразователь (АЦП; analog-to-digital
converter). Цифровые сигналы на выходе АЦП — обычно их
8, 12 или 16 — символизируют относительный уровень напря-
477
Графическая революция
жения. 12-битовый АЦП, например, преобразует звуковой
электрический сигнал в число от 000h до FFFh, различая 4096
уровней напряжения.
В случае кодово-импульсной модуляции аналоговый сиг-
нал преобразуется в цифровые значения с постоянной скоро-
стью. Эти значения записываются на компакт-диск в виде кро-
хотных ямок на его поверхности и считываются лучом лазера,
отражающимся от поверхности диска. При воспроизведении
двоичные значения преобразуются обратно в аналоговый сиг-
нал с помощью цифро-аналогового преобразователя (digital-to-
analog converter). Подобное устройство используется и в цвет-
ных видеоадаптерах для преобразования битового кода пик-
села в аналоговый сигнал, который подается на монитор.
Частота, с которой аналоговый звуковой сигнал преобра-
зуется в цифровой, называется частотой дискретизации
(sampling rate). В 1928 г. Гарри Найквист (Harry Nyquist) из Bell
Telephone Laboratories доказал, что она должна минимум вдвое
превосходить максимальную частоту звука, который предпо-
лагается записывать и воспроизводить. Обычно считается, что
человеческое ухо способно воспринимать звук в диапазоне
частот от 20 до 20 000 Гц. При записи компакт-дисков исполь-
зуется частота дискретизации 44 100 Гц, что несколько выше
требуемой.
Количество битов для кодирования элемента записи опре-
деляет динамический диапазон компакт-диска, т. е. различие
между самым тихим и самым громким звуком, который мож-
но на него записать. Для измерения ширины этого диапазона
введена единица бел, названная в честь Александра Белла. 1 бел
соответствует 10-кратному увеличению интенсивности звука.
Чаще применяется единица децибел, равная 0,1 бела. 1 деци-
бел приблизительно равен минимальному изменению интен-
сивности звука, которое человек в состоянии различить.
16-разрядное кодирование звука позволяет охватить дина-
мический диапазон 96 децибел, что приблизительно соответ-
ствует разнице между порогом слышимости и болевым поро-
гом. При записи компакт-дисков один дискретный звуковой
элемент кодируется 16 битами.
Итак, 1 секунда звуковой записи представлена на диске 44 100
элементами по 2 байта каждый. Поскольку мы уже привыкли
к стереозвучанию, удваиваем это число, получив в итоге 176
478
Глава двадцать пятая
400 байт на секунду или 10 584 000 байт на минуту записи (те-
перь вы, конечно, понимаете, почему цифровая запись не
пользовалась популярностью до 1980-х). Для записи на ком-
пакт-диске 74 минут звука требуется 783 216 000 байт.
У цифрового звука по сравнению с аналоговым много хо-
рошо известных преимуществ. В частности, при каждом ко-
пировании аналогового звука качество записи ухудшается.
Цифровой же звук состоит из чисел, которые можно много-
кратно копировать без потери информации. В прежних теле-
фонных сетях качество сигнала ухудшалось при увеличении
расстояния между абонентами. Теперь это не так. В телефон-
ных системах используется в основном цифровой звук, и по
качеству звонок на другой континент не отличается от звонка
в соседний дом.
На компакт-диске можно хранить не только звук, но и дан-
ные. Компакт-диск, используемый исключительно для данных,
называют иногда CD-ROM-диском. Емкость таких дисков обыч-
но не превышает 660 Мб. Дисководы для их чтения стали стан-
дартным компьютерным оборудованием, а сами диски — тра-
диционным средством для распространения приложений и игр.
Лет 10 назад возможность записи и воспроизведения звука
и видео с помощью компьютера назвали красивым словом
мультимедиа (multimedia), но теперь эти функции настолько
стандартны, что необходимость в специальном названии от-
пала. В комплект большинства компьютеров входит звуковая
плата со всеми необходимыми устройствами для воспроизве-
дения звука через колонки и записи с помощью микрофона.
На диске записанный звук сохраняется в WAV-файлах (от
«wave» — волна).
При воспроизведении звука, записанного с помощью ком-
пьютера, редко нужно качество компакт-диска, поэтому звуко-
записывающие программы и на «Macintosh», и на Windows-ком-
пьютерах используют 8-разрядное кодирование звука и неболь-
шие частоты дискретизации — 22 050, 11 025 и 8000 Гц. При
минимальных запросах (без стерео) объем 1 секунды записи
можно сократить до 8 000 байт, т. е. 480 000 байт на минуту.
Любители фантастических фильмов, бесспорно, знают, что
компьютеры будущего общаются с людьми исключительно на
человеческом языке. Что ж, если компьютер оборудован уст-
ройствами для записи и воспроизведения цифрового звука,
|