Профессор Юрг Гуткнехт |
Осенью 1985 г. Вирт и его коллега Юрг Гуткнехт начинают проект Oberon. Вновь создавалась триада «язык — компьютер — ОС». На этот раз акцент переносится на ОС и происходит более четкое разделение труда. Вирт проектировал язык и писал компилятор, Ганс Эберле конструировал компьютер, а Гуткнехт создавал систему Oberon. На самом деле работы над новым компьютером начались немного раньше. Дальнейшее развитие Lilith поставило, по словам Вирта, задачу создания «современной, гибкой и эффективной операционной системы для однопользовательской рабочей станции». Поначалу казалось, что этого можно добиться в рамках Medos и Modula-2. Лишь затем стало ясно, что нужны более кардинальные шаги.
Если Lilith (архитектор Ричард Оран) создавался на основе микропроцессоров AMD2901 фирмы Advanced MicroDevices, то Ceres (так назвали новый компьютер, в честь богини Цереры) использовал 32-разрядный процессор NS32032 фирмы National Semiconductor (затем уже NS32532 и NS32GX32). Вслед за серией Ceres в ETH был разработан компьютер Chameleon (Хееб и Пфистер). Первой ОС была Medos, да и первый компилятор Оберона создавался на языке Modula-2 (Вирт).
Системе Oberon предшествовали исследования, которые проводились в ETH в 1981—1985 гг. на Lilith Юргом Гуткнехтом и его коллегами, Винигером и Шером. Сначала появился редактор Andra с поддержкой всевозможных окон, шрифтов, средств композиции страницы, а затем и редактор Lara. Примерно в тот же период Вирт разработал графический редактор и завершил работы над новым однопроходным компилятором языка Modula-2.
К середине 1988 г. уже был готов компилятор для экспериментальной рабочей станции Ceres-2 (на базе NS-32532) и прошли первые публикации Вирта (в апреле и июле; сначала «Type Extensions» в ACM Transactions on Programming Languages and Systems, а затем «From Modula to Oberon» в Software Practice Experience).
Вторая стадия проекта Oberon наступила летом 1991 г., когда было положено начало так называемой Oberon System 3.
О системе Oberon следует говорить куда более обстоятельно, чем это позволяют рамки данной статьи. Здесь же упомяну, что многие ключевые идеи взяты на вооружение современной ИТ-индустрией из системы Oberon: динамическая компиляция и аплеты, смарт-теги и Digital Dashboard, концепция интеллектуального документа и веб-службы.
Подобно тому как в свое время ОС UNIX начала ветвиться (System V и BSD), в ETH возникли две конкурирующие группы — Oberon V4 и Oberon System 3. Да и сама система Oberon оказалась непростой для самостоятельного изучения: интерклики мышкой — почти азбука Морзе. Спроектирована она была хорошо, а вот реализация подкачала (главным архитектором проекта был Гуткнехт; главного инженера, увы, не было). Удобной система становится после длительного освоения и только для посвященных — тех, кто сумел набраться терпения и преодолеть все издержки экспериментального программирования. Система Oberon оказалась Великой Китайской стеной, отделяющей новаторов-затворников от остального мира. Будучи хорошей базой для исследований, Oberon System сыграла роковую роль в судьбе самих языков Оберон-семейства. Она затмила собой одноименный язык, созданный Виртом с участием Гуткнехта, окружив его «теплом и заботой».
«Перечислить все идеи, на основе которых сформировалось то, что сегодня называется Обероном, — писал Вирт, — просто нет возможности. Большинство этих идей родилось в ходе применения или изучения существующих языков (таких, как Modula-2, Ada, Smalltalk, Cedar), которые часто показывали нам, каких решений следует избегать». На сегодняшний день компиляторы канонического Оберона доступны только внутри системы Oberon и системы Juice (Oberon System для Netscape и Internet Explorer), а также представлены транслятором COP2 (трансляция в Си). В контакт с агрессивным внешним миром коммерческих систем вступили последователи Оберона: Oberon-2 и Component Pascal, а затем Active Oberon и Zonnon.
Силы в ETH в 1990-е годы были сосредоточены на создании переносимых и перенацеливаемых компиляторов для разных платформ. Этим занимались преимущественно аспиранты Вирта и Гуткнехта. Кадры выросли очень сильные, апробированные идеи можно плодотворно изучать до сих пор (диссертации почти все как на подбор), а вот результат их работы практически неизвестен даже специалистам.
К февралю 1990 г. был готов переносимый компилятор OP2. Кстати, именно его брали за основу в начале работ над компилятором Oberon-2 Алексей Недоря и его новосибирские коллеги по XDS.
В июне 1989 г. Ханспетер Мессенбок спроектировал Object Oberon, добавив ООП-расширения в канонический Оберон. Именно Мессенбока, пожалуй, и следует считать автором Oberon-2, в который вылился Object Oberon. Вирт не возражал против соавторства в языке, поскольку расхождения по сравнению с Обероном были не фатальными, хотя и не лежали в рамках того критического взгляда на ООП, который исповедовал сам Вирт. Весной 1991 г. в журнале Structured Programming (издательство Springer-Verlag, в редколлегии состояли Н. Вирт и Д. Кнут) в одном номере вышли две статьи, давшие публичную жизнь языку Oberon-2, — «The Programming Language Oberon-2» и «Differences between Oberon and Oberon-2», под которыми стояли фамилии Мессенбока и Вирта.
К моменту появления Oberon-2 в 1991 г. информация об Обероне только-только стала выходить из стен ETH. Сторонние разработчики компиляторов сделали ставку именно на Oberon-2, считая, что это просто улучшенный Оберон. При этом важно отметить, что распространение пошло не по линии Open Source — едва ли не каждый сторонний разработчик компиляторов хотел сделать на новом языке свой бизнес.
В июне 1993 г. в Кройдоне, что в предместье Лондона, в отеле Oakwood собрались заинтересованные лица, многие из которых имели горький опыт затяжной промышленной ISO-стандартизации Modula-2. Присутствовали там и главные архитекторы лучших Оберон-компиляторов: Алексей Недоря (XDS), Гюнтер Дотцель (ModulaWare), Куно Пфистер (Oberon microsystems), Джон Гуг (John Gough, QUT, GPCP). В ходе дискуссий были выработаны рекомендации и стандартная библиотека для Oberon-2. Ее следы вы теперь найдете в компиляторах XDS и JOB.
Микаэль Франц |
В 1993 г. в ETH приехали представители Sun Microsystems во главе с Биллом Джоем. Они приобрели лицензию на систему Oberon и пригласили выступить у них с ответным визитом лучших учеников Вирта — Микаэль Франц сразу после защиты соответствующей диссертации в ETH делал доклад по динамической кодогенерации в Sun Labs в марте 1994 г., за 14 месяцев до выхода Java и за полгода до разработки браузера HotJava.
В 1994 г. Франц, разрабатывавший ранее кодогенератор Оберона для MC680x0 (Macintosh), завершил кодогенератор в промежуточный код — OMI (Oberon Module Interchange). Впервые на русском языке информация об этом была опубликована в альманахе «Технология программирования» (№1/1995). Идея Франца была проста — вместо традиционной схемы «компилятор — компоновщик — загрузчик» получить схему «компилятор — кодогенерирующий загрузчик», иными словами, совместить генерацию кода с компоновщиком и загрузчиком в одном флаконе.
Концепция «code-generation on-the-fly» (динамическая кодогенерация, кодогенерация на лету) с использованием компактного древовидного представления вместо классического байт-кода была положена в основу одноименной диссертации М. Франца, которую он защищал в ETH в феврале 1994 г. Его научными руководителями были Никлаус Вирт и Юрг Гуткнехт. Крайне интересная диссертация. Помню, как о ней в среде Modula- и Оберон-сообщества только и говорили (почти с придыханием). Редкий случай — в Цюрихе в марте 1994 г. она была переиздана в виде книги.
В Sun не рискнули сразу копировать все из Oberon (идеи браузерной среды языка, аплетов и трансляции в мобильный код взяли, а вот путь реализации мобильного кода выбрали свой). В 1991 г. автор Java Джеймс Гослинг при реализации Oak (прототипа языка Java) взял старую идею P-кода, которую хорошо знал: в 1975 г. Гослинг вместе с Недом Китлицем и Бобом Сайдботемом участвовал в построении среды программирования Pyxis/Multics Pascal, способной по быстродействию кода и удобству интеграции на равных конкурировать в Multics c родным для этой ОС языком ПЛ/1. А начинали они с поддержки компилятора ETH/Zurich Pascal, разработанного в Цюрихе группой профессора Вирта. В 1979 г. Гослинг реализовал PERQ — транслятор с P-кода в машинный код DEC VAX.
В 1994 г. в Sun не стали рисковать и включать новейшую хитроумную реализацию мобильного кода в древовидном представлении, что предлагал в диссертации Франц, а сохранили готовый подход Гослинга. Для всей отрасли модель Sun на долгие годы стала эталоном.
К тому моменту широкой аудитории доступ к Оберон-компиляторам был заказан: даже при нынешнем уровне пиратского тиражирования столь специфичный инструментарий, имеющий единичные продажи, заполучить нереально.
Единственный игрок, способный cделать массовый коммерческий компилятор Оберона, — компания TopSpeed (JPI) в те годы шла к закату. Ее последним движением в сторону новых языков Вирта было включение в Modula-2 собственных ООП-расширений. (Напомню, что фирма JPI/TopSpeed вышла из недр Borland. Ее, увы, короткая жизнь началась после того, как в знак протеста против замораживания проекта Turbo Modula-2 в угоду рыночным перспективам раскрученного Turbo Pascal компанию Borland покинула группа вице-президента Йенсена.)
Брюс Баррингтон, основатель и глава Clarion Software, приобрел компанию TopSpeed, где основным рабочим языком был Modula-2, для перевода своего детища, языка Clarion, на рельсы лучших в ПК-отрасли компиляторов TopSpeed (Assembler, Modula-2, Pascal, Cи/C++). В связи с этим был заморожен проект TopSpeed Ada, а затем и все остальные компиляторы (они остались на 16-разрядной платформе). Мало кто знает, что внутри среды Clarion (теперь этот бизнес ни шатко ни валко ведет фирма SoftVelocity) до сих пор запрятан 32-разрядный компилятор TopSpeed Modula-2, так никогда и не вышедший на рынок.
Это был еще один удар по Оберонам.
Но самой мощной волной, накрывшей Обероны с головой и на долгие годы предавшей их забвению, стала Java. Она стремительно ворвалась в ту нишу, которую подготовил себе Оберон, нахраписто и без какого-либо упоминания вырвала многие его идеи, высосала лучшие кадры. Но если бы еще это делалось с умом. А так... С другой стороны, прошло десять лет с момента появления Java, и теперь после ревизии ошибок прошлого можно взглянуть на Обероны по-новому. Как и Smalltalk, cлишком уж они опередили свое время.
Клеменс Шиперски |
Продолжим краткий рассказ об истории языков Оберон-семейства. Новый виток в их жизни начался, когда в ETH созрела идея создания небольшой компании (Oberon microsystems), ориентированной на внутренний швейцарский рынок (в основном это были промышленные роботы). Главным мотором стал Куно Пфистер, а архитектором Component Pascal — Клеменс Шиперски.
К концу 1990-х годов на волне очевидно негативного отношения к Sun в ETH пришла Microsoft. Начались совместные проекты (по линии Microsoft Research), совпавшие по времени с проектированием платформы .NET. Клеменс Шиперски из Oberon microsystems перешел в Microsoft Research. К тому моменту он уже завоевал огромный авторитет в мире компонентно-ориентированного проектирования и программирования благодаря книге «Component Software — Beyond Object-Oriented Programming». Там есть глава, посвященная системе BlackBox (Component Pascal). Книга вышла в 1997 г., затем дважды стереотипно переиздавалась в 1998 г., затем дважды в 1999 г., наконец второе ее издание вышло в 2002 г.
Компонентный Паскаль проектировался так, чтобы иметь возможность работать, с одной стороны, с основной компонентной моделью — COM (Oberon/F, предвестник BlackBox, получил в конце 1990-х годов на CeBIT приз за технологическое совершенство — за реализацию Direct-to-COM Compiler), а с другой — с миром Java. При этом в Oberon microsystems (где, кстати, по заказу Borland был написан JIT-компилятор для JBuilder) начались работы по использованию Component Pascal для мира встроенных систем (ОС Portos, ныне JBed). Именно эти работы положили начало зарождению компании Esmertec — мирового лидера заказных решений для Java 2 Micro Edition.
От критиков Оберона можно услышать такой довод: дескать, если он обладал столь совершенными технологиями, то почему его не видно на рынке? Честно говоря, трудно привести примеры, когда за последнюю четверть века технологическое совершенство в инфраструктурном или инструментальном программном обеспечении предопределяло бы безусловное лидерство на рынке? Обратных примеров сколько угодно.
Чтобы понять ту пропасть, которая отделяет нынешнюю ИТ-индустрию от взвешенного научно-технологического подхода, стоит задаться вопросами:
1. Зачем Borland в 1980-х годах утопила в своих недрах технологически наиболее совершенную среду Turbo Modula-2? Правильно, в угоду своему рыночному положению, дабы не убить свой же Turbo Pascal - курицу, несущую золотые яйца.
2. Почему в 1990-х годах элегантный Smalltalk так и не смог поколебать позиции уродливого C++, неумело поставившего крайне модные тогда идеи ООП на рельсы Си? Верно, восстановление былой мощи IBM в области инструментария противоречило интересам Microsoft и Borland.
3. Почему Microsoft не вывела на орбиту очень приличный Eiffel Бертрана Мейера? Помните, как Билл Гейтс лично хлопал мэтра по плечу и всячески расхваливал компилятор Eiffel for .NET? Книгу Мейера о .NET превозносили до небес. Но... мавр сделал свое дело - мавр должен уйти. Профессор Мейер был нужен Гейтсу лишь для раскрутки .NET. Мейер ушел в затворничество в швейцарский ETH - альма-матер виртовских языков.
4. Почему компания Esmertec, отпочковавшаяся от Oberon microsystems и сделавшая в конце 1990-х годов свою дуальную ОС Portos для встроенных систем (Оберон + Java), вынуждена была практически полностью перевести свою продукцию на рельсы Java? Точно, если рынок предпочитает для себя худший язык (Java) и худшую среду (Java 2 Micro Edition), пожалуйста, они сделали это просто лучше всех в отрасли и стали здесь лидерами. А вслед за этим реализовали и компактный Smalltalk для систем реального времени.
В последние годы ИТ-индустрия насильно превращает университеты в ремесленные училища. При этом Россия благодаря своей защитной инертности умудрилась во многом сохранить оазис неремесленного программирования. И Delphi явился той палочкой-выручалочкой, которая этому во многом способствовала. За это Delphi большое спасибо. Но сейчас перспективы Delphi в маркетинговом плане весьма туманны. На платформе Linux инструментарий Kylix заморожен. Borland стала по сути филиалом Microsoft и нужна редмондскому гиганту, чтобы достойно противостоять линейке IBM Rational. Но дело не только в более чем реальном уходе Delphi с рынка. Уже сейчас специалисты по Delphi остаются в индустрии невостребованными. А поскольку университеты стремительно сращиваются с индустрией, то Delphi будет вымываться из учебного процесса. На этом может быть поставлена жирная точка в судьбе языков Паскаль-семейства.
Мир инструментария все больше становится двухполюсным: Microsoft — IBM. Компания Sun Microsystems, несмотря на огромную шумиху, не только почти ничего серьезного не сделала в Java за десять лет (весь воз корпоративной Java почти в одиночку тащила IBM), но и своим апрельским соглашением 2004 г. с Microsoft фактически объявила войну бывшему союзнику.
На рынке ИТ все более усиливается пропагандистская война, битва за умы. Здесь неуместны рассуждения о технологическом совершенстве и, упаси боже, о какой-то там науке!
Причины забвения Оберона выглядят так:
- распыление сил и средств внутри ETH (V4 против System 3, Оберон против Oberon-2);
- распространение лучших оптимизирующих компиляторов единичными тиражами на коммерческой основе;
- отсутствие групп пользователей (User Groups) и собственных изданий;
- слабая интернет-активность;
- мощная волна Java-пропаганды;
- отток специалистов в коммерческий мир Java и .NET.
И все же самыми главными стали три момента:
1. Отсутствие четкой программы популяризации/вывода языков на рынок.
2. Колоссальный информационный голод.
3. Игнорирование резко выросшего потенциала OpenSource-движения.
Но язык не поворачивается обвинить во всем этом ETH. Он вел интенсивные исследования и совершенствовал свой учебный процесс, в чем достиг выдающихся результатов, а вот поддержка «народных масс» в Швейцарии и близлежащих европейских странах оказалась слабоватой. Америке же Оберон был чужд, и, наверное, наивно было бы полагать, что его подобно Паскалю начнут активно продвигать американцы, у которых был теперь свой «золотой телец» в лице Java.
И все же Оберон отнюдь не умер. Люди, продолжающие им заниматься, стараются не особо это афишировать. За примерами далеко ходить не надо. Ученик Вирта Микаэль Франц создал внутри университета Калифорнии в Ирвайне свою маленькую Оберон-империю. Вот только он об этом не кричит на каждом перекрестке. Все финансирование проектов идет для его группы только по линии Java. Ныне его команда — один из мировых лидеров в исследовании мобильного кода и проблем ИТ-безопасности для Java. Ирония судьбы: ярый противник Java ведет перспективные Java-проекты для американского ВПК.
Критики Оберона не ставят под сомнение элегантность языка (да и перспективность всего семейства), а считают устаревшим доступный для него инструментарий и неустойчивое положение компаний-разработчиков. С позиций таких IDE-систем, как Visual Studio, Delphi и Eclipse, он в самом деле выглядит по-спартански скромным, без «свисточков и звоночков». В то же время благодаря Клеменсу Шиперски (Microsoft Research) и группе Пола Ро в Квинслендском университете (Австралия) ориентированный на компонентное программирование диалект Оберона в лице Component Pascal имеет три актуальных реализации для Visual Studio (.NET 1.x и 2.0), Java (JVM) и Eclipse (JVM). Юрг Гуткнехт совместно с Евгением Зуевым (ETH) продолжают развивать компилятор Zonnon для .NET с интеграцией в Visual Studio. Наконец, в России ведутся работы по переносу, пожалуй, основной инструментальной среды для Оберонов — BlackBox (Component Pascal) с платформы Win32 на Linux.
Направление микромира — браузеров и встроенных систем (не только военного назначения, а чисто бытового: мобильные телефоны, коммуникаторы, КПК) — крайне выгодно отличает Oберон от всех остальных языков. И хотя в связи с коммерческой активностью на этом рынке компании Esmertec Оберон-технологии носят закрытый характер, часть инструментария публично доступна для дальнейшего развития.
Потенциал миниатюрного компилятора JOB (Oberon-2 для JVM), созданного Сергеем Свердловым, вполне пригодился бы для этого рынка. В области браузеров есть технология Juice (Oberon System для Netscape и IE), реализованная Микаэлем Францем и приостановленная в связи с переключением его группы на работы для Министерства обороны США по безопасности мобильного Java-кода. На ее основе можно делать замечательные вещи. Только представьте, что в любом современном браузере можно иметь Оберон-движок, который является полноценным компилятором с динамическим кодогенерирующим загрузчиком, имеет полный доступ к ОС и модули которого внешне (с точки зрения HTML) оформляются как Java-аплеты. Код аплетов получается примерно в 1,5—2 раза меньше, чем у Java, скорость исполнения — практически такая же. Все это выполнено еще в 1996 г. в виде подключаемого модуля для Netscape и Internet Explorer и занимает около 400 Кбайт. Есть все исходные тексты (на C++ реализована прослойка для ОС и браузера, на языке Оберон — все остальное). Очень перспективная вещь для задач, ориентированных на технологию тонких клиентов и требующих нешаблонных решений.
Поворотный этап в развитии Оберона начался с переводом BlackBox в категорию freeware и Open Source (конец 2004 г.). В мае 2005 г. новосибирская фирма Excelsior (XDS) перевела свою линейку компиляторов Modula-2/Oberon-2 в разряд freeware вслед за началом разработки нового компилятора Modula-2 для НПО ПМ им. Решетнева, ведущего российского центра по созданию спутников связи. В это же время профессор Никлаус Вирт приступил к адаптации своих бестселлеров для языка Оберон и переводу в открытый доступ своих лучших книг.
Важнейшую роль в возрождении интереса к Оберону сыграла растущая активность нарождающегося Оберон-сообщества в России, которую стимулировал проект «Информатика-21», стартовавший на физфаке МГУ в 2001 г. (автор Ф. В. Ткачев). Вокруг проекта сформировалась группа консультантов, представляющих аэрокосмическую индустрию, Российскую академию наук и МГУ. Весной 2004 г. на базе швейцарского CERN (Европейский центр ядерных исследований, Женева), откуда вышел World Wide Web, при участии России были инициированы работы по активному применению Component Pascal в фундаментальных научных исследованиях. С января 2003 г. в рамках «Студии программирования» журнала «Мир ПК» и CD-приложения «Мир ПК-диск» начались регулярные публикации работ по развитию Оберона и размещение соответствующего инструментария.
В сентябре-октябре 2005 г. Россию посетили Никлаус Вирт и Юрг Гуткнехт с визитами в наши крупнейшие университетские центры (Москва, С.-Петербург, Нижний Новгород, Новосибирск, Екатеринбург, Томск). Осенью этого года начнет выходить электронный журнал «Школа Оберона», ближе к концу года (к 35-летию Паскаля и 25-летию выпуска Lilith) запланировано открытие сайта http://www.oberon2005.ru, где будет собрана и систематизирована информация о прошлом, настоящем и будущем языков Вирта, в том числе о новых проектах в ETH и за его пределами.
Если говорить об интересе к Оберону в остальном мире, то сейчас он более чем сдержанный. Те, кто разобрался, в чем его плюсы, особенно это не афишируют, используя этот язык для достижения конкурентного преимущества в своем бизнесе.
Бытует мнение, что Оберон сродни объектным СУБД: выглядит красиво, а реально его почти не используют. Но разве то, что используют немногие, обязательно ущербно или непрактично? Конечно же нет. Вопрос в том, сумеем ли мы вопреки шумной рекламе и сложившемуся статус-кво ИТ-индустрии приподняться над ветреной модой и суетой рынка и взять Оберон на вооружение. Это зависит лишь от нас самих.
И если уж проводить параллели, то куда корректнее сравнивать Оберон с путеводной звездой (хоть это и самый дальний спутник Урана). Тихо светит и другим не мешает...
Компилятор Оберона
Компилятор Оберона был реализован для процессоров семейства NS32000 и был встроен в операционную среду Oberon. Он требует менее 50 Кбайт памяти, состоит из шести модулей общим размером около 4000 строк исходного текста и сам себя компилирует примерно за 15 секунд на рабочей станции с 25-МГц процессором типа NS32532.
Никлаус Вирт (1988)
Проект Oberon. Вторая стадия
Графические интерфейсы ныне используются повсеместно, и игнорировать это проявление духа времени не может себе позволить ни одна серьезная операционная система. Поэтому летом 1991 г. мы приступили ко второй стадии проекта Oberon. Однако в ту пору мы хотели не просто облачить по сути «голую» систему Oberon в нарядные GUI-одежды, но и сделать важный шаг вперед. Несколько раздвигая границы устоявшихся представлений, мы сразу стали рассматривать графический интерфейс как набор истинных визуальных объектов.
Ю. Гуткнехт (1994)
Одно из наиболее перспективных направлений дальнейшего развития Oберона — превращение его в усовершенствованную общую платформу для предоставления услуг удаленным пользователям; слово «усовершенствованную» мы понимаем в данном случае как гибкую, высоко интегрированную и индивидуализированную. К настоящему времени мы провели эксперименты по организации следующих услуг удаленным пользователям (и реализовали доступ к ним через Ethernet и TCP/IP):
Ю. Гуткнехт (1994)
Согласно информации Sun [JavaSoft], идея переориентации Java на World Wide Web возникла в 1994 г. и принадлежала Биллу Джою, одному из основателей фирмы. Осенью 1994 г. началась работа по реализации Web-браузера HotJava с возможностью выполнения аплетов. В марте 1995 г. браузер был представлен избранному кругу стратегических партнеров Sun, включая руководство корпорации Netscape Communications, чья публичная поддержка впоследствии немало способствовала успеху новой технологии. В августе 1995 г. состоялся триумфальный выпуск Java, который происходил в довольно необычной для базовых технологий форме — в виде серии пресс-конференций.
...Может быть интересно то обстоятельство, что в марте 1994 г. автором был прочитан в Калифорнии ряд докладов по теме диссертации, причем один из них — в Sun Laboratories, Inc. Кроме того, упомянутый выше Билл Джой, который переориентировал проект Java на WWW, стал одним из первых обладателей лицензии на Oberon System из ETH, и в конце 1994 — начале 1995 г. он неоднократно связывался с ETH; в процессе контактов выяснилось, что он читал мою диссертацию.
Микаэль Франц (1996)
Руслан Богатырев 04.10.2005
Мир ПК, #10/2005