George
George
фейспальм - это ямл
George
faceYAML.jpg
Pavel
Давайте ещо один яп придумоем, епта. Поскладываем в конфах хуле
George
ямл не яп
George
ы?
George
Pavel
Я не про ямл
Pavel
https://jsonnet.org/
Pavel
Есиче
Pavel
Это уже яп
Womchik
ну на ней же программируют. или jinja он?
George
С одной стороны, эти движки почти наверняка Тьюринг полные (как и брейнфак). С другой... Это слишком специализированная, чтобы быть ЯП.
Если уж на то пошло, то некая шаблрнизация и в самом ЯМЛ есть (anchors)
Igor
https://idiallo.com/blog/website-dont-work-in-russia
George
Pavel
Anatoly
Ямл не тьюринг полный, а жысоннет да.
Тьюринг полнота атрибут императивных языков, к декларативным это понятие неприменимо. Все равно, что говирить, мол, .ini файл не Тьюринг полный.
Pavel
Да, но это не относится к жсоннету
Pavel
Жсоннет именно тьюринг полный
公墓
George
блин. парни. утро. не нужно под утро грузиться такой фигней
Tadeusz
Кто ж тебя принуждает?
Евгений
Жсоннет именно тьюринг полный
С удовольствием посмотрю на реализацию тьюринг-машины, SKI комбинаторов, лямбда-исчисления или нормальных алгорифмов Маркова на jsonnet'е
Vladimir
Народ, а зачем вам нужна Тьюринг-полный формат сериализации?
Vladimir
Или Тьюринг-полный формат конфигов
Евгений
Евгений
Просто есть странное убеждение, что jsonnet тьюринг-полный, поэтому он бяка. Хотя в нём нет ни рекурсии, ни неограниченных циклов
Евгений
Евгений
Смысл конфигов том, чтобы на входе у программы была некая структура с ограниченной сложностью
公墓
Pavel
Евгений
Это не мешает языку быть полным по тьюрингу
Языку, чтобы быть тьюринг-полным, нужно иметь средство, аналогичное по силе рекурсии (которая может потенциально не завершится на конечном входе). Это может быть Y комбинатор, неограниченные циклы, сама рекурсия, операция минимализации (как в частично-рекурсивных функциях)
В jsonnet'е есть только for in, который очевидно тоталится всегда
George
о, я не ожидал, что Тьюринг-полнота может вызвать такую вакханалию
Anatoly
Есть только один правильный Тьюринг-полный формат конфигов - nix.
George
George
https://jsonnet.org/articles/design.html
Jsonnet is Turing-complete as it is possible to write non-terminating programs. Configurations should always terminate, so ideally we would consider non-termination as an error. However, doing so in general is impossible and even when constrained to practical use cases, it remains impractical. Typical approaches for enforcing termination either restrict the language (e.g. to primitive recursion), which makes some programs impossible / difficult to write, or, alternatively, require the programmer to provide evidence that the program terminates, via some sort of annotation / energy function. Both of these make the programmer's life more difficult.
Furthermore, non-Turing complete languages can take arbitrary CPU or RAM by running intensive algorithms on large input. So enforcing termination is firstly not practical, and secondly does not actually solve the more practical problem of bounding resource consumption during execution.
Евгений
Я не думаю, что не быть специалистом в теории вычислимости минс "быть идиотом"
George
ну, они это преподносят как фичу. Т.е. они обязаны в этом разбираться
公墓
Евгений
George
🤦♂️
Евгений
Евгений
Блин, если в языке нет возможности написать "бесконечный цикл", если любая программа, написанная на нём, эвеншуали завершается, то это не тьюринг-полный язык. Потому что для него разрешима задача останова.
Евгений
Возможно я пропустил такую возможность в jsonnet, у него даже референса нет нормального. Но ни одна возможность, которую я видел на практике, не даёт тьюринг-полноты
George
там есть рекурсия
Евгений
Можно код?
George
к сожалению нет
George
но бесконечный цикл - да, возможен
George
gaal@linux-x1:~> docker run --rm -it -v $PWD/1.jsonnet:/root/1.jsonnet sparkprime/jsonnet /root/1.jsonnet
{
"a": 3628800
}
gaal@linux-x1:~> cat 1.jsonnet
local my(x) = if x > 1 then my(x-1)*x else 1;
{
'a': my(10),
}
George
о, факториал можно посчитать
George
збс
George
кто там сомневался?
Евгений
Евгений
ok, jsonnet тьюринг-полный. Ни разу не видел на нём рекурсии до сих пор
George
потому что нормальные пацаны не рискуют
George
а теперь попробуй рекурсию на джиндже сделать
Bogdan (SirEdvin)
Кастом фильтром?
George
нет, это совсем беспредел
George
http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html
公墓
Если бы мне пришлось генерировать конфиги, сделал бы это на питоне btw, зачем ещё что-то мудохать на этом жсоннет
Tadeusz
https://twitter.com/githubstatus/status/1141639370249768960
Tadeusz
Нахуй это здесь?
Defective
Прочти тему чата и унеси это обратно
Aleksey
Дал время подумать
SM
О, сибиряк )
SM
公墓
Господа, мне понадобилось что-то баще docker-compose, что можете из простого для докера посоветовать? Чтобы за один день прочитать, хуяк-хуяк и в продакшн и дальше уже читать вдумчиво?
Я слышал краем глаза про swarm, k8s, но ничего не использовал
Stanislav
Евгений
Uncel
公墓
公墓
Combot
Stanislav Bobokalo (0) увеличил репутацию Stanislav Belyaev (1) (+1)