-
- Предлагаю еще раз вернуться к сути - на прикладном уровне не должно
быть манипуляции битами. Cкpипaч(746 знак., 21.06.2024 08:11 - 22.06.2024 14:05)
- Именно операции над объектом barrier будут правильными! Costic(83 знак., 22.06.2024 15:11)
- Категоричненько :) А вы сколько лет СКУД занимаетесь? - Cкpипaч(22.06.2024 21:13)
- 0. :-) А вот языками занимался, особенно в институте. Считаю, что
флудить-теоретизировать имею право. ;-) Если уж очень хочется
открыть барьер, то только так: ErrorCode Open(Barrier
&barrier); - Costic(22.06.2024 22:03)
- Теория это очень интересно. Люблю теорию :) Вызов Open, как я понимаю, блокирующий? - Cкpипaч(19.07.2024 18:06)
- 0. :-) А вот языками занимался, особенно в институте. Считаю, что
флудить-теоретизировать имею право. ;-) Если уж очень хочется
открыть барьер, то только так: ErrorCode Open(Barrier
&barrier); - Costic(22.06.2024 22:03)
- Категоричненько :) А вы сколько лет СКУД занимаетесь? - Cкpипaч(22.06.2024 21:13)
- Именно операции над объектом barrier будут правильными! Costic(83 знак., 22.06.2024 15:11)
- "Светодиод ничего не должен знать". Не путайте интерфейс и
реализацию. ИНТЕРФЕЙС и не знает. Cкpипaч(345 знак., 20.06.2024 21:27)
- Вы это "самым прямым" способом делаете для каждой реализации
руками. А это легко и непринуждённо может делать компилятор. И он,
в отличии от вас, не ошибётся. Получается, что абстракции не
лишние, а позволяющие избавить вас от писанины, ошибок и
необходимости заглядывания внутрь. Что в конечном счёте повышает
качество кода и производительность вашей работы. - VladislavS.(20.06.2024 21:50)
- Да, именно так плюсовики всегда и говорят. Но правда состоит в том,
что вы тупо графоманы, без обид. Cкpипaч(401 знак., 20.06.2024 22:09)
- Плюсовики не сразу такими родились, а пришли к этому c опытом. Когда земля была чуть тёплая таких возможностей в языке не было. Могли бы всё по старинке и делать, если бы это было лучше. Тому что я рассказываю применительно к эмбэдду нигде не учат. - VladislavS.(20.06.2024 22:28)
- Сложность библиотечного кода на плюсах, естественно, выше. Именно
сложность, а не объём текста. Скорость набора текста никогда не
была ограничивающим фактором в программировании. Но зато и
возможности выше. Что в последствии даёт экономию в момент
применения. Класс пишешь один раз, а применяешь многократно. А в
месте применения всё сильно проще получается. - VladislavS.(20.06.2024 22:15)
- Ненужная. Сложность. - Cкpипaч(20.06.2024 22:23)
- Нет, это виноград кислый. - VladislavS.(20.06.2024 22:30)
- Это не виноград. И когда возникает потребность в (еще недавно)
работающей системе найти почему она стала "как-то странно работать"
(тм), то каждая лишняя абстракция как удар по печени. - Cкpипaч(20.06.2024 22:34)
- Мой опыт говоит об обратном. Качественно написанная и
оттестированная абстракция работает лучше и понятнее. Когда я
говорю "оно не может не работать" мне уже верят на слово и идут
исправлять у себя :) - VladislavS.(20.06.2024 22:48)
- "Качественно написанная и оттестированная..." любопытно, как вы
этого добиваетесь? Как умудряетесь проверить все варианты
использования, да еще на разном железе? А описание составляете, в
котором будут указаны ограничения по применению? AlexBi(412 знак., 21.06.2024 10:54)
- Ктулху запрещает посмотреть что делает метод LED::On() ? - VladislavS.(21.06.2024 11:09)
- На сколько я понял идею метапрограммирования на базе шаблонов
(возможно понял не правильно), там нет "программы"
(последовательность действий, как в С), там есть "правила" (как в
makefile), которые в итоге разворачиваются в текст программы.
Наверное приличная IDE может показать, что получится в итоге, но
без посторонней помощи разворачивать в голове цепочку правил не
просто. Или я ошибаюсь? - AlexBi(21.06.2024 11:20)
- Не совсем. Развернуть в текст программы это обычный препроцессор.
Метапрограмма на этапе компиляции генерирует некие константные
данные или конструирует типы из которых потом либо инстанцируются
шаблоны, либо просто формируются константные данные. - VladislavS.(21.06.2024 13:02)
- Макросы это уже мета- или еще нет? - ASDFS(21.06.2024 13:12)
- Не совсем. Развернуть в текст программы это обычный препроцессор.
Метапрограмма на этапе компиляции генерирует некие константные
данные или конструирует типы из которых потом либо инстанцируются
шаблоны, либо просто формируются константные данные. - VladislavS.(21.06.2024 13:02)
- На сколько я понял идею метапрограммирования на базе шаблонов
(возможно понял не правильно), там нет "программы"
(последовательность действий, как в С), там есть "правила" (как в
makefile), которые в итоге разворачиваются в текст программы.
Наверное приличная IDE может показать, что получится в итоге, но
без посторонней помощи разворачивать в голове цепочку правил не
просто. Или я ошибаюсь? - AlexBi(21.06.2024 11:20)
- Ктулху запрещает посмотреть что делает метод LED::On() ? - VladislavS.(21.06.2024 11:09)
- У каждого свой опыт. Мой - за 2023й больше половины переделок в коде нашей SCADA было вызвано минорными изменениями в коде сторонних библиотек и веб-броузеров. - Cкpипaч(21.06.2024 07:44)
- Мне верят с сишником - я тоже не подвожу. Это не имеет никакого
отношения к инструменту в случае опытного и аккуратного
исполнителя. - POV(20.06.2024 22:55)
- Пардон, это Скрипач себе не верит. :) - VladislavS.(20.06.2024 23:12)
- Тут недавно давали сцылочку на статью, про то, что константа, по
умолчанию, это double. Чувак искал такие неявные присвоения и
находил их дажэ в проверенных либах. Типа, вместо хардверного
float, поднимался софтверный double, с соотвецтвующим
быстродействием. "Верить, в наше время, нельзя никому..." - mse homjak(20.06.2024 23:22)
- Тем более, стоит выбирать языки с более строгим контролем типов и
наличием механизма проверки и ограничея типов (концепты). - VladislavS.(21.06.2024 00:18)
- Т.е. Ц и ЦПП не роялят? - mse homjak(21.06.2024 18:34)
- У одного из них нет ни первого, ни второго. - VladislavS.(21.06.2024 23:53)
- Зато у другого-то есть. А тем не менее, разницы нет. - mse homjak(22.06.2024 19:57)
- Так не воспользовались механизмом. - VladislavS.(23.06.2024 08:27)
- Зато у другого-то есть. А тем не менее, разницы нет. - mse homjak(22.06.2024 19:57)
- У одного из них нет ни первого, ни второго. - VladislavS.(21.06.2024 23:53)
- т.е. Delphi 12? - POV(21.06.2024 00:44)
- Он умеет в эмбедде? Тогда почему бы и да. - VladislavS.(21.06.2024 15:19)
- Т.е. Ц и ЦПП не роялят? - mse homjak(21.06.2024 18:34)
- Тем более, стоит выбирать языки с более строгим контролем типов и
наличием механизма проверки и ограничея типов (концепты). - VladislavS.(21.06.2024 00:18)
- Тут недавно давали сцылочку на статью, про то, что константа, по
умолчанию, это double. Чувак искал такие неявные присвоения и
находил их дажэ в проверенных либах. Типа, вместо хардверного
float, поднимался софтверный double, с соотвецтвующим
быстродействием. "Верить, в наше время, нельзя никому..." - mse homjak(20.06.2024 23:22)
- Пардон, это Скрипач себе не верит. :) - VladislavS.(20.06.2024 23:12)
- "Качественно написанная и оттестированная..." любопытно, как вы
этого добиваетесь? Как умудряетесь проверить все варианты
использования, да еще на разном железе? А описание составляете, в
котором будут указаны ограничения по применению? AlexBi(412 знак., 21.06.2024 10:54)
- Мой опыт говоит об обратном. Качественно написанная и
оттестированная абстракция работает лучше и понятнее. Когда я
говорю "оно не может не работать" мне уже верят на слово и идут
исправлять у себя :) - VladislavS.(20.06.2024 22:48)
- Это не виноград. И когда возникает потребность в (еще недавно)
работающей системе найти почему она стала "как-то странно работать"
(тм), то каждая лишняя абстракция как удар по печени. - Cкpипaч(20.06.2024 22:34)
- Нет, это виноград кислый. - VladislavS.(20.06.2024 22:30)
- Ненужная. Сложность. - Cкpипaч(20.06.2024 22:23)
- Да, именно так плюсовики всегда и говорят. Но правда состоит в том,
что вы тупо графоманы, без обид. Cкpипaч(401 знак., 20.06.2024 22:09)
- Вы это "самым прямым" способом делаете для каждой реализации
руками. А это легко и непринуждённо может делать компилятор. И он,
в отличии от вас, не ошибётся. Получается, что абстракции не
лишние, а позволяющие избавить вас от писанины, ошибок и
необходимости заглядывания внутрь. Что в конечном счёте повышает
качество кода и производительность вашей работы. - VladislavS.(20.06.2024 21:50)
- Да. Именно так. Потому что это - читабельно. Cкpипaч(112 знак., 20.06.2024 21:18)
- Это не читабельно, а сто раз писабельно. Вместо того чтобы один раз
написать универсальный метод, который ещё и автоматически
оптимизироваться будет. Ведь управлять ногой, на которой висит
светодиод, можно разными способами. Можно рассказать компилятору
как это сделать лучше и он будет делать это сам. - VladislavS.(20.06.2024 21:28)
- Насрать на "писабельность". Cкpипaч(189 знак., 20.06.2024 21:38)
- А мне не приходится. Я всегда знаю, что мой класс делает только то
что положено объекту который он описывает. Синтезатор частот
рассчитывает делители и грузит регистры. И делает это одинаково на
любом контроллере. Чего туда заглядывать то? - VladislavS.(20.06.2024 21:54)
- Я - наладчик. Вы - писатель (пожимает плечами) - Cкpипaч(20.06.2024 22:02)
- Я не понимаю что такое наладчик. А я программист и мой подход очень
часто позволяет запустить проект с листа, если он собран из ранее
использовавшихся составляющих. Просто описываю что на каком
порту/интерфейсе висит и оно сразу работает без переписываний
внутренностей. - VladislavS.(20.06.2024 22:16)
- Можно конкретику? Пример кода? А то срётесь, а чего срётесь - не
понимаю. И еще... Как классифицирется случай, когда один и тот же
человек в одном проекте "наладчик", а в другом "программист"? - VLLV(21.06.2024 08:21)
- КМК, вопрос в том, что Motor_LED_On() (ну или, например,
Motor->LED->On()) относится к прикладному ПО. В то же
время страдания на тему LED::On() относятся к системному, и там, не
имея привязки к приложению можно аж добавить свойство а-ля Red
и/или какой-то поряковый номер со схемы электрической. В прикладной
части важно чтобы сама функция была обеспечена системной частью, но
головное - конечное документированное расположение на морде. При
миграции код Vit(114 знак., 23.06.2024 10:59)
- Все же мы большей частью болтаемся в низкоуровнем эмбеддерстве, и
для меня вопрос скорее не про прикладной/системный уровни, а такой
- или однослойные макросы, как в примере Скрипача, или с
прокладочкой с элементами абстракции типа таблички с распределением
выводов. Окупается ли эта прокладочка? Если же все-таки про
прикладной/системный ... Когда "дерганье вывода" требует больше
интеллекта, для меня это однозначно прикладной уровень. Как раз
сейчас отбиваюсь от проекта с VLLV(114 знак., 24.06.2024 02:24)
- С расширителями вывод приходится делать через чтение-модификация-запись (обычно заводится буфер). Соответственно уже возникает прокладка. Не вижу как без неё. - Vit(24.06.2024 08:16)
- Прокладочка КМК нужна обязательно. Но относить ее нужно к прикладной программе, а не к железу. Таблички? Предпочитаю явный if-elsif. Cкpипaч(342 знак., 24.06.2024 08:00)
- Все же мы большей частью болтаемся в низкоуровнем эмбеддерстве, и
для меня вопрос скорее не про прикладной/системный уровни, а такой
- или однослойные макросы, как в примере Скрипача, или с
прокладочкой с элементами абстракции типа таблички с распределением
выводов. Окупается ли эта прокладочка? Если же все-таки про
прикладной/системный ... Когда "дерганье вывода" требует больше
интеллекта, для меня это однозначно прикладной уровень. Как раз
сейчас отбиваюсь от проекта с VLLV(114 знак., 24.06.2024 02:24)
- КМК, вопрос в том, что Motor_LED_On() (ну или, например,
Motor->LED->On()) относится к прикладному ПО. В то же
время страдания на тему LED::On() относятся к системному, и там, не
имея привязки к приложению можно аж добавить свойство а-ля Red
и/или какой-то поряковый номер со схемы электрической. В прикладной
части важно чтобы сама функция была обеспечена системной частью, но
головное - конечное документированное расположение на морде. При
миграции код Vit(114 знак., 23.06.2024 10:59)
- Можно конкретику? Пример кода? А то срётесь, а чего срётесь - не
понимаю. И еще... Как классифицирется случай, когда один и тот же
человек в одном проекте "наладчик", а в другом "программист"? - VLLV(21.06.2024 08:21)
- Я не понимаю что такое наладчик. А я программист и мой подход очень
часто позволяет запустить проект с листа, если он собран из ранее
использовавшихся составляющих. Просто описываю что на каком
порту/интерфейсе висит и оно сразу работает без переписываний
внутренностей. - VladislavS.(20.06.2024 22:16)
- Я - наладчик. Вы - писатель (пожимает плечами) - Cкpипaч(20.06.2024 22:02)
- А мне не приходится. Я всегда знаю, что мой класс делает только то
что положено объекту который он описывает. Синтезатор частот
рассчитывает делители и грузит регистры. И делает это одинаково на
любом контроллере. Чего туда заглядывать то? - VladislavS.(20.06.2024 21:54)
- Насрать на "писабельность". Cкpипaч(189 знак., 20.06.2024 21:38)
- Это не наследование, а параметризация. Собрать всё воедино - работа
компилятора. И он сделает лучше, чем вы руками. - VladislavS.(20.06.2024 21:23)
- Я не против. Но прочитать, до уровня полного понимания что происходит, мой вариант на
порядок проще. - Cкpипaч(20.06.2024 21:29)
- Уровень полного понимания должен заканчиваться на знании, что этот
метод включает светодиод (или устанавливает частоту в случае
синтезатора). Как он это делает для понимания знать не надо. Вы
что, не доверяете своему коду? Но даже если решите посмотреть, то
куда понятнее увидеть в методе включения светодиода команду
установки (или сброса) порта, а не манипуляцию непонятными битами
регистров (поди ты вспомни их во всём этом зоопарке). VladislavS.(443 знак., 20.06.2024 21:43 - 22:55)
- Я не доверяю никому и ничему. Я - наладчик :) - Cкpипaч(20.06.2024 21:43)
- Уровень полного понимания должен заканчиваться на знании, что этот
метод включает светодиод (или устанавливает частоту в случае
синтезатора). Как он это делает для понимания знать не надо. Вы
что, не доверяете своему коду? Но даже если решите посмотреть, то
куда понятнее увидеть в методе включения светодиода команду
установки (или сброса) порта, а не манипуляцию непонятными битами
регистров (поди ты вспомни их во всём этом зоопарке). VladislavS.(443 знак., 20.06.2024 21:43 - 22:55)
- Я не против. Но прочитать, до уровня полного понимания что происходит, мой вариант на
порядок проще. - Cкpипaч(20.06.2024 21:29)
- Это не читабельно, а сто раз писабельно. Вместо того чтобы один раз
написать универсальный метод, который ещё и автоматически
оптимизироваться будет. Ведь управлять ногой, на которой висит
светодиод, можно разными способами. Можно рассказать компилятору
как это сделать лучше и он будет делать это сам. - VladislavS.(20.06.2024 21:28)
- Предлагаю еще раз вернуться к сути - на прикладном уровне не должно
быть манипуляции битами. Cкpипaч(746 знак., 21.06.2024 08:11 - 22.06.2024 14:05)