Как стать автором
Обновить

Limbo

Время на прочтение 5 мин
Количество просмотров 5.4K
Всего голосов 32: ↑29 и ↓3 +26
Комментарии 32

Комментарии 32

Отлично! Я знаю, что концепт Inferno очень захватывающий, но я не мог предположить, что он может побудить человека донести до хаброаудитории столько информации за относительно короткий промежуток времени ;) Спасибо за все эти краткие описания и наблюдения, читать приятно.
Из вышенаписанного могу отметить использование utf-8 для работы со строками - это пошло еще с 1992 года, когда оную кодировку применили в Plan9. Очень логичный выбор, который позволяет избежать возни с кодировками сразу на системном уровне.
О. Списки. Списки это прекрасно, они таки взяли лучшее из lisp.
Tuples — может быть «кортеж»?
Похоже, в принципе.
Tuple - и есть кортеж.
Как по мне, так в Limbo многое взято из python (или наоборот?): кортежи, срезы, использование юникода для представления строк на внутреннем уровне, etc.
А вот поди пойми что откуда взято, все хорошее уже придумали. Теперь комбинируют (:
Быть может Tuple и означает "кортеж", но по сути - это обычная структура (struct языка С или record Паскаля).
Нифига себе...
Насколько я понимаю, доступ к элементам кортежа осуществляется по индексу, а к элементу структуры/записи — по имени. Этим, видимо, и отличаются.
Но ведь компилятор все равно имя преобразовывает в смещение, поэтому имя — просто shortcut, по сути тот же индекс.
Нет, если вы когда программы пишете «играете в компилятор» — безусловно.
А если учесть, что все данные всё-равно проходят через регистры процессора, то между string и list тоже особой разницы нет.
Если ваш string это не что-то умное типа std::basic_string, а простой char[], то действительно — для меня это тоже массив. Разница между массивом char и допустим int — особый синтаксис инициализации: "строка" vs {1, 2, 3}.
похоже, ага, но как бы более обще.
Спасибо за очень интересные заметки, да еще и в таком объеме :)
Уже поставил, играюсь - ковыряюсь
огромное спасибо за ссылки, будем смотреть.
Большое спасибо за такие интересные посты.

Как я понял, что кроме него есть разве что sh и собственно все. Этот список планируют расширять или дорабатывать Limbo как язык? Вообще насколько динамично развивается вся платформа Inferno?
Проблема с компиляторами действительно есть, в принципе в стандартную поставку инферны входит yacc, генерирующий limbo-код, то есть можно, можно написать компилятор чего угодно (в теории).
Но почему-то никто этого не делает. Или замалчивает (-;
Платформа, увы, довольно инертная, развитие идет централизовано из Vita Nuova. Мало кто пользуется этой платформой в коммерческих целях и никого мощного сообщества разработчиков нет (пока?).
Платформа, увы, довольно инертная, развитие идет централизовано из Vita Nuova. Мало кто пользуется этой платформой в коммерческих целях и никого мощного сообщества разработчиков нет (пока?).


К сожалению, да. Вообще, мне кажется, единственный способ сделать Inferno популярной — это позволить любому желающему принять участие в разработке. Тогда года через три это будет более чем серьзная система. Кстати, за примерами далеко ходить не надо — Линукс разрабатывался именно так.
До недавнего времени у Inferno была более закрытая и коммерческая лицензия. Сейчас этот барьер убрали, так что...
Хм.. А можно в общих чертах, что она (лицензия) из себя представляет?
Я не очень разбираюсь в юридических документах, тем более на английском, но суть примерно такова: лицензия Inferno позволяет то же самое что и все открытые лицензии а-ля GPL, но помимо этого есть дополнительная возможность купить коммерческую лицензию и делать даже то, что GPL запрещает.

If you distribute Inferno with changes or additions to sections of Inferno that are under GPL or LGPL, and you will distribute (or otherwise make available) the source code to those changes or additions, you can choose the Free Software Scheme, otherwise choose the Commercial Developer Licence.
То есть, как я понял, она частично под GPL, частично коммерческая? И свободные части можно распространять как угодно, а коммерческие — только под CDL?
Нет, она вся либо под открытой лицензией, либо под коммерческой - выбираете вы.
А, точно, то я в переводе не разобрался. Спасибо :)

"changes or additions to sections of Inferno that are under GPL or LGPL" <--бубух
По поводу применения Inferno.
На Inferno работает семейство VPN Brick FirewallVPN Brick Firewall. Абсолютно секьюрная штука. Только на комп не поставишь. :)
По поводу применения, был выпущен телефоный аппарат Lucent фото которого можно найти на http://www.tuxscreen.net/. Модель увы не помню на пямять, но если поискать, в Сети можно найти оригинальную прошивку для него в формате archfs.
Вспомнил !!! Philips IS2630 ;) WebPhone :)
Таких бы статей по-больше на Хабре. Читать действительно и интересно, и полезно. Спасибо.
В целом основательно так напоминает Erlang.
Угу. В maillist-е Inferno довольно регулярно и с уважением упоминают Erlang. :)
Еще бы компилятор сподобили (:

Туплы как способ обработки ошибок - плохая идея. Функция должна возвращать результат ИЛИ (а не И) информацию о сбое. То есть если функция завершилась с ошибкой, компилятор не должен позволить использовать ее результат.

Для этого хорошо подходят алгебраические типы данных, как, например, Result в Rust.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории