Второе знакомство с OS Inferno

Когда не работается, многие читают bash.org.ru или anekdot.ru… а я этой зимой полез от скуки перечитывать сайт OS Inferno. Полез с тоской, потому что хотя меня к Inferno давно тянуло, практической пользы я от чтения доки по Inferno ожидал сколько же, сколько и от вышеупомянутых сайтов.

Но произошло нечто неожиданное — в процессе чтения на меня снизошло озарение: я понял, что OS Inferno это не операционная система, а среда разработки!

Звучит странно? Да. Особенно странно, если учесть, что на сайте Inferno первым предложением идёт «Inferno is a compact operating system ...». Суть в том, что когда произносится «операционная система» в наше время в головах у людей возникают десктопные винда и линух, и любая другая ОС начинает сравниваться с ними. Немногие подумают помимо десктопных ОС ещё и о серверных. Но Inferno не выглядит достаточной даже для сервера, я уж молчу про десктоп. Таким образом, сравнив Inferno с виндой и линухом мы приходим к напрашивающемуся выводу, что Inferno это, хотя и восхитительная, но «игрушечная» ОС. Возможно, в будущем, когда в Inferno появятся bash, apache, mysql, perl, vi и mplayer она станет более-менее юзабельной… Будущее наступило, в прошлый раз я ковырял Inferno примерно 5 лет назад… и что же? А ничего не изменилось, в Inferno по прежнему нет bash, apache, mysql, perl, vi и mplayer!

Моё озарение можно описать так: Inferno больше похожа не на ОС, а на обычный сервис, который расшаривает ресурсы компа, на котором запущен, в сеть, по протоколу Styx.

Да, это, мягко говоря, не совсем точное описание Inferno… ;-) но оно моментально изменило ВСЕ: я перестал испытывать дискомфорт из-за отсутствия в Inferno привычного софта — я отлично могу продолжать работать в линухе используя привычный Vim (с подсветкой синтаксиса для Limbo!), bash, mc для разработки софта под Inferno!

Более того, после нескольких дней плотной работы с Inferno я вообще начал склоняться к тому, чтобы рассматривать Inferno не как ОС, а как… язык программирования! :) Например, можно сравнить Inferno/Limbo и мой любимый Perl. В обоих случаях я пишу программу, она компилируется в байт-код, и потом выполняется внутри виртуальной машины. Моя программа имеет доступ к некоторым высокоуровневым абстракциям, и низкоуровневым системным вызовам (syscall). Так что в обоих случаях можно реализовать практически любую задачу, и работать они, скорее всего, будут со сравнимой скоростью (кстати, я провёл несколько тестов, которые это подтвердили). Единственное серьёзное отличие это среда, с которой взаимодействует моя программа:

Все эти определения «что такое Inferno» на самом деле, конечно, не являются определениями Inferno — ибо Inferno это «compact operating system». Эти определения просто пытаются описать отношение к Inferno, т.е. не «что такое Inferno», а «как использовать Inferno». К примеру, когда я начинаю сравнивать Inferno и Perl это вызвано тем, что когда мне нужно разработать некое приложение я могу использовать либо Inferno/Limbo, либо Linux/Perl. С большой вероятностью размер кода, скорость разработки и выполнения окажутся сравнимы. И когда мне нужно будет выбрать наиболее подходящую платформу для реализации этой задачи я буду выбирать между очень богатым и гибким Perl на уродливой архитектуре Linux, или между не столь богатым и гибким, но зато очень простым Limbo на изумительной архитектуре Inferno.

Например, если нужно будет писать парзер веб-страничек, анализатор логов, и другие приложения для обработки текста — лучше Perl для этих задач ничего нет. Но если нужно что-то более низкоуровневое, например сложный сервер с асинхронным I/O, то на Inferno/Limbo такие вещи писать будет на порядок проще и приятнее.

Что касается существующих приложений в Inferno (браузера, например), то, насколько я понимаю, это примеры приложений, и не более того. Это просто демонстрация возможностей системы, и для демок они более чем впечатляющие!
Inferno Apps

В общем, Inferno это инструмент. Такой же, как, например, язык программирования. И этот инструмент давным-давно готов к использованию в реальных, коммерческих приложениях. И, как любой инструмент, для одних задач он подходит гораздо лучше, чем для других. Но об этом — в следующий раз.
@powerman
26.05.2007 21:30 UTC
Первоисточник