Size: a a a

Compiler Development

2020 April 22

PS

Peter Sovietov in Compiler Development
источник

KR

K R in Compiler Development
Честно говоря, египетские иероглифы выглядели бы органичнее кириллицы. Арабские цифры можно оставить, всё-таки это в любом случае новодел.
источник

KR

K R in Compiler Development
Скажем, из этого набора.
источник

DP

Dmitry Ponyatov in Compiler Development
Посмотрел позавчера книжку по системе ПРИЗ, не думал что даже из обычных рус/лат символов можно такой синтаксис наворочать всерьез. Те несчастные, которым по долгу службы пришлось с этим работать, наверняка называли тамошний язык через звонкие гласные. Одно смешение в коде кириллицы и латиницы 50\50 уже доставляет.
источник

DP

Dmitry Ponyatov in Compiler Development
А оригинальная идея была красивая - синтез кода из семантической модели предметной области.
источник

IJ

Igor 🐱 Jirkov in Compiler Development
K R
Честно говоря, египетские иероглифы выглядели бы органичнее кириллицы. Арабские цифры можно оставить, всё-таки это в любом случае новодел.
я слышал байки о разработчике из Selectel, который пользовался хаскелем и переопределял там операторы с помощью юникод-символов. Были, например, операторы, соответствующие символам, обозначающим разные фазы луны.
источник

SP

Stanislav Popov in Compiler Development
Igor 🐱 Jirkov
я слышал байки о разработчике из Selectel, который пользовался хаскелем и переопределял там операторы с помощью юникод-символов. Были, например, операторы, соответствующие символам, обозначающим разные фазы луны.
пытался определять эмодзи - у хаскеля с этим проблемы
источник

SP

Stanislav Popov in Compiler Development
у меня не получилось даже в обычном юникоде определить оператор  ( ͡° ͜ʖ ͡°)
источник

KR

K R in Compiler Development
Igor 🐱 Jirkov
я слышал байки о разработчике из Selectel, который пользовался хаскелем и переопределял там операторы с помощью юникод-символов. Были, например, операторы, соответствующие символам, обозначающим разные фазы луны.
Это чудесная идея. С ней точно можно получить призовое место на obfuscated code contest.
источник

AG

Alex Gryzlov in Compiler Development
Stanislav Popov
у меня не получилось даже в обычном юникоде определить оператор  ( ͡° ͜ʖ ͡°)
надо было агду брать
источник

AT

Alexander Tchitchigin in Compiler Development
Igor 🐱 Jirkov
я слышал байки о разработчике из Selectel, который пользовался хаскелем и переопределял там операторы с помощью юникод-символов. Были, например, операторы, соответствующие символам, обозначающим разные фазы луны.
источник

CC

Chris Calvin in Compiler Development
Igor 🐱 Jirkov
я слышал байки о разработчике из Selectel, который пользовался хаскелем и переопределял там операторы с помощью юникод-символов. Были, например, операторы, соответствующие символам, обозначающим разные фазы луны.
Есть хороший знакомый который так в Scala коде методы делал с именованиями вроде 😺, выглядит прикольно :)
источник
2020 April 23

AG

Alex Gryzlov in Compiler Development
источник

r

ruv in Compiler Development
Alexander Tchitchigin
OK, давайте возьмём FRP функцию const, которая игнорирует любой "внешний" недетерминизи и всегда возвращает одно и то же значение. Теперь у нас и внешний недетерминизм исчез, если измерять его степенью детерминированности итогового значения? Или как? В чём разница с недетерминированностью порядка вычисления?
Про детерминизм, подумавши )  FP тут не является чем-то особенным.
Ведь, никакая модель в Тьюринг-эквивалентной системе не позволяет выразить или породить недетерминированность. Источники любой наблюдаемой недетерминированности всегда внешние по отношению к этой модели.

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

Так, в FP системе, порядок вычисления аргументов — это косвенный канал, который сам по себе не вносит нетедерменированности. Но, при наличии прямого канала ввода-вывода, даже обернутого в чистые функции, — этот косвенный канал тоже начинает влиять. Т.е., демон, сидящий "снаружи" и каждый раз указывающий, с какого конца вычисляются аргументы — может теперь повлиять на результат в некоторых случаях.

А в обычной процедурной системе, при наличии прямого канала, несущего текущее время, побочным каналом может быть долгота выполнения операций, или ее зависимость от температуры, работы кэша, или еще чего-то. Похоже на side-channel attack в криптографии )
источник

AT

Alexander Tchitchigin in Compiler Development
ruv
Про детерминизм, подумавши )  FP тут не является чем-то особенным.
Ведь, никакая модель в Тьюринг-эквивалентной системе не позволяет выразить или породить недетерминированность. Источники любой наблюдаемой недетерминированности всегда внешние по отношению к этой модели.

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

Так, в FP системе, порядок вычисления аргументов — это косвенный канал, который сам по себе не вносит нетедерменированности. Но, при наличии прямого канала ввода-вывода, даже обернутого в чистые функции, — этот косвенный канал тоже начинает влиять. Т.е., демон, сидящий "снаружи" и каждый раз указывающий, с какого конца вычисляются аргументы — может теперь повлиять на результат в некоторых случаях.

А в обычной процедурной системе, при наличии прямого канала, несущего текущее время, побочным каналом может быть долгота выполнения операций, или ее зависимость от температуры, работы кэша, или еще чего-то. Похоже на side-channel attack в криптографии )
Насчёт моделей: вообще-то есть недетерминированные автоматы, и недетерминированные машины Тьюринга тоже есть. 😉
источник

YY

Yuriy Yarosh in Compiler Development
ruv
Про детерминизм, подумавши )  FP тут не является чем-то особенным.
Ведь, никакая модель в Тьюринг-эквивалентной системе не позволяет выразить или породить недетерминированность. Источники любой наблюдаемой недетерминированности всегда внешние по отношению к этой модели.

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

Так, в FP системе, порядок вычисления аргументов — это косвенный канал, который сам по себе не вносит нетедерменированности. Но, при наличии прямого канала ввода-вывода, даже обернутого в чистые функции, — этот косвенный канал тоже начинает влиять. Т.е., демон, сидящий "снаружи" и каждый раз указывающий, с какого конца вычисляются аргументы — может теперь повлиять на результат в некоторых случаях.

А в обычной процедурной системе, при наличии прямого канала, несущего текущее время, побочным каналом может быть долгота выполнения операций, или ее зависимость от температуры, работы кэша, или еще чего-то. Похоже на side-channel attack в криптографии )
> Ведь, никакая модель в Тьюринг-эквивалентной системе не позволяет выразить или породить недетерминированность.

Зависит от типа логики и типов ограничений - 99.9% Тьюринг моделей игнорируют решения задач типа Data/Code Locality, Command/Data Length Pick и Dynamic Roll-out / Roll-in... в которых как раз таки могут быть ambiguities разного рода, в зависимости от используемых метрик и профилей.

tldr; тюьринг автоматы игнорируют переменную длинну слова и переменную длинну комманды а так же вариативную приминимость комманд разной длинны к словам разной длинны... и для этого просто "полнофункциональной" логики (лямбда, каппа, пи) недостаточно - нужно вводить ограничения, а так же выбирать где важнее процессорное время, а где потребляемая память ...

Стоит глянуть как Bunched / Separation логика реализуется в тех же borrow check'aх Rust'a, и подумать как бы это бы выглядело при решениях задач автовекторизации (лучше сначала взять статическую, без профиля)
источник

YY

Yuriy Yarosh in Compiler Development
Alexander Tchitchigin
Насчёт моделей: вообще-то есть недетерминированные автоматы, и недетерминированные машины Тьюринга тоже есть. 😉
В недетерминированных автоматах должна быть проверка на зацикленность дерева вычислений (i.e. CFG) ... так как без зацикленности - в них нет двузначности (ambiguity). Обычно таким занимаются разработчики всяких полиморфных движков.
Наверное это и подразумевалось...
источник

r

ruv in Compiler Development
Alexander Tchitchigin
Насчёт моделей: вообще-то есть недетерминированные автоматы, и недетерминированные машины Тьюринга тоже есть. 😉
Конечно же, я имею Тьюринг-эквивалентную систему в смысле эквивалентности обычной (детерминированной) Машине Тьюринга (МТ).

С другой стороны, недетерминированная МТ эквивалентна детерминированной. Следовательно, она тоже не может порождать никакую недетерминированность (например, генерить случайную последовательность, или выдавать разный результат на одни и тех же входных данных).
источник

AT

Alexander Tchitchigin in Compiler Development
ruv
Конечно же, я имею Тьюринг-эквивалентную систему в смысле эквивалентности обычной (детерминированной) Машине Тьюринга (МТ).

С другой стороны, недетерминированная МТ эквивалентна детерминированной. Следовательно, она тоже не может порождать никакую недетерминированность (например, генерить случайную последовательность, или выдавать разный результат на одни и тех же входных данных).
Так реальная недетерминированность в квантах, а в компьютере её нет. 😂
источник

r

ruv in Compiler Development
Alexander Tchitchigin
Так реальная недетерминированность в квантах, а в компьютере её нет. 😂
ну да.  Но, и в реальном компьютере кванты (и соответствующая недетерминированность) тоже бывают ;)
источник