CITKIT.ru - свободные мысли о свободном софте
Деловая газета CitCity.ru Библиотека CITForum.ru Форумы Курилка
Каталог софта Движение Open Source Дискуссионный клуб Дистрибутивы Окружение Приложения Заметки Разное
19.09.2019

Последние комментарии

ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)
24 December, 22:53
Kubuntu Feisty (15)
24 December, 18:42
Один на один с Windows XP (3758)
24 December, 11:46

Каталог софта

Статьи

Дискуссионный клуб
Linux в школе
Open Source и деньги
Open Source и жизнь
Windows vs Linux
Копирайт
Кто такие анонимусы
Лицензии
Нетбуки
Нужен ли русский Linux?
Пользователи
Дистрибутивы
Идеология
Выбор дистрибутива
Archlinux & CRUX
Debian
Fedora
Gentoo
LFS
LiveCD
Mandriva
OpenSolaris
Slackware
Zenwalk
Другие линуксы
BSD
MINIX
Движение Open Source
История
Классика жанра
Окружение
shell
Библиотеки UI
Графические среды
Шрифты
Приложения
Безопасность
Управление пакетами
Разное
Linuxformat. Колонки Алексея Федорчука
Заметки
Блогометки
Файловые системы
Заметки о ядре

Заметки

О бедной системе замолвите слово…

CITKIT.ru
Цикл "Операционные системы:
Ностальгия по будущему
"

Поздравьте меня, после сотни комментариев к предыдущим заметкам, отвечать на которые мне не захотелось, я получил по почте письмо от действительно заинтересованного человека. Его замечания и вопросы мне очень понравились, и я решил процитировать это письмо (с личного разрешения автора, который, однако, просил не называть его полного имени, а именовать просто Виктором), снабдить цитаты своими ответами и комментариями и все вместе это опубликовать. Может быть, я тем самым отвечу на вопросы тех читателей, которым, как и мне, не захотелось участвовать в шумном и бестолковом обсуждении предыдущих заметок.

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

На самом деле, по большому счету сейчас мне не симпатична операционная система UNIX тем, что она слишком стара для операционных систем. Все-таки ей уже почти 40 лет. За это время произошли колоссальные сдвиги в компьютерной технике, возникла мощная софтверная индустрия, компьютеры стали по-настоящему массовыми, а ОС UNIX в своей основе не изменилась. Что не говори, а операционные системы – это не то же, что, например, вино, которое с возрастом набирает аромат, или бронза, которая с годами покрывается благородной патиной. Во всех областях программирования, в том числе, и в области операционных систем требуется развитие.

По ходу прочтения статьи я увидел 2 аргумента, выдвинутых Вами против этой системы.

1. Первый заключается в том, что в годы Вашей молодости Вы и Ваши коллеги, молодые перспективные инженеры-специалисты, смотрели на эту систему как на массовую и популистскую. Т. е. как на примитивщину, рассчитанную на массового малограмотного пользователя (вроде современной Windows). Как на шаг назад в области тогдашних информационных технологий. ... Кстати, в качестве альтернативы Вы привели систему Multics, как пример богатой, развитой, полноценной ОС. Но вроде бы многие источники указывают на ее чрезмерную переусложненность, на трудность написания под нее программ, не содержащих тонких системных ошибок. А ведь это сомнительный плюс...

Прошу обратить внимание, что я вспоминал о том времени, когда мне и моим друзьям – бывшим однокурсникам – было по 20 с небольшим лет. Именно тогда мы с ужасным снобизмом отнеслись к появлению ОС UNIX. Вообще, один и тот же человек может относиться к одной и той же операционной системе по-разному в зависимости от своих текущих потребностей. Мне многое нравилось, а кое-что не нравилось в ОС UNIX с позиции разработчика операционных систем. Мне многое нравилось, кое-что очень нравилось, а кое-что очень не нравилось в ОС UNIX с позиции разработчика программного обеспечения в среде UNIX. Наконец, мне всегда ужасно нравилось, что я понимаю поведение ОС UNIX, в котором (по крайней мере, раньше) никогда не возникали шарады, ужасно всех раздражающие при работе с Windows.

И в той же манере я могу сказать про Multics. Мне страшно нравились многие архитектурные идеи Multics. Они были красивы, с ними было приятно разбираться, их было интересно использовать для развития собственных идей. Но когда мы реализовали эти собственные идеи, возникшие под влиянием Multics, оказалось, что программировать в среде ОС ЦП АС-6 интересно и увлекательно, но (а) для этого требуется специальная подготовка, и (б) даже при наличии такой подготовки в программах встречаются трудно находящиеся и редко проявляющиеся ошибки. И в этом смысле ОС Multics была хуже ОС UNIX.

Так вот, более всего для меня обидно то, что со временем в UNIX перетекли многие идеи Multics, некоторые из которых мне нравятся во всех отношениях (сегментированная виртуальная память, например), а некоторые категорически не нравятся с позиции программиста (легковесные процессы на общей виртуальной памяти). И в результате внедрения этих идей, которые мне не нравятся, ОС UNIX не стала такой красивой, как Multics, а программировать теперь так же неудобно и опасно.

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

А давайте разберемся, почему ОС UNIX стала главенствующей. Начнем с того, что отцы-основатели UNIX делали систему под себя. Им нужна была удобная (для их целей) ОС, которую можно было бы легко перенести на другую машину (поскольку машины в AT&T менялись). Потом оказалось, что и другим людям очень приятно, когда при смене аппаратной платформы ты остаешься в привычной тебе среде, а для запуска программ, разработанных на предыдущей машине, достаточно эти программы перекомпилировать. ОС UNIX была первой переносимой системой, и она не была ужасной. Поэтому ее приняли массы. А вслед за принятием де-факто начался процесс стандартизации интерфейсов, сертификации реализаций и т.д. То есть, ОС UNIX не то чтобы затмила остальные операционные системы, благодаря своим исключительным качествам. Она их вытеснила из-за удобства широких масс пользователей, которым проще было понять одну операционную среду.

Кстати, это обстоятельство не следует преуменьшать. Когда мы разрабатывали GNU SQL Server, то начинали работать на старых рабочих станциях Sun Sparc-1 в среде Solaris (тогда основанной еще на BSD UNIX), потом без всяких хлопот переехали на платформу Data General с ОС DG-UX (клон System V 4.0) и завершили проект на VAX 8550 c ОС Ultrix (основанной опять же на BSD UNIX). Но нельзя сказать, чтобы хотя бы в какой-то момент мы были без ума от UNIX.

Взять, к примеру, язык программирования C. Он тоже оставил в тени множество других языков программирования, которыми раньше широко пользовались …

Если говорить про язык C, то, во-первых, я его тоже очень люблю, хотя и кривой он до чрезвычайности. А во-вторых, по мне UNIX, C и Shell – близнецы-братья. Где бы мне не приходилось программировать на языке С (а приходилось это делать даже для MS DOS), я подразумевал UNIX (благодаря обязательности библиотеки stdio и собственных библиотек, требуемых стандартом языка). А Shell без использования средств перенаправления ввода-вывода – это уже и не Shell.

Так что язык C «оставил в тени» другие языки только потому, что только язык C позволял программисту на всю катушку использовать возможности UNIX. Ведь забавно, что в языке C вроде бы и отсутствуют собственные операции ввода-вывода, все делается только через библиотечные функции, а разорвать связь языка и его библиотек невозможно.

А если совсем честно говорить, то и не было до появления языка C других языков, пригодных для системного программирования, в частности, для программирования операционных систем. Был BCPL, из которого C и вырос, но в нем вообще не было типизации, т.е., фактически, все ошибки уходили на время выполнения программы. А больше ничего и не было. Так что и вытеснять-то было особенно нечего, кроме языков ассемблера, а уж ими-то программисты были сыты по горло :-(

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

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

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

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

Конечно, здесь нужно было бы для начала понять, что такое «универсальность». Мне это было понятно 40 лет назад: универсальная операционная система – это ОС, одновременно поддерживающая режимы пакетной обработки заданий, разделения времени и реального времени. А что это сегодня? Нужны ли на персональном компьютере все возможности операционной системы, которая может использоваться на сервере баз данных? И наоборот. Здесь, похоже, речь идет не об универсальности в функциональном смысле, а о наличии универсальной базы кода, на основе которого генерируются фактически специализированные операционные системы.

Универсальна ли, к примеру, СУБД Oracle? Если да, то почему в каждом новом ее выпуске появляются сотни новых функциональных возможностей, которые добавляются к тысячам возможностей, еще не освоенных пользователями после предыдущего выпуска.

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

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

Вы высказали в одной из своих статей мысль о том, что Unix – система, очень сильно привязанная к архитектуре компьютера PDP-11 и что любой ее перенос на другую аппаратную платформу выглядит несколько искусственно. С другой стороны, разработчики Unix, как и языка C всегда утверждали, что и Unix, и С аппаратно-независимы. В самом деле, ну что такого необычного в компьютере PDP-11 и других машинах от DEC, что бы сделало перенос ОС с них на другой компьютер корявым и неестественным?

Давайте вспомним UNIX на платформе PDP-11. Машина 16-разрядная, так что в виртуальной памяти процесса помещается 2^16 байт, включая код программы, данные и стек. До появления ОС UNIX для работы больших программ на таких машинах использовали оверлеи, т.е. программист заранее решал, какая часть программы и данных в каждый конкретный момент времени должна находиться в памяти процесса. Это очень неудобно, поскольку требует дополнительного и логически избыточного программирования.

Денис Ритчи сказал: негоже программистам писать отдельные программы длиннее 2^16. Если требуемой функциональности за счет кода такой длины достичь не удается, добавим еще одну или несколько отдельных программ, и пусть они будут звеньями конвейера обработки данных. Отсюда в UNIX появились системные вызовы fork(), exe(), pipe() и т.д. Пайпы в действительности удобны только для организации конвейеров. Иерархии тяжелых процессов прекрасно подходят для конвейерной обработки данных. Для обеспечения независимости написания программ-звеньев конвейера обеспечивается перенаправление ввода-вывода. В качестве побочного эффекта оказывается, что любая исполняемая программа автоматически становится командой командного интерпретатора Shell, средствами которого легко организуются конвейеры команд.

Все это исключительно логично, и логично именно в случае 16-разрядной PDP-11. Уже после появления 32-разрядных VAX-11 смысл пайпов при программировании стало трудно понять, и уже для решения совсем других задач появились семафоры, разделяемая память и очереди сообщений. Я уж не говорю про то, что в языке C команды PDP-11 просто высовываются (в частности, адресная арифметика).

… уважаемый автор, Вы действительно считаете Unix плохой операционной системой?

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

Исходная ОС UNIX была идеальна для программистов, поскольку на языке C было комфортно писать, весь код был синхронным, все ошибки легко повторялись и отлавливались. Но это до тех пор, пока не требовалось выжимать скорость за счет совмещения выполнения программы на процессоре с обменами с внешними устройствами. Для этого в исходной ОС UNIX уже требовались трюки, не всегда элегантные и эстетичные.

UNIX среднего возраста (уже c IPC, но еще без threads) мне нравилась. Достаточно дисциплинированное общение процессов (через общие сегменты и семафоры, очереди сообщений или сокеты), по-прежнему хорошая повторяемость ошибок. Несколько путало чрезмерное изобилие средств IPC, трудно было решить, в каких ситуациях одни лучше других. Ну и, конечно, опять-таки очень затруднительно было писать асинхронные программы.

UNIX старшего возраста (с потоками управления) я честно не люблю (хотя, конечно, смотря с чем сравнивать). Да, асинхронные программы стало легко писать, но отлаживать их так же трудно, как и 40 лет назад в Multics. Насколько я знаю, нелюбовь к легковесным процессам свойственна всем программистам, достаточно их распробовавшим.

Что в ней коряво и нестройно реализованы базовые идеи и механизмы? Что позднейшие добавления плохо сочетаются с предыдущей основной частью? Что система громоздка, ненадежна и медлительна? Что принятые в ней абстракции топорны, надуманны, не обеспечивают гибкости управления системой и программами, а принятые языковые средства (библиотека системных вызовов, интерфейс командных оболочек) неудобны для программиста? Что в ней нет гармонии частей и целого? Или же с этим в ней все обстоит нормально и Вам не нравится в ней что-то другое?

Да, многие базовые идеи и механизмы реализованы коряво и нестройно. Да, позднейшие добавления плохо сочетаются с предыдущей основной частью. Нет, хотя система и громоздка, она (среди своих лучших представителей) надежна и быстра. Абстракции не то, чтобы топорны, они даже хороши, но не в тех масштабах, в каких сейчас применяются. Например, абстракции файла и пайпа хороши для приложений текстовой обработки, для которых ОС UNIX в свое время и делалась. И уж на что я совершенно уверенно отвечу, так это на вопрос про гармонию.

Может быть, некоторая гармония присутствовала в ОС UNIX при ее рождении, но впоследствии она была утрачена. UNIX – это старая рабочая лошадь, изрядно потрудившаяся на человечество. Тут уж не до красоты и внутренней гармонии. И, скорее всего, вполне можно и дальше жить с UNIX-подобными системами, только нужно отдавать себе отчет, что румянами надолго возраст не скроешь.




Комментарии

Страницы комментариев: предыдущая :: 1 :: 2 :: 3 :: 4 :: 5 :: следующая

аноним$, Wed Jan 28 22:38:47 2009:
Павел Пасечник, среда, 28 января 2009 г. 15:59:59:
... Всё было разработано 20 и более лет назад.
------------
И колесо было "разработано" задолго до Р.Х.
Но сравни то колесо и ныне!
Все идет по спирали. :)))
Алексей Федорчук, Wed Jan 28 18:55:26 2009:
2 Павел Пасечник
> Всё было разработано 20 и более лет назад.
___
Это не только операционок касается :)
Вот здесь этот вопрос обсуждается уже давно:
http://forum.posix.ru/viewtopic.php?id=1097
Если есть жеалние присоединиться - милости просим.
Павел Пасечник, Wed Jan 28 15:59:59 2009:
Про Microsoft и не только... Можно любить или не любить Microsoft, но это одна из компаний действительно занимающихся исследованиями в области операционных систем. Однако...
Тому пример уже упоминавшаяся здесь Singularity. Или, например, Windows Azure. Конечно, упоминание Azure здесь не совсем в тему, MS далеко не пионеры в cloud computing и сама идея не нова, и требует пояснений. Дело в том, что руководитель разработки Azure не кто иной как Dave Cutler - отец WinNT, и... один из авторов VMS :-) Почему опять про VMS? Да потому, что первый настоящий кластер VMScluster был разработан всё той же DEC аж в 1984 году. И так далее... Прошло цать лет. Что нового? Принципы и архитектуры, программные и пользовательские интерфейсы и т.д. и т.п. Всё было разработано 20 и более лет назад.
аноним, Wed Jan 28 13:57:36 2009:
Печально то, что при наличии достаточного числа заинтерисованных и достаточно грамотных специалистов так и не была создана хоть сколько нибудь приемлимая ОС, наша российская, для пользователей. Все на забугорном. Вот что печально по настоящему.
Павел Пасечник, Wed Jan 28 12:57:18 2009:
Замечательный цикл заметок, Сергей Дмитриевич!
К комментариям добавлю пару слов о программировании.
Про прикладное ничего сказать не могу, не мое это. Хотя многие знакомые прикладники отзываются о .Net весьма лестно.
Но то, что ниже... Программирование параллельных и распределенных систем является сущим кошмаром в любой современной ОС (с какими приходилось работать). Для системщика не вижу никакой разницы кроме незначительных отличий интерфейсов, и, как программист, не являюсь приверженцем какой-либо ОС. Всё-равно подо что писать - всё одно ... :-)

Вершиной же, для меня, видимо так и останется VAX/VMS :-) Слава и вечная память Digital! Уж так было приятно в студенчестве с ней работать. Помнится уже на работе первое знакомство с Unix, после нескольких лет общения с VAX/VMS, повергло меня в лёгкий шок...
аноним, Sat Jan 24 01:50:40 2009:
Почитал, интересно конечно, но...
Универсальность ОС
Для меня это возможность подстроить (использовать, заставить) ОС под свои нужды (узкие, банальные, обшырные, сложные)
Посмотрите реально, UNIX модульная ОС, конструктор, да называйте как угодно, главное возможность собрать то что надо для решения конкретной задачи или групы задач. Да, это требует знаний, квалификации, здравого смысла но с UNIX решение возможно. Есть недостатки - так совершенствуйте. Лучше за всю жызнь создать один маленький но отточеный кирпич чем создать целую епопею.

Для автора статти - Где ваша система которую вы так грамотно, четко, отлажено создавали столько времени - а нету. И теперь вы пишите мемуары "Ах как это было", а могли бы свои наработки, отличные наработки, использовать с толком.
nicholas, Mon Jan 12 22:37:02 2009:
Установите стандартную прогу или драйвер в Ubuntu с оригинального диска производителя вашего компа. Вероятность облома 99%.
nicholas, Mon Jan 12 22:35:03 2009:
Я полностью согласен. К примеру, Linux - это фрик, и не более. Так как монолитная структура мало распространена и приводит к таким как у статьи выводам. Как не крути людям нужна система подобная Windows, так как конечному пользователю нужна система, которая позволяет забыть о тонкостях системы и наслаждаться ее работой. Повторяю, ЛЮДЯМ НУЖНА УДОБНАЯ ОС, А НЕ БОЛЬШОЙ КОМОК ПРОБЛЕМ, ПОДОБНО LINUX.
аноним, Sun Jan 11 19:46:10 2009:
аноним, воскресенье, 11 января 2009 г. 09:10:26:
И ЧТО МНЕ ТЕПЕРЬ ДЕЛАТЬ?

Уйти в домоуправдомы.
аноним, Sun Jan 11 15:22:56 2009:
Сергей, теперь вам осталось только одно - сесть и написать новую ОС, раз старые никуда не годятся...

Страницы комментариев: предыдущая :: 1 :: 2 :: 3 :: 4 :: 5 :: следующая

Комментарии заморожены.

Новости:

Все новости на CitCity.ru

Компании месяца

 
Последние комментарии
Почему школам следует использовать только свободные программы (101)
20 Декабрь, 14:51
ОСТОРОЖНО: ВИНДОФИЛИЯ! (2250)

24 Декабрь, 22:53
Linux в школе: мифы про школу и информатику (334)
24 Декабрь, 22:43
Kubuntu Feisty (15)
24 Декабрь, 18:42
Software is like sex: it's better when it's free.
©Linus Torvalds