"Ради удовольствия." - читать интересную книгу автора (Торвальдс Л., Даймонд Д.)

красном переплете, можно сказать, поселились у меня в постели.
Университет Хельсинки размахнулся на 16-пользовательскую лицензию для
MicroVAX. Это значило, что прием на курс "Си и Unix" ограничивался 32
студентами -- видимо, предполагалось, что 16 человек будут использовать ее
днем и 16 -- вечером. Преподавателю, как и всем нам, Unix была в новинку. Он
сразу же об этом сказал, так что проблем не было. Но он обычно знал материал
своего курса на одну главу вперед, а студенты иногда уходили вперед главы на
три. Это стало своего рода игрой: студенты пытались подловить преподавателя,
задавая ему вопросы по будущему материалу, чтобы выяснить, читал он его или
нет.
Все мы были младенцами в дебрях Unix; курс создавался по ходу нашего
обучения. Однако из него было ясно, что за Unix стоит своя особая философия.
Это становилось понятно после первого же часа занятий. В остальное время
объяснялись подробности.
Unix характерна тем, что она утверждает некоторые базовые ценности. Это
цельная и красивая операционная система. Она избегает особых случаев. В Unix
есть понятие процесса: процесс -- это все, что что-нибудь делает. Простой
пример. В Unix команда оболочки, которую вводят, чтобы войти в систему, не
встроена в операционку, как в DOS. Это просто задание. Ничем не отличающееся
от остальных. Просто это задание читает с клавиатуры и пишет на монитор. В
Unix все, что что-то делает, -- процесс. А еще там есть файлы.
Простота структуры Unix всегда поражала меня, как и большинство людей
(ну по крайней мере -- нас, хакеров). Почти все, что делается в Unix,
выполняется с помощью шести базовых операций (называемых "системными
вызовами", потому что они представляют из себя вызовы системы для выполнения
тех или иных действий), А уж из этих шести базовых вызовов можно построить
почти все на свете.
Одной из фундаментальных операций Unix является "операция порождения
(fork)". Выполняя "fork", процесс создает свою точную копию. Таким образом
вы получаете две идентичные копии. Порожденная копия чаще всего выполняет
другой процесс -- заменяет себя новой программой. Это вторая базовая
операция. Оставшиеся четыре вызова -- open (открыть), close (закрыть), read
(читать) и write (писать) -- предназначены для доступа к файлам. Эти шесть
системных вызовов представляют собой простые операции, из которых и состоит
Unix.
Конечно, есть еще куча других системных вызовов, которые осуществляют
детализацию. Но если вы поняли шесть базовых -- вы поняли Unix. Потому что
одна из прелестей Unix в том, что для создания сложных вещей не нужны
сложные интерфейсы. Любого уровня сложности можно достичь за счет сочетания
простых вещей. Для решения сложной проблемы нужно лишь создать связи
("каналы" в терминологии Unix) между простыми процессами.
Уродство, когда для любого действия у системы есть специальный
интерфейс. В Unix -- все наоборот. Она предоставляет строительные блоки, из
которых можно создать что угодно. Вот что такое стройная архитектура.
То же самое с языками. В английском 26 букв, и с их помощью можно
написать все. А в китайском для каждой мыслимой вещи -- своя буква. В
китайском вы сразу же получаете в свое распоряжение сложные вещи, которые
можно комбинировать ограниченным образом. Это больше напоминает подход VMS:
есть множество сложных вещей с интересным смыслом, которые можно
использовать только одним способом. И в Windows то же самое.