-
- А если программу на С компилировать как С++, получив при этом все
плюсы оптимизатора, это будет уже С++? - AlexBi(01.10.2022 14:33)
- Какие плюсы оптимизатора ожидаете на том же коде? Почему результат
должен стать другим? - VladislavS.(01.10.2022 14:36)
- const будет практически constexpr, плюс LTO - AlexBi(01.10.2022 14:48)
- LTO и на С коде работает. А const и constexpr это из разной оперы.
В тех местах где вместо constexpr можно написать const разницы в
результате не будет никакой. Единственную пользу, которую можно
поиметь от компилирования С-кода компилятором С++, это более
строгий контроль типов. Ну и синтаксические плюшки кое-где. - VladislavS.(01.10.2022 15:28)
- const применительно к функции не дает того эффекта как constexpr, и
оптимизация в итоге получается не такой эффективной. Правда я не
уверен что компилятор С++ будет рассматривать const как constexpr.
Хотя, const еще влияет на размещение (ОЗУ-ПЗУ), для контроллеров
это существенно. А как constexpr влияет? - AlexBi(01.10.2022 22:15)
- constexpr применительно к функции не гарантирует её вычисление в
компайлтайме. Только для переменной. Вот смотрите несколько
интересных примеров: VladislavS.(1362 знак., 01.10.2022 23:29, картинка, картинка)
- Ещё про const и размещение в памяти: VladislavS.(127 знак., 02.10.2022 00:44)
- constexpr применительно к функции не гарантирует её вычисление в
компайлтайме. Только для переменной. Вот смотрите несколько
интересных примеров: VladislavS.(1362 знак., 01.10.2022 23:29, картинка, картинка)
- const применительно к функции не дает того эффекта как constexpr, и
оптимизация в итоге получается не такой эффективной. Правда я не
уверен что компилятор С++ будет рассматривать const как constexpr.
Хотя, const еще влияет на размещение (ОЗУ-ПЗУ), для контроллеров
это существенно. А как constexpr влияет? - AlexBi(01.10.2022 22:15)
- LTO и на С коде работает. А const и constexpr это из разной оперы.
В тех местах где вместо constexpr можно написать const разницы в
результате не будет никакой. Единственную пользу, которую можно
поиметь от компилирования С-кода компилятором С++, это более
строгий контроль типов. Ну и синтаксические плюшки кое-где. - VladislavS.(01.10.2022 15:28)
- const будет практически constexpr, плюс LTO - AlexBi(01.10.2022 14:48)
- Какие плюсы оптимизатора ожидаете на том же коде? Почему результат
должен стать другим? - VladislavS.(01.10.2022 14:36)
- Unix way! - SciFi(01.10.2022 10:29)
- +100. Также как вредны пустые абстракции, вредны и попытки писать
все-все в одном семантическом поле. - Cкpипaч(01.10.2022 12:04)
- Глупость несусветная. Вот в примере с таблицей синусов, если вам
нужно другое количество точек в таблице или другая точность/тип
данных, какие будут ваши действия? - VladislavS.(01.10.2022 14:10)
- таблица синусов - частный пример таблиц, заливаемых во флеш. их
особенность - достаточно простая вычисляемость. а что если таблица
зависит от внешних данных? а что если формулу расчёта хрен напишешь
в десяток строк? Mahagam(397 знак., 01.10.2022 15:16)
- Чувствуете разницу между сложной вычислительной задачей по
подготовке данных и написанием внешней программы на каждый чих? - VladislavS.(01.10.2022 15:35)
- и часто вы чихаете? ну, в смысле - часто вы там таблицы через
constexpr заполняете? не надо частный и достаточно редкий случай
приводить аки невероятное превосходство "а вы так не умеете". - Mahagam(01.10.2022 16:08)
- Не "вы так не умеете", а "возможности языка не позволяют". Как говорится, почувствуйте разницу. И да, формирование наборов константных данных достаточно распространённая задача: вышеупомянутая таблица синусов, таблицы перекодировки самые разные, табличная конвертация цветовых пространств, масштабирование и поворот шрифтов, USB дескриптопы и т.д. - VladislavS.(01.10.2022 21:59)
- Во-первых, чих далеко не каждый. Во-вторых, для ымбеддера безусловно полезно уметь встраивать в процесс сборки внешние скрипты, просто чтобы быть готовым ко всему. Так что этот аргумент скорее за скрипты. - SciFi(01.10.2022 15:37)
- и часто вы чихаете? ну, в смысле - часто вы там таблицы через
constexpr заполняете? не надо частный и достаточно редкий случай
приводить аки невероятное превосходство "а вы так не умеете". - Mahagam(01.10.2022 16:08)
- Чувствуете разницу между сложной вычислительной задачей по
подготовке данных и написанием внешней программы на каждый чих? - VladislavS.(01.10.2022 15:35)
- Мои действия будут дословно такие же - переписать программу
генерации таблицы. И код, который с таблицей работает. - Cкpипaч(01.10.2022 15:08)
- То есть, надо держать под рукой ещё одну среду разработки? - VladislavS.(01.10.2022 15:37)
- В последнее время скриптами резал bmp с буквами на шрифты, собирал
прошивку из кусков с добавлением серийника и мак, обфурцировал и
зажимал html. Сомневаюсь, что тут мне помогли бы constexp. Зато на
хабре постоянно споры как на плюсах проще светляком помигать с
текстом проги на пару страниц. Может в мегапроектах это и
оправданно, но в небольших проектах это простыни малочитаемого
текста. - Andreas(01.10.2022 14:41)
- Выполнять сложные разовые задачи типа "резать bmp" с помощью
сложного кода нерационально, хотя и возможно. Какие трудности из
одного большого массива сделать несколько маленьких в constexpr?
Никаких. А вот потом эти буквы повернуть/масштабировать/и т.д. в
constexpr милое дело. Сложный код имеет смысл писать для часто
выполняемых задач. Дрыганье ногами/мигание светиком есть в 99%
проектов. Как в больших, так и в малых. Почему бы не сделать его
удобным и эффективным? Почему вас VladislavS.(472 знак., 01.10.2022 15:27)
- На голых сях это проще и нагляднее выходит. Gpio_set, gpio_reset, gpio_enable - просто пишется, просто используется, просто портируется на другое семейство. Возможно в чуть более сложные действиях, типа мигания, можно сделать удобнее абстракцию от железа, но на том же хабре почему-то это выливается тоже в многостраничный мрак. - Andreas(01.10.2022 16:13)
- Спагетти-данные как изысканная приправа к спагетти-коду :) - Cкpипaч(01.10.2022 15:34)
- Я опять должен был не заметить? - VladislavS.(01.10.2022 15:39)
- Выполнять сложные разовые задачи типа "резать bmp" с помощью
сложного кода нерационально, хотя и возможно. Какие трудности из
одного большого массива сделать несколько маленьких в constexpr?
Никаких. А вот потом эти буквы повернуть/масштабировать/и т.д. в
constexpr милое дело. Сложный код имеет смысл писать для часто
выполняемых задач. Дрыганье ногами/мигание светиком есть в 99%
проектов. Как в больших, так и в малых. Почему бы не сделать его
удобным и эффективным? Почему вас VladislavS.(472 знак., 01.10.2022 15:27)
- Не волнуйтесь, справимся. Кстати, вы заметили, как подход
оппонентов вы назвали глупостью, а в сторону вашего подхода никаких
комков грязи не летело? - SciFi(01.10.2022 14:17)
- Ну как же, не заметил? Заметил. Вредными назвали. Причём
безапелляционно. Действительно, зачем какие-то доводы или примеры
приводить? Вбросим и авторитетом затопчем. Так не работает. - VladislavS.(01.10.2022 14:39)
- У меня к плюсам одна главная претензия: они огромно-монструозны, к
тому же продолжают расти не по дням, а по часам. Скоро в тему
плюсов смогут входить только те, кто готовы посвятить этой теме
бОльшую часть жизни. Ну или просто шибко заточенные под такую
деятельность. Это непрактично. Ну а про преимущества Unix way
можете просто погуглить, если интересно. - SciFi(01.10.2022 14:44)
- Это преувеличение. Прям таки больших и сложных расширений языка
было всего несколько. Раз в 3 года заглянуть "что там новенького"
не сложно. И каждое нововведение не просто с потолка сваливается, а
то что необходимо для работы и достаточно легко принимается. - VladislavS.(01.10.2022 16:06)
- "Всего несколько раз"? И это лишь "больших и сложных"? Вы блестяще подтвердили мой тезис :-) - SciFi(01.10.2022 16:10)
- Это преувеличение. Прям таки больших и сложных расширений языка
было всего несколько. Раз в 3 года заглянуть "что там новенького"
не сложно. И каждое нововведение не просто с потолка сваливается, а
то что необходимо для работы и достаточно легко принимается. - VladislavS.(01.10.2022 16:06)
- У меня к плюсам одна главная претензия: они огромно-монструозны, к
тому же продолжают расти не по дням, а по часам. Скоро в тему
плюсов смогут входить только те, кто готовы посвятить этой теме
бОльшую часть жизни. Ну или просто шибко заточенные под такую
деятельность. Это непрактично. Ну а про преимущества Unix way
можете просто погуглить, если интересно. - SciFi(01.10.2022 14:44)
- Ну как же, не заметил? Заметил. Вредными назвали. Причём
безапелляционно. Действительно, зачем какие-то доводы или примеры
приводить? Вбросим и авторитетом затопчем. Так не работает. - VladislavS.(01.10.2022 14:39)
- таблица синусов - частный пример таблиц, заливаемых во флеш. их
особенность - достаточно простая вычисляемость. а что если таблица
зависит от внешних данных? а что если формулу расчёта хрен напишешь
в десяток строк? Mahagam(397 знак., 01.10.2022 15:16)
- Глупость несусветная. Вот в примере с таблицей синусов, если вам
нужно другое количество точек в таблице или другая точность/тип
данных, какие будут ваши действия? - VladislavS.(01.10.2022 14:10)
- +100. Также как вредны пустые абстракции, вредны и попытки писать
все-все в одном семантическом поле. - Cкpипaч(01.10.2022 12:04)
- А если программу на С компилировать как С++, получив при этом все
плюсы оптимизатора, это будет уже С++? - AlexBi(01.10.2022 14:33)