Семь чудес света, созданных в XX веке. Чудо третье: UNIX / Блог Константина Крылова на «Спутнике и Погроме»

Сначала немного объяснений. Понятное дело, что операционная система — объект нематериальный. В самом начале нашего цикла я написал о том, что нематериальные объекты попадают в поле нашего рассмотрения. «Мы же вас предупреждали».

Интереснее вопрос, является ли UNIX объектом а) уникальным и неповторимым на большой исторической дистанции, б) объектом монументальным, то есть прекрасным в своём величии.

По первому пункту. UNIX — старейшая операционная система из ныне актуальных. Конечно, специалист не преминет отметить, что до сих пор живо потомство древней OS/360, ныне продающееся под именем z/OS, а первая VM была сделана в 1960-м и перенесена на мейнфреймы IBM в 1964-м. Обе эксплуатируются до сих пор; однако ставить их рядом с UNIX и его потомками, хотя бы по значимости и распространённости, было бы казуистической натяжкой. Без них жить можно; без UNIХ — нет.

Первый вариант легендарной системы (тогда он назывался UNICS) был создан в 1969 (и выпущен в 1971) году в США в компании AT&T — а точнее в исследовательском центре Bell Telephone Laboratories. Никаких далеко идущих планов на новую систему не строили — она была нужна для чисто практических задач. Единственное, но сверхважное отличие от всех прочих состояло в том, что очередные версии системы начали писать не на автокоде или ассемблере, а на языке программирования высокого уровня, в данном случае — на C (создан в 1973-м Деннисом Ритчи на основе языка BCPL). Это уменьшило производительность системы, но дало ей возможность легко устанавливаться на любых компьютерах — достаточно было написать компилятор С, чтобы это сделать. Для гуманитариев и любителей фэнтези: представьте себе, что вы будете несколько медленнее думать, зато приобретёте способности оборотня и сможете вселяться в тела любых людей и животных… Сам же язык C и его потомки — например, C++ — обрели невероятную популярность. У какого олдфага не замрёт сердце при виде строки #include («подгрузить библиотеку стандартных функций ввода/вывода»)? Не с этой ли строки началась его программерская жизнь? А ведь сейчас какой-нибудь одарённый мальчик впервые в жизни своими нежными пальчиками набирает эту же самую строчку!

Но прочь лирику! По второму пункту. Сейчас идеи, принципы и отчасти программный код UNIX положены в основу таких разных — казалось бы — систем, как линукс и линуксоиды, с одной стороны, и MacOS (точнее, его ядро Darwin) — с другой. Сюда же стоит отнести ОС Solaris и многочисленное семейство пост-BSD, являющихся прямыми генетическими потомками UNIX. Стоит также отметить, что попытки сделать из пресловутой «винды» некое подобие UNIX начались с версии NT и не закончились до сих пор. Ну-ну.

Прим.: Автор не хочет вступать в дискуссию на тему «Линукс это Юникс или всё-таки нет».

Всё же изложим наши аргументы.

Я лично считаю, что эта система, созданная по образу и подобию UNIX. С точки зрения функционала, это разновидность UNIX. С точки зрения генетической — в её коде нет ни одного существенного фрагмента, прямо заимствованного из UNIX. Если считать операционную систему живым существом, то значим второй аргумент. Если инструментом — то первый. Мы здесь подходим к UNIX как к архитектурному объекту. Если к старинной усадьбе пристроят ещё одно крыло, будет ли она той же самой усадьбой? Скорее да, чем нет. Впрочем, на дальнейшее это не влияет.

Не ускользнёт от нашего внимания и абсолютное доминирование линукса на суперкомпьютерах (в 2014 году 485 из 500 мощнейших компьютеров мира работали под Linux — ну то есть «все вообще»). На Linux функционирует и современный лидер суперкомпьютеров — китайский Sunway TaihuLight (93 ПФлопс). С другой стороны, макинтоши стали мейнстримом — не по распространённости (тут всё-таки важен вопрос цены), так по представительности. Например, я не помню американского фильма последних лет, где на экране появлялись бы какие-то другие компьютеры, кроме маков. Кстати, iOS для всеми любимых айфонов и айпадов — это тоже вариант Linux. Противостоящий же ему Андроид… ну вы поняли.

В общем, UNIX ныне стал общечеловеческой ценностью.

При этом надо понимать: то, что мы — благодаря UNIX — считаем абсолютно естественным и безальтернативным, на уровне «а как иначе-то», таковым отнюдь не является. Существовало по меньшей мере с десяток разных концепций операционных систем, большая часть которых сейчас представляет интерес только для историков вычислительной техники. Некоторые знаменитые операционные системы, доминировавшие в прошлом веке, ушли в прошлое, не оставив потомства. Например, перспективная — как многим казалась — OS/2 погибла. Иные сидят в своих нишах и не высовываются. Фактически единственной массовой альтернативой осталась Windows, и то благодаря дешевизне PS-образной техники и неудобству линукс-решений для персоналок.

Стоит поговорить о причинах этого успеха. Тем более они выходят далеко за рамки вычислительной техники. И техники вообще.

Предупреждаю сразу. Я не буду углубляться в чисто технические достоинства UNIX. Специалисты и так их знают, а неспециалистам вряд ли будет интересно читать про реентерабельность кода, «липкий бит», INOD и тому подобное. Это всё полезные вещи, но я буду говорить о том, что понятно любому человеку, севшему за компьютер — в том числе виндоузный.

Начнём с того, что именно посредством UNIX утвердилась в умах концепция файла в его современном смысле. Опять же, специалист скажет, что файловая система в её современном виде, включая древовидность и название, появилась в 1961-м в Burroughs MCP и MIT CTSS. Но кому сейчас известны эти имена? А вот UNIX развила, довела до ума и популяризовала концепцию.

Сейчас никому не нужно объяснять, что такое файл. Дети усваивают это вместе с основными понятиями, описывающими наш мир. Для современного городского ребёнка труднее понять, что такое «пойма» или «затон». Потому что это какие-то абстрактные понятия из книжек, а вот файл — реальность, данная в ощущениях.

Но так было не всегда. Более того, сам принцип хранения и структурирования информации именно в файлах — нов и неочевиден.

Начнём с определений. Файлом сейчас называют последовательность битов, имеющую начало и конец, а также набор атрибутов, среди которых важнейшим является имя, оно же адрес файла в файловой системе. Файл может являться набором данных любого типа или программой. Внешние источники и приёмники данных рассматриваются как файлы — например, устройства ввода/вывода. С точки зрения компьютера, он может печатать текст на принтер или в файл, разница невелика. Кроме файлов существуют каталоги (они же папки, директории и так далее). Это особые файлы, которые содержат информацию о других файлах и только её.

Читатель спросит — что ж тут такого? Разве может быть иначе? Может, конечно.

В UNIX и юниксоподобных системах применяется иерархическая (древовидная) структура доступа к файлам. Это далеко не единственный и не «самый лучший» способ хранения информации. Он даже не самый естественный. Например, присутствует чёткое разделение на «файлы» и «папки» (они же «директории» и т. п.). В папках хранится информация о файлах и других папках. Заметим, папка не хранит никакой другой информации — кроме собственного имени. Файл, в свою очередь, не может быть связан с другим файлом. Точнее, может — но очень коряво и не средствами ОС… Заметим, в бумаге и в интернете ситуация иная. Книга может быть связана с другой книгой посредством ссылок, сносок, библиографии. Интернет-страница связана с другими линками.

Но на компьютере всё организовано строго: объект может быть или конечным файлом, или папкой.

Или возьмём проблему пересечений. Иногда было бы очень удобно хранить один файл (или папку) в нескольких папках сразу. Но нет, юникс-подобные системы пересечений не допускают. В сетевых БД это возможно, но в стандартной файловой системе нет — поскольку выдерживается принцип единственности пути к любому файлу.

Наконец, самое простое — имя. У файла оно может быть одно и только одно полное имя. Есть, правда, механизм символических ссылок, «симлинков», они позволяют ссылаться на что угодно, включая другие ссылки и даже несуществующие объекты. Но нельзя сказать, что они сильно распространены и легко доступны обычному пользователю. Который работает с файл-менеджером. А также — ленив и нелюбопытен.

Может ли существовать система, где разница между файлами и каталогами стёрта? Да, конечно. Можно представить себе объекты, которые содержат как список информации о местоположении на компьютере других объектов, так и собственную информацию. Они напоминали бы набор интернет-страниц, ссылающихся друг на друга. Тут удобно было бы реализовать структуры данных на деревьях с пересечениями, а то и на B±деревьях. Каковые структуры, кстати, активно используются для хранения метаданных (например, в популярной файловой системе NTFS), но не для пользовательских нужд. Кроме того, интересно было бы создавать множество типов каталогов, кроме «пользовательский» и «системный», с привязкой к разным программам. Наконец, можно отказаться и от самого понятия файла как ограниченной совокупности произвольно взятых данных… но довольно об этом.

Теперь поговорим об идеологии процессов.

Главной фишкой UNIX долгое время считались так называемые конвейеры, они же каналы (pipeline). Это крайне простая и естественная идея. Состоит она в том, что результат работы одной программы может быть передан в качестве данных другим программам, одной или нескольким. Очень важно то, что передаются не «цифры» — хотя это, конечно, последовательность нулей и единиц — а символы. То есть по умолчанию они обмениваются текстовыми данными, хотя могут интерпретировать их внутри себя как угодно. Собственно, всё.

И опять же, спросите вы — а как же иначе? Нет, ну правда?


Один из авторов Unix канадский ученый Брайан Керниган объясняет, что такое конвейеры: «Мы хотели, чтобы вы могли соединять программы друг с другом, как вы соединяете шланги с водой на своем садовом участке»

А ведь иначе очень даже может быть. Другие операционные системы не позволяют программам обмениваться данными напрямую. Там программа должна создать отдельный файл, куда она сбрасывает данные, а потом другая программа должна их оттуда забрать. Более того, с этого начинали. Если подумать, такая система кажется солиднее, что-ли. Разница тут как между складом, работающим через солидные магазины, и продажами с колёс. Хотя, конечно, UNIX позволяет выводить данные в файлы и т. п. То есть «можно и по-старенькому», но возможность составлять цепочки из функций, каждая из которых питается плодами труда предыдущей (примерно как в добром фильме «Человеческая многоножка»), очень облегчает и упрощает жизнь.

Я мог бы и дальше описывать всё это, но поберегу внимание читателя. Важен вывод: UNIX стал источником концепций, которые мы воспринимаем как естественные и необсуждаемые. Мы не можем подвергнуть их сомнению — да и не хотим. Просто потому, что всё это отлично работает. Существуют системы, не ведущие своё начало от Юникса, но активно использующие все открытия, сделанные его создателями. Альтернатив нет. А те, которые есть — смешны, корявы и не заслуживают рассмотрения.

Теперь перейдём — как мы это обычно делаем — от вещей к людям.

Ближайшим аналогом UNIX в политике является Вестминстерская система (или «модель»).

Имеется в виду то, что мы называем «современной демократией». Хотя она была создана в конкретное время и в конкретном месте, на что указывает само название. Это система, естественным образом выросшая — как дуб из жёлудя — из самого сердца британского духа. Она складывалась столетиями. От Великой Хартии Вольностей (1215) — и до Трехгодичного Акта 1694 г., Акта о должностях 1707 г., трёх законах «О народном представительстве» 1832, 1867 и 1884 гг. и т. д. и т. п. В результате было создано что-то абсолютно чудесное, сверхсовершенное. А именно — система, мудро и справедливо распределяющая права и обязанности, устанавливающая систему сдержек и противовесов, позволяющая избегать крайностей и при этом удивительно изящная. Это набор красивейших решений — начиная с понятия кабинета министров и кончая, скажем, тонкой и точной настройкой системы «вотум недоверия правительству — праве правительства распускать палату общин». А также — современное понимание многопартийной системы, понятие лояльной оппозиции, ответственного правительства… да вообще всё, всё!

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

Хорошо ли это?

Практически, наверное, да. А теоретически — не очень. Потому что заворожённость одной-единственной моделью — это всегда плохо. Именно по этой причине при тотальном господстве юниксовых решений люди до сих пор сочиняют какие-то новые операционные системы. Которые, наверное, не имеют никаких коммерческих перспектив. Зато в них могут быть реализованы интересные принципы. Которые могут быть впоследствии востребованы хотя бы для каких-то классов задач.

Опять же не обойдёмся без примеров. Вестминстерская система в её нынешнем виде предполагает, что депутаты парламента выбираются «от всего населения» по территориальному принципу. При этом вся история континентальной Европы и даже части Азии — это история сословных представительств. Скорее всего, это устаревший и негодный принцип. Однако совсем уж упускать его из виду не стоит. Потому что некоторые государства используют элементы сословного представительства до сих пор. Например, в Бирме (Мьянме) четверть мест в парламенте зарезервирована за военными. Это выглядит диковато, зато эта мера позволила аккуратно приземлить претензии армии на власть, отменить режим чрезвычайного положения (продолжавшийся 60 лет — да, и так можно) и создать предпосылки для реформ. Да, кстати, Бирма-Мьянма — бывшая британская колония. Не входящая в Содружество, но сохранившая многие британские институты. Тем интереснее вышеописанный неожиданный ход.

Или вот, скажем, система голосования. Сейчас почти везде принята избирательная система, построенная на принципе «один голос — за одного кандидата или один партийный список». Однако те же хитроумные британцы ещё в середине XIX века изобрели ещё несколько систем, из которых самая интересная — это система единственного передаваемого голоса, позволяющая ранжировать кандидатов по предпочтительности. Это уже было опробовано в нескольких странах — в основном почему-то связанных с Британией. Например, в Австралии и Ирландии.

К чему я всё это рассказываю? К тому, что даже самые удачные решения не должны застить нам глаза. Мы должны помнить: «всегда можно сделать иначе». Без такого понимания невозможно никакое творчество — что в IT-технологиях, что в государственном строительстве, что в искусстве, что везде.

Это не значит, что «иначе всегда лучше». Некоторые идеи лучше не реализовывать. Но забывать о них не следует. А главное — сохранять в себе способность к изобретательству.

Ибо — кто знает, что понадобится завтра?


blog comments powered by Disqus

Добавить комментарий



О проекте Спутник

"Спутник и погром" - Американско-израильский информационный проект по высмеиванию революционной ситуации в России 2014 года. Активно публикует уникальные материалы с целью вызвать национальную ненависть среди русскоязычного народа.

Последние новости

 

Революция 5.11.2024