Весь Нил Стивенсон в одном томе - Нил Стивенсон
Разделение обязанностей вышеописанного процесса ясно как божий день: компьютеры производят арифметические действия над битами. Люди истолковывают биты как значимые символы. Однако сейчас, с выходом в свет новейших операционных систем, которые, ради доступности широким массам пользователей, употребляют, а чаще — злоупотребляют силой метафоры, всё стало несколько более запутанным и сложным. Вдобавок — возможно, потому что из‑за метафор операционные системы воспринимаются, как некая разновидность магии и искусства, — люди начинают эмоционально привязываться (как когда‑то отец моего друга привязался к спортивной машине) и становиться зависимыми от этих частей программного обеспечения.
Людей, взаимодействующих с компьютерами посредством графического пользовательского интерфейса MacOS или Windows (то есть почти каждого первого), наверное, смутят и обескуражат описания телетайпа, который я использовал в 1973 году для связи с компьютером. Но каждой технологии — свой срок. Люди могут общаться друг с другом разными способами — с помощью музыки, искусства, танца, мимики, жестов. Какие‑то из данных способов общения проще представить в виде сроки символов, какие‑то сложнее. Не составит труда переложить на машинный язык письменную речь, так как письмо само по себе не что иное, как строка символов. Если символьные знаки принадлежат фонетическому алфавиту (а не идеографическому письму), то преобразовать их в биты не составит никакого труда, что и доказывают появившиеся в начале девятнадцатого столетия азбука Морзе и различные виды телеграфа.
Человеко — компьютерное взаимодействие возникло несколько сот лет тому назад, задолго до появления самого компьютера. Когда, приблизительно во время Второй мировой войны, появились первые ЭВМ, люди (что вполне естественно) общались с ними посредством привычных, уже известных им устройств, переводящих буквы в биты и наоборот, то есть с телетайпами и перфораторами.
Эти устройства олицетворяли собой два принципиально разных подхода к обработке данных. Работая с перфоратором, вам приходилось пробивать целую стопку карт и прогонять их всем скопом через устройство ввода. Это называлось пакетной обработкой. То же самое можно было сделать и на телетайпе с помощью устройства ввода с перфоленты, и именно такой способ работы и поощрялся нашими школьными учителями. Однако, как бы они не старались держать нас в неведении, телетайп позволял делать и нечто большее, то, что перфоратору было не под силу. Подключив модем и установив канал связи, в телетайпе можно было набрать строку и нажать клавишу «Enter». Телетайп отправлял строку компьютеру, тот в ответ присылал (или не присылал) несколько своих строк, которые телетайп не спеша выстукивал на ленте, предоставляя расшифровку вашей переписки с машинами. Поначалу данный способ общения не имел даже названия, лишь годы и годы спустя, когда ему на смену пришли более современные средства обмена информацией, задним числом его нарекли интерфейсом командной строки (Command Line Interface).
В колледже, куда я поступил, в огромных, давящих объемами комнатах размещались чуть более усовершенствованные типы всё тех же приёмо — передающих аппаратов, перед которыми сидели десятки студентов и писали программы. И хотя эти устройства работали по типу матричного принтера, с программистской точки зрения, они ничем не отличались от старых добрых телетайпов. Кроме одного — в режиме разделения времени эти компьютеры работали на порядок лучше. То есть «Мйэнфреймы» оставались «Мэйнфреймами», но одновременно они уже могли общаться с довольно внушительным количеством терминалов. Ненужные более перфокарты заполнили коридоры и подсобки, а пакетной обработкой данных теперь пользовалась крошечная группа полностью свихнувшихся энтузиастов, и в конце концов от неё остались лишь овеянные зловещей тенью воспоминания. Мы же сбросили оковы пакетной обработки и вверили себя интерфейсу командной строки, даже не подозревая, что тем самым сделали первый шаг по направлению к парадигме операционных систем.
Груды смятой гармошкой бумаги устилали пол под хвалеными телетайпами, неисчислимые рулоны бумаги наматывались на валики. Почти вся бумага — чистая, нетронутая пером безжалостно выбрасывалась или пополняла кипы макулатуры. Подобное невиданное варварство подняло волну возмущении в среде экологов, и вскоре телетайпы заменили на видеотерминалы или, как их ещё называли, «стеклянные телетайпы» — почти бесшумные, не тратящие почём зря бумагу. Хотя, опять же, с программистской точки зрения, они тоже почти ничем не отличались от телетайпов эпохи Второй мировой войны. Короче говоря, мы общались с компьютерами на древнеанглийском языке вплоть до 1984 года, когда Macintosh явил миру графический пользовательский интерфейс (Graphical User Interface). Но даже во времена расцвета графического пользовательского интерфейса (или ГПИ, как я собираюсь его теперь называть) командная строка продолжала жить глубоко — глубоко в недрах большинства современных компьютерных систем, словно неискореняемый, данный от природы инстинкт. И живёт до сих пор.
ГПИ
Первое, что необходимо понять разработчику нового программного обеспечения — каким образом перевести некое количество информации (пиксели, если он работает над графическим приложением, цифры, если создает электронную таблицу) в линейную последовательность байтов. Обычно такие последовательности называются файлами, но если вы хотите быть «в теме», зовите их «потоками» (streams)[615]. Как человек, по сути своей, всё тот же кроманьонец, так данные последовательности, по сути своей, всё те же телеграммы — та же фигня, только вид сбоку. То, что вы видите на экране монитора — Лара Крофт из «Расхитительницы гробниц», сообщения голосовой почты, факсы, документы, напечатанные с использованием тридцати семи различных шрифтов — просто — напросто телеграммы, только более длинные и требующие более сложных арифметических операций.
Чтобы лучше понять, о чем идет речь, запустите веб — браузер, зайдите на какой‑нибудь сайт и выберите в Меню пункт «Вид» / «Исходный код страницы» (View/Document Source). Вы увидите несколько страниц программного кода:
<HTML>
<HEAD>
<TITLE>Welcome to the Avon Books Homepage</TITLE>
</HEAD>
<MAP NAME="left0199">
<AREA SHAPE="rect"