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

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

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

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

Desktop
Internet
Internet-серверы
Безопасность
Бизнес/Офис
Игры
Мультимедиа
Наука
Операционные системы
Программирование
СУБД
Создание веб-сайтов
Утилиты

Статьи

Дискуссионный клуб
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 :: следующая

Енотолюб, Sun Jan 11 12:48:06 2009:
Что автор статьи думает о Minix3?
2 аноним, Sun Jan 11 10:25:29 2009:
писать новую ОС =)
аноним, Sun Jan 11 09:10:26 2009:
Автор, вы представляете, что этой вашей статьёй разрушаете мой мир? Я всегда был уверен, что *NIX это то, к чему должно всё стремится. Идеальная ОС. Светоч современности. Надежда всего прогрессивного человечества. И ЧТО МНЕ ТЕПЕРЬ ДЕЛАТЬ?
онаним, Tue Jan 6 15:54:50 2009:
Универсальные ОС - это как универсальный набор слесарных инструментов (что-то вроде универсальной корзины Кислярского: хочешь - стол, хочешь - шкаф и т.д.). Мое мнение - не хочу я таскать с собой на телеге универсальный слесарный набор.

Масштабы сетевой работы могут быть разные. Но сколько компьютеров имеет под своим началом системный администратор средней руки? Если 100 штук - то при затратах на каждый комп. по 1 мин получается почти два часа (не поднимаясь со стула и отходя в туалет). Должны быть помощники.

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

Короче. Какая бы не была универсальная ОС для метагалактических информационных потоков, "принцип веника" будет жить в веках: проще поломать веник по прутикам, чем корячиться с целой их кипой. Все равно любая система будет состоять из звеньев разной сложности и быстродействия. Это как элементы конструкции в строительстве - новых кирпичей, как правило, не изобретают. Да и двигатель внутреннего сгорания устроен по давним принципам. Хотя эти принципы порой могут показаться несовершенными. Что делать - такова "се ля ви".
ddragon, Tue Jan 6 13:03:19 2009:
К комменту последнего анонима:
Лично мне в последнее время Borland Developer Studio тоже не очень нравится - в C++ и C# приложениях они всё более копируют стиль Visual Studio. Про последнюю не скажу что плохая - просто не нравится лично мне. Да и в BDS платформа ECO жутко глючная - не доработали, видать.
Насчёт осей - у меня и Windows XP, и Linux Ubuntu 7.10 на компе стоят, и обе имеют свойство глючить и тормозить. Короче, нет ещё ни нормальных Осей, ни средств разработки.
аноним, Sun Dec 28 10:59:15 2008:
2 аноним, суббота, 27 декабря 2008 г. 17:16:58:

>Ой да ладно) Вы когда последний раз Windows видели? С новым VS2008+дотнет писать под винду это сказка.

много лет провозился с продуктами фирмы Borland. даже нравилось по началу. VS никогда не нравился, смотрел давно. dotNet после этого тоже не понравился. возился пять лет назад и больше желания не возникало.

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

никакая это не сказка:)

системником быть интереснее. web разработчиком проще.

java прикольная. не в курсе есть ли что то подобное hibernate в dotNet. ставить дрова для связи с базой данных изврат.

qt понравилась. прикладной уровень, но иногда надо.

векторная графика вместо битмапов. тьфу, щас названия не помню. менеджер компоновки по-моему, когда не надо размеры элементов управления задавать.
аноним, Sun Dec 28 01:41:53 2008:
Buy, воскресенье, 28 декабря 2008 г. 01:33:46:
Реч в статье была не о десктопных ОС,

Есть ли смысл, на попсовых сайтах, писать заметки об узко-специализированных вычислительных системах?
Buy, Sun Dec 28 01:33:46 2008:
>где потребители новых ОС?
_________

Реч в статье была не о десктопных ОС, там (и об этом автор писал) уже не возможно просто начать с нуля и создать нечто абсолютно новое, реч о специфических областях, встраиваимых системах и т.д. Большенство же я смотрю дальше клинит на *nix vs Windows vs MacOS vs [нечто новое]...
аноним, Sat Dec 27 17:16:58 2008:
>аноним, пятница, 26 декабря 2008 г. 11:04:29:
>в виндовз писать еще меньше нравится:) с
>отвращением вспоминаю весь этот кошмар. бррр.

Ой да ладно) Вы когда последний раз Windows видели? С новым VS2008+дотнет писать под винду это сказка.
аноним, Sat Dec 27 12:53:43 2008:
но кто и где это будет потом использовать?..

О чем и речь: где потребители новых ОС? Можно делать для себя, можно для рынка. Отсюда и выбор риторики. А, не стенать: делаю для себя, а рынку - пофиг?

Страницы комментариев: предыдущая :: 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