Size: a a a

Compiler Development

2020 April 07

AT

Alexander Tchitchigin in Compiler Development
Т-34 85
В материалах (и даже в примерах из реального кода) не всегда сразу понятно, например, зачем был применён тот или иной паттерн, даже если объяснено. Ну, то есть, запомнить их можно, но сходу не получится сообразить, в каких ситуациях какой нужен и как его применить. Всё равно нужен опыт. Но, конечно, желательно (ради экономии времени) иметь подготовку, чтобы вовремя связать с имеющимися знаниями, а не через велосипед к ним прийти. Хотя, с другой стороны, экономия времени на изучении теории во многих случаях тоже оправдывается...
Я не стану комментировать ибо оффтоп. 🤷‍♀️
источник

p

polunin.ai in Compiler Development
Alexander Tchitchigin
Я не стану комментировать ибо оффтоп. 🤷‍♀️
а есть чаты про ЯП в общем?
источник

А

Алексей in Compiler Development
Peter Sovietov
Как же императивно, если порядок команд может не соответствовать тому, которые Вы задаете в программе. На этот счет компилятор специально занимается планированием команд.
Но порядок сайдэффектов же гарантирован. Да и всё состояние в процессоре и памяти разделяемое и мутабельное.
источник

AT

Alexander Tchitchigin in Compiler Development
polunin.ai
а есть чаты про ЯП в общем?
Я — не знаю...
источник

А

Алексей in Compiler Development
Алексей
Но порядок сайдэффектов же гарантирован. Да и всё состояние в процессоре и памяти разделяемое и мутабельное.
Ну то есть надо же сначала доказать, что "от перестановки мест слагаемых сумма не меняется", а уж только потом перемешивать инструкции.
источник

MM

Mikhail Maltsev in Compiler Development
Алексей
Но порядок сайдэффектов же гарантирован. Да и всё состояние в процессоре и памяти разделяемое и мутабельное.
Нет, порядок не гарантирован даже в самом процессоре.
источник

А

Алексей in Compiler Development
Mikhail Maltsev
Нет, порядок не гарантирован даже в самом процессоре.
В смысле не гарантирован? Вполне гарантирован.
источник

АЕ

Артур Ефимов in Compiler Development
Igor 🐱 Jirkov
Мне кажется, это очень узкий взгляд который в дальнейшем очень мешает.
«Функциональное программирование», наверняка, полезная штука. Я просто отношу его немного к отдельной области знаний.
источник

АЕ

Артур Ефимов in Compiler Development
Зигохистоморфный Препроморфизм
та любой фп и не фп, любой язык с зависимыми типами, пруверы, и еще всякие
Прям таки ортогональные?
источник

А

Алексей in Compiler Development
Алексей
В смысле не гарантирован? Вполне гарантирован.
По крайней мере в том смысле, что за кулисами можно конечно делать перестановки всякие, но пользователь процессора, если так можно сказать этого замечать не должен.
источник

А

Алексей in Compiler Development
Конечно это абстракция иногда протекает и даёт всякие уязвимости, но это уже немного другой вопрос.
источник

MM

Mikhail Maltsev in Compiler Development
Алексей
В смысле не гарантирован? Вполне гарантирован.
Если речь идёт про многопоточную программу, то результат её работы может в общем случае меняться от запуска к запуску.
источник

АЕ

Артур Ефимов in Compiler Development
Peter Sovietov
Как же императивно, если порядок команд может не соответствовать тому, которые Вы задаете в программе. На этот счет компилятор специально занимается планированием команд.
Ну так это ж оптимизация. Всё равно есть глобальная «память», а есть инструкции.
А не функции и отсутствие переменных.
источник

Т8

Т-34 85 in Compiler Development
polunin.ai
а есть чаты про ЯП в общем?
возможно, вот этот соответствует https://t.me/pro_prog
источник

PS

Peter Sovietov in Compiler Development
Алексей
По крайней мере в том смысле, что за кулисами можно конечно делать перестановки всякие, но пользователь процессора, если так можно сказать этого замечать не должен.
Нюанс в том, что исходное представление во многом ограничивает возможности "за кулисами делать перестановки всякие".
источник

А

Алексей in Compiler Development
Да и менее императивным от возможности перестановки команд процессор не становится.
источник

АЕ

Артур Ефимов in Compiler Development
Mikhail Maltsev
Нет, порядок не гарантирован даже в самом процессоре.
Тогда программирование было бы невозможным. Однако оно есть. Противоречие.
источник

А

Алексей in Compiler Development
Mikhail Maltsev
Если речь идёт про многопоточную программу, то результат её работы может в общем случае меняться от запуска к запуску.
Ну в многопоточном программировании явно говорят, что гарантий в плане взаимодействия потоков без дополнительных синхронизаций нет. Но в каждом потоке всё вполне последовательно.
источник

MM

Mikhail Maltsev in Compiler Development
Программирование возможно потому что есть чёткие правила как процессор может переставлять команды, а как нет
источник

PS

Peter Sovietov in Compiler Development
Артур Ефимов
Ну так это ж оптимизация. Всё равно есть глобальная «память», а есть инструкции.
А не функции и отсутствие переменных.
Так давно уже нет глобальной памяти. Это особенно заметно было тем, кто работает в области DSP, HPC... скоро и в настольных применениях будет очевидным :)
источник