rbogatyrev (rbogatyrev) wrote,
rbogatyrev
rbogatyrev

Categories:

RB10. От Oberon к Bluebottle

Система Oberon в паре с языком Оберон очень напоминают связку UNIX и Си. Несмотря на то что приверженцы Оберона нередко открещиваются от Си, между этими языками прослеживается немало общего. Немаловажный нюанс: языки Си и Оберон роднит тот факт, что они создавались не вообще, не ради абстрактных целей облагодетельствования человечества в решении любых задач (вроде C++), а формировались в рамках реализации конкретных практических проектов, где их роль была едва ли не центральной. В тех проектах они и оттачивались: языки были инструментом реализации проектов, а не ярмаркой-продажей богатого функционала и не военным парадом мощи различных идей программирования. Ранние версии Си (без препроцессора, без union и типа перечисления, без long и unsigned) и Оберона (мини-Модула, явное разделение модуля на интерфейс и реализацию) потом доводились до ума в ходе адаптации их в соответствующих проектах реализации ОС UNIX и ОС Oberon.

Как известно, ОС UNIX создавалась в AT&T Bell Labs Кеном Томпсоном на языке B. Ему помогали еще 5 человек, среди которых был и Деннис Ритчи. К 1971 г. Деннис Ритчи спроектировал Си и реализовал первый его компилятор на DEC PDP-11. Летом 1973 г. ядро UNIX было переписано на Си. За период 1971-1973 гг. язык Си был доработан так, чтобы по максимуму использоваться для реализации UNIX: в частности, именно тогда появился препроцессор и была реализована стандартная библиотека языка, во многом благодаря которой (и благодаря интересу к UNIX) он быстро стал завоевывать мир (чего не скажешь об Обероне). Однако более-менее язык вызрел только к 1978 г., когда и появилась книга Кернигана и Ритчи "The C Programming Language" (K&R). Эталонное описание Оберона, где фиксировался язык, появилось летом 1988 г. На появление первой эталонной версии языка у Си ушло 7 лет (1971-1978), у Оберона 3 года (1985-1988).

Выполнил ли Си тогда свою задачу как язык системного программирования для реализации переносимой ОС UNIX? Вне всякого сомнения. Более того, Си был и поныне остаётся стандартом де-факто в качестве промежуточного языка (высокоуровневый ассемблер) для переноса софта на разные архитектуры. Генерация Си-кода вместо машинного для компиляторов с новых языков — самый быстрый путь дать им путёвку в жизнь и опробовать новые идеи на разных архитектурах. ОС Oberon строилась на отличных от UNIX принципах (прежде всего, на идеях модульности и динамической расширяемости). При этом она сохраняла моноязыковость ОС. Разумеется, строилась не на пустом месте (работы Xerox PARC и опыт OC Medos на Modula-2/Lilith).

В разработке проекта Oberon (1985-1993) основными забойщиками были проф. Никлаус Вирт (Niklaus Wirth) и проф. Ю.Гуткнехт (Juerg Gutknecht). Если первый занимался преимущественно языком Оберон, компилятором и ядром (базовыми модулями), то второй был архитектором системы Oberon. Гуткнехт в конце 1960-х годов работал в группе по программированию систем реального времени известной швейцарской авиакомпании Swissair. Потом поступил в ETH Zurich на факультет математики, после окончания учебы ушёл работать в IBM. Гуткнехт не вошел в состав группы по разработке Lilith и Modula-2; он влился в команду Вирта лишь в 1981 г. В 1985 г. они с Виртом отправились в длительную командировку за океан — в Пало-Альто (Xerox PARC). Там шло ознакомление с работами американцев над системой Cedar. Та поездка дала импульс к появлению проекта Oberon, работы над которым начались в сентябре-октябре 1985 г.

Развёрнутая информация о проекте Oberon (о принципах, заложенных при проектировании системы и языка) представлена в книге Вирта и Гуткнехта “Project Oberon — The Design of an Operating System and Compiler” (2005), которую авторы распространяют свободно.

Как и в случае с компьютером Lilith и ОС Medos, система Oberon создавалась для своей аппаратной архитектуры (Ceres, на базе процессоров National Semiconductor серии 32x32), где она претерпела существенные изменения в трёх разных вариантах для Ceres-1 (1985), Ceres-2 (1988), Ceres-3 (1990). В общем-то Вирт не собирался осуществлять перенос системы Oberon на другие архитектуры, что автоматически подразумевало открытие её остальному миру. Но, как вспоминает Микаэль Франц (Michael Franz), ученики-аспиранты убедили мэтра в необходимости этого шага. В период 1991-1993 гг. появились версии для Mac OS (Motorola 68020), SunOS (SPARC), IBM AIX (RIOS, RS/6000), DEC Ultrix (MIPS R2000), SGI IRIX (MIPS), HP-UX (PA-RISC), Windows и MS-DOS (Intel). Был осуществлён перенос на Atari, Amiga, на NextStep (Motorola 68xx0), на OpenVMS (Digital Alpha AXP). Перенос на Linux и Sun Solaris x86 (Intel) произошёл несколько позже — в 1999 г.

В 1991 г. началось размежевание версий — классическая Oberon V4 и новая Oberon System 3. Движущей силой второй ветви стал Юрг Гуткнехт. В 1994 г. была готова первая версия Native Oberon — реализации системы Oberon на голой машине на платформе Intel x86. То была отправная точка зарождения Bluebottle. Native Oberon помещалась на одной дискете 1,44 Мбайт, где была ОС, компилятор языка Оберон и сетевые средства (TCP/IP и др.) с поддержкой WWW (FTP, Telnet, HTTP). Как и другие варианты системы, Native Oberon свободно поставлялась в исходных текстах. Вёл Native Oberon Питер Мюллер (Pieter Muller). В 1995 г. в пару к нему был придан Патрик Реали (Patrik Reali), который занимался доводкой компилятора.

Летом 1998 г. Юрг Гуткнехт приезжал в Москву, где в АНХ (Академия народного хозяйства при Правительстве РФ) выступал с докладом по Oberon System 3 (я занимался организацией этого визита, как и ряда последующих). После России он направился на полгода в Редмонд, в Microsoft Research для работ над .NET. Именно тогда у него возникли идеи нового проекта: создание версии Оберона с активными объектами (Active Oberon) и переработка системы Oberon. Юрг Гуткнехт и Евгений Зуев (эксперт по Аде и C++, перешёл из МГУ в ETH Zurich в 2000 г.) в дальнейшем принимали активное участие в сотрудничестве с Microsoft Research в рамках проекта Project 7/7+ (разработка компиляторов для CLR, Common Language Runtime) в период проектирования и реализации платформы Microsoft .NET (1999-2002). В ходе разработки (по предложению Microsoft) компилятора Oberon for .NET и постоянных контактов с сотрудниками Microsoft Research (среди которых есть и выпускники ETH) ими был накоплен богатый опыт работы с новой языковой платформой.

Если до середины 1990-х годов Вирт был достаточно консервативен в отношении активных контактов с ведущими компаниями, то нехорошая история с Sun (на грани плагиата при раскрутке Java) его, по всей видимости, подтолкнула выйти из режима самоизоляции и принять активное ухаживание со стороны Microsoft. В Microsoft Research уехали некоторые ученики Вирта. Microsoft начала финансировать ряд исследовательских работ (Oberon for .NET, Active Oberon, Active C#, Zonnon и др.) и взяла на себя заботу об участии представителей ETH Zurich в ведущих международных конференциях и семинарах. Делала это небескорыстно. Влияние систем Oberon и Bluebottle на систему Singularity, разработанную в Microsoft Research, просматривается невооружённым глазом. Zonnon стал одним из основных пунктов сотрудничества, поскольку в этом языке, выросшем из Active Oberon, воплотились новые идеи, которые напрямую отображаются в .NET. См. "От Паскаля к языку Zonnon" (2003). Гуткнехт планирует осуществить перенос Bluebottle с Active Oberon на Zonnon, но только по достижении зрелости языка и компилятора.

Есть и другие заметные следы того, что Oberon не почила в Бозе. В рамках направления Mobile Web (ответ на наступление Google) сейчас идёт работа над проектом реинкарнации-переноса ОС Oberon в среду браузеров под JavaScript через реализацию Oberon Script (компилятор языка Оберон на JavaScript, 1080 строк исходного текста). Это дерзкая инициатива ученика Вирта — Ральфа Соммерера (Ralph Sommerer), который с 1998 г. работает в европейском отделении Microsoft Research в Кембридже. См. блог Ральфа Соммерера.

Теперь мы подходим к самой системе Bluebottle. Работы над ней велись в две стадии. Сначала разрабатывалось ядро (микроядро) AOS (Active Object System), которое одновременно является и исполняющей системой языка Active Oberon. Затем уже поверх него разрабатывались сервисный и прикладной уровни. Bluebottle стал обвязкой ядра AOS. Впервые в публичном доступе Bluebottle появилась 1 января 2003 г. Знакомство отечественной аудитории с Bluebottle прошло в июне 2003 г. на конференции Microsoft Academic Days в подмосковном Виноградово, а затем на закрытом семинаре в EPAM Systems.

Стоит заметить, что Bluebottle — не только и не столько исследовательский проект. Публично открытая часть – это “конверсия” реальных коммерческих проектов, которые в настоящее время ведут Юрг Гуткнехт и его коллеги, в частности, с японскими компаниями. Но эта тема закрыта NDA-соглашениями о неразглашении.

Subscribe

Comments for this post were disabled by the author