Чарльз Саймони. Тайный архитектор Microsoft

Окончание. Начало в No.6

Долгие годы имя Чарльза Саймони, одного из выдающихся программистов минувшего столетия, главного архитектора Microsoft, равно как и имя Энгельбарта, было покрыто завесой молчания. Когда я листал страницы архивных материалов, мне удалось найти в публикациях начала 1990-х гг. лишь едва заметный реверанс в сторону Саймони в весьма обстоятельном интервью Билла Гейтса. Он дал его в 1993 г. Дэвиду Эллисону из Национального музея истории США по случаю своего награждения премией Computerworld Smithsonian Award.

«Microsoft Word, — вспоминает Гейтс, — хотя и являлся вторым приложением, с которым мы вышли на рынок после Multiplan, знаменовал собой важный этап... Мы взяли на работу Чарльза Саймони из Xerox PARC. Мы знали, что графический интерфейс там уже был реализован и что лазерные принтеры получат большое распространение. Поэтому мы спроектировали нечто такое, чья структура была бы подготовлена для графического мира. И действительно, мы добились того, что текст можно было показывать курсивом и полужирным начертанием, что с ним можно было работать с помощью мыши, а это позволяло добиться огромной точности в композиции страниц... Пользовательский интерфейс был идентичен интерфейсу в Multiplan. Так появилось семейство продуктов, которое мы назвали Multi-Tool Family».

В реальности же роль Саймони в становлении корпорации, именуемой Microsoft, неизмеримо выше. Обратимся к истории компьютеров и страницам его биографии.

В начале 1960-х гг. Саймони на своей родине в Венгрии писал программы для советского компьютера «Урал-2». Именно тогда, работая в машинных кодах, он и приобрел умение создавать максимально эффективные программы, функционировавшие в условиях крайне ограниченных машинных ресурсов. Привычка делать мнемонические обозначения вылилась у него в создание того стиля формирования идентификаторов, который теперь известен под названием «венгерская нотация».

Будучи аспирантом Стэнфордского университета, Саймони начал работать в Xerox PARC еще в 1970 г., т.е. тогда, когда образовалась эта, пожалуй, самая знаменитая исследовательская лаборатория мира. Основным в те годы был проект Alto. Но компьютер Alto так и не стал промышленным ПК — было создано всего лишь около 2000 машин данного семейства. Их установили в Белом доме, Администрации президента и Национальном бюро стандартов, на них печатались отчеты и документы Конгресса США.

Чарльз Саймони в рамках создания компьютера Alto отвечал за направления работ в области графического интерфейса (GUI), в частности за разработку текстового процессора Bravo. По его словам, это был первый в мире текстовый процессор, обеспечивающий режим WYSIWYG (What You See Is What You Get) — режим точного соответствия представленного на экране документа напечатанному на принтере (композиция страницы, гарнитуры, начертания, кегель, стили), причем работать с таким представлением страницы можно было с помощью мыши. В 1976—1978 гг. он завершил разработку усовершенствованной версии BravoX, положенной в основу одного из самых технологически совершенных и одновременно коммерчески неудачных проектов — Xerox Star. (Спустя десятилетие идеи Xerox Star были взяты на вооружение и развиты Стивом Джобсом в рамках проекта NeXT.) Генеалогическая связь разных проектов показана на рис. 1.

Проект Star (начавшийся в 1975 г.) в Xerox PARC вел департамент системных разработок SDD (Software Development Department). В июле 1981 г. работа над ним вылилась в то, что Xerox представила настоящий персональный компьютер Xerox 820, получивший кодовое название Worm («червяк», приготовившийся, видимо, съесть яблоко — Apple). До выхода IBM PC оставался один месяц... Однако время (да и очень ценные кадры) было уже упущено. Билл Гейтс вспоминал: «Ребята из Xerox замахнулись слишком высоко, они пытались сделать невыполнимое, но не смогли найти возможностей, чтобы это осуществить. Когда наконец им это удалось, они чуть-чуть опоздали».

Не дождавшись завершения проекта Star, разочаровавшись и не надеясь увидеть когда-либо повсеместное использование плодов своего труда, из Xerox PARC стали уходить один за другим ведущие сотрудники. Чарльз Саймони перешел в Microsoft, Алан Кей — в Atari. Команду Bravo покинул не только ее руководитель, но и другие участники (однако они направились к прямому конкуренту Microsoft — компании Apple). Так, в Apple попали Том Мэллой, написавший редактор LisaWrite, и Ларри Теслер — один из ведущих разработчиков ПО для будущего компьютера Apple Lisa. Что же касается Стива Джобса, то он не работал в Xerox PARC, но мысль о создании своего ПК зародилась у него в 1979 г. именно там, когда он воочию познакомился с исследованиями в этом центре. Вдохновленный увиденным, Стив загорелся идеей использовать это при конструировании компьютера Lisa, а после того как его несколько отодвинули от проекта, перенацелился на новый ударный проект — Macintosh.

Но вернемся к Саймони. В конце 1980 г. Чарльз Саймони собрался уходить из Xerox PARC, и тут Роберт Меткалф (автор Ethernet) посоветовал ему переговорить с рядом лиц, причем первым в списке значился Билл Гейтс (остальные имена Саймони по прошествии стольких лет вспомнить уже не мог). В ноябре Чарльз встретился с Гейтсом и Стивом Баллмером, после чего согласился на предложенные условия (руководство новым ключевым подразделением — Application Software Group, создание на базе Electronic Paper нового процессора электронных таблиц, подготовка текстового редактора Word).

Саймони поступил на работу в Microsoft 6 февраля 1981 г. и стал сотрудником номер 40. Важно заметить, что в империи Basic (как еще называли Microsoft) именно Саймони настоял на том, чтобы основным языком разработки стал язык Си [2]. На Си был написан Multiplan — прообраз будущей Excel. Несмотря на относительную маркетинговую неудачу с Multiplan, в Microsoft сделали правильные выводы из своих ошибок, и в 1985 г. та же таблица вышла под новым флагом — Excel. С этого момента она начала неуклонно захватывать рынок. Параллельно с Multiplan в 1981 г. были инициированы работы по созданию текстового редактора Multi-Tool Word. В острейшей конкуренции с WordStar и WordPerfect редактор Word корпорации Microsoft спустя несколько лет после своего официального появления в ноябре 1983 г. завоевал пальму первенства, а с выходом системы Windows стал доминирующим текстовым процессором. Как вспоминает Чарльз Опперман, бывший менеджер проектов в Microsoft, в начале 1982 г. Саймони вместе с Биллом Гейтсом уже вынашивали идеи реализации графической версии MS-DOS, которая привела к появлению операционной системы Windows.

В 1991 г. Саймони был переведен в Microsoft Research, где занимался разработкой концепций интенционального программирования. В настоящее время он в качестве одного из 16 выдающихся инженеров Microsoft (Distinguished Engineers) входит в Business Applications Division.

Большая заслуга Саймони состоит не только в непосредственном участии в создании трех ведущих продуктов Microsoft — Word, Excel и Windows, но и в том, что механизм меню стал столь распространенным и популярным. Вот как в интервью, данном журналу PC World (ноябрь 1983 г.), Чарльз Саймони пояснил идею меню. «Мне нравится явная аналогия с рестораном. Скажем, я захожу во французский ресторан и не умею говорить по-французски. Обстановка необычная, самочувствие неважное. Я боюсь сделать глупость и потому напряжен. Ко мне подходит очень внушительный на вид официант и заговаривает со мной по-французски. Я покрываюсь холодным потом. Наверное, те же самые чувства испытывает бухгалтер, садящийся к компьютеру... Какой же выход? А вот какой: я беру меню и указываю на что-нибудь пальцем. Я на правильном пути. Может быть, я не получу то, что мне нужно, может быть, мне придется есть одних улиток, но я по крайней мере не буду чувствовать неловкость. Но представьте себе, что вы во французском ресторане, в котором нет меню, — это ведь кошмар. То же самое относится и к программе для компьютеров — вам нужно меню. Меню дружественны, поскольку люди знают, что означают их пункты, и поскольку они могут выбрать нужный, просто указав на него. Им не приходится разыскивать что-то такое, чего они не смогут найти, и вводить какие-то команды, в которых могут быть ошибки».

Как вы, наверное, знаете, в некоторых московских ресторанах, специализирующихся на экзотических для нас блюдах восточной кухни (японской, китайской, тибетской и т.п.), для удобства посетителей предлагают меню с фотоиллюстрациями соответствующих блюд. Справедливости ради надо заметить, что не Саймони первым придумал механизм меню (он появился в конце 1960-х гг. еще на первых терминалах IBM 3270 с прямым позиционированием курсора). Да и само название «меню» дали, скорее всего, именно в Apple сразу после выхода компьютера Lisa. Дэвид Лиддл, руководитель проекта Xerox Star, вспоминает: «Мы никогда не называли ни один из этих механизмов в Star термином «меню». Apple всегда именовала их меню, мы же не делали этого никогда».

Команды в системе Oberon как прототип смарт-тегов

Система Oberon (Oberon System, http://www.oberon.ethz.ch), созданная в Швейцарском федеральном технологическом институте (ETH, Цюрих) в 1988 г. (рис. 2), играет в наши дни приблизительно ту же роль, что и проекты Alto и Xerox Star в начале 1980-х гг. Для таких корпораций, как Microsoft, IBM и Sun Microsystems, она стала источником плодотворных идей, среди которых можно выделить документо-ориентированный интерфейс, языки разработки переносимого ПО (Java), машинно независимый мобильный код, аплеты, компонентное ПО, динамическую компиляцию (JIT-компиляцию), Web-службы и конечно же смарт-теги.

Рис. 2. Панель системы Oberon (поверх системы Windows 2000)

Идеологами этой системы стали Никлаус Вирт и Юрг Гуткнехт, профессора ETH [3]. Система Oberon и ориентированный на нее компьютер Ceres создавались не на пустом месте. За несколько лет до этого (1980—1981 гг.) Вирт вместе с группой своих коллег успешно завершил проект разработки 16-разрядного персонального компьютера Lilith с растровым дисплеем, WYSIWYG-интерфейсом, локальной сетью и лазерным принтером. Весь проект, включая операционную систему Medos, сервисные программы и компилятор системного языка, был реализован на преемнике Паскаля — языке Mодула-2. Идея проекта Lilith возникла у Вирта (он, кстати, в свое время учился у Энгельбарта) в момент посещения им в 1976—1977 гг. все того же Xerox PARC. Однако он обратил внимание не столько на компьютеры семейства Alto, сколько на менее известный проект Mesa (своеобразную системно-ориентированную разновидность Паскаля). Этот проект, на результаты которого опирался Star, вела лаборатория CSL (Computer Science Laboratory). Язык Mesa стал прототипом двух языков — Модулы-2 и Ады. Он использовался внутри корпорации Xerox для реализации не только Star, но и ПО DocuTech. Проект Cedar (преемник Mesa в Xerox PARC), направленный на создание языка для реализации системы DocuPrint, в определенной степени стал катализатором другого проекта Вирта — системы Oberon.

Наш интерес в свете данной статьи будет обращен прежде всего к прототипам смарт-тегов в системе Oberon — к так называемым командам Oberon (commands), играющим роль низкоуровневых обработчиков смарт-тегов. В основе Oberon лежит исповедуемая Виртом концепция расширяемых систем, предусматривающая возможность органичного расширения базовой системы в контексте объектно-ориентированного каркаса. Каждая экспортируемая процедура без параметров (соответствующий метод) в новом загружаемом модуле автоматически становится командой операционной системы. Параметры передаются команде через буфер обмена и области выделения. Чтобы ее выполнить, достаточно в любом месте пользовательского интерфейса (даже в заголовке окна!) ввести (или выделить) текст, а затем просто подвести мышь к тексту и нажать ее кнопку, например:

Gadgets.Insert Clocks.NewClock ~

В данном примере команда Insert из модуля Gadgets считывает параметры вплоть до знака завершения (~) и выполняет соответствующий код данной процедуры (в нашем случае в то место, где стоит текстовый курсор, помещается аплет-часы, работающий до момента своего удаления из документа). Программисты в Oberon активно пользуются подобным механизмом, вставляя прямо в исходный текст своего рода инструкцию: команды запуска тестовых примеров.

В отличие от смарт-тегов Microsoft, в системе Oberon по умолчанию нет визуального выделения смарт-ссылок, не появляется меню (его надо предусматривать при разработке процедуры). К тому же распознаватели выполняются по унифицированной и упрощенной схеме: текст смарт-тега должен в точности соответствовать формату представления команды (это не произвольный текст). В то же время такие а-ля смарт-теги в системе Oberon гораздо проще создавать и активизировать, да и распознаются смарт-ссылки практически в любой точке интерфейса, даже на Рабочем столе.

К сожалению, как и в случае проектов NLS и Alto, беда этой системы заключается в том, что она на многие годы опередила свое время. К тому же, в отличие от старых добрых дней, теперь в коммерческих продуктах все реже можно встретить хотя бы упоминание о тех источниках, из которых были заимствованы идеи.

Смарт-теги против макрокоманд

Казалось бы, зачем нужны смарт-теги, когда есть привычный гипертекст и отдельные программы? Ведь если надо что-то сделать, можно использовать соответствующее приложение. Ответ лежит на поверхности: опыт работы с Web-страницами показывает, что чем глубже по навигации размещена информация (а также действия), тем реже она оказывается востребованной. В случае смарт-тегов множество разрозненных операций переводится в унифицированный интерфейс всплывающих меню, которые в нужный момент всегда оказываются под рукой. Причем с их помощью можно не только быстро выполнять соответствующие тексту поисковые запросы и в общем случае любые сколь угодно сложные SQL-запросы, но и выполнять обработку информации вплоть до решения отнюдь не простых задач.

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

В конце XIX в. знаменитый английский писатель Льюис Кэрролл в своей книге «История с узелками» [4] приводит следующую историю-загадку: «Вот она, — сказала наконец тетушка. — Последняя запись относится к вчерашнему завтраку. Один стакан лимонада (Почему ты не можешь пить простую воду, как я?), три бутерброда (Горчицы, конечно, в них нет и в помине. Я прямо так и сказала девушке за прилавком, а она в ответ лишь вздернула подбородок. Удивительная дерзость!) и семь бисквитов. Итого 1 шиллинг и 2 пенса... — Постарайся вычислить, если не помнишь, — предложила тетушка. — Что ты заказывала на завтрак вчера, тебе известно. А вот запись о том, что ты заказывала позавчера — в первый день, когда мы отправились завтракать в кондитерскую: один стакан лимонада, четыре бутерброда, десять бисквитов. Итого 1 шиллинг и 5 пенсов.

С этими словами тетушка передала свои таблички Кларе. Сквозь слезы Клара даже не разглядела, что держит таблички вверх ногами»*.

В данном тексте несложно распознать такие объекты, как числительные (записанные прописью и цифрами), а также связанные с ними продукты (стакан лимонада, бутерброд, бисквит) и денежные единицы (шиллинг, пенс и т.д.). Остается только встроить в обработчик смарт-тегов блок-решатель алгебраических уравнений, конвертер денежных единиц и активизировать вызов обработчика соответствующим словом (например, «итого»). Кстати, попробуйте решить ту же задачу самостоятельно. Чтобы сравнить, взгляните на более простую жизненную ситуацию (рис. 3), где требуется иметь под рукой удобный конвертер валют (запрашивает информацию в реальном времени из ЦБ РФ).

Рис. 3. Преобразование денежных величин с помощью смарт-тегов (контейнер X-Currency)

«Позвольте, но какая же тут революционность?» — словно вопрошает один из авторов критических статей по технологии смарт-тегов [5]. В самом деле, ведь если посмотреть на примеры применения смарт-тегов, то все они вроде бы могут быть довольно легко реализованы средствами уже имеющихся офисных приложений. По мнению другого автора [6], все то, о чем говорилось выше, делается с помощью известных средств программирования офисных приложений. Подводите курсор к выбранному слову, открываете нажатием «горячей клавиши» макрокоманду в контекстном меню и делаете все, что требуется. Оба автора, подробно излагая технические детали реализации смарт-тегов, словно сговорившись, недоумевают: зачем же нужен сам механизм?

Что ж, такое недопонимание простительно, и подобная точка зрения вполне имеет право на существование. Однако она игнорирует вполне очевидное преимущество технологии смарт-тегов по отношению к привычным макрокомандам офисных приложений (а ведь авторы вели речь именно о них). Как известно, макрокоманды опираются на простой принцип: сопоставление программного кода, написанного, как правило, на VBA, с конкретной комбинацией клавиш («горячие» клавиши).

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

Самое интересное, что режим выделения распознанных словокомплексов допускается отключать, и тогда чисто внешне работа смарт-тегов будет напоминать работу с макрокомандами. Кроме того, от большого числа «горячих» клавиш макрокоманд в принципе можно избавиться за счет реализации обобщенных макрокоманд с применением меню (т.е. промоделировав эту особенность смарт-тегов). Теперь все характеристики конкурирующих технологий приведены к одному знаменателю. Остается, пожалуй, последняя, ключевая: распознавание в случае смарт-тегов производится автоматически, а в случае макрокоманд — вручную. Ну а тут уже споры могут возникнуть в отношении удобства использования (что лучше: мышь или клавиатура) и качества реализации распознавания (в общем случае оно сводится к обработке запросов на естественном языке). А при работе с мнемоническими обозначениями (как тут не вспомнить венгерскую нотацию Саймони) «зацепиться» за текст распознавателю будет куда проще.

С системой Oberon я знаком без малого десять лет. Напомню, что команды в ней с точки зрения использования занимают промежуточное положение между смарт-тегами и макрокомандами. И надо сказать, что выполнять команды в Oberon без явного их выделения в тексте не совсем удобно. По сути, вы подобно саперу должны шаг за шагом прощупывать комбинации слов, чтобы выяснить, какие из них в данном контексте будут исполняться. Это может быть вполне приемлемо для программиста, для профессионала-виртуоза в обработке текстов, но массовому пользователю не сулит ничего хорошего. Представьте себе на минутку, что было бы с нынешним Интернетом, если бы гиперссылки никогда не выделялись в тексте ни цветом, ни подчеркиванием. Кто нашел, куда нажимать, тот и молодец!

Очевидно, что для успешной работы смарт-тегов требуется, чтобы сервисные машины (engines), встроенные в соответствующие приложения (Word, Excel, Outlook, Internet Explorer, Acrobat и др.) и обеспечивающие управление обработчиками смарт-тегов, работали корректно. В принципе можно создавать и собственные сервисные машины, а не пользоваться штатными (если таковые для данного приложения имеются). Конечно же, идея и особенно нынешняя реализация технологии смарт-тегов далеки от совершенства. Но то, что это безусловный шаг вперед в развитии пользовательского интерфейса и собственно гипертекста, не вызывает никаких сомнений.

Литература
  1. Фрейберг П., Свейн М. Пожар в Долине. Группа ДАРНЭЛ, 2000.
  2. Ичбиа Д., Кнеппер С. Билл Гейтс и сотворение Microsoft. Ростов-на-Дону: Феникс, 1997.
  3. Wirth N., Gutknecht J. Project Oberon: The Design of Operating System and Compiler. Addison-Wesley, 1992.
  4. Кэрролл Л. История с узелками. М.: Мир, 2000.
  5. Малинин А. Смарт-теги в Microsoft Office фирменного и кустарного приготовления // Компьютер Пресс. 2001. № 11.
  6. Колесов А. Smart Tags в офисных приложениях Microsoft // BYTE Россия. 2001. № 10.
  7. Черняк Л. Ванневар Буш - царь науки // http://www.computer-museum.ru/frgnhist/intern3.htm
  8. Черняк Л. Изобретатель мыши, но не только // http://www.computer-museum.ru/frgnhist/mouse.htm
Web-cсылки
  1. Дуглас Энгельбарт - http://www.bootstrap.org/dce-bio.htm
  2. Тед Нельсон - http://www.sfc.keio.ac.jp/~ted/
  3. Чарльз Саймони - http://www.edge.org/3rd_culture/bios/simonyi.html
  4. Никлаус Вирт - http://www.cs.inf.ethz.ch/~wirth/
  5. Memex - http://www.cs.brown.edu/memex/
  6. XANADU - http://www.xanadu.com/
  7. Alto - http://www.parc.xerox.com/hist-lst.html
  8. Xerox Star - http://xeroxstar.tripod.com/
  9. Oberon System - http://www.oberon.ethz.ch
  10. Smart Tag Sales Kit - http://www.exteria.ru/pr/20020118/

* (назад) 1 фунт стерлингов содержит 20 шиллингов, а 1 шиллинг — 12 пенсов. Во времена Кэрролла в обращении находились следующие серебряные монеты: крона (достоинством в 5 шиллингов), полкроны (2 1/2 шиллинга), двойной флорин (4 шиллинга), флорин (2 шиллинга) и монеты достоинством в 6 шиллингов, 3 шиллинга и 1/4 шиллинга. Кроме того, имели хождение три медные монеты достоинством в 1 пенс, 1/2 пенса и 1/4 пенса (последняя монета называлась фартингом).