Я это читал почти два года назад, когда слайды были выложены на сеть вскоре после самого выступления.
Ничего за эти два года не изменилось.
Приходится, как ни неохота, признать правоту Пайка. Академические исследования в области software в наше время в большинстве своём одновременно мелочны и бессмысленны, т.к. практически никто их не читает и ими не пользуется. По-настоящему новых операционных систем давно уже не видать, а когда появляются, они не выходят за пределы горстки энтузиастов.
И при всём уважении к проектам типа Линукса или (особо любимого мной) FreeBSD - это технологии двадцатилетней давности. Монолитное ядро, всё та же иерархичная организация драйверов и файловых систем с практически такими же интерфейсами. В некоторых случаях технология движется назад во времени. Первоначальное устройство ядра Windows NT было - чётко разделённые по своим обязанностям (жёсткая изоляция по функциональности) модули, кооперирующие друг с другом и драйверами; вся графика сидит в user-mode и не пачкает ядро; иерархия IQRL позволяет даже отправлять в своп куски ядра. С переходом к NT 4.0 и далее графику, быстроты ради, запихали в ядро (понизив стабильность и создав кучу дыр в security); модули во многом потеряли те зачатки автономности, что были, и теперь о них напоминает только конвенция по наименованию функций; ядро и драйверы намертво засели в памяти.
Чувство разочарования, гнетущее Пайка, очевидно - и его легко понять. Он - один из ведущих разработчиков Plan 9, системы, очень похожей на Юникс, только намного лучше. Среди множества удачных находок Plan 9 мне лично самой главной кажется последовательное воплощение оригинальной юниксовской идеи "всё через файловую систему". От идеи этой в современных Юниксах остаются /dev и специальные файлы (напр. named pipes). Между тем вокруг наросло множество интерфейсов: одни только сокеты и TCP/IP чего стоят, не говоря уж о всяких других. Plan 9 сбрасывает множество разных интерфейсов обратно на уровень файловой системы, не в виде отдельного мелкого хэка типа /proc, а в качестве фундаментальной идеи. Основное отличие заключается в том, что каждый процесс по-своему видит глобальную файловую систему и может динамически этим видом управлять. Это, конечно, во-первых очень упрощает все проблемы, связанные с разрешениями к доступу (нет доступа к ресурсу - ты его не видишь) и иерархиями (какая-то программа хочет видеть библиотеки там-то - специально для неё сделаем вид, что там они и есть). Файловая система перестаёт быть жёстким деревом файлов и директорий, изредка меняющимся при помощи mount points и файлов девайсов; она становится гибким виртуальным уровнем, полностью характеризующим общение программы с ОС и окружающим миром, бесконечно разнообразным и легко управляемым.
Всё это исключительно интересно и потрясающе удобно и полезно. Но Plan 9 как был, так и остаётся уделом небольшой группы разработчиков, отдельных факультетов CS и разных энтузиастов. Несмотря на свою близость к Юниксу, несмотря даже на усилия разработчиков по поддержке юниксовых интерфейсов и лёгкости перевода существующих юниксовских программ на почву Plan 9, несмотря на опен-сорс, всё это остаётся маргинальным, малоизвестным, редко используемым. Почему? Потому что хватает Линукса. Потому что хватает Windows. Никто - включая технически грамотных, любопытных юзеров, включая даже академическое сообщество - не хочет новых систем, радикально новых устройств. Как насчёт новой оконной системы для Юникса, улучшающей совершенно безумную низкоуровневую структуру протокола X'а с его гигантскими потоками траффика? Э, нет, мы лучше выпустим новую версию XFree и напишем драйвер для ещё одной графической карточки с супер-новым акселератором.
Несколько лет назад я с очень большим интересом следил за системой Inferno. Её придумали те же люди, что сделали Plan 9, и её можно примерно охарактеризовать как мини - Plan 9 на основе виртуальной машины. У неё есть свой язык - Limbo, основанный на C, со встроенной в язык параллелизацией (concurrency), не объектно ориентированный, но на мой взгляд очень часто более удобный и эффективный, чем Джава; всё компилируется под виртуальную машину Dis, которую мне в свою очередь нравилась больше, чем JVM. И главное - при своём очень маленьком размере Inferno сохраняет основные достоинства Plan 9.
Да, она не open-source, но ведь и Джава тоже не open-source. Между тем о Инферно (и Лимбо) сейчас почти никто не помнит, а средненький язык Джава, не содержащий абсолютно ни одной новой идеи... А была бы Inferno open-source, это бы что-то сильно изменило? Plan 9 уже почти два года open-source, и что?
Да, я понимаю, что за Джавой стояла мощь Sun Microsystems. Что это был мощный коммерческий проект, в пиар которого были вложены огромные деньги. И т.д. и т.п. Я не думаю, что Инферно должна была, или могла, обойти Джаву по популярности. Но несомненно, какую-то нетривиальную нишу она могла себе создать - по крайней мере в академическом сообществе, где как бы должны ценить техническое превосходство. Где должны стремиться находить и развивать лучшее и новое, а не универсальное и привычное, или проталкиваемое на рынок менеджерами. Об этом, собственно, и пишет Пайк. И да, я его хорошо понимаю. Но сомневаюсь, что можно в этой ситуации что-то изменить.
no subject
Date: 2002-04-18 01:46 am (UTC)Java. Ðа, Ñбогий ÑзÑк, омеÑзиÑелÑнÑй. Ðемногим лÑÑÑе C++, но ÑÑо вÑÑ ÑигнÑ. Ðлавное, ÑÑо Ñ Java впеÑвÑе на маÑÑовом ÑÑнке поÑвилаÑÑ ÑÐµÑ Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñного пÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ð¸Ð´ÐµÑ reusability впеÑвÑе ÑÑала ÑеалÑноÑÑÑÑ Ð² оÑлиÑие Ð¾Ñ Ñ Ð°Ð¾Ñа пÑедÑдÑÑÐ¸Ñ Ð»ÐµÑ. Ð¡ÐµÐ¼Ñ Ð»ÐµÑ Ð½Ð°Ð·Ð°Ð´, наÑав в запÑдÑÐ¸Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð·Ð³Ð¾Ð² вÑем под видом "write once, run everywhere", Сан вÑÑ-Ñаки пÑоизвÑл ÑеволÑÑÐ¸Ñ Ð¸ Ñмог ÑодиÑÑ Ð½ÐµÑÑо болÑÑее, Ñем еÑÑ Ð¾Ð´Ð¸Ð½ ÑзÑк Ñ ÐµÑÑ Ð¾Ð´Ð½Ð¾Ð¹ виÑÑÑалÑной маÑиной. J2EE - Ð²Ð¾Ñ Ð³Ð»Ð°Ð²Ð½Ð¾Ðµ доÑÑоинÑÑво ЯвÑ, ÑÑо - гиганÑÑкий ÑкаÑок в пÑогÑаммной индÑÑÑÑии, оÑÑалÑное - мелоÑи. СейÑÐ°Ñ ÐайкÑоÑоÑÑ, оÑÑÑав Ñнова Ð¾Ñ ÑÑнка, навÑÑÑÑÑÐ²Ð°ÐµÑ Ð³Ð¸Ð³Ð°Ð½ÑÑкими Ñагами и, как ÑÑо не поÑазиÑелÑно, впеÑвÑе гÑамоÑно подгоÑовивÑиÑÑ - нанÑв кÑÑÑ ÑмнÑÑ Ð¸ извеÑÑнÑÑ Ð»Ñдей. .NET, на мой взглÑд, - ÑÑо логиÑеÑкое пÑодолжение (и завеÑÑение) идей J2EE, пÑинÑипиалÑно нового Ñам Ð½ÐµÑ Ð½Ð¸Ñего, лиÑÑ ÑлиÑовка и ÑлÑÑÑение идей конкÑÑенÑа, а ÑÐ¾Ñ Ð¶Ðµ C# лиÑÑ Ð½ÐµÐ¼Ð½Ð¾Ð³Ð¸Ð¼ лÑÑÑе ЯвÑ. ÐÑÑÑ ÑовеÑÑенно замеÑаÑелÑнÑй ÑзÑк Eiffel, напÑимеÑ. Ðго внедÑение позволило Ð±Ñ ÑокÑаÑиÑÑ Ð·Ð°ÑÑаÑÑ Ð½Ð° Ñоздание Ñложного ÐРна поÑÑдки в ÑÑавнении Ñ Ð¯Ð²Ð¾Ð¹ и С++, Ð½Ñ Ð¸ где ÑейÑÐ°Ñ Eiffel? ХоÑоÑо, ÑÑо Ñ Ð¾ÑÑ Ð¸Ð´ÐµÐ¸ ÐейеÑа о дизайне по конÑÑакÑÑ ÑеÑез 15 Ð»ÐµÑ Ð½Ð°Ñли понимание и в поÑледней веÑÑии JDK еÑÑÑ Ð´Ð°Ð¶Ðµ клÑÑевое Ñлово assert, и оно ÑабоÑаеÑ.
ÐоÑоÑе, на маÑÑовом ÑÑнке никогда не бÑло и не бÑÐ´ÐµÑ Ð¼Ð°ÑÑовÑÑ Ð¿Ð¾ÑÑÑÑений, как Ñ ÑÑиÑаÑ, поÑÐ¾Ð¼Ñ ÑÑо Ñам вÑÑ Ð¾Ð¿ÑеделÑеÑÑÑ Ð¸Ð´ÐµÐµÐ¹ заÑабаÑÑÐ²Ð°Ð½Ð¸Ñ "длинного доллаÑа", а поÑÑÑÑÐµÐ½Ð¸Ñ - ÑÑо ÑколÑÐ·ÐºÐ°Ñ Ð´Ð¾Ñожка, можно Ð²ÐµÐ´Ñ Ð¸ ÑоÑваÑÑÑÑ Ð²Ð½Ð¸Ð· или пÑоÑÑо не поÑпеÑÑ Ð·Ð° вÑеми, как ÑÑо ÑлÑÑилоÑÑ Ñ DEC и SGI, напÑимеÑ. Ð Ñнок дикÑÑÐµÑ Ð¸Ð½Ñе ÑÑебованиÑ, нежели заÑаÑÑÑÑ ÑÑого Ñ Ð¾ÑеÑÑÑ.
РвÑÑ, ÑÑо оÑÑаÑÑÑÑ ÑÐ±Ð¾ÐºÑ - ÑÑо ноÑÑалÑÐ³Ð¸Ñ Ð¸Ð»Ð¸ лÑÐ³ÐºÐ°Ñ Ð³ÑÑÑÑÑ Ñ ÑÐµÑ , кÑо не ÑавнодÑÑен.
P.S. РлимиÑ-Ñо на Ð´Ð»Ð¸Ð½Ñ Ð¿Ð¾Ð»Ñ Ð²Ð²Ð¾Ð´Ð° надо Ð±Ñ ÑвелиÑиÑÑ, ага?
no subject
Ð Ð´Ð»Ð¸Ð½Ñ ÑвелиÑим воÑ-воÑ, ÑÑо недоÑмоÑÑ.