/sys/doc/ Documentation archive

Исследования в области системного ПО нерелевантны

Роб Пайк
Bell Labs
Lucent Technologies

rob@plan9.bell-labs.com
21 февраля 2000 года

Полемика

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

Может показаться, что написанный мною холст несколько темней действительности. Но это не так. Я определенно считаю текущую ситуацию по-настоящему скверной и требующей незамедлительных действий.

Тезис

Исследования в области системного ПО (ИОСПО) и возбуждение в компьютерной индустрии — вещи индифферентные.

Когда вам в последний раз попадалось привлекательное некоммерческое демо?

По иронии судьбы, во время, когда компьютинг считается дефиницией инноваций, исследованиям в области программных/аппаратных средств в университетах и промышленности характерна островность, окостенелость и, наконец, нерелевантность.

Тому есть множество причин, среди которых как устранимые, так и эндемичные.

Пути улучшения ситуации существуют, но они требуют усилий со стороны широких масс.

Определения

ИССЛЕДОВАНИЯ

В

ОБЛАСТИ

СИСТЕМНОГО

ПРОГРАММНОГО

ОБЕСПЕЧЕНИЯ

НЕРЕЛЕВАНТНЫ

Упадок в области


Появление новых операционных систем

«Кому сейчас нужна новая операционная система?» — спросите вы. Возможно — никому, но тогда имеет место мой тезис.

«Ну, а как же тогда быть с сонмами документов о файловых системах, производительности, безопасности, кэшировании Web и т.д., разве они ничего не значат?» — вновь вопрос из зала. Конечно значат, но кто вне области исследований обращает на них внимание?

Вклад ИОСПО в подъем

High-end рабочая станция:

1990
2000
Оборудование
33 MHz MIPS R3000
32 MB ОЗУ
10 Mbps
600 MHz Alpha или Pentium III
512 MB ОЗУ
10 Mbps Ethernet
Программы
Unix
X-Window
Emacs
TCP/IP
 
Unix
X-Window
Emacs
TCP/IP
Netscape
Языки

C
C++
 
 

C
C++
Java
Perl (немного)

Оборудование изменилось кардинальным образом, в то время как программные средства отстали.

Где же новшества и инновации?

По большей части, Microsoft. Вам задание: сравните ПО от Microsoft 1990-го года с 2000-м.

Если вы не согласны, я повторюсь, — Java и C++ — это как Windows и Macintosh: ответ индустрии на интересный, но технически недоработанный кусок системного ПО.

Если бы ИОСПО были релевантными, то в 70-х и 80-х годах мы с вами стали бы свидетелями появления новых операционных систем и языков программирования. Взамен, мы наблюдаем развитие программной индустрии, полностью игнорирующей исследования, и общество исследователей, которые пишут бумаги чаще, чем ПО.

Linux

Инновация? Новшество? Нет, это всего лишь еще одна копия того же старого материала.

СТАРЫЙ материал. Сравните софтверную разработку в среде Linux с Microsoft Visual Studio, или с одним из «тулкитов» (пакетов для разработчика) IBM Java/Web.

На самом же деле успех Linux является одним из сильнейших аргументов для моего тезиса: возбуждение, произведенное клоном старой операционной системы, демонстрирует вакуум, который общество ИОСПО не смогло заполнить.

Кроме того, «сообразительность» Linux не в ПО, но в модели разработки, едва ли торжество академической computer science (особенно в проектировании программ) по любым меркам.

Какие ИОСПО сейчас?

Web-кэширование, серверы, файловые системы, задержки сетевых пакетов и т.п. Производительность, периферия и приложения, но никоим образом не ядра или даже программы пользовательского уровня.

В общем и целом, эти псевдо-исследования суть всего-навсего масса измерений; неправильное понимание и неправильное использование научного метода.

Слишком много феноменологии: изобретение замещено наблюдением. Нашему взору открыты публикации сравнений времени ожидания прерываний в Linux и (которому противопоставляют) Windows. Согласен — они могут быть интересными, они даже могут быть релевантными, но — они не претендуют на роль исследований.

Стремясь к наукоемкости, на выходе получают «горстку» измерений: производительность мелочна плюс плохие диаграммы.

Контраст, новый язык или ОС могут заставить машину чувствовать различия, породить возбуждение, новизну. Но сегодня все это можно получить посредством крутого Web-сайта, либо более высокомощного процессора, либо какого-нибудь шустрого небольшого устройства, которое должно вскорости стать компьютером.

Искусство кануло в Лету.

Искусство — не есть наука, и именно в этом заключается суть проблемы. ИОСПО не могут быть просто наукой, в обязательном порядке должны наличествовать проектирование, разработка и искусство.

Что произошло?

Причин довольно-таки много:

Архитектура PC
Microsoft
Web
Стандарты
Ортодоксия
Изменение масштаба
Unix
Linux
Стартапы
«Бабушка»

PC

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

Даже в 80-х большинство систем перестраивалось для новых архитектур (RISC, iAPX/432, Lisp-машины). Дальше — больше. Основной источник интересных проблем и, возможно, интересных решений ушел в небытие.

Горы средств обращены на проектирование ПО, работающего на разных архитектурах. Так называемая портабельность. Но, при одинаковом АО — все работает одинаково.

Plan 9 по-праву достойна звания одной из самых портабельных операционных систем в мире.

И это лишь PC как АО; как ПО, это подобный тип истории.

Microsoft

На эту тему уже достаточно сказано. (Хотя люди будут и дальше продолжать молву.)

Microsoft является легкой мишенью, эта компания — козел отпущения, не настоящий источник трудностей.

Web

Web возник в начале 90-х годов и удивил общество computer science так сильно, как коммерция.

Со временем он начал доминировать в дискуссиях, но не произвел большого эффекта. Бизнес контролирует Web. (Web достался нам от физиков и процветает в индустрии.)

Брюс Линдсэй (Bruce Lindsay) из IBM: HDLC ~= HTTP/HTML; 3270-е были заменены на Web-броузеры. (Сравните с Visicalc и PC.)

Несмотря на огромный поток информации о кэшах, прокси, серверных архитектурах и т.п., исследование здесь присутствует лишь отчасти.

Стандарты

Чтобы быть жизнеспособной, компьютерная система должна поддерживать обширный список больших и часто изменяемых стандартов: TCP/IP, HTTP, HTML, XML, CORBA, Unicode, POSIX, NFS, SMB, MIME, POP, IMAP, X,…

Вы можете выполнять огромный объем работы, но если вы не считаетесь со стандартами, то вас непременно относят к маргиналам.

Задумайтесь только: около 90-95% работ (sic) над Plan 9 пришлось на непосредственное или косвенное обеспечение поддержки навязываемых внешне стандартов.

На другом уровне такое же влияние оказали инструкции архитектур, шины et cetera.

С такого рода внешне навязанной структурой для новизны была отброшена совсем крохотная составляющая «мусора».

Плюс, коммерческие компании-«владельцы» стандартов (напр., Microsoft, Cisco) для борьбы с конкурентами умышленно создают стандарты так, чтобы сторонним разработчикам было трудно придерживаться совместимости. Академия стала жертвой.

Ортодоксия

Сегодня те, кто получил докторскую степень, используют Unix, X, Emacs и TeX — это их мир. Часто это единственный мир, который когда-либо использовался для технических работ.

Двадцать лет тому назад у студентов был широкий выбор разновидностей операционных систем, с хорошими и не очень чертами.

Ныне новые служащие в нашей лаборатории приносят свой мир с собой, или ожидают, что он должен быть там, куда они идут. Это, быть может и разумно, но было время, когда присоединение к новой лаборатории давало шанс изучить новые горизонты работы.

Узкополосность опыта приводит к узкополосности в воображении.

Ситуация с языками программирования несколько менее удручающая — все больше программ уходят корнями к функциональным языкам и т.п. — но в языках также присутствует ортодоксия: C++ и Java.

В любой науке мы резервируем наши самые главные качества, чтобы в случае, если кто-нибудь когда-нибудь начнет доказывать нашу неправоту, достойно постоять за себя. Но когда речь заходит о computer science…

Изменение масштаба

При таких многочисленных, внешне навязываемых ограничениях и таком большом объеме уже сделанного, удельный вес интересной работы явственно требует усилий крупного масштаба. Для написания современной, реальной системы необходимо много человеко-лет. Очевидно, подобные проекты выходят за масштабы большинства университетских отделов.

Также, временной отрезок не короток: от разработки до финальной версии может пройти пять лет. Вновь, это выходит за масштабы большинства аспирантов.

Из вышесказанного выплывает, что индустрия стремится к созданию больших, определяющих проектов — операционных систем, инфраструктуры и т.п., при этом небольшие исследовательские группы для работы должны довольствоваться небольшими «поделками».

Посему сейчас наличествуют три возможных направления:

  1. Не создавать вообще. (Феноменология, не новые вещи.)
  2. Работать не над шириной, а над глубиной. (Микроспециализация, не системное ПО.)
  3. Выбор существующей вещи и ее доработка+изменение.

Я полагаю, главное объяснение кривой графика новых операционных систем в период 1979-1999 гг найдено.

Unix

Сегодня новые операционные системы стремятся к вхождению в ряд вариантов «ререализаций» Unix. Независимо от того, обладают они новой архитектурой или нет, первая пост-модификация — обретение слоя эмуляции Unix.

Как могут исследования операционных систем быть релевантными, когда результирующие операционные системы неразличимы?

В конце 70-х и начале 80-х годов бытовала претензия, что Unix убила исследования в области операционных систем, потому-что никто не изъявлял желание пробовать что-нибудь иное. Признаюсь, тогда я не верил в это. Сегодня мне неохотно приходится соглашаться с тем, что претензия верна (вопреки Microsoft).

Жертва своего же успеха: портабельность привела к повсеместности. Архитектура многого не значила, так что теперь есть только одна.

Linux хоть и горячая новая вещица… но это еще один клон Unix.

Linux — академическая Microsoft Windows

Святая троица — Linux, gcc и Netscape.

Безусловно, прибавился еще один ортодокс.

Они стали иконами не благодаря качеству, а потому что они не Microsoft.

Но технически они не такие горячие. Microsoft неплохо поработала, и я считаю, что большинство (но не все) соответствующих продуктов этой корпорации по техническим меркам обгоняют троицу. И они продолжают улучшаться.

Linux может угодить в ловушку Macintosh: самодовольная изоляция, приводящая к моральному износу.

Кроме того, ИОСПО делают совсем мало для продвижения троицы.

Стартапы

Стартапы являются доминирующей конкуренцией для академии, идей, финансирования, персонала и студентов. (Другие — Microsoft, большие корпорации, легионы свободных хакеров и IETF.)

В свою очередь, профинансированные правительством и, особенно, корпоративные исследования направлены на очень быстрое «возвращение инвестиций».

Искажаются фундаментальные приоритеты:

Показатель качества неверный.

Сейчас в Стенфордском университете всячески способствует студентам в создании собственных стартапов, поскольку удачные CEO приносят поощрительные деньги. Ясно одно — новый президент Стенфорда — удачный компьютерный предприниматель.

«Бабушка»

«Бабушка» на линии: индустрия разрабатывает системы и сервисы для обычных людей.

Фокус на приложения и устройства, не на инфраструктуру и архитектуру, домен ИОСПО.

Причина — в основном маркетинг, результат — распространение несовместимых устройств. Вы не можете делать деньги на ПО, а только на аппаратных средствах, точнее — нишевыхо продуктах (не Большая Новая Идея).

Программируемость — один раз Большая Идея в компьютинге — упала придорожно.

И в очередной раз, ИОСПО проигрывают.

Что делать?

В стартапах наблюдается сильная фокусация на коротком периоде разработки и получении практических результатов. Большие корпорации слишком озабочены существующими приоритетами. Стартапы добывают энергию из исследований. Но спешка оставляет подготовленные для перемещения города-призраки.

История Фиона (Fiona): «Почему вы используете Plan 9?».

Возвратимся назад и поразмышляем над системо-строительством. Узкополосность — нерелевантна; область — релевантна: в этом заключается ипостась системы.

Работа над поведением и работой систем, не ограничиваясь сравнением. Концентрация на интерфейсы и архитектуры, не ограничиваясь проектированием.

Будьте мужественны. Пробуйте разные вещи, экспериментируйте. Попробуйте представить крутое демо.

Ассигнования организаций: более сильное финансирование, особенно долгосрочных проектов. Университеты в свою очередь должны использовать пути вовлечения студентов в долгосрочные проекты.

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

Что создавать?

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

Только область графических интерфейсов пользователя (GUI) поддалась серьезным разработкам, но лучшие идеи, все-же, датируются 70-ми годами. (Иногда получалось неважно; сегодня экран покрыт маленькими пиктограммами, при этом преобладает неразбериха.) Несомненно, есть и другие возможности. (ИП Linux не лучше даже Windows!)

Было много разговоров о компонентных архитектурах, но единственный действительный успех принадлежит Unix pipes. Должна быть возможность построения интерактивных и распределенных приложений из составляющих.

Будущее в распределенных вычислениях, но в этой области обществом языков было сделано чрезвычайно мало.

Web доминирует над тем, как системы представляют и используют информацию: модель принудительного взаимодействия; пользователь должен пойти и получить то, в чем он нуждается. Взамен, было бы весьма неплохо прийти к модели транспорта данных пользователю.

Системное администрирование представляет собой труднорешимую проблему. Бескрайние просторы доступны для создания огромного, даже коммерческого, вклада.

Выводы

Мир решил какими он желает видеть компьютеры. Общество ИОСПО повлияло на это, но очень незначительно. Теперь же его вклад вообще прекратился.

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

Общество — университеты, студенты, промышленность, органы финансирования,… — должно менять приоритеты.

Общество должно создавать и использовать необычные идеи.

Общество должно отделять исследования от рыночной капитализации.

Оригинал
© Перевод на русский язык, Андрей С. Кухар, 2004