eddy-em.livejournal.com github.com/eddyem
-
- Вложенная функция даже близко не лямбда. А круче лямбды только
шаблонная лямбда с переменным количеством параметров. И потом, это
просто красиво. VladislavS.(1 знак., 30.12.2023 20:01, картинка)
- А за CamelCase надо убивать в детстве из рогатки ;-) - LightElf(31.12.2023 02:27)
- Это сколько угодно, главное расстановку скобочек не трожь! ЗЫ: В C++ коде и так полно всяких служебных :: ... () <> [] {} и т.д. чтобы выраженмя ещё и snake_case перегружать. К тому же, так хотя бы понятно где класс, метод, константа, тип, переменная открытые или закрытые, - VladislavS.(31.12.2023 08:44)
- А за CamelCase надо убивать в детстве из рогатки ;-) - LightElf(31.12.2023 02:27)
- Не знаю, может и обидятся. На разных языках писал, возможно даже на
десятке языков. Имею твердую убежденность что нет в природе задачи,
не решаемой без вложенных функций. - Cкpипaч(30.12.2023 19:02)
- +100500. alho(353 знак., 01.01.2024 21:26)
- Именно так и объяснено почему в Embedded C++ не включены
виртуальные функции. Хотя как по мне, там где они "выстреливают",
писать по другому - будет еще хуже. - Cкpипaч(01.01.2024 21:33)
- Стараюсь виртуальные не использовать, так как это накладные как на
их вызов, так и на таблицу виртуальных методов. Чего в эмбедде как
раз хочется избежать. Но кое-где все же есть. Крутил и так и сяк,
но построение кода с ними в этих местах проще получается. - VladislavS.(01.01.2024 23:22)
- Возьмем какой-нибудь пример. Пусть регулятор. Cкpипaч(398 знак., 01.01.2024 23:36)
- Звучит как дневник онаниста )))... POV(48 знак., 01.01.2024 23:23)
- Стараюсь виртуальные не использовать, так как это накладные как на
их вызов, так и на таблицу виртуальных методов. Чего в эмбедде как
раз хочется избежать. Но кое-где все же есть. Крутил и так и сяк,
но построение кода с ними в этих местах проще получается. - VladislavS.(01.01.2024 23:22)
- Именно так и объяснено почему в Embedded C++ не включены
виртуальные функции. Хотя как по мне, там где они "выстреливают",
писать по другому - будет еще хуже. - Cкpипaч(01.01.2024 21:33)
- Несомненно. Однако, с вложенными функциями получается намного
проще. - Eddy_Em(30.12.2023 20:11)
- Зачем они нужны? - Andreas(30.12.2023 20:27)
- Нестед функция имеет область видимости переменных родительской
функции. т.е. в нее не надо ничего передавать, и не надо эти
переменные делать глобальными... POV(377 знак., 30.12.2023 20:36)
- Одинаковые блоки с одинаковыми переменными внутри одной ф-ции? Ну
хз,не могу пока представить такого. А если хоть немного разное
проще выдернуть наружу статичной ф-цией. - Andreas(30.12.2023 20:51)
- В нее придется передать и состояние ряда переменных внутри функции.
А нестед функция от этого избавлена. - POV(30.12.2023 20:55)
- Ну да, но вложенная тогда только при условии полной идентичности
блоков кода, иначе тоже внутрь ее что-то надо передавать. - Andreas(30.12.2023 20:57)
- Вот вульгарный пример нестед функции, только что потребовалось.
Нахера я буду внешнюю функции тут лепить и передавать в нее
параметры отрисовываемой ячейки? POV(1 знак., 31.12.2023 20:58, картинка)
- Так вот кто 23 года опыта дельфей имеет. ) Да, есть в этом
прелесть, хотя в мелком ембедде сходу не припомню такого. - Andreas(31.12.2023 22:26)
- Могу ошибаться, но предполагаю что при вычислении БПФ может быть полезно. - POV(31.12.2023 22:30)
- ой, паскаль. прелесть какая. и ведь все понятно, без всех этих
клинописей-скобок и прочей ереси Це)) - Alex68(31.12.2023 21:11)
- Паскаль. Педро Паскаль. SciFi(1 знак., 31.12.2023 21:13, картинка)
- пошто Васеньку обидели, злыдни! - Alex68(31.12.2023 21:16)
- Паскаль. Педро Паскаль. SciFi(1 знак., 31.12.2023 21:13, картинка)
- Так вот кто 23 года опыта дельфей имеет. ) Да, есть в этом
прелесть, хотя в мелком ембедде сходу не припомню такого. - Andreas(31.12.2023 22:26)
- На уровне асма она и не функция - там нет нужды стек сохранять и
т.п. Тупо goto… - Eddy_Em(30.12.2023 21:55)
- Не уровне асма и статичные ф-ции тоже иногда goto, это уж как компилятор решит. - Andreas(30.12.2023 22:00)
- Вот вульгарный пример нестед функции, только что потребовалось.
Нахера я буду внешнюю функции тут лепить и передавать в нее
параметры отрисовываемой ячейки? POV(1 знак., 31.12.2023 20:58, картинка)
- Ну да, но вложенная тогда только при условии полной идентичности
блоков кода, иначе тоже внутрь ее что-то надо передавать. - Andreas(30.12.2023 20:57)
- В нее придется передать и состояние ряда переменных внутри функции.
А нестед функция от этого избавлена. - POV(30.12.2023 20:55)
- Одинаковые блоки с одинаковыми переменными внутри одной ф-ции? Ну
хз,не могу пока представить такого. А если хоть немного разное
проще выдернуть наружу статичной ф-цией. - Andreas(30.12.2023 20:51)
- Нестед функция имеет область видимости переменных родительской
функции. т.е. в нее не надо ничего передавать, и не надо эти
переменные делать глобальными... POV(377 знак., 30.12.2023 20:36)
- Зачем они нужны? - Andreas(30.12.2023 20:27)
- Для решения любой задачи достаточно алгоритмически полного языка.
Всё остальное удобство, скорость и качество разработки. - VladislavS.(30.12.2023 20:02)
- ...т.е. синтаксический сахар. - Cкpипaч(30.12.2023 20:06)
- дело не в сахаре. если вы говнокодер елочной гирлянды то все в
общем то не плохо. но если вы кодите САУ для ядерного реактора, или
крылатой ракеты то тут есть такое: невозможно создать код без
ошибок, невозможно протестировать на все случаи. он еще и сложный
что один гений не может его создать. отсюда еще одно измерение
неопределенности - коллективный код. так вот С++ со своими
непонятными для Вас извратами, НЕ ОГРАНИЧИВАЯ В ВЫРАЗИТЕЛЬНОЙ
МОЩНОСТИ, в большей степент НЕ klen(184 знак., 30.12.2023 20:45)
- хы. 30+ лет назад писал синтаксический анализатор для транслятора бэйсика в кодах Д3-28, всё работало, рекурсивные вызовы самой себя изрядко кушали стэк, но таки его хватило. - Alex68(30.12.2023 21:53)
На Питоне это одна строка.Если честно, очень надеялся что вы не пройдете мимо :) Cкpипaч(143 знак., 30.12.2023 21:01)- Простенький пример для хомячков. Тут вам и шаблон, и лямбдочка, и
вычисления на этапе компиляции. Таблица синусов этапа компиляции. VladislavS.(2 знак., 30.12.2023 22:14, ссылка, картинка)
- Мне для прямого синтеза табличка типа чар понадобилась, так ее тоже
на С сгенерил. Можно и маткадом было. - Visitor(30.12.2023 23:21)
- Что значит тоже? Тут никаких внешних утилит нет. - VladislavS.(31.12.2023 00:47)
- Да, неверно выразился. Таблицу в Майкрософт студио на компе сделал, результат в проц прошил. - Visitor(31.12.2023 15:29)
- таблички всякие лет 40 генерю либо паскалем либо бэйсиком. а таблички мат.функций беру из прошивки синклера. - Alex68(30.12.2023 23:27)
- Что значит тоже? Тут никаких внешних утилит нет. - VladislavS.(31.12.2023 00:47)
- И? Что тут с читаемостью? Как определена ENCODE_TABLE и где? Cкpипaч(86 знак., 30.12.2023 22:26)
- Ссылку на godbolt ткнуть не судьба? - VladislavS.(30.12.2023 22:28)
- Посмотрел. А можно просто описать ОДНУ функцию, инициализирующую
массив, как constexpr? Весь этот выпендреж с перегрузкой операторов
- он необходим? - Cкpипaч(31.12.2023 11:35)
- Можно. Но вы же создадите объект, который с помощью перегрузки
операторов притворится обычным массивом. А с помощью итератора
будет доступен циклу for(auto x : table){] и другим алгоритмам. - VladislavS.(31.12.2023 12:26)
- А просто инициализировать массив? Не меняя его свойств? - Cкpипaч(31.12.2023 12:40)
- Нет. Кто-то должен проитерироваться по всем элементам. Это делает
конструктор класса. Просто функция даст одно значение в месте
вызова. - VladislavS.(31.12.2023 12:45)
- Спасибо, я так и подумал. Т.е. для "прыжка в подпространство" нужен
новый класс. Наследование от стандартных типов в Плюсах не
поддерживается, поэтому сам массив придется делать полем класса (а
можно ли не порождать объект? обращаться только к классу? какая-то
такая магия, вроде бы в Плюсах была?) - Cкpипaч(31.12.2023 12:52)
- Если вы используете какой-то конкретно элемент массива, то весь
массив и не создастся, а просчитается на этапе компиляции. А если
произвольный элемент то либо считать в рантайме, либо весь массив в
памяти. - VladislavS.(31.12.2023 13:23)
- Понятно. Так примерно себе и представлял. С Наступающим! :) - Cкpипaч(31.12.2023 13:48)
- Если вы используете какой-то конкретно элемент массива, то весь
массив и не создастся, а просчитается на этапе компиляции. А если
произвольный элемент то либо считать в рантайме, либо весь массив в
памяти. - VladislavS.(31.12.2023 13:23)
- Спасибо, я так и подумал. Т.е. для "прыжка в подпространство" нужен
новый класс. Наследование от стандартных типов в Плюсах не
поддерживается, поэтому сам массив придется делать полем класса (а
можно ли не порождать объект? обращаться только к классу? какая-то
такая магия, вроде бы в Плюсах была?) - Cкpипaч(31.12.2023 12:52)
- Нет. Кто-то должен проитерироваться по всем элементам. Это делает
конструктор класса. Просто функция даст одно значение в месте
вызова. - VladislavS.(31.12.2023 12:45)
- А просто инициализировать массив? Не меняя его свойств? - Cкpипaч(31.12.2023 12:40)
- Можно. Но вы же создадите объект, который с помощью перегрузки
операторов притворится обычным массивом. А с помощью итератора
будет доступен циклу for(auto x : table){] и другим алгоритмам. - VladislavS.(31.12.2023 12:26)
- Спасибо. Сходу - не нравится, но посмотрю после праздников, может
быть это и есть щастя-нирвана-ригпа :) - Cкpипaч(30.12.2023 22:37)
- Так это не бакс, чтобы всем нравиться, а инструмент позволяющий
делать то что невозможно на православной сишечке. С читабельностью
там всё в порядке для плюсовика ниже среднего уровня. - VladislavS.(30.12.2023 22:41)
- Этот пример с таблицей синуса уже в зубах навяз. Ну да, я на си
таблицу массивом подсовываю, заранее просчитав. Да, в си сделать на
этапе компиляции это нельзя. Да, это может быть полезным
инструментов. Но не безусловным, не определяющим. - POV(30.12.2023 22:43)
- На зубах не на зубах, зато понятен ширнармассам. - VladislavS.(31.12.2023 00:52)
- Про каждый отдельновзятый пример можно сказать "да я это руками
сделаю". - VladislavS.(30.12.2023 22:53)
- Кореш только-только ушел из крупной (очень крупной) айти
компании... POV(529 знак., 30.12.2023 23:06 - 23:28)
- За дефайн вместо констекспр гнать ссаной метлой :))) - VladislavS.(31.12.2023 00:50)
- Неправильно крестится! :-) - SciFi(31.12.2023 09:12)
- Пока в дружной компашке продвинутых кодеров все пишут по понятием,
он один делал работу за пятерых. Пусть теперь сами онанизмом
занимаются, верные механизмы используют. - POV(31.12.2023 00:55)
- То что они не делали целевую работу не отменяет того что надо констекспр использовать. - VladislavS.(31.12.2023 01:09)
- ну тоже позиция. но зачем владение инструментом отождествлять с
блядством? - klen(30.12.2023 23:20)
- Ну выше по ветке и близко такого нет. то знает что-то новое -
трижды молодец. Но навязывать это как ...ммм.. забыл слово.. что-то
церковно-рыцарское... в общем, неправильно (UPD - Священный
Грааль). Каждому овощу своё место... POV(140 знак., 30.12.2023 23:47)
- На церковном и я могу простенько: Так возопьем и возрадуемся, други
мои. Ибо окромя земных другов иных не дано нам. Цените, тех, кто с
вами. - Visitor(30.12.2023 23:56)
- Поддержу.. с наступающим! - POV(31.12.2023 00:01)
- На церковном и я могу простенько: Так возопьем и возрадуемся, други
мои. Ибо окромя земных другов иных не дано нам. Цените, тех, кто с
вами. - Visitor(30.12.2023 23:56)
- Ну выше по ветке и близко такого нет. то знает что-то новое -
трижды молодец. Но навязывать это как ...ммм.. забыл слово.. что-то
церковно-рыцарское... в общем, неправильно (UPD - Священный
Грааль). Каждому овощу своё место... POV(140 знак., 30.12.2023 23:47)
- За дефайн вместо констекспр гнать ссаной метлой :))) - VladislavS.(31.12.2023 00:50)
- Кореш только-только ушел из крупной (очень крупной) айти
компании... POV(529 знак., 30.12.2023 23:06 - 23:28)
- Я больше скажу: нет никаких проблем вставить в процесс сборки
генерацию таблицы синусов иными средствами. И уж точно ради этого я
бы не стал плющить и колбасить сишечку. - SciFi(30.12.2023 22:46)
- Открыть проект в любимой IDE и нажать Build против танцев с бубном по воссозданию окружения для сборки. Да ну на. - VladislavS.(30.12.2023 23:21)
- Как я понял, основные восторги плюсоводов - вокруг темплейтов, в
комбинации вычислениями на этапе компиляции. В этом примере они
хорошо разжеваны. - Cкpипaч(30.12.2023 22:50)
- Может быть. Просто когда к чайнику приделали кофеварку, это ещё
как-то можно было понять. Но после утюга, стиральной машины,
пылесоса возникло недоумение. И этот список постоянно растёт. - SciFi(30.12.2023 22:54)
- ЕвгенийCD еще дохуя-лет-назад здесь сказал: "С++ эффективен не сам
по себе, а только в сочетании со стандартом кодирования и
выделением подмножества языка, для именно вашей предметной
области". Именно в силу того, что туда все это уже затащили, можно
выделить DSL (domain specific language) внутри него, под любую предметною область! Не потратив ни копейки
на создание нового компилятора! Cкpипaч(57 знак., 30.12.2023 23:00)
- Превращение языка в очередной PL/1 и выделение из него упрощенного
языка PL/M конечно же здорово, но зачем оно нужно если есть
оригинальные PL/1 и PL/М? - Boвa(01.01.2024 21:12)
- "Фатальный недостаток" (заговорщически подмигивает) - Cкpипaч(01.01.2024 21:16)
- Вам, программистам, конечно, виднее. Но на мой дилетантский взгляд это натягивание совы на глобус. - SciFi(30.12.2023 23:01)
- Превращение языка в очередной PL/1 и выделение из него упрощенного
языка PL/M конечно же здорово, но зачем оно нужно если есть
оригинальные PL/1 и PL/М? - Boвa(01.01.2024 21:12)
- ЕвгенийCD еще дохуя-лет-назад здесь сказал: "С++ эффективен не сам
по себе, а только в сочетании со стандартом кодирования и
выделением подмножества языка, для именно вашей предметной
области". Именно в силу того, что туда все это уже затащили, можно
выделить DSL (domain specific language) внутри него, под любую предметною область! Не потратив ни копейки
на создание нового компилятора! Cкpипaч(57 знак., 30.12.2023 23:00)
- Может быть. Просто когда к чайнику приделали кофеварку, это ещё
как-то можно было понять. Но после утюга, стиральной машины,
пылесоса возникло недоумение. И этот список постоянно растёт. - SciFi(30.12.2023 22:54)
- Этот пример с таблицей синуса уже в зубах навяз. Ну да, я на си
таблицу массивом подсовываю, заранее просчитав. Да, в си сделать на
этапе компиляции это нельзя. Да, это может быть полезным
инструментов. Но не безусловным, не определяющим. - POV(30.12.2023 22:43)
- Так это не бакс, чтобы всем нравиться, а инструмент позволяющий
делать то что невозможно на православной сишечке. С читабельностью
там всё в порядке для плюсовика ниже среднего уровня. - VladislavS.(30.12.2023 22:41)
- Посмотрел. А можно просто описать ОДНУ функцию, инициализирующую
массив, как constexpr? Весь этот выпендреж с перегрузкой операторов
- он необходим? - Cкpипaч(31.12.2023 11:35)
- Ссылку на godbolt ткнуть не судьба? - VladislavS.(30.12.2023 22:28)
- Мне для прямого синтеза табличка типа чар понадобилась, так ее тоже
на С сгенерил. Можно и маткадом было. - Visitor(30.12.2023 23:21)
- Я тут уже закидывал - ctre шаблонные регулярные выражения Ханны
Дусиковой. Должно войти в стандарт С++ будующей ревизии klen(209 знак., 30.12.2023 21:56, ссылка)
- Цитата: "непросыкаймо как оно такое маленькое получается НО работает". Для меня это приговор. Cкpипaч(592 знак., 30.12.2023 22:13)
- Ну я и написал - от языка там нихера нет. Только здоровенные
библиотеки, где "всё сделано за нас". С прибитием гвоздями кодера к
этой технологии... POV(151 знак., 30.12.2023 21:59)
- воля ваша - делайте на С, я не политрук, я лишь обосновал свое
мнение. но к сожалению вы не поняли главного - там ничего гвоздями
не прибито, недостаток только один - квалификация для пользовагния
инструментом зашкварная нужна.... - klen(30.12.2023 22:18)
- Сомневаюсь в корректном применении слова "зашквар". Но нет ничего
колдунского (авно как и чего-то очень полезного) в последних
плюсах. Сиди и решай задачи, опыт придет и довольно быстро. - POV(30.12.2023 22:26)
- Да ну нахер. Вы как хотите, а у меня нет на это времени-денег. Софт
это не что-то что в веках пребывает неизменным, софт сопровождать нужно. Объяснять заказчику как оно задумано, чтобы работало, как минимум. Это должен быть способен выполнить первый
пробежавший мимо
студентпрограммист, а не гуру с двадцатилетним стажем. - Cкpипaч(30.12.2023 22:31)- Так новые веяния каждые 5 лет приходят. Досидеть на одной
технологии дло пенсии (оставаясь востребованным) невозможно. И
программирование - последнее место где надо стремится к этому... POV(281 знак., 30.12.2023 22:41)
- Я смотрю на это с колокольни директора компании. - Cкpипaч(30.12.2023 22:46)
- Я к сожалению имею максимум номинальные руководящие должности после
ухода в айти... POV(324 знак., 30.12.2023 23:01)
- (->) Cкpипaч(178 знак., 30.12.2023 23:09, ссылка)
- Звучит мощно (я нихуя не понял), но плюсовики в массе своей не
сильно компетентные люди, они "просто плюсовики" и так красиво
аргументировать не умеют ) - POV(30.12.2023 23:11)
- Это потому что я не программист, а менеджер :))) - Cкpипaч(30.12.2023 23:14)
- Звучит мощно (я нихуя не понял), но плюсовики в массе своей не
сильно компетентные люди, они "просто плюсовики" и так красиво
аргументировать не умеют ) - POV(30.12.2023 23:11)
- (->) Cкpипaч(178 знак., 30.12.2023 23:09, ссылка)
- Я к сожалению имею максимум номинальные руководящие должности после
ухода в айти... POV(324 знак., 30.12.2023 23:01)
- Я смотрю на это с колокольни директора компании. - Cкpипaч(30.12.2023 22:46)
- Так новые веяния каждые 5 лет приходят. Досидеть на одной
технологии дло пенсии (оставаясь востребованным) невозможно. И
программирование - последнее место где надо стремится к этому... POV(281 знак., 30.12.2023 22:41)
- Да ну нахер. Вы как хотите, а у меня нет на это времени-денег. Софт
это не что-то что в веках пребывает неизменным, софт сопровождать нужно. Объяснять заказчику как оно задумано, чтобы работало, как минимум. Это должен быть способен выполнить первый
пробежавший мимо
- Сомневаюсь в корректном применении слова "зашквар". Но нет ничего
колдунского (авно как и чего-то очень полезного) в последних
плюсах. Сиди и решай задачи, опыт придет и довольно быстро. - POV(30.12.2023 22:26)
- воля ваша - делайте на С, я не политрук, я лишь обосновал свое
мнение. но к сожалению вы не поняли главного - там ничего гвоздями
не прибито, недостаток только один - квалификация для пользовагния
инструментом зашкварная нужна.... - klen(30.12.2023 22:18)
- Простенький пример для хомячков. Тут вам и шаблон, и лямбдочка, и
вычисления на этапе компиляции. Таблица синусов этапа компиляции. VladislavS.(2 знак., 30.12.2023 22:14, ссылка, картинка)
- Ха, 146% ты используешь что-то готовое, а не "напишешь". Здравствуй
Питон, за пределами бибилиотек которого что-то сделать крайне
нетривиально. 99% кодеров этого тупо не смогут. - POV(30.12.2023 20:58)
- Но кто-то же это готовое пишет? - VladislavS.(30.12.2023 22:08)
- 1% плюсовиков. Не всем это задротство доступно и/или интересно. - POV(30.12.2023 22:25)
- Но кто-то же это готовое пишет? - VladislavS.(30.12.2023 22:08)
- дело не в сахаре. если вы говнокодер елочной гирлянды то все в
общем то не плохо. но если вы кодите САУ для ядерного реактора, или
крылатой ракеты то тут есть такое: невозможно создать код без
ошибок, невозможно протестировать на все случаи. он еще и сложный
что один гений не может его создать. отсюда еще одно измерение
неопределенности - коллективный код. так вот С++ со своими
непонятными для Вас извратами, НЕ ОГРАНИЧИВАЯ В ВЫРАЗИТЕЛЬНОЙ
МОЩНОСТИ, в большей степент НЕ klen(184 знак., 30.12.2023 20:45)
- ...т.е. синтаксический сахар. - Cкpипaч(30.12.2023 20:06)
- +100500. alho(353 знак., 01.01.2024 21:26)
- Вложенная функция даже близко не лямбда. А круче лямбды только
шаблонная лямбда с переменным количеством параметров. И потом, это
просто красиво. VladislavS.(1 знак., 30.12.2023 20:01, картинка)