metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2014-10-07 04:35 pm

Ненависть к systemd как психическая эпидемия

Напомните мне или дайте ссылку - я уже спрашивал, чего все на systemd так ополчились?
Выглядит, как средневековая эпидемия одержимости дьяволом, все псят, чего псят - непонятно.
Ну, не считая вот этого: http://metaclass.livejournal.com/889197.html?thread=20959341#t20959341 тут, несмотря на теорию заговора, хоть какое-то обоснование имеется.
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2014-10-08 04:26 pm (UTC)(link)
Видите ли, bash далеко не так прост, как кажется. В bash'е, скажем, есть ленивые вычисления - конвееры, есть элементы функциональщины.

Поэтому, если его менять, то менять нужно на что-то явно не масштаба lua.

[identity profile] tzirechnoy.livejournal.com 2014-10-08 07:16 pm (UTC)(link)
В lua как раз всё замечательно с элементами функцыональщины. functions -- first-class, closure есть, tail call optimisation есть.

А пайпы да, нужны. Конечно, необязательно в виде символа |, по сути, конкретно в lua -- хорошо бы дерево выполнения описывать в виде lua table, с каким-нибудь спецыфическим синтаксисом для перенаправлений дескрипторов и очевидным -- для вставки lua-фунцый.
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2014-10-08 10:51 pm (UTC)(link)
Нужны не столько пайпы, сколько ленивые вычисления с потоками, а, может быть, и более серьёзными структурами.

У баша же задача склеивать разные кубики в единую систему => если между кубиками идут потоки данных, аналог bashа не должен их накапливать, он должен их легко, почти без обработки, передавать дальше. Это не всегда возможно и с ленивыми вычислениями, но на одних энергичных это вообще не получится.
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2014-10-08 10:58 pm (UTC)(link)
Да, ещё желательно иметь всё-таки типизацию, т.к. без типизации особо ничего не поменяется:

1. Замыкания в bash'е очень активно используются лишь в find -exec ...

2. Хвостовая оптимизация для скриптового языка высочайшего уровня вообще неважна (в цикле нижнего уровня обязательно есть запуск программы, а это очень медленно по сравнению с вызовом функции). Разве что предотвращает лишние переполнения стека.

3. Передача функций - см. find: интересна, но не сильно.

4. Опыт PowerShell показывает, что объектно-ориентированность в скриптах имеет отрицательную ценность.

Но с типизацией летит к чертям grep, sed и прочие мелкие утилиты.

[identity profile] permea-kra.livejournal.com 2014-10-09 07:25 am (UTC)(link)
> Разве что предотвращает лишние переполнения стека.

Это достаточно важно, чтобы этого просить. Но и цена соответствующая - отсутствие стэктрейсов многих вгоняет в уныние (я, правда, это понимаю с трудом)
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2014-10-09 01:49 pm (UTC)(link)
Это скриптовый язык сверхвысокого уровня. В нём можно реализовать стек хоть на расширяемом массиве - скорость обращения к этому стеку практически неважна. Соответственно, так убирается и переполнение стека.

[identity profile] tzirechnoy.livejournal.com 2014-10-08 07:17 pm (UTC)(link)
Но ничего, во что были бы вменяемо интэгрированы пайпы -- всё равно нет.
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2014-10-08 10:47 pm (UTC)(link)
Ну, стало быть, ничего на место баша и не подходит. Просто с пистоном-луа и прочими сями получается пролёт на типичной задаче - конвеере из 3-х программ, гоняющем данные общим объёмом гигабайт в 40.

[identity profile] tzirechnoy.livejournal.com 2014-10-09 07:53 am (UTC)(link)
Добавить пайпы в lua или tcl -- не rocket science нифига.
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2014-10-09 01:43 pm (UTC)(link)
Нет, разумеется. Но язык, являющийся полным аналогом bash'а не нужен. Стоимость перехода на него будет слишком велика и не будет окупаться фичами.

Т.е. bash может заменить система принципиально превосходящая bash по какому-то важному параметру и не сливающая bash ни на одном другом. Иначе это Wayland vs X11.

Кстати, то же самое относится и к systemd vs SysVInit - выигрыша никакого (я свой ноут не выключаю, а пользуюсь pm-suspend), зато есть геморрой: переобучение, недоотлаженность, плохая ремонтопригодность.

[identity profile] avnik.livejournal.com 2014-10-09 01:00 am (UTC)(link)
и даже хвостовая рекурсия
ext_646638: (Default)

[identity profile] rdia.livejournal.com 2014-10-09 01:43 am (UTC)(link)
Это вещь не столь важная скриптовом языке (сверхвысокого уровня), а ленивые вычисления в конвеерах позволяют делать tee, запускать sed/wc/grep на многогигабайтных файлах (и т.п.).

Поэтому замена bash'а на язык без ленивых вычислений обломится очевидным образом.