Size: a a a

Compiler Development

2020 April 21

AT

Alexander Tchitchigin in Compiler Development
ruv
Так, в чистых функциях результат же не зависит от порядка вычисления аргументов. Или как?
Если нет побочных эффектов, то не зависит. Но недетерминизм-то есть. 🤷‍♀️
источник

PS

Peter Sovietov in Compiler Development
1. К счастью, помимо нишевого FRP, есть весьма полезные модели с дискретным временем.
2. Имеется существенная разница между наблюдаемым и ненаблюдаемым недетерминизмом.
3. Вообще, дискутировать на отвлеченные темы можно было бы гораздо конструктивнее, если бы каждый давал ссылки на свои источники. В моем, например, случае достаточно сослаться учебник Ван Роя.
источник

r

ruv in Compiler Development
Alexander Tchitchigin
Если нет побочных эффектов, то не зависит. Но недетерминизм-то есть. 🤷‍♀️
Раз этот недетерменизм невозможно детектировать, значит он находится вне функционального мира.
Мой тезис остается в силе  )
источник

AT

Alexander Tchitchigin in Compiler Development
ruv
Раз этот недетерменизм невозможно детектировать, значит он находится вне функционального мира.
Мой тезис остается в силе  )
Поясните, тогда, пожалуйста, что значит "внутри" и "вне". И что такое "функциональный мир" для полноты картины. 😊
источник

r

ruv in Compiler Development
Alexander Tchitchigin
Поясните, тогда, пожалуйста, что значит "внутри" и "вне". И что такое "функциональный мир" для полноты картины. 😊
да, это все на интуитивных пальцах )

Насчет внутри и вне — я сошлюсь на исходную формулировку о внешнем недетерменизме.

Неважно, что считается внешним, — я высказал тезис, что иного (т.е., не внешнего, т.е. внутреннего) и не бывает.

Под функциональным миром я тут имею ввиду часть мира, которая не относится к "внешнему" в исходном тезисе (upd: включая и побочные эффекты).
источник

AT

Alexander Tchitchigin in Compiler Development
ruv
да, это все на интуитивных пальцах )

Насчет внутри и вне — я сошлюсь на исходную формулировку о внешнем недетерменизме.

Неважно, что считается внешним, — я высказал тезис, что иного (т.е., не внешнего, т.е. внутреннего) и не бывает.

Под функциональным миром я тут имею ввиду часть мира, которая не относится к "внешнему" в исходном тезисе (upd: включая и побочные эффекты).
OK, давайте возьмём FRP функцию const, которая игнорирует любой "внешний" недетерминизи и всегда возвращает одно и то же значение. Теперь у нас и внешний недетерминизм исчез, если измерять его степенью детерминированности итогового значения? Или как? В чём разница с недетерминированностью порядка вычисления?
источник

KR

K R in Compiler Development
Peter Sovietov
1. К счастью, помимо нишевого FRP, есть весьма полезные модели с дискретным временем.
2. Имеется существенная разница между наблюдаемым и ненаблюдаемым недетерминизмом.
3. Вообще, дискутировать на отвлеченные темы можно было бы гораздо конструктивнее, если бы каждый давал ссылки на свои источники. В моем, например, случае достаточно сослаться учебник Ван Роя.
О! Вы можете подсказать эти модели? Это в Ван Рое?
источник

PS

Peter Sovietov in Compiler Development
K R
О! Вы можете подсказать эти модели? Это в Ван Рое?
Да, у него. Только надо понимать, что Ван Рой в данном случае не какой-то чудак-отщепенец, который идет наперекор современному функциональному мейнстриму в духе FRP. Подходы и такие языки, как например, Lucid, Lustre, Ptolemy, StreamIt и проч., вполне используются в разработке серьезных систем реального времени. Но вот немодны они, увы, среди блогеров и "инфлюэнсеров" %)

Кстати говоря, компилятор Lustre был формально верифицирован:
https://dl.acm.org/doi/pdf/10.1145/3062341.3062358

Можете, например, начать с исторического документа/учебника: http://worrydream.com/refs/Wadge%20-%20Lucid,%20the%20Dataflow%20Programming%20Language.pdf
источник

AT

Alexander Tchitchigin in Compiler Development
Как будто FRP в смысле Conal Elliot продвигают какие-то блогеры, кроме самого Conal Elliot, которого инфлюенсером назвать язык не поворачивается. 🤷‍♀️
источник

KR

K R in Compiler Development
Peter Sovietov
Да, у него. Только надо понимать, что Ван Рой в данном случае не какой-то чудак-отщепенец, который идет наперекор современному функциональному мейнстриму в духе FRP. Подходы и такие языки, как например, Lucid, Lustre, Ptolemy, StreamIt и проч., вполне используются в разработке серьезных систем реального времени. Но вот немодны они, увы, среди блогеров и "инфлюэнсеров" %)

Кстати говоря, компилятор Lustre был формально верифицирован:
https://dl.acm.org/doi/pdf/10.1145/3062341.3062358

Можете, например, начать с исторического документа/учебника: http://worrydream.com/refs/Wadge%20-%20Lucid,%20the%20Dataflow%20Programming%20Language.pdf
Спасибо! Хорошо, что там есть дата. (страшно раздражают отсутствия дат в статьях - оно написано когда-то, а когда - догадывайтесь используя список литературы)
источник

PS

Peter Sovietov in Compiler Development
Alexander Tchitchigin
Как будто FRP в смысле Conal Elliot продвигают какие-то блогеры, кроме самого Conal Elliot, которого инфлюенсером назвать язык не поворачивается. 🤷‍♀️
Я перешел на режим 2-3 сообщения в день, все равно не успеваю за всеми дискуссиями тут уследить. Правда, пока получается, что в результате одно сообщение содержит в концентрированном виде не только информативность, но и язвительность :)
источник

AT

Alexander Tchitchigin in Compiler Development
Peter Sovietov
Я перешел на режим 2-3 сообщения в день, все равно не успеваю за всеми дискуссиями тут уследить. Правда, пока получается, что в результате одно сообщение содержит в концентрированном виде не только информативность, но и язвительность :)
👍😊
источник

E

Eugene in Compiler Development
теперь осталось понять, какое отношение FRP имеет к построению компиляторов
источник

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
Да, у него. Только надо понимать, что Ван Рой в данном случае не какой-то чудак-отщепенец, который идет наперекор современному функциональному мейнстриму в духе FRP. Подходы и такие языки, как например, Lucid, Lustre, Ptolemy, StreamIt и проч., вполне используются в разработке серьезных систем реального времени. Но вот немодны они, увы, среди блогеров и "инфлюэнсеров" %)

Кстати говоря, компилятор Lustre был формально верифицирован:
https://dl.acm.org/doi/pdf/10.1145/3062341.3062358

Можете, например, начать с исторического документа/учебника: http://worrydream.com/refs/Wadge%20-%20Lucid,%20the%20Dataflow%20Programming%20Language.pdf
Почитал. Ведь, похоже на FRP?
источник

МБ

Михаил Бахтерев in Compiler Development
Eugene
теперь осталось понять, какое отношение FRP имеет к построению компиляторов
Пайплайны всякие? Не, ну а почему бы и нет?
источник

SS

Sergey Sverdlov in Compiler Development
источник

SS

Sergey Sverdlov in Compiler Development
Компилятор языка "О" в его нынешнем состоянии
источник

МБ

Михаил Бахтерев in Compiler Development
Peter Sovietov
Да, у него. Только надо понимать, что Ван Рой в данном случае не какой-то чудак-отщепенец, который идет наперекор современному функциональному мейнстриму в духе FRP. Подходы и такие языки, как например, Lucid, Lustre, Ptolemy, StreamIt и проч., вполне используются в разработке серьезных систем реального времени. Но вот немодны они, увы, среди блогеров и "инфлюэнсеров" %)

Кстати говоря, компилятор Lustre был формально верифицирован:
https://dl.acm.org/doi/pdf/10.1145/3062341.3062358

Можете, например, начать с исторического документа/учебника: http://worrydream.com/refs/Wadge%20-%20Lucid,%20the%20Dataflow%20Programming%20Language.pdf
Просматриваю книгу. Очень много воды. Вы не могли бы подсказать, куда там смотреть, чтобы получить ответ на вопрос о том, как можно пропускать значения в одном из потоков в зависимости от результата последней операции над ними?

Ну, например, я суммирую A. B и С, но хитро: если последний результат чётный, я считаю A + B, а если не чётный, я считаю B + C. Но не текущее, C, а начиная с того элемента, который ещё не был прочитан. И ещё у меня есть, допустим, процесс печати С параллельно с этим. Такое возможно выразить?
источник

PS

Peter Sovietov in Compiler Development
Михаил Бахтерев
Просматриваю книгу. Очень много воды. Вы не могли бы подсказать, куда там смотреть, чтобы получить ответ на вопрос о том, как можно пропускать значения в одном из потоков в зависимости от результата последней операции над ними?

Ну, например, я суммирую A. B и С, но хитро: если последний результат чётный, я считаю A + B, а если не чётный, я считаю B + C. Но не текущее, C, а начиная с того элемента, который ещё не был прочитан. И ещё у меня есть, допустим, процесс печати С параллельно с этим. Такое возможно выразить?
Далее в хронологическом порядке стоит посмотреть этот учебник: http://www-verimag.imag.fr/~halbwach/newbook.pdf
источник

DP

Dmitry Ponyatov in Compiler Development
источник