172 похожих чатов

Тогда в чем вопрос? Если вычислимость является аксиомой для всех

sconst, то это самый тривиальный случай — компилятор может просто начинать вычислять

27 ответов

28 просмотров

Конечно может, у него есть такое право. А @iccsf утверждает, что это его обязанность.

Маjко-Lubinéts Автор вопроса
Mikail Bagishov
Конечно может, у него есть такое право. А @iccsf у...

А по какому критерию компилятор будет решать что ему вычислять, а что нет, если все sconst вычислимы? if rand() == 1?

Маjко-Lubinéts Автор вопроса
Маjко-Lubinéts Автор вопроса
Mikail Bagishov
Ну например по такому, или каждое пятое.

Хорошо, допустим. Почему компилятор должен каждую твою функцию компилировать в эквивалентное внутреннее представление, а не заменять каждую пятую на return 0?

Mikail Bagishov
Ну например по такому, или каждое пятое.

На самом деле, я даже могу привести пример где это осмысленно: компилятор 1) доказал, что конст-выражение корректно. 2) опасается, что выражение потребует для вычисления более 10**18 единичных шагов 3) предполагает, что функция будет вызываться редко. Тогда он: 1) может при каждом запуске функции честно вычислять это выражение (это точно корректное поведение) 2) по идее, может завернуть в лейзи-статик (но я не на 100% уверен, что так можно) И сильно сэкономить на компиляции

Маjко-Lubinéts Автор вопроса
Mikail Bagishov
На самом деле, я даже могу привести пример где это...

Я предпочту чтобы компилятор вел себя предсказуемо, спасибо

Маjко Lubinéts
Хорошо, допустим. Почему компилятор должен каждую ...

Потому что тут есть конкретное as-if rule: есть программа на расте, есть абстрактная машина, есть набор поведений этой программв на этой машине. Поведение бинарника на реальной машине должно быть одним из поведений исходной программы на абстрактрой машине

Маjко Lubinéts
Я предпочту чтобы компилятор вел себя предсказуемо...

Так и пишем в стандарт: "реализация должна вести себя предсказуемо по мнению mersinvald и mikailbag"?:)

Маjко-Lubinéts Автор вопроса
Mikail Bagishov
Так и пишем в стандарт: "реализация должна вести с...

Если функция помечена как sconst и все ее параметры помечены как sconst, результат тоже является sconst и обязан быть вычислен во время компиляции

Mikail Bagishov
Потому что тут есть конкретное as-if rule: есть пр...

Ну и если компилятор заменит тело функции на return 0, то (кроме вырожденных случаев типа в функции было UB или функция никогда не вызывалась) as-if rule сломается

Маjко Lubinéts
Если функция помечена как sconst и все ее параметр...

То есть в оперативной памяти компилятора на миг должно появится значение выражения? Или в бинарнике? Или в бинарнике, но до применения к нему оптимизаций?

Börgar
да, все со своим cost

нет, просто я не смог найти, чтобы там требовали от компилятора вычисления на этапе компиляции. Там как-то хитро сделано и вводится новые типы constant expression

Börgar
ну его мохно в темплейт кинуть, во

А разве это заставит компилятор вычислить точное значение?

Alexander "SonnySlave" Zaitsev
и?

а мономорфизация же всегда в компайл-тайме

Börgar
а ♂hunded bucks♂ можно?

тогда откуда такое утверждение?

Börgar
из опыта, тк я бедній щкольник

тут опыт не интересен. тут интересно формальное описание

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта