479
Графическая революция
достаточно разработать соответствующую программу, чтобы
заставить его говорить.
Есть два способа научить компьютер произносить узнава-
емые слова и предложения. Можно записать фрагменты пред-
ложений, фразы, слова и числа, сказанные человеком, сохра-
нить их в файлах, а затем комбинировать различными спосо-
бами. Этот подход часто применяется в информационных си-
стемах, доступ к которым осуществляется по телефону. Он
удобен, когда воспроизводить предполагается ограниченный
набор словосочетаний и чисел.
В более общем случае для синтеза человеческой речи нуж-
но как-то преобразовывать в цифровой звук текст в кодиров-
ке ASCII. Во многих языках написание слов не всегда согласу-
ется с их произношением, поэтому для преобразования по-
требуется программа, определяющая произношение по сло-
варю или с помощью сложного алгоритма. Можно, например,
строить слова из отдельных звуков (фонем). Кроме того, та-
кая программа должна будет учитывать и другие тонкости.
Например, если предложение завершается вопросительным
знаком, интонация в его конце должна изменяться.
Распознавание голоса, т. е. преобразование цифрового зву-
ка в коды ASCII, — задача куда более сложная. Из-за разнооб-
разия диалектов иногда даже люди, говорящие на одном язы-
ке, не понимают друг друга. Программы для персональных
компьютеров, воспринимающие человеческую речь, существу-
ют, но им, как правило, нужна некоторая «тренировка», преж-
де чем они начинают понимать речь определенного человека.
Но даже задача превращения звука в коды ASCII меркнет пе-
ред окончательной целью — научить компьютер понимать
человеческую речь. Это уже проблема из области искусствен-
ного интеллекта.
Звуковые платы в современных компьютерах снабжаются
миниатюрными электронными синтезаторами, которые спо-
собны имитировать звучание 175 музыкальных инструментов,
включая 47 ударных. Они называются синтезаторами MIDI
(Musical Instrument Digital Interface, цифровой интерфейс для
музыкальных инструментов). Спецификация MIDI разрабо-
тана в начале 1980-х консорциумом производителей электрон-
ных синтезаторов для их подключения друг к другу и к ком-
пьютерам.
480
Глава двадцать пятая
В разных синтезаторах MIDI для генерации звука музыкаль-
ных инструментов используются разные методы. Одни позво-
ляют получить реалистичное звучание, другие — не очень.
Общее качество работы данного синтезатора к спецификации
MIDI отношения не имеет. Она требует от синтезатора лишь
верной реакции на короткие сообщения длиной от 1 до 3 байт.
Обычно в этих сообщениях указывается, какую ноту и на ка-
ком инструменте нужно играть.
MIDI-файл представляет собой последовательность сооб-
щений MIDI с информацией о времени исполнения. Как пра-
вило, в MIDI-файле полностью содержится некое музыкаль-
ное произведение, которое можно воспроизвести на MIDI-син-
тезаторе компьютера. MIDI-файл обычно гораздо короче WAV-
файла с той же записью. В отношении размера WAV-файл мож-
но сравнить с точечным файлом, а MIDI-файл — с векторным.
Недостаток MIDI-записи в том, что она может прекрасно зву-
чать на одном синтезаторе и отвратительно — на другом.
От цифрового звука логично перейти к цифровому видео.
Кажущаяся подвижность кино и телевидения обеспечивается
быстрой сменой неподвижных изображений, называемых кад-
рами. В кинопроекторе изображение меняется с частотой 24 кад-
ра в секунду, в телевидении США — 30 кадров в секунду, в теле-
видении большинства других стран — 25 кадров в секунду.
Компьютерный видеофайл — это просто последователь-
ность точечных изображений, сопровождаемых звуком. Если
не прибегать к уплотнению, размеры видеофайлов будут про-
сто огромными. Считайте сами: кадр размером 640
´ 480 пик-
селов с 24-битовым кодированием цвета занимает 921 600 байт.
При частоте смены изображений 30 кадров в секунду понадо-
бится 27 648 000 байт для записи всего только одной секунды
фильма! Минута записи займет 1 658 880 000 байт, а двухчасо-
вой фильм — 199 065 600 000, т. е. почти 200 Гб. Вот почему
видеоролики, предназначенные для воспроизведения на персо-
нальном компьютере, как правило, отличаются краткостью, не-
большим форматом кадра и скверным разрешением.
Для сжатия видеозаписей применяется формат MPEG
(Motion Pictures Expert Group, Группа специалистов по видео-
записям). Объем записи в нем сокращается за счет того факта,
что значительная часть текущего кадра является копией пре-
дыдущего кадра.
481
Графическая революция
Для формата MPEG разработано несколько стандартов.
Например, в высококачественном телевидении HDTV и в дис-
ках DVD (Digital Video Disks) применяется стандарт MPEG-2.
По размеру диски DVD сходны с компакт-дисками, но в них
информация записывается на обеих сторонах по два слоя на
каждой стороне. Объем DVD-диска — около 16 Гб — превы-
шает объем компакт-диска в 25 раз. Поскольку формат MPEG-
2 обеспечивает сжатие приблизительно в 50 раз, двухчасовой
фильм занимает всего 4 Гб, т. е. один слой на одной стороне.
Вероятно, в ближайшем будущем для распространения ПО
будут применяться именно DVD-ROM-диски.
Можно ли считать эти диски реализацией идей Ванневара
Буша? Он, правда, писал о хранении информации на микро-
пленках, но диски CD-ROM и DVD-ROM удобнее: на электрон-
ном носителе найти нужные сведения гораздо проще, чем, ска-
жем, в обычной книге. С другой стороны, Буш предполагал, что
человек с помощью системы «Memex» сможет работать с не-
сколькими микропленками одновременно. На большинстве же
компьютеров дисковод для работы с CD-ROM- или DVD-ROM-
дисками только один. Чтобы эффективнее хранить и обмени-
ваться информацией, приходится соединять компьютеры меж-
ду собой. Поскольку почти все места обитания или работы че-
ловека связаны телефонными линиями, можно воспользовать-
ся ими и для установления контакта между компьютерами.
Назначение телефонной системы — в передаче по прово-
дам звуков, но не битов. Для передачи по телефонному прово-
ду двоичную информацию нужно преобразовать в звук. Моно-
тонная звуковая волна с постоянной частотой и постоянной
амплитудой никакой информации в себе не несет. Но измените
эту волну, точнее, промодулируйте ее так, чтобы один из ее па-
раметров по вашему желанию осциллировал между двумя фик-
сированными состояниями, и вы сможете представлять с их
помощью 0 и 1. Преобразует биты в звук модем (модулятор/де-
модулятор; modem). Модем — последовательное устройство, так
как в нем биты одного байта передаются друг за другом, а не все
сразу (параллельный интерфейс, позволяющий благодаря на-
личию 8 проводов передавать байт целиком, часто применяет-
ся для подсоединения к компьютеру принтера).
В первых модемах для передачи информации использовал-
ся сдвиг по частоте: 0 соответствовал одной частоте сигнала, 1
482
Глава двадцать пятая
— другой. Поскольку к каждому байту добавляются еще и
биты начала и окончания передачи (старт-бит и стоп-бит), ре-
ально для передачи байта требуется отправить по телефонной
линии 10 бит. Первые модемы работали на скоростях 300 бит
(30 байт) в секунду; в современных модемах с помощью вся-
ческих ухищрений удается достигать скоростей в 100 раз выше.
Первые энтузиасты компьютерных коммуникаций органи-
зовывали с помощью персонального компьютера и модема
электронные доски объявлений (Bulletin Board System, BBS), к
которым другие компьютеры подключались по телефонным
линиям. Эту концепцию использовали и крупные информа-
ционные службы, например, CompuServe. Как правило, обмен
информацией в таких системах производился исключительно
в форме ASCII-текста.
Ключевое отличие Интернета от первых массовых инфор-
мационных систем — отсутствие выделенного центра. Дей-
ствие Интернета основано на наборе протоколов для осуще-
ствления связи между компьютерами. Главный из них — про-
токол TCP/IP (Transmission Control Protocol/Internet Protocol).
В сетях TCP/IP передаваемые блоки данных разбиваются на
небольшие пакеты (packets), которые посылаются по комму-
никационной (в случае домашних компьютеров, как правило,
телефонной) линии независимо друг от друга, а на ее прием-
ном конце вновь собираются в единое целое.
Важную часть Интернета составляет его графическая под-
система — World Wide Web (WWW), использующая прото-
кол HTTP (Hypertext Transfer Protocol, протокол передачи ги-
пертекста). Информация, представляемая на Web-страницах,
оформляется с помощью языка разметки гипертекста (Hy-
pertext Markup Language, HTML). Гипертекстом называется
текст, связанный с дополнительной информацией на ту же
тему посредством гиперссылок (нечто подобное и предлагал
Ванневар Буш). Гиперссылки в HTML-файле указывают на
другие Web-страницы, к которым можно из него перейти.
Внешне формат HTML подобен RTF, о котором я уже го-
ворил: он содержит только ASCII-текст и команды, определя-
ющие его оформление. В HTML-файл можно также вставлять
изображения в форматах GIF, JPEG и PNG (Portable Network
Graphics). Несмотря на название, HTML в действительности
483
Графическая революция
не является языком, подобным тем, о которых мы говорили в
главах 19 и 24: это всего лишь способ форматирования текста.
Иногда необходимо, чтобы при просмотре Web-страницы
запускалась определенная программа. Она может работать как
на компьютере-сервере (на котором хранится Web-страница),
так и на компьютере-клиенте (на котором вы ее просматрива-
ете) На сервере программная обработка страницы (например,
электронного бланка, который вы заполнили) выполняется
обычно с помощью сценариев CGI (Common Gateway Interface,
интерфейс общего шлюза). Если программу предполагается
запускать на компьютере-клиенте, она пишется на простом
языке программирования JavaScript и включается в состав
HTML-файла. Web-браузер интерпретирует операторы Java-
Script и выполняет необходимые действия.
Почему программа передается на компьютер-клиент в виде
текста, а не исполняемого файла? Во-первых, это связано с тем,
что программист заранее не знает, на каком компьютере она
будет выполняться. Если это «Macintosh», в программе долж-
ны содержаться машинные коды процессора PowerPC и вызо-
вы функций API для Mac OS. На PC-совместимом компьюте-
ре в ней должны использоваться машинные коды процессора
Pentium и обращения к функциям API для Windows. А ведь
есть и другие компьютеры, и другие графические ОС. Кроме
того, вряд ли стоит допускать на свой компьютер все испол-
няемые файлы без разбора. Некоторые из них могут попасть к
вам из ненадежного источника и нанести компьютеру какой-
либо вред.
Чтобы как-то справиться с этой проблемой, компания Sun
Microsystems разработала язык программирования Java. Не
путайте его с JavaScript — Java представляет собой настоящий
объектно-ориентированный язык, напоминающий С++. Если
помните, в главе 24 я объяснял разницу между компилируе-
мыми и интерпретируемыми языками. Java занимает проме-
жуточное положение. Программу на Java нужно компилиро-
вать, но в результате получается не машинный код, а байто-
вые коды Java (Java Byte codes). По структуре они напоминают
машинные коды, но не реального, а воображаемого компью-
тера — виртуальной машины Java (Java Virtual Machine, JVM).
Действие этого компьютера программным способом модели-
рует тот компьютер, на котором программу нужно запустить,
484
Глава двадцать пятая
используя для этого средства установленной на нем графичес-
кой ОС. Таким образом, Java-программу можно запускать на
любом компьютере.
Большая часть этой книги посвящена передаче информа-
ции по металлическим проводам с помощью электричества,
но гораздо более надежной и быстрой оказывается передача
данных с помощью света по оптоволоконному кабелю, изго-
товленному из стекла или полимерных материалов. Скорость
передачи данных по такому кабелю может достигать милли-
арда бит в секунду.
По-видимому, в будущем большую часть информации в
наши дома и служебные кабинеты будут доставлять не элект-
роны, а фотоны. Они словно возвращают нас в далекие дни
детства, когда вспышки света помогали нам обмениваться по-
луночной мудростью с лучшим другом, жившим на противо-
положной стороне улицы.
Благодарности
Книга Код была задумана в 1987 г. Она стучалась мне в голову
в течение десятилетия и лишь с января 1996 г. по июль 1999 г.
наконец оформилась в виде файла Microsoft Word. Я чрезвы-
чайно признателен:
•
Шерил Кантер (Sheryl Canter), Иену Истлунду (Jan Eastlund),
Питеру Голдеману (Peter Goldeman), Линн Магалска (Lynn
Magalska) и Дейдре Синнотт (Deirdre Sinnott) — читателям
первых набросков за их комментарии, замечания и пред-
ложения;
•
моему агенту Клодетт Мур (Claudette Moore) из Moore
Literary Agency и всем сотрудникам Microsoft Press, кото-
рые помогли воплотить замысел Кода в жизнь;
•
моей маме;
•
Киске, делившей со мной кров с 1982 по май 1999 г., — вдох-
новительнице всех кошачьих примеров, которые встреча-
ются в книге;
•
Web-узлам, подобным Bibliofind (www.bibliofind.com) и
Advanced Book Exchange ( www.abebooks.com), предоставля-
ющим удобный доступ к старым книгам, а также сотруд-
никам отдела научных, технических и деловых книг Нью-
Йоркской публичной библиотеки (www.nypl.org);
•
моим друзьям, без которых книга не была бы написана;
•
и еще раз Дейдре — идеальному читателю и не только.
Библиография
Аннотированная библиография к этой книге размещена на
Web-узле www.charlespetzold.com/code.
A
American Telephone & Tele-
graph
302, 304, 420
см. так-
же Bell Telephone Laboratories
API
см. интерфейс прикладного
программирования
«Apple», компьютер
— «Apple II»
354, 462, 469
— «Apple Lisa»
467
— «Macintosh»
354–355, 467,
469, 470, 474
ASCII
363–370, 373–376, 390–392,
395, 407, 479, 482
— в языках программирования
высокого уровня
449, 461–
462
— вывод на экран
405–406
B
BBC
6
BCD
336, 371, 426–427
— уплотненный
427
Bell Systems Technical Journal, жур-
нал
300
Bell Telephone Laboratories
301–
302, 420, 456, 471, 477
см.
также American Telephone &
Telegraph
Busicom
317
C
CD-ROM-диск
478, 481
см. также компакт-диск
CPU
см. центральное процессор-
ное устройство
CRT
см. катодно-лучевая трубка
D
Digital Equipment
445
Digital Research
410
DRAM
см. динамическая память
DVD-ROM-диск
481
E
EBCDIC
370–373
Eckert-Mauchly Computer
301
EDVAC, компьютер
299–300
ENIAC, компьютер
299–300
escape-код
22
F
Fairchild Semiconductor
307
G
GNU, проект
421
GUI
см. графический интерфейс
пользователя
I
IBM
215–216, 295, 301, 322, 354,
399, 419, 462–463
— и языки программирования
высокого уровня
455, 469
— периферийные устрой-
ства
379–381
— перфокарта
370–373, 394, 454
IEEE
431
Intel
317, 319–320, 352–353, 354,
437
J
Java, язык программирова-
ния
483–484
JavaScript, язык программирова-
ния
483
K
Keuffel & Esser
290
L
LIFO
338
Linux, операционная систе-
ма
421
M
«Mark I/II», компьютер
297
Memex
459–460, 481
Предметный указатель
487
Предметный указатель
Microsoft
456
MOS
см. МОП
Motorola
320, 352–353, 354–355,
438
MS-DOS, операционная систе-
ма
417–419, 461, 468, 469
Multics, операционная система
420
N
National Semiconductor
321
npn-транзистор
303–304
O
OCR
см. распознавание символов
P
Pentium, микропроцессор
354, 438
PL/I, язык программирования
455
PostScript
472
PowerPC, микропроцессор
354–
355, 438
R
RAM
см. оперативная память;
память
Remington Rand
301, 399, 445
RISC, архитектура
354–355
ROM
см. постоянное запомина-
ющее устройство
S
shift-код
21–22
Shockley Semiconductor Laborato-
ries
307
SRAM
см. статическая память
Sun Microsystems
483
T
Tabulating Machine
295
Texas Instruments
307, 308, 317,
321
TTL
см. ТТЛ
«TTL Data Book for Design
Engineers»
309–315
U
Unicode
376
UNIVAC, компьютер
301, 445
UNIX
302, 419–421, 456
V
VisiCalc
462
W
WYSIWYG
468
X
Xerox
466
Z
Zenith
308
А
автоматизация
249–250
адрес
238
адресация
— индексная
329
— непосредственная
331
— прямая
329
азбука Морзе
2–3, 5–6, 33,
78
см. также Морзе Сэмюэль
— использование в телегра-
фе
35–37, 47–49
— разработка
10–14
— сопоставление с
— — наборами символов
358,
362
— — штрих-кодами
91, 95–97
Айверсон Кеннет
457
аккумулятор
251, 256–257, 282,
326, 350
АЛГОЛ, язык программирова-
ния
446–453, 457
алгоритм
56, 288, 446
Аллен Пол
456
АЛУ
см. арифметико-логическое
устройство
«Альтаир»
353, 378, 456
аль-Хорезми Мухаммед ибн
Муса
56
Ампер Андре Мари
30
Аналитическая Машина
117, 292
аналоговый компьютер
281
аппаратное обеспечение
282
488
Предметный указатель
арабская система счисления
56–57
аргумент
284
Аристотель
99
арифметико-логическое устрой-
ство
282, 334
архитектура
— RISC
354–355
— Неймана
300, 457
ассемблер
287, 457
ассоциативный закон
102, 103
Атанасофф Джон
299
Б
баг
297
база
303
базовая система ввода-вывода
414
Байрон Августа Ада
292–293,
456
байт
215–216
— младший
262, 352
— старший
263, 352
Барбье Шарль
16
Бардин Джон
302–303
БЕЙСИК, язык программирова-
ния
455–456
бел
477
Белл Александр Грейам
304, 477
Беркс Артур
299
бит
76, 78, 120, 300
— знака
182, 427
— младший
165
— и переключатель
122
— переноса
154, 263–264
— старший
165
— суммы
154
блок
450
Бодо Эмиль
359
бодо, код
359–362, 370
Брайль Луи
15–17, 19
Брайля азбука
4, 15–22, 33, 78,
295, 358–359
— сравнение с азбукой Морзе
97
Браттейн Уолтер
302–303
Бриклин Дэн
462
булева алгебра
101–109, 150–151,
300
Буль Джордж
100, 116–117, 150
буфер
148–149
Буш Ванневар
459, 481, 482
Бэббидж Чарльз
117, 291–293
В
вакуумная лампа
167, 297–298,
302, 305
Ватсон Томас
295
ввода устройство
122–123, 281,
322
ввод-вывод с распределением па-
мяти
348
векторное изображение
472
ветвление
274, 344–347
вибратор
188, 207, 212, 253
видеоадаптер
387
— графический
393
видеоплата
см. видеоадаптер
визуальное программирова-
ние
471
Винер Норберт
301
Вирт Николас
456
виртуальная память
421
Возняк Стефан
354
Вольта Алессандро
30
время установки
311
встроенная функция
447
входной сигнал
127
выборка команды
270
вывода устройство
123, 281, 322
выходной сигнал
127
— уровень
311
вычислимость
298, 318
Достарыңызбен бөлісу: |