Тысячи китайских иероглифов в условиях ограниченного количества оперативной памяти заставили инженеров Sinotype III существенно раздвинуть границы возможного для первых персональных компьютеров.
Сегодня Китай — одна из самых богатых цифровых экономик в мире, с непревзойденной цепочкой поставок оборудования и целым рядом выдающихся прибыльных компаний, таких как Alibaba, Tencent и ByteDance. Однако все эти достижения и инновации опираются на решение одной из сложнейших вычислительных проблем сорокалетней давности: создание первого китайского текстового процессора.
Еще в начале 1980-х годов Китай существенно увеличил закупки вычислительной техники в США и Европы. В 1980 году импорт составил 600 микрокомпьютеров иностранного производства, а в 1985 — уже 130 000. Компании в США, Японии и Европе стремились поучаствовать в этом «покупательском буме».
Однако существовала серьезная проблема, как для потенциальных китайских пользователей компьютеров, так и для западных производителей: ни один персональный компьютер, принтер, операционная система, программа или иное устройство западного производства не были способны обрабатывать ввод или вывод китайских иероглифов. Во всяком случае, не в начале и середине 1980-х годов, и уж точно не «из коробки». Без серьезного технического вмешательства персональные компьютеры массового производства были фактически бесполезны для всех, кто хотел работать на китайском языке.
Хуже всего дело обстояло с памятью. Ее попросту не хватало для того, чтобы вместить китайский шрифт. Западные инженеры в своё время решили, что символы английского языка можно разместить на растровой сетке, при этом каждому требовалось всего 5 байт памяти. О шрифтовом разнообразии и эстетике не шло и речи. Хватало и того, что буквы латинского алфавита выглядели читаемо и разборчиво на компьютерном терминале или бумажной распечатке. Для хранения 95 печатных символов американского ASCII требовалось всего 475 байт памяти — крошечная доля от, например, 48 КБ памяти Apple II.
Для достижения минимальной разборчивости китайских символов площадь 5х7 пикселей оказалась слишком мала. При разработке растрового шрифта для китайского языка у инженеров не было выбора, кроме как геометрически увеличить размер латинской алфавитной сетки с 5х7 до 16х16 пикселей или даже больше. А это уже 32 байта памяти на каждый китайский символ. Общее количество памяти, необходимое для хранения только растровых изображений (в упрощенной или традиционной форме, но не в обеих сразу, без сопутствующих метаданных) равняется приблизительно 256 Кб для 8000 наиболее часто используемых китайских иероглифов. То есть примерно в четверо больше, чем имели типовые ПК начала 1980-х годов. К тому же не стоит забывать, что и операционная система, и прикладное ПО также размещались в оперативной памяти.
Собственно, теперь вы знакомы с контекстом задачи, которая встала перед китайскими инженерами, разрабатывавшими первый отечественный персональный компьютер. Как же удалось ее разрешить?
Компьютер Sinotype III, созданный на базе стандартного Apple II, но оснащенный специально разработанными текстовым процессором и операционной системой, послужил отправной точкой для массового «перевода» западных компьютеров на колоссальный китайский рынок.
Дерзкий вчерашний выпускник без перспектив найти работу
Наша история начинается с GARF — организации, которая, возможно, стала отправной точкой для всей китайской компьютерной промышленности. Экспериментальная машин, также известная как Sinotype, была изобретена в конце 1950-х годов инженером Массачусетского технологического института Сэмюэлем Хоуксом Колдуэллом при финансовой поддержке GARF. После его безвременной кончины в 1960 году проект был фактически заморожен. В течение 1960-х и 1970-х Sinotype сменил множество «патронов», таких как Itek, RCA, но затем снова вернулся в GARF.
Возвращение Sinotype на малую родину, в GARF, произошло во многом благодаря одному человеку: Луи Розенблюму. Он родился в 1921 году в Нью-Йорке и также был выпускником Массачусетского технологического института 1942 (бакалавр прикладной математики). Сразу по окончании университета Розенблюм, бывший ученик всемирно известного профессора Гарольда Эджертона, устроился на работу в компанию Polaroid. Там он совместно с Эдвином Лэндом работал над различными проектами, в том числе и над принципами моментальной фотографии. В 1954 году он перешел в Photon, где работал с нелатинскими системами письма. Будучи хорошо знакомым с трудами покойного Колдуэлла по Sinotype, Розенблюм фактически «унаследовал» этот проект и в 1970-м возродил его, устроившись консультантом в GARF.
GARF продолжал работать над проектом Sinotype вплоть до начала 1980-х годов. К тому времени в фонде сложился консультативный совет, в который вошли многие известные ученые, в том числе и специалисты с опытом работы в Китае.
Однако, каким бы звездным ни был этот состав совета, главный прорыв в проекте Sinotype, переход от Sinotype II к Sinotype III, случился благодаря студенту, который только-только устроился в GARF. Это был Брюс Розенблюм, сын Луи Розенблюма.
Будучи студентом Пенсильванского университета и начинающим фотожурналистом, Брюс лавировал между подготовкой курсовой работы и работой в качестве фоторедактора независимой студенческой газеты Daily Pennsylvanian. Газета была удивительно продвинутой с точки зрения оборудования, поэтому немудрено, что редколлегия была в курсе последних технических новинок.
Однако уже к осени первого курса Брюс заметил, что два наборщика текста Compugraphic уже дышат на ладан и требуют замены. Вместе с тремя своими коллегами-студентами Брюс искал подменное оборудование. Поиски закончились контрактами на общую сумму $125 000 c Mycro-Tek и Compugraphic.
Что касается проекта Sinotype — Брюс был знаком с ним благодаря отцу, но участия до сих пор не принимал — все изменилось в начале мая 1981 года. Брюс только что сдал выпускные экзамены и по привычке отправился в офис студгазеты, где его коллега Эрик Джейкобс работал за компьютером TRS-80 Model II из Radio Shack. Джейкобс вслух размышлял, как можно использовать этот микрокомпьютер для ведения бухгалтерии и документооборота газеты. Брюс понаблюдал за ним около 30 минут, после чего ушел дальше по своим делам.
Однако эти полчаса еще долго не давали ему покоя. «Я впервые увидел, как кто-то работает на микрокомпьютере», вспоминал Брюс. «И эти минуты стали для меня тем самым вдохновением, которое послужило отправной точкой для проекта Sinotype III — и, в конечном итоге, для всей моей дальнейшей карьеры в компьютерной сфере».
На той же неделе Брюс в телефонном разговоре с отцом обмолвился, что оборудование Data General обходится GARF чрезвычайно дорого и вполне вероятно запрограммировать что-то эквивалентное или даже лучше на более дешевом микрокомпьютере. Предложение Брюса заинтриговала Луи. Он спросил у сына, сможет ли он самостоятельно запрограммировать такую машину? «Конечно!» — ответил Брюс. На тот момент у него был неплохой опыт общения с компьютерами — Брюс даже выучил язык ассемблера PDP-8 и BASIC. Дерзость и целеустремленность вчерашнего выпускника — великая сила.
В июне 1981 года Брюс провел в Нью-Йорке официальную встречу с Биллом Гартом, Прескоттом Лоу и своим отцом Луи, чтобы представить свое предложение по Sinotype III. Брюс оделся с иголочки, прибыв в новеньком костюме-тройке. В коммерческом предложении Брюс указал общую сумму в 7500 долларов США на аппаратное обеспечение и еще 5000 заложил США на программирование. Согласно плану, новый текстовый процессор для китайского рынка, работающий на Apple II, должен был быть готов через 4 месяца.
Брюс получил работу и занимался разработкой Sinotype III с июня по ноябрь 1981 года, продолжая при этом работать экскурсоводом Службы национальных парков в Зале Независимости в Филадельфии. Во время дневных перерывов он писал ассемблерный код от руки, а ночью оцифровывал его на ПК. В День Труда 1981 года Брюс ушел с основной работы, провел еще два месяца за доработкой кода и, наконец, передал его в GARF.
Взлом памяти
Первой проблемой, с которой столкнулись GARF и Розенблюмы, была память компьютера. Разработчики ранних китайских персональных компьютеров исследовали все доступные варианты в попытке выжать как можно больше памяти из своих систем. В частности, мы рассмотрим две стратегии, которые иногда применялись по отдельности, но часто — совместно: адаптивная память и карты китайских символов.
Система Sinotype III состояла из пяти компонентов: 12-дюймового монитора Sanyo DM5012CM, принтера Epson MX-70, «хранилища» Corvus объемом 10 МБ для базы данных растровых изображений китайских иероглифов и соответствующих им кодов, дискового накопителя Apple для хранения текстовых файлов и самого Apple II.
Из коробки Apple II поставлялся с 32 Кб оперативной памяти, расширяемой до 48 Кб. «Эта память у нас «закончилась» еще до того, как Apple II поступил в продажу», отмечает Брюс Розенблюм. Однако 48 Кб памяти никак не хватало, поэтому Брюс решил прибегнуть к модификации: вставил дополнительную плату с памятью 16 Кб в слот 0 и довел общее количество доступной памяти до 64 Кб.
Однако даже ее не хватало: требовалось больше оперативной памяти для хранения полной системы кодирования и «битовых карт» 16х16 для 100 наиболее часто встречающихся иероглифов. Путем хаков и некоторых дополнительных манипуляций Брюс смог добавить еще 16 КБ памяти во второй слот расширения компьютера. В общей сложности это дало 80 КБ.
Однако эта модификация вывела машину за рамки ее базовых возможностей. Микропроцессор 6502 в Apple II был способен напрямую обращаться только к 64 КБ памяти. Чтобы позволить Apple II получить доступ ко всей имеющейся памяти, Брюс отказался от готовой операционной системы и запрограммировал свою собственную на языке ассемблера. Ключевой особенностью системы была возможность выбора между двумя банками по 16 КБ, которые «перекрывают» друг друга. Иными словами, путем быстрых переключений между двумя расширениями памяти, получалось обмануть компьютер, заставив его обращаться к обеим с достаточной скоростью. Таким образом Брюсу удалось «вместить» в компьютер еще порядка 400 иероглифов.
Брюс передал окончательный код в GARF за неделю до Дня Благодарения, а затем отправился в кругосветное путешествие по Европе и Азии. С этого момента разработку Sinotype III вел его отец, Луи Розенблюм, и GARF, хотя Брюс продолжал выступать в качестве консультанта и отвечал на письма из любой точки Европы, Китая, Индии или другого места, где он находился.
Ускоренный набор китайского текста в реальном времени
Несмотря на все ухищрения, в бортовую память компьютера влезало по разным прикидкам от 600 до 1000 китайских символов. С учетом размеров ОС и программ, все равно выходило, что часть иероглифов придется хранить на внешнем носителе.
В начале работы Брюс рассматривал PROM (программируемая память только для чтения), но эта идея оказалась тупиковой. В те годы самые большие PROM-чипы на рынке имели максимальный объем памяти 2 КБ, что означало давало прирост лишь в 28-51 «знаков». Таким образом, для хранения 7000 китайских иероглифов понадобилось бы от 138 до 250 PROM-чипов.
Затем Брюс рассмотрел возможность хранения символов на дискетах. Это тоже оказалось неприемлемым, не только из-за большого количества сменных носителей, но и из-за низкой скорости доступа и извлечения битовых карт символов. Вместо этого GARF приняла решение оснастить Sinotype III внешним жестким диском, который в то время считался невиданной роскошью для микрокомпьютеров. Тысячи редкоиспользуемых китайских иероглифов хранились «вне системы» на внешнем жестком диске от Corvus.
Однако это плохо сказывалось на скорости работы Sinotype III. Механические диски работали гораздо медленнее оперативной памяти. Так, поиск китайских иероглифов на жестком диске занимал в 10 раз больше времени по сравнению с поиском в оперативной памяти. 100 миллисекунд на символ (RAM) против целой секунды в случае с диском. Ни о каком вводе в реальном времени, к которому так привыкли пользователи на западе, в случае с китайскими иероглифами и речи быть не могло.
Чтобы смягчить эту проблему, Луи Розенблюм придумал «адаптивное временное хранилище». Sinotype III мог динамически регулировать набор символов, хранящихся в оперативной памяти, в зависимости от того, что пользователь недавно вводил. При загрузке встроенная оперативная память Sinotype III содержала только заранее определенный набор высокочастотных символов. Ввод любого «редкого» символа с жесткого диска по-прежнему занимал до секунды. Однако, по мере ввода, символы временно копировались с жесткого диска в кэш оперативной памяти, что сокращало время последующего поиска.
Китайский язык на чипе
Работа GARF в части адаптации Apple II к китайским символам оказалась поистине колоссальной. Тем не менее, для полноценного создания контента компьютер до сих пор не годился из-за низкой скорости ввода.
В конце 1970-х и начале 1980-х годов начались исследования в области аппаратной генерации китайских шрифтов. Подобно картам памяти и графическим картам, «карты китайских иероглифов» были разработаны для установки непосредственно в слоты расширения материнской платы. В эти карты были встроены тысячи китайских битовых карт и входных кодировок. По сути, они выполняли ту же роль, что и внешний жесткий диск, но работали не в пример надежнее и быстрее.
В начале 1980-х годов такие генераторы иероглифов были коммерциализированы и стали продаваться отдельно. Больше не приходилось покупать полноценный текстовый процессор, например, Olympia 1011, чтобы получить доступ к встроенному генератору символов. Вместо этого можно было приобрести «Карту китайских символов», а затем установить ее в свой персональный компьютер.
К середине и концу 1980-х годов реализация «китайского языка на чипе» стала настолько распространена, что практически все компьютеры, которые могли похвастаться возможностью ввода на китайском или японском, оснащались платой генератора иероглифов нужного типа.
Sinotype Колдуэлла, а точнее — Sinotype III, разработанный в GARF отцом и сыном Розенблюмами, дал огромный толчок всему рынку микроэлектроники и компьютерных технологий в Китае.
Следующий шаг — расширить сферу применения компьютера и дать ему безграничную власть везде, где он может оказаться полезен. В будущем мы обязательно продолжим освещать эту тему и более подробно рассмотрим этапы китайской компьютерной революции.