"Дмитрий Завалишин. О Маках" - читать интересную книгу автора

Как и обещал, возвращаюсь к теме Макинтошевских и близлежащих операционных систем.

Чуток истории. Next сздавался в интересную пору. Во-первых, всем трезвомыслящим людям было
ясно, что Mac OS требует принципиальной переработки. Однозадачная до глубины души, она уступала
в этом качестве даже Windows 3.1 - далеко не лидеру в плане многозадачности.

Остальные стороны Mac OS, в общем, не вызывали принципиальных нареканий, однако упорядочение
и им не мешало, да и объектно-ориентированное программирование переходило из стадии
малоизвестного прикола в стадию овладения широких масс новым инструментом. Поскольку
событийно-центрированная модель, применяемая в Mac OS (а так же в X Windows, Windows, OS/2
Presentation manager, etc etc) была, по сути, первым "промышленным" проявлением объектной
ориентированности, разумному человеку было понятно, что драться с этой парадигмой уже не только
глупо, но и физически невозможно. Вопрос был только в том, насколько глубоко нырять в ОО на
практике, и где прагматика начнет перевешивать стремление к красивому.

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

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

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

Это было разумно придумано, но неожиданно хреновенько реализовано. Это я о проекте Mach.
Во-первых, понятие "микро" к новому ядру липло с напрягом, во-вторых, вместо того, чтобы изъятые из
микроядра функции аккуратно реализовать в виде сервисов, поверх микроядра Mach просто налепили
ядро от обычного BSD Unix. Результат, увы, не сильно впечатлял - конечно, это было лучше обычного
BSD, если учесть новые возможности микроядра, но не очень понятно было, чем это отличается от
Юникса, если бы просто добавить в него эти новые возможности. Успокаивали себя тем, что это, знаете
ли, первый блин, дальше будет лучше, и вообще - великая (без шуток) идея стоит некоторых мучений.

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

Однако, Бог с ним. Два источника, две составные части NeXT Step нам уже известны. Третьей стал
Джобс, и его доля богатства Apple. Совершенно справедливо решив, что нечего стоять на месте, он
основал новую компанию, спроектировал новый компьютер и написал новую ОС. В качестве нижнего
уровня выступил Mach + BSD Unix, поверх которых на Objective C была написана верхняя часть