George
Facepalm.jpg
потциму?
George
фейспальм - это ямл
George
faceYAML.jpg
Pavel
Давайте ещо один яп придумоем, епта. Поскладываем в конфах хуле
George
ямл не яп
George
ы?
George
Pavel
Я не про ямл
Pavel
https://jsonnet.org/
Pavel
Есиче
Pavel
Это уже яп
George
Это уже яп
А jinja тогда тоже яп?
Womchik
ну на ней же программируют. или jinja он?
George
С одной стороны, эти движки почти наверняка Тьюринг полные (как и брейнфак). С другой... Это слишком специализированная, чтобы быть ЯП. Если уж на то пошло, то некая шаблрнизация и в самом ЯМЛ есть (anchors)
Igor
https://idiallo.com/blog/website-dont-work-in-russia
Yuriy
Не работает, ога
У меня работает
Anatoly
Ямл не тьюринг полный, а жысоннет да.
Тьюринг полнота атрибут императивных языков, к декларативным это понятие неприменимо. Все равно, что говирить, мол, .ini файл не Тьюринг полный.
Pavel
Да, но это не относится к жсоннету
Pavel
Жсоннет именно тьюринг полный
公墓
Тьюринг полнота атрибут императивных языков, к декларативным это понятие неприменимо. Все равно, что говирить, мол, .ini файл не Тьюринг полный.
Сравнивая две сущности, выполняющих одну и ту же задачу, можно определить эту возможность как критерий выбора.
George
блин. парни. утро. не нужно под утро грузиться такой фигней
Tadeusz
Кто ж тебя принуждает?
Евгений
Жсоннет именно тьюринг полный
С удовольствием посмотрю на реализацию тьюринг-машины, SKI комбинаторов, лямбда-исчисления или нормальных алгорифмов Маркова на jsonnet'е
Vladimir
Народ, а зачем вам нужна Тьюринг-полный формат сериализации?
Vladimir
Или Тьюринг-полный формат конфигов
George
Или Тьюринг-полный формат конфигов
import config.py - такое видел, ога?
公墓
Народ, а зачем вам нужна Тьюринг-полный формат сериализации?
Чтобы нагенерить хуеву тучу других конфигов, чтобы гибко повзаимодейстововать с переменными окружения и тд и тп
Евгений
Просто есть странное убеждение, что jsonnet тьюринг-полный, поэтому он бяка. Хотя в нём нет ни рекурсии, ни неограниченных циклов
Евгений
Смысл конфигов том, чтобы на входе у программы была некая структура с ограниченной сложностью
Евгений
Это не мешает языку быть полным по тьюрингу
Языку, чтобы быть тьюринг-полным, нужно иметь средство, аналогичное по силе рекурсии (которая может потенциально не завершится на конечном входе). Это может быть Y комбинатор, неограниченные циклы, сама рекурсия, операция минимализации (как в частично-рекурсивных функциях) В jsonnet'е есть только for in, который очевидно тоталится всегда
George
о, я не ожидал, что Тьюринг-полнота может вызвать такую вакханалию
Anatoly
Есть только один правильный Тьюринг-полный формат конфигов - nix.
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
gaal@linux-x1:~> docker run --rm -it -v $PWD/1.jsonnet:/root/1.jsonnet sparkprime/jsonnet /root/1.jsonnet RUNTIME ERROR: max stack frames exceeded. /root/1.jsonnet:1:27 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> ... /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:1:31-47 function <my_function> /root/1.jsonnet:4:15-32 thunk <array_element> /root/1.jsonnet:4:8-33 object <anonymous> During manifestation
Евгений
Можно код?
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
О, сибиряк )
Alex
О, сибиряк )
Тут много сибиряков
SM
公墓
Господа, мне понадобилось что-то баще docker-compose, что можете из простого для докера посоветовать? Чтобы за один день прочитать, хуяк-хуяк и в продакшн и дальше уже читать вдумчиво? Я слышал краем глаза про swarm, k8s, но ничего не использовал
Uncel
Изыди, 👺
два чая
公墓
У вас баре метал?
К сожалению нет
Combot
Stanislav Bobokalo (0) увеличил репутацию Stanislav Belyaev (1) (+1)
Евгений
К сожалению нет
Почему к сожалению? А что у вас за провайдер?