Операционные системы и высокоуровневые языки программирования давно сосуществуют, время от времени переплетая свои пути и меняя взгляды на построение вычислительных сред. Одним из фундаментальных вопросов в этой области является роль операционной системы: насколько она необходима и как тесно она должна быть связана с языком программирования. В этом контексте особенно интересны идеи, высказанные Дэном Инголлсом, одним из создателей Smalltalk. Он сформулировал оригинальное мнение, что "операционная система — это совокупность вещей, которые не помещаются в язык; её не должно быть". Данная концепция бросает вызов традиционному пониманию ОС и побуждает подумать о том, как можно упростить или даже нивелировать уровень операционной системы с помощью языка и его виртуальной машины.
Сравнивая эту концепцию с историей развития Unix и следующих за ней проектов, таких как Plan 9, можно проследить удивительные пересечения и расхождения в подходах к построению вычислительных инфраструктур. Unix изначально предложил концепцию файла как универсального абстрактного объекта, который можно читать, писать или передавать, не задумываясь о конкретной реализации устройства или сервиса. Это принцип позволил унифицировать общение программ со средой и придал архитектуре системы гибкость и расширяемость. Проект Plan 9, разработанный в Bell Labs, продолжил развитие этой идеи и вывел концепцию файлов на новый уровень. В Plan 9 буквально все рассматривается как файл, что создает очень стройную и упрощенную модель взаимодействия компонентов системы.
Эта абстракция позволяет достаточно легко интегрировать разнородные ресурсы в единую систему, абстрагируясь от деталей реализации. В этом смысле Plan 9 отдаленно напоминает видение Smalltalk, где язык программирования и его среда создания приложений пытаются заменить традиционные функции операционной системы. Интересно, что многие черты Smalltalk, такие как глубокая рефлексия, удобные механизмы отладки и динамическая природа компонентов, находят свой параллель в Unix-подобных системах, хотя и реализуются иначе. В мире Unix-утилит часто используются разнообразные средства диагностики и анализа, позволяющие заглянуть внутрь процессов и потоков исполнения, что, в некотором роде, является смежным с концепциями Smalltalk. Однако архитектурно эти подходы пока далеки от синтеза: Unix и Smalltalk развивались в разных технологических и философских плоскостях, что обусловило различия в структуре систем и языке взаимодействия компонентов.
Тем не менее, современная эволюция Unix и связанных с ним систем, усиленная преимуществами виртуальных машин высокоуровневых языков, намекает на возможность коэволюции, когда лучшие идеи обоих миров найдут согласие и совместно создадут новые модели взаимодействия. Примеры таких процессов наблюдаются в развитии контейнеризации, виртуализации и платформ для разработки с глубоким погружением в язык. Это открывает перспективы для будущего, где операционная система становится неотъемлемой частью среды разработки и исполнения, максимально интегрированной с языком, что соответствует идеям Инголлса. Для разработчиков и архитекторов программных систем важно осознавать, что исторический опыт Unix, влияние Plan 9 и философия Smalltalk обеспечивают важные уроки в стремлении к созданию более гибких, понятных и мощных вычислительных платформ. Поиск синергии между этими направлениями стимулирует инновации в области разработки виртуальных машин, аспектов метасистемности и инструментов отладки, что в конечном счете влияет на удобство программирования и эффективность работы систем.
Таким образом, исследование пути Unix, Plan 9 и скрытого влияния Smalltalk позволяет расширить понимание о том, как операционные системы и языки программирования взаимодействуют, как один уровень абстракции может быть постепенно вытеснен другим и как новые идеи способны преобразовывать облик вычислительной среды. В конечном итоге, это ведёт к появлению более интегрированных и отражающих реальные потребности разработчиков систем с высокой степенью взаимодействия между языком программирования и основной системой исполнения.