Pull to refresh

Comments 35

Кстати, если поиграться с emu/Linux/emu и почитать conf(10), то скорее всего можно будет собрать бинарник emu, в который будет встроена корневая файловая система со всеми файлами и каталогами необходимыми вашему приложению. В этом случае ваше приложение можно будет распространять в виде одного бинарника, размером около мегабайта, который можно будет запускать в любом каталоге и без параметров — как обычное приложение.
Угу, так и есть. Работает! Получился отдельный .exe, полтора мегабайта, отлично запускается без параметров и выдаёт HelloWorld. :) Всё своё (корневую файловую систему с моим helloworld.dis) держит внутри .exe, больше ему ничего для работы не нужно.
Ссылку на .exe можно? Хочу поиграться с ним
Запросто: helloinferno.exe.

Чтобы было интереснее играться, я помимо программки выводящей hello (при запуске helloinferno.exe без параметров) встроил туда sh, ls, pwd и echo. Использовать так:

C:\> helloinferno.exe
Hello from Inferno! :-)
C:\> helloinferno.exe echo wow
wow
C:\> helloinferno.exe sh
; pwd
/
; ls -l
...
Что-то мне даже не хочется узнавать, что такое ОС Инферно, не смотря даже на мой юникосоводческий стаж.
Не нравится — не ешь.
Народная мудрость.
С одной стороны — Вы абсолютно правы. С другой — во многом благодаря именно такому отношению и Plan 9 и Inferno практически никому не известны и не используются, несмотря на значительное технологическое превосходство. :(

Чтобы что-то понравилось — его надо распробовать. А т. к. Plan 9 и Inferno системы достаточно сильно непривычные даже для человека освоившего и винду и линух и макось, то самостоятельно их распробовать достаточно непросто. А текущее сообщество, общающееся в irc и mail list, имеет тенденцию на вопросы «не впиливающих» новичков либо не отвечать вообще, либо отвечать в стиле «тебе это не надо» (без объяснений), либо просто посылать «читать исходники». И я их, в принципе, понимаю. Не царское это дело, Робу Пайку лично объяснять каждому новичку, почему в acme нет подсветки синтаксиса. Хотя иногда случается — например недавно была очень любопытная дискуссия на тему "почему в Plan 9 (и Inferno, кстати) такие бедные по функциональности регулярные выражения".

Возможно, со временем здесь образуется более дружелюбное к новичкам сообщество. Чем больше людей будет пользоваться Inferno — тем нам же лучше: будет больше возможностей по обмену опытом и, возможно, часть нужных нам приложений и библиотек напишет кто-нибудь другой. :)
Я достаточно дружелюбен :)
Просто между троллем и новичком есть небольшая разница. Тот что выше написал — явный тролль.
А по поводу новичков — всё довольно просто, и такое бывало и раньше.

Сначала «этим» пользуются любопытные и профи, которые в состоянии разобраться сами.
Потом к ним подтягиваются не такие любопытные специалисты.
Потом за ими всеми начинают тянутся любители и новички пользуясь документацией раньше созданной теперешними «гуру». К этому моменту система уже достаточно отполирована и вопросы у новичков не очень дилетантские.

До этого момента вопросы в стиле «а зачем оно надо» и «чем оно лучше <вотетого>» можно сразу считать троллингом, и игнорировать.
Нормальный новичок скажет и спросит совсем другое.
Я установил Inferno в первый раз лет 5 тому назад. И успешно удалил так толком и не разобравшись что это и для чего оно.
Но даже тогда я не задавал таких вопросов.
Я не тролль. Просто я не понимаю, зачем люди специально покупают себе номера на машину «666», и нафига очередной юникс-клон называть «Inferno».

И поверьте мне, я не новичек, я помню даже mmdf и установку tcp/ip стека в SCO ODT 2.0

И я не задавал вопросов: «а зачем оно надо» и «чем оно лучше <вотетого>»

Я всего-лишь высказал свое мнение, относительно название.

Может у меня что-то с глазами, но я не вижу что бы вы в посте говорили о названии.
А так выглядит как банальный троллинг. Не нравится идите дальше, «срать в каментах» не обязательно.
Я перечитал свой коммент, точно. Троллинг. Я как обычно косноязычен, извините уж.
И уж тем-более, не хотел целенаправлено «срать в комментах».
Еще раз извините.
Бывает :) Главное — замечать и исправляться.
1. это не «очередной юникс-клон»
2. название придумал Роб Пайк — читал Данте в процессе разработки этой ОС
3. rtfm
О, спасибо за пояснение, по ртфм-ил, прояснилось. Правда все равно не понял, чего ему так «Божественная комедия» приглянулась. (Ну не лично ему, конечно, а вообще, как таковое, по-моему, Весьма посредственное произведение).
У них традиция — выбирать имена максимально неудобные для маркетинга. :)
Кстати, если Вы в курсе всех событий — может сделаете ЧаВо с такими вопросами?
Я ещё не волшебник, я только учусь… :)

Лажать очень не хочется, тем более в форме статей. Я бы вообще рот не открывал, пока не разберусь досконально. Но сейчас нет альтернативы — лучше я буду писать в меру своего понимания, чем вообще никакой информации по теме не будет. Если сюда придут «старшие товарищи» — я с удовольствием заткнусь и буду внимать.

Меня всегда сильно раздражало, что книжки по IT зачастую пишут те, кто толком не понимает тему, на которую разливается соловьём на 300 страниц. А те, кто тему реально знает — книжки пишут очень редко. В результате на таких книгах вырастают поколения, у которых понтов дофига, а дело делать правильно не умеют. Более того, ещё и сопротивляются попыткам их вразумить, ссылаясь на эту макулатуру.

В общем, FAQ с такими вопросами я действительно составляю, но пока только для себя. Когда буду уверен, что лажи в нём нет (если таковой момент наступит) — опубликую обязательно.
А вы в форме вики сделайте :)
Если будет что не так — поправят.
Очень интересные вещи рассказываете, мсье powerman.
С небольшими периодами в прошлом присматривался к этой ОС (точнее, к Plan 9), но на то время не было русскоязычной документации, а главное русскоязычного сообщества.

У меня к вам вопрос: сильно отличается Inferno от Plan 9? Поправьте меня, может быть они вообще не имеют ничего общего.
Насколько я читал, Inferno от Plan 9 отличается не сильно. Архитектура у них одинаковая, основной сетевой протокол тоже (только в Inferno он называется Styx, а в Plan 9 — 9P2000). Ядро, скорее всего, практически идентичное (один фикс часто делается одновременно и в ядре Inferno, и в ядре Plan 9). Основные отличия:

  • — Вместо работы на голом железе x86 ядро работает как эмулятор под управлением более традиционных операционок (хотя на голом железе x86 ядро тоже умеет работать, драйверов в Inferno для него ещё меньше, чем у Plan 9, так что на практике в запуске native Inferno на x86 смысла мало).
  • — В ядро встроена виртуальная машина Dis, и выполнять Inferno умеет только байт-код Dis, традиционные бинарники не поддерживаются вообще.
  • — Как следствие предыдущего пункта, программировать под Inferno на C (как в Plan 9) нельзя. Можно писать только на языках, генерирующих байт-код Dis. Сейчас это только Limbo (ну, ещё есть ассемблер Dis). (На C можно писать только драйвера и встроенные модули для ядра Inferno.)
  • — Inferno заточена под работу на встроенных устройствах (вот на них Inferno работает в native режиме на голом железе), может работать на 1 MB RAM.
  • — Софта под Inferno значительно меньше, чем для Plan 9. Во многом это следствие невозможности портировать C-приложения, но т. к. Inferno (в отличие от Plan 9) и не пытается заменить десктопные или серверные OS, а дополняет их работая на них как обыкновенное приложение — сетевой сервис, то это не является помехой.

Но я с Plan 9 не знаком, всё вышеописанное подчёрпнуто из чтения документации и общения с другими — поэтому в моём описании отличий могут быть (в т. ч. серьёзные) неточности.

Возможно я очень-очень сильно не прав, но я не вижу для Plan 9 практического применения.

Plan 9, в отличие от Inferno, пытается играть на одном поле с традиционными десктопными и серверными OS, и шансы у него IMHO нулевые. А если нет возможности применять Plan 9 в текущей работе, то крайне сложно найти время на изучение системы — я ведь фрилансер, а не студент: если не работаю, то нечего кушать. А Inferno даёт возможность решать обычные задачи используя её просто как ещё один язык программирования с виртуальной машиной — а-ля Java. Если заказчику всё-равно, на каком языке разрабатывается система, то вполне реально использовать Inferno для выполнения текущей работы!

Из того, что мне известно, Plan 9 используется на достаточно нагруженном сервере Bell Labs (который большую часть времени не работает, уж не знаю по какой именно причине и виновал ли в этом Plan 9 или нет), на сервере Vita Nuova (этот работает стабильно, но явно не относится к очень популярным сайтам, да и на сайте вроде бы чисто статический контент; да ещё дико тормозящий mail list), на домашних серверах нескольких энтузиастов, и т. п.

На десктопе Plan 9 используется очень небольшим количеством людей. Теми, кто вполне комфортно чувствует себя в Acme, а не в Vim/Emacs. Да из них многие так и норовят портировать под него софт из Linux или запустить его под linuxemu — чего тогда просто не сидеть под Linux, спрашивается?

Остальные пускают Plan 9 под VMware/Qemu, и используют его для изучения и экспериментов, а не работы. Вероятно, у них на это есть время. У меня — увы, нет. Поэтому Inferno, и только Inferno! :-)
Спасибо за исчерпывающий ответ.
Очень интересует один вопрос. Есть ли порт к примеру ТрэйсМанки под эту замечательную ось? Если быть точнее, то есть проект CouchDB, который использует мозиловский JavaScript движок. Было бы интересно посмотреть на производительность этого «винигрета» под микроядерной осью. )
В Inferno есть реализация JavaScript, для её браузера Charon. Но, насколько я понимаю, это не более чем PoC. Т. е. оно как-то работает, но врядли поддерживает функциональность Gmail или готово соревноваться по скорости с современными движками JavaScript.

С другой стороны, я практически уверен в том, что если написать компилятор JavsScript в байт-код Dis, то TraceMonkey и V8 будут нервно курить в сторонке. Может Вы возьмётесь за эту задачку? :)
К великому стыду и сожалению я забросил магию прикладного программирования. =(
Финансовая чаша колыхнулась в сторону веб разработок…
Хотя порывает, знаетели, как раньше… Кинуть всё и заняться действительно любимым занятием… творить!!!
Отличная статья. Все более чем любопытно, кроме языка, на котором написан HelloWorld. Что, другие языки не приветствуются? По комментариям к предыдущей статье я успел замеитить, что язык имеет некоторые особенности, а учить мне его для опытов как-то не хочется, и так винегрет в голове :)
Других языков высокого уровня генерирующих байт-код Dis пока вроде бы нет, поэтому под Inferno можно писать только на Limbo. Впрочем, реализации других языков ничего не мешает — кроме отсутствия программистов, которые бы этим занялись. В частности, насколько я слышал, когда-то был проект по трансляции байт-кода Java в Dis, чтобы Java-приложения работали в Inferno. Проект работал, по крайней мере в состоянии PoC, но потом заглох (то ли спонсор пропал, то ли интерес — не помню, что там за история была).

Впрочем, Limbo — отличный язык! Синтаксически очень близок к C, но он сильнотипизированный (с поддержкой строк, кортежей и сложных структур с встроенными функциями — что-то типа объектов), в нём нет прямой работы с памятью (указатели/malloc/free), есть сборщик мусора (точнее, он есть в Dis), и есть серьёзная поддержка concurrent programming — нити и каналы. Не смотря на отсутствие прямой работы с памятью — полный контроль над использованием памяти — в отличие, например, от perl, который жрёт память со страшной силой и контролю в этом смысле не поддаётся.

Насколько я понимаю, отсутствие других языков в Inferno во многом вызвано тем, что Limbo слишком хорош, и не возникает желания его на что-то заменить. А для скриптов есть sh.
Limbo — скорее императивный Erlang: возможности у Erlang схожие с Limbo. Другое дело, что вряд ли существует реализация Erlang под Inferno, потому что Inferno и Erlang в каком-то роде конкуренты :) Да и по другим причинам. Впрочем, я почитал немного про Limbo, удостоверился, что особых проблем с применением его быть не должно.

P.S. А если я попрошу рассказать о том, как выглядит ваша «лаборатория разработчика» под Inferno, то можно ли надеяться в следующих статьях об этом почитать? Или если подобные статьи уже есть, то достаточно будет ссылки. Спасибо.
Лаборатория выглядит очень просто. Поскольку работу в Acme я не осилил, то в одной консольке запущен mc и vim (который при записи файла автоматически его компилирует limbo — реализация limbo есть и для host OS и для Inferno — и показывает ошибки компиляции так же, как для C или Perl), а в другой запущен в текстовом режиме emu, в командной строке которого я запускаю только что сохранённое (и откомпилированное) Vim приложение.

Графическую среду emu я запускаю только если нужен отладчик.

При изучении сетевых возможностей Inferno — запущено несколько emu в разных консольках в текстовом режиме с разными сетевыми сервисами.

Поскольку из линуха и mc по виртуальным файлам/каталогам Inferno не побродишь, то с этими файлами работаю в консоли emu. (Теоретически в ядре линуха есть поддержка 9P, так что можно файловую систему Inferno подмонтировать под линухом и бродить в mc в том числе и по виртуальным файлам.)

P.S. «Консольками» я называю xterm-ы. :) У меня просто X-ы настроены так, что очень напоминают работу в текстовом режиме с кучей виртуальных консолей по Alt-Fx.
А какая-нибудь более удобная консоль, чем стандартная emu, наличествует?
Эх, жаль инферну забросили, статьи интресные были
Никто ничего не забрасывал. Я использую Inferno в своём проекте.

А что касается статей — у меня пока руки не доходят писать, но rapidfx и j1m активно переводят самую разную информацию по Inferno на русский. Плюс есть чат по Inferno в jabber: xmpp://inferno@conference.jabber.ru.
спасибо за ссылки, давно туда не заглядывал, ну и сюда постили хотя бы коротенькие новости, если есть конечно, фундаментальные статьи часто не попишешь понятное дело
Ну дык кто Вам мешает это делать? :) Аккаунт на хабре — есть, блог — коллективный… Я лично только рад буду, если сюда не только я один буду что-то постить.
Sign up to leave a comment.

Articles