…и сейчас живее всех живых…

Цены на ПК-комплектующие перекатываются через мол кризиса
и падают стремительным домкратом. Память и винчестеры уже по эту сторону мола
(и цены на них уже смешнее знаменитого домкрата), процессоры неумолимо гонит очередной
волной

DEC VT 320 — классический
АЦТ, выпускавшийся огромными тиражами и до сих пор эксплуатируемый

(P-4 1,5 GHz за менее чем $140) сюда же. На фоне всего этого
великолепия автор со своей странной тематикой чувствует себя, мягко говоря, неловко.
Настолько неловко, насколько может чувствовать себя человек (на которого ненадолго
обратили внимание) с, извините, незастегнутым гульфиком.

Впрочем, в подобном положении есть и свои достоинства — после такого "выбора
темы" уже позволительно и вилку держать в правой руке, и локти ставить на
стол, и весьма крамольные мысли вслух высказывать. Последним, пользуясь ситуацией,
автор и собирается заняться…

Сам он…

Это странное название, уважаемый читатель, адресовано неизвестному создателю нелепого
(и потому, наверное, прижившегося) термина "dumb terminal", что по-русски
звучит не иначе как "тупой терминал". С легкого пера неведомого околокомпьютерного
журналиста ("технари" никогда не называли терминалы "dumb",
а только "видеотерминалами", "алфавитно-цифровыми терминалами"
или запросто — CRT) весьма непростые и интересные устройства стали как-то неинтересны.
И это естественно — если они "тупы" по расхожему определению, то что
может быть в них интересного? Последний вопрос обычно остается без ответа, но
всегда порождает и очевидный многозначительный вывод: раз терминалы неинтересны,
значит, и неизвестны. Кто же будет изучать неинтересное?

Вот такой получился забавный пример "боевой эффективности PR", не только
(и не столько) курьезный, сколько полезный. Точнее, автор надеется, что станет
полезным. Ведь в конце концов, именно для этого и писалась очередная статья.

Скелет в шкафу?

"Ну вот, — скажет искушенный читатель, — опять автор откопал какую-то мертвечину
и будет меня ею потчевать". Предвкушая и предупреждая подобные обвинения,
обращусь к скупому языку цифр: рынок алфавитно-цифровых терминалов (АЦТ) оценивается
в количестве поставляемых производителями единиц. Последний показатель для конца
90-х годов составлял более 2 млн. терминалов в год и не включает специализированные
АЦТ (POS- и носимые терминалы индустриального исполнения). В денежном выражении
оценить этот поток трудно — ведь цена современных АЦТ находится в весьма широком
диапазоне — от $130 до… $650! Не верите? Загляните на сайт лидера (45% рынка
АЦТ) — компании Wyse. Или же на сайт старожила технологии АЦТ — знаменитой TeleVideo,
уже 25 лет (!) снабжающей потребителей своими терминалами. К слову, если присмотреться
к этим производителям повнимательнее, можно заметить один немаловажный факт: работающие
в, казалось бы, "вымирающей" нише рынка, они не только успешно переживают
все катаклизмы быстроменяющегося компьютерного мира, но и уже пережили массу куда
более значительных и мощных компаний. Например, знаменитую DEC, терминалы которой
стали стандартом де-факто.

Кроме этих двух грандов, на рынке присутствует масса локальных компаний — британских,
немецких, голландских, китайских, производящих самые разнообразные вариации АЦТ.
Ну а число производителей программных эмуляторов терминалов для ПК просто трудно
сосчитать.

К сожалению, отыскать детальную информацию об общем количестве используемых АЦТ
практически невозможно. Только TeleVideo скромно упоминает, что к 25-летнему юбилею
компании (который пришелся на этот год) инсталляционная база активно используемых
АЦТ составляет 1,5 млн. штук. Согласитесь, что такое количество рабочих мест —
это цифра.

Форрест Гамп

Жаль, что удачное название пришло не сразу и не просто… Зато теперь все вернулось
на круги своя и, естественно, стало очень простым. "Dumb terminal" (да
простят автора многочисленные представители всех семейств АЦТ и их немногочисленные
поклонники) — это, если так можно выразиться, техническое воплощение Форреста
Гампа. Он кажется недоразвитым, с ним на первый взгляд неудобно общаться, но…
Он работает и делает то, что должен делать. "…Глупый человек — это тот,
кто совершает глупые поступки…", — так (или почти так) говорил герой Хэнкса.
Именно на основании этого принципа попробуем разобраться, а так ли "туп"
на самом деле АЦТ, и обоснован ли эпатаж автора в нападках на "создателя"
термина dumb terminal?

С мифом о "безмозглости" АЦТ придется бороться на всех фронтах — слишком
глубоко "въелось" предубеждение. "Вскрытие" и исследование
начнем с самого простого — с процедуры определения наличия "мозга",
простите, собственной вычислительной мощности. Как это ни покажется странным,
но АЦТ — устройство с собственным процессором. К слову, весьма неслабым и достаточно
универсальным. Так уж сложилось исторически, что большинство АЦТ строится на основе
легендарного микроконтроллера 8031. Легендарного хотя бы потому, что восьмибитовая
микросхема Бог весть какой давности производится в астрономических количествах
десятками производителей во всем мире, она "пережила" все прочие процессоры
Intel и, вероятнее всего, переживет и P-4, и Itanium… Показатели 8031, конечно,
не впечатлят потребителя, но разработчиков всегда устраивают — пиковой производительности
1 млн. операций в секунду и максимальной адресуемой памяти 128 KB более чем достаточно
для решения массы полезных и нужных задач. Сразу нелишним покажется и акцентирование
внимания на явном "отзвуке" АЦТ в конструкции современного ПК — практически
любая копеечная клавиатура сегодняшних P-III и Athlon’ов включает в себя 8031-совместимый
микроконтроллер (к этому факту мы еще вернемся впоследствии).

Wyse 55, как и многие модели
DEC, до сих пор "в строю"

Естественно, раз устройство основано на универсальном микропроцессоре
(или контроллере), значит, ни о каком чисто "железном" решении речи
идти не может. Непременно должна быть управляющая программа, а если устройство
сколько-нибудь сложное, содержащее несколько независимых подсистем, жизненно необходима
и реализация общесистемных функций, аналогичных сервисам ОС "большого"
компьютера. В АЦТ различных независимых подсистем более чем достаточно (пока примите
это на веру), следовательно, все обвинения АЦТ в "безмозглости" уже
оказываются несостоятельными. Ведь даже на таком невысоком уровне детализации
терминал является вычислительной машиной, оснащенной ПО, ориентированным на решение
ряда специфических задач. Не больше и не меньше.

Теперь проанализируем все периферийные "органы" АЦТ, которые управляются
"мозгом". И здесь сторонников версии "тупости" терминала ждет
большое разочарование. Управляющий компьютер АЦТ должен справляться с целым рядом
асинхронных процессов, обслуживая одновременно и клавиатуру, и контроллер дуплексной
связи с основным компьютером (на котором, собственно, и работает сидящий за терминалом
пользователь), и буферную память, и контроллер электронно-лучевой трубки.

Причем решение всех этих задач существенно усложнено высокоуровневым характером
взаимодействия терминала и хост-компьютера. Так, в отличие от упомянутой уже выше
ПК-клавиатуры, оснащенной адекватной вычислительной мощностью, терминалу непозволительно
выдавать хосту какие-то абстрактные низкоуровневые скан-коды клавиш. Если на терминале
нажата клавиша Ctrl, то никакого кода хосту терминал не выдаст — это указание
самому терминалу на модификацию последующих кодов. Как видите, логика даже поддержки
клавиатуры у АЦТ намного сложнее, чем у обычной ПК-клавиатуры (а процессор, как
ни странно, тот же). Но обслуживание клавиатуры — детские забавы по сравнению
с реализацией протокола обмена с хостом. Невысокая скорость обмена (от единиц
до десятков килобод в зависимости от модели) не должна обманывать — любой АЦТ
располагает фактически серьезной сетевой подсистемой, обеспечивающей за счет простых
механизмов даже гарантированную доставку каждого символа! Последний факт очень
важен, ведь обычно в терминалах для общения с хостом используется самый дешевый
интерфейс связи — RS232, который по своей природе не способен что-либо гарантировать.
Но и это еще не все — терминал должен самостоятельно "заботиться" о
хранении некоторого количества символов в собственной памяти и управлять контроллером
отображения буферируемой информации на экране. И все это должно выполняться одновременно
и совершенно асинхронно. Из-за этого программное обеспечение АЦТ на модном сегодня
языке можно назвать классическим примером realtime-системы (реального времени).

Наступила пора почти самого главного — выявления признаков "интеллекта".
И уж если существует знаменитый тест Тьюринга, неформально присваивающий титул
интеллектуального некоторому устройству, способному поддержать беседу с человеком,
в ходе которой последний не сможет определить искусственный характер невидимого
собеседника, то под "интеллектуальностью" (в кавычках) мы и будем понимать
хотя бы зачаточные языковые способности. В этой области древняя (если не сказать
— дряхлая) технология АЦТ готовит особый сюрприз. Вся низкоуровневая программно-аппаратная
"механика" терминала подчинена решению главной задачи — трансляции
специального, пусть простого, но достаточно высокоуровневого языка во множество
команд управления контроллерами ЭЛТ, дуплексной связи, клавиатуры и буферной памяти.
Для описания команд этого языка используются самые примитивные "слова"
— однобайтовые или многобайтовые коды, иначе называемые "управляющими символами"
и "эскейп-последовательностями" (в дальнейшем — ESC-последовательностями,
а также "управляющими последовательностями" и "строками управления
устройством") соответственно.

На что они похожи? Скажем так: это не шедевр user-friendly-дизайна, но и откровенным
уродством их назвать нельзя. Впрочем, судите сами по короткому примеру. Получение
терминалом эскейп-последовательности, представляемой тремя числами в десятичной
системе счисления (на это вопиющее нарушение святынь автор пошел только для повышения
доступности материала) 27 35 54, транслируется в следующую команду контроллера
ЭЛТ: "Отображать текущую строку текста символами двойной ширины ("жирными",
или bold-символами)".

Естественно, что числовая нотация (да еще и в десятичной системе) крайне неудобна,
и ESC-последовательности представляются обозначениями символов таблицы ASCII.
Приведенная строка выглядит в ASCII-нотации так: "ESC # 6". ESC-последовательности
(и остальные перечисленные представители командного языка), несмотря на кажущуюся
ограниченность, на деле позволяют управлять всеми функциями АЦТ — перемещением
курсора, атрибутами отображаемых символов и строк символов, процедурами удаления
строк с экрана дисплея, изменением таблицы, ставящей в соответствие коду символа
его графическое отображение, режимами работы терминала и т. д.

Так как ESC-последовательности кодируются 7-битовыми кодами ASCII, оставляя старшие
128 символов в кодовой таблице, адресуемой 8-битовым байтом, незадействованными,
то и интернациональные способности АЦТ приобрели очень быстро (по крайней мере,
для языков с числом символов в алфавите, "умещающимся" в это пространство).

Этот короткий экскурс был бы неполным без упоминания самого главного: язык управления
АЦТ за столь продолжительный срок развития и совершенствования технологии претерпевал
массу изменений и дошел до идеальной в истории развития любого компьютер-ориентированного
синтетического языка точки — ISO-стандартизации.

И, наконец, — финал нашей попытки анализа АЦТ, направленного на подтверждение
или опровержение факта "тупости" dumb-терминала. А именно — определение
функционального назначения и места в "социальной иерархии" компьютерной
системы. Вся функциональность АЦТ подчинена решению одной задачи — общения человека
и компьютера. С точки зрения разработчика прикладной программы, терминал является
очень гибко настраиваемой… подпрограммой, реализованной "раз и навсегда
в железе". Гибкость настроек обеспечивается языковым характером взаимодействия
(трансформация одного языка в другой — задача в целом весьма тривиальная, тем
более, когда языки настолько просты). Естественно, все эти высказывания справедливы
при учете ограничений, формируемых моделью отображения информации.

Пора подвести итоги… "Если нечто выглядит, как утка, крякает, как утка,
плавает, как утка, так как мы это назовем?" — вот главный вопрос. Оказывается,
наш "Форрест Гамп" совсем не прост — это компьютер с развитым многозадачным
ПО реального времени, играющий роль соединенного с помощью специального протокола
с основным компьютером (хостом) транслятора языка описания отображения, ввода
и представления информации. Sic! Для сравнения: современные GUI — аналоги АЦТ
по решаемым задачам, идеологически устроены несоизмеримо проще.

Это новейшая история — конец
1999 г. Internet-комната международной конференции антропологов, США. На
столах — классические DEC VT 320

Эту страшную крамолу придется разъяснить: практически все
современные GUI-подсистемы (из этого правила есть два исключения: X Window из
мира Unix и DPS — Дисплейный ПостСкрипт из мира NeXT, которые назвать современными
никак нельзя) архитектурно реализуют совершенно примитивную логику работы: бесконечный
цикл ожидания инициируемых пользователем событий и вызов соответствующих обработчиков
этих событий. Единственная аналогия, которая здесь напрашивается, — куча звонков
на входной двери в большую коммунальную квартиру. Жмешь на кнопку с подписью "Файл
Опен" — выходит лично Ф. Опен, звонишь "Компиляции Файловне" —
она и откроет. Автор оставляет читателю возможность самостоятельно сделать вывод,
какая именно технология с идеологической точки зрения заслуживает титула "dumb".
Хочется только уточнить, что современные примитивные протоколы "отдаления"
фреймбуфера (ICA, RDP и аналогичные) хоть и обладают некоторыми признаками интеллектуальности
(языком из 10—20 команд) и позволяют отображать картинки, на деле являются примитивными
надстройками над традиционными GUI-подсистемами и не могут функционировать на
хост-стороне самостоятельно, без реализации всей системы низкоуровневой и высокоуровневой
поддержки GUI.

Что с ними делают?

Автор ни в коем случае не ставил перед собой задачу агитации "все на терминалы!".
Эта технология есть, она жива, работает, но на нее никто не обращает внимания.
К сожалению. Хотя бы потому, что незнание самого факта существования той или иной
технологии оборачивается для потребителя высокотехнологичных продуктов порой очень
дорогими ошибками. И все же там, где можно обойтись без технологических излишеств,
нужно без них обходиться. В конце концов, даже в пресловутом бизнесе успех определяется
не цветностью распечатки чека и диагональю экрана монитора секретаря, а качеством
товара, уважительным отношением к клиентам и безотказностью работы всех "винтиков"
компании. А в этом нелегком деле что с GUI, что с АЦТ — разницы нет. Это уже
совсем некомпьютерные проблемы…