-
- Как минимум, два плюса есть. - mse homjak(31.05.2024 17:16)
- ну да, оптимист и на кладбище видит сплошные плюсы - POV(31.05.2024 17:20)
- Вы б знали какие сумасшедшие бабки крутятся вокруг кладбищ - сами б
в гробовщики пошли. - Boвa(01.06.2024 08:18)
- Кхе-кхе :) Бабки-то крутятся, но гробовщику из них достается не
больше чем курьеру с закладками в наркобизнесе. - Cкpипaч(01.06.2024 08:23)
- Нормально достается для неквалифицированного труда, попробуйте
пролезть в эту проФФессию – могилы копать и людей хоронить. "Но всё
же, чёрт возьми, работа-то на воздухе, работа-то с людьми..." - NeoPower(01.06.2024 13:10, )
- У меня монтажники получают в два раза больше. Но квалифицированные, естественно. - Cкpипaч(01.06.2024 13:18)
- Нормально достается для неквалифицированного труда, попробуйте
пролезть в эту проФФессию – могилы копать и людей хоронить. "Но всё
же, чёрт возьми, работа-то на воздухе, работа-то с людьми..." - NeoPower(01.06.2024 13:10, )
- Кхе-кхе :) Бабки-то крутятся, но гробовщику из них достается не
больше чем курьеру с закладками в наркобизнесе. - Cкpипaч(01.06.2024 08:23)
- Вы б знали какие сумасшедшие бабки крутятся вокруг кладбищ - сами б
в гробовщики пошли. - Boвa(01.06.2024 08:18)
- ну да, оптимист и на кладбище видит сплошные плюсы - POV(31.05.2024 17:20)
- Писали, пишут и будут писать, потому что абстракции. Тут главное не
забывать про закон дырявых абстракций. =AlexD=(1 знак., 21.05.2024 10:43, ссылка)
- И про то, как Хрущов называл абстракционистов. - Kpoк(21.05.2024 19:20)
- :))) - Vit(21.05.2024 20:06)
- >>> Гхмм... RxTx(5 знак., 21.05.2024 17:05, картинка, картинка)
- Хороший перевод имеет собственную литературную ценность. - =AlexD=(21.05.2024 18:24)
- Вне зависимости от перевода, мне не удалось понять МЫСЛЬ этой
статьи. При том что это было повторное чтение, первый раз я ее
читал в оригинале лет 10-15 назад. Масса вопросов. Во-первых,
почему большинство инженерных решений он называет "абстракциями"?
На мой взгляд неверное применение термина. Не всё то что есть
программное решение - обязательно "абстракция". Второе. Ну и что за
"закон"? В чём он, если коротко и сжато, одним предложением? В чем
мысль? В чем новизна? В RxTx(677 знак., 21.05.2024 19:18)
- Не претендуя... закон в том что ЛЮБАЯ абстракция (попытка
унификации, систематизации, введения правил) - дырява. Cкpипaч(1378 знак., 21.05.2024 22:55)
- С тобой, как известно, можно надолго застрять =)) Ты перескочил
почему-то на Брукса и человеко-время и потом на усложнение систем и
на KISS. Я все-таки предпочту так не скакать, и для начала
использовать правильные термины с полным пониманием смысла.
Абстракция - это мыслительный (ноуменальный) прием. Существует
только в голове/мыслях/представимом. Программное обеспечение,
несмотря на то что представляет собой состояние, не является тем не
менее "мыслимым" или RxTx(1769 знак., 22.05.2024 01:02)
- Ты лингвист или инженер? Мы про языкознание, или обсуждаем статью
программиста по его тематике? Тут всё гораздо конкретнее -
абстракция (прослойка) скрывает в себе детали реализации, которые в
момент разработки кажутся неважными на более верхнем уровне. Это же
так красиво, open(), read(), write(), close(). Красота! Потом
оказывается что в реальном проекте надо тащить кучу дополнительной
инфы с самых нижних слоёв на самые верхние и начинается форменная
мутотеть, потому =AlexD=(136 знак., 22.05.2024 09:15)
- > Ты лингвист или инженер? — Процитируй строчку(и) из моего сообщения выше, в которых
обсуждается лингвистика. > Мы про языкознание, или обсуждаем статью программиста по
его тематике? — Процитируй строчки из моего сообщения выше, в которых
обсуждается языкознание. > Тут всё гораздо конкретнее - абстракция (прослойка)
скрывает в себе детали реализации — Процитируй строчки из оригинальной статьи Спольски, где пишется
о прослойках и о RxTx(28 знак., 23.05.2024 17:07)
- Все примеры из статьи именно про сокрытие деталей реализации ради
упихивания в готовые абстракции. По остальному - ну перечитай себя,
что-ли. Пустой трёп на около лингвистические темы с непонятной
заменой корректного термина "абстракция" на совершенно
нерелевантный в данном контексте "система". Да ещё и ориентацию
автора приплёл. Нахрена всё это? Пустое. - =AlexD=(23.05.2024 17:18)
- Я тебе написал что сделать. Почему не сделал? Также, выясни
определения терминов (значение слов). Пока что ты мараешь
бумагуфорум даже без понимания смысла слов которые пишешь. Про статью или мое сообщение даже и упоминать бессмысленно, ты "на своей волне". - RxTx(23.05.2024 18:38)- бла-бла-бла - =AlexD=(23.05.2024 22:09)
- Негусто. Когда сказать нечего, остаются кривляния. - RxTx(23.05.2024 22:36)
- бла-бла-бла - =AlexD=(23.05.2024 22:09)
- Я тебе написал что сделать. Почему не сделал? Также, выясни
определения терминов (значение слов). Пока что ты мараешь
- Все примеры из статьи именно про сокрытие деталей реализации ради
упихивания в готовые абстракции. По остальному - ну перечитай себя,
что-ли. Пустой трёп на около лингвистические темы с непонятной
заменой корректного термина "абстракция" на совершенно
нерелевантный в данном контексте "система". Да ещё и ориентацию
автора приплёл. Нахрена всё это? Пустое. - =AlexD=(23.05.2024 17:18)
- > Ты лингвист или инженер? — Процитируй строчку(и) из моего сообщения выше, в которых
обсуждается лингвистика. > Мы про языкознание, или обсуждаем статью программиста по
его тематике? — Процитируй строчки из моего сообщения выше, в которых
обсуждается языкознание. > Тут всё гораздо конкретнее - абстракция (прослойка)
скрывает в себе детали реализации — Процитируй строчки из оригинальной статьи Спольски, где пишется
о прослойках и о RxTx(28 знак., 23.05.2024 17:07)
- А вы хорошо копнули. У него (и у меня) под "абстракциями"
понимается не универсальный мыслительный прием, а вполне конкретные
конструкции в виде библиотек или просто прослоек в коде. Как вы
верно заметили, аналог редуктора или клино-ременной передачи, в
механизме. Давайте назовем это "прослойками". Cкpипaч(1436 знак., 22.05.2024 07:07)
- Согласен с тобой и твои самостоятельные мысли обладают ценностью.
Но моей задачей было обсудить ровно то что написал Спольски. Потому
что я прочел статью Спольски раз 5-6, пытаясь вычленить из нее
реальный здравый смысл. Вывод: Спольски написал настолько бредовую
поверхностную ерунду, что сейчас можно подтянуть что угодно. И до
обосрачки спорить, "А вот нет, на самом-то деле он имел в виду вот
это". RxTx(3376 знак., 23.05.2024 18:17)
- Спольски - программист. А у программистов есть свой слэнг (так же
как и у других профессиональных сообществ). И там слово
"абстракция" означает не совсем то, что под этим словом понимаете
вы. Протокол TCP - пример такой абстракции. Он, как бы, скрывает
нюансы физического, канального и сетевого уровней "модели OSI". И,
как правило, хорошо скрывает. Но не всегда. И тогда "программист на
C#" внезапно вынужден осваивать WireShark, узнавать про всякие MSS
и MTU, потому что на LightElf(59 знак., 23.05.2024 19:10)
- Хорошая попытка. Вы подразумеваете, как будто бы я не понимаю
понятие абстракции в компьютерных науках. Это не так, понятие
общепринято, не расходится с понятием в компьютерных науках, и было
процитировано мной парой постов выше. Вместо "общих соображений" о
том как что-то работало да перестало, процитируйте, пожалуйста,
Спольски, да растолкуйте. Мол, вот это вот так. А вот вы пишите что
не так, вот поэтому вы не правы. Жду про "дырявые абстракции" и как
TCP внезапно RxTx(620 знак., 23.05.2024 20:13)
- TCP пытается предоставить абстракцию "надежный канал связи поверх
ненадежной сети", но иногда проблемы сети оказываются таковы, что
TCP становится не способен этот самый надежный канал осуществить. LightElf(866 знак., 23.05.2024 21:22)
- Аглицкая мова добавляет обворожительный шармъ, но не надо, выше
есть перевод. Стало любопытно, давайте подыграю? Ладно, пусть
автомобиль стал "абстракцией". (Нас, конечно, отпиздят за такое на
ближайшей же автобазе). А закон? Ну и какой закон-та? - RxTx(23.05.2024 21:28)
- Аглицкая мова позволяет избежать косяков переводчика (а они там
есть). Закон же очень простой: любое абстрагирование не покрывает
100% возможных ситуаций. И следствие: использование абстракций в
программировании позволяет облегчить/ускорить работу, но не
позволяет облегчить/ускорить обучение. По-любому нужно понимать как
оно устроено внутри, чтобы знать куда бежать когда все пойдет не
так. - LightElf(23.05.2024 21:38)
- Объяснимо проигнорирован вопрос про автомобиль, с продолжением
радостного вещания о программном обеспечении. И зря, у Спольски
ведь пример прямиком про автомобили. Чего так? RxTx(1712 знак., 23.05.2024 22:10)
- Честно говоря, я потерял нить ваших рассуждений, кроме того что
Спольски вам, видимо, три рубля должен :-) LightElf(420 знак., 24.05.2024 01:13)
- А вы все сообщения читали? Я про то, чтобы не использовать какие-то
мракобесные термины и объяснять просто и понятно. Смысл не
меняется, а объяснение более понятное. - RxTx(30.05.2024 05:07)
- Написал ответ, но решил просто завершить разговор, который ходит по кругу не один год. - LightElf(30.05.2024 12:55)
- А вы все сообщения читали? Я про то, чтобы не использовать какие-то
мракобесные термины и объяснять просто и понятно. Смысл не
меняется, а объяснение более понятное. - RxTx(30.05.2024 05:07)
- Цитата из вас: "Абстракция - исключительно умозрительный объект
существующий исключительно при дизайне". Брехня. И вы это отлично
знаете. Cкpипaч(437 знак., 23.05.2024 22:41)
- Один художник, сдув две дороги, вот тоже говорил, поводя рукой на
картину: — «Видал, какая абстракция!!» - RxTx(23.05.2024 22:42)
- Это про вас, без обид. - Cкpипaч(24.05.2024 09:21)
- Один художник, сдув две дороги, вот тоже говорил, поводя рукой на
картину: — «Видал, какая абстракция!!» - RxTx(23.05.2024 22:42)
- Честно говоря, я потерял нить ваших рассуждений, кроме того что
Спольски вам, видимо, три рубля должен :-) LightElf(420 знак., 24.05.2024 01:13)
- Объяснимо проигнорирован вопрос про автомобиль, с продолжением
радостного вещания о программном обеспечении. И зря, у Спольски
ведь пример прямиком про автомобили. Чего так? RxTx(1712 знак., 23.05.2024 22:10)
- Аглицкая мова позволяет избежать косяков переводчика (а они там
есть). Закон же очень простой: любое абстрагирование не покрывает
100% возможных ситуаций. И следствие: использование абстракций в
программировании позволяет облегчить/ускорить работу, но не
позволяет облегчить/ускорить обучение. По-любому нужно понимать как
оно устроено внутри, чтобы знать куда бежать когда все пойдет не
так. - LightElf(23.05.2024 21:38)
- Аглицкая мова добавляет обворожительный шармъ, но не надо, выше
есть перевод. Стало любопытно, давайте подыграю? Ладно, пусть
автомобиль стал "абстракцией". (Нас, конечно, отпиздят за такое на
ближайшей же автобазе). А закон? Ну и какой закон-та? - RxTx(23.05.2024 21:28)
- Вам строит выспаться. - Cкpипaч(23.05.2024 20:40)
- Против чего ты протестуешь? Всё логично. - RxTx(23.05.2024 21:29)
- Ты пытаешься спором решить то, что решается медитацией. В одиночестве, глядя как по белой стене медленно движутся тени от облаков. Cкpипaч(325 знак., 23.05.2024 21:34)
- Против чего ты протестуешь? Всё логично. - RxTx(23.05.2024 21:29)
- TCP пытается предоставить абстракцию "надежный канал связи поверх
ненадежной сети", но иногда проблемы сети оказываются таковы, что
TCP становится не способен этот самый надежный канал осуществить. LightElf(866 знак., 23.05.2024 21:22)
- Хорошая попытка. Вы подразумеваете, как будто бы я не понимаю
понятие абстракции в компьютерных науках. Это не так, понятие
общепринято, не расходится с понятием в компьютерных науках, и было
процитировано мной парой постов выше. Вместо "общих соображений" о
том как что-то работало да перестало, процитируйте, пожалуйста,
Спольски, да растолкуйте. Мол, вот это вот так. А вот вы пишите что
не так, вот поэтому вы не правы. Жду про "дырявые абстракции" и как
TCP внезапно RxTx(620 знак., 23.05.2024 20:13)
- Все проще, ты не на одной волне со Спольски. Я - на одной и у меня
не возникло ни одного из твоих вопросов. Плевать мне на
"мысленное", прослойки ПО это вполне материальный объект.
О него можно биться головой - значит материальный.- Cкpипaч(23.05.2024 18:47)- =))) Я тебя понимаю о чем ты. Если ооооочень сильно всё упростить и "абстрагироваться", то тогда... возможно потягивая кальянчик и с кружечкой пивка или чего покрепче, я покиваю головой и конечно же воскликну! Черт возьми, согласен, ну да, ну да, он прав! Но иногда, вот как сегодня, меня тянет "дизассемблировать" смыслы до усрачки и мудачествовать, мудачествовать, мудачествовать.... =)))) Шучу... - RxTx(23.05.2024 18:48)
- Спольски - программист. А у программистов есть свой слэнг (так же
как и у других профессиональных сообществ). И там слово
"абстракция" означает не совсем то, что под этим словом понимаете
вы. Протокол TCP - пример такой абстракции. Он, как бы, скрывает
нюансы физического, канального и сетевого уровней "модели OSI". И,
как правило, хорошо скрывает. Но не всегда. И тогда "программист на
C#" внезапно вынужден осваивать WireShark, узнавать про всякие MSS
и MTU, потому что на LightElf(59 знак., 23.05.2024 19:10)
- Согласен с тобой и твои самостоятельные мысли обладают ценностью.
Но моей задачей было обсудить ровно то что написал Спольски. Потому
что я прочел статью Спольски раз 5-6, пытаясь вычленить из нее
реальный здравый смысл. Вывод: Спольски написал настолько бредовую
поверхностную ерунду, что сейчас можно подтянуть что угодно. И до
обосрачки спорить, "А вот нет, на самом-то деле он имел в виду вот
это". RxTx(3376 знак., 23.05.2024 18:17)
- Ты лингвист или инженер? Мы про языкознание, или обсуждаем статью
программиста по его тематике? Тут всё гораздо конкретнее -
абстракция (прослойка) скрывает в себе детали реализации, которые в
момент разработки кажутся неважными на более верхнем уровне. Это же
так красиво, open(), read(), write(), close(). Красота! Потом
оказывается что в реальном проекте надо тащить кучу дополнительной
инфы с самых нижних слоёв на самые верхние и начинается форменная
мутотеть, потому =AlexD=(136 знак., 22.05.2024 09:15)
- С тобой, как известно, можно надолго застрять =)) Ты перескочил
почему-то на Брукса и человеко-время и потом на усложнение систем и
на KISS. Я все-таки предпочту так не скакать, и для начала
использовать правильные термины с полным пониманием смысла.
Абстракция - это мыслительный (ноуменальный) прием. Существует
только в голове/мыслях/представимом. Программное обеспечение,
несмотря на то что представляет собой состояние, не является тем не
менее "мыслимым" или RxTx(1769 знак., 22.05.2024 01:02)
- Не претендуя... закон в том что ЛЮБАЯ абстракция (попытка
унификации, систематизации, введения правил) - дырява. Cкpипaч(1378 знак., 21.05.2024 22:55)
- Вне зависимости от перевода, мне не удалось понять МЫСЛЬ этой
статьи. При том что это было повторное чтение, первый раз я ее
читал в оригинале лет 10-15 назад. Масса вопросов. Во-первых,
почему большинство инженерных решений он называет "абстракциями"?
На мой взгляд неверное применение термина. Не всё то что есть
программное решение - обязательно "абстракция". Второе. Ну и что за
"закон"? В чём он, если коротко и сжато, одним предложением? В чем
мысль? В чем новизна? В RxTx(677 знак., 21.05.2024 19:18)
- Хороший перевод имеет собственную литературную ценность. - =AlexD=(21.05.2024 18:24)
- Кстати, да. С абстракциями в C++ можно оторваться по полной.
Например, для начала сделать: AlexG(179 знак., 21.05.2024 16:23)
- Всё перечисленное есть благо? Зачем оно? - mr-x(23.05.2024 21:28)
- Скорее забавные частные случаи и удобство. Перенос кода с платформы
где были именно такие целые числа и многое на этом завязано.
Перенос кода с платформы где сохранение переменных обеспечивалось
просто атрибутом при объявлении. Перенос математического алгоритма
описанного на матрицах из статьи в код. - AlexG(24.05.2024 04:22)
- Явно C#... - RxTx(30.05.2024 15:26)
- C# никак не учавствовал. - AlexG(30.05.2024 23:35)
- Любимый трюк "плюсовиков" сравнивать свои "удобства" с полным их
отсутствием, а не с банальным add_i24(a, b, c); и write_store(a,
5); - Cкpипaч(24.05.2024 09:31)
- Напишите с помощью ваших add_i24(a, b, c) какую-нибудь сложную
формулу. :-) - Boвa(31.05.2024 07:26)
- Первой строкой, в комментарии, сама формула, потом портянка из
вызовов функций. - Cкpипaч(31.05.2024 07:43)
- Мисье знает толк... - Boвa(31.05.2024 09:48)
- Зато все сходу обычным поиском находится. Повторюсь, минута времени
техподдержки стоит больше чем три часа разработки. - Cкpипaч(31.05.2024 15:45)
- Что находится поиском? Кто-то запрещает давать осмысленные
коментарии в крестах? И с скока стоит минута в разборе что тут
програмист наваял своим add2u_i24(a,b,c), а тем более как понять не
нужно ли ему было написать add2u_i24(a,b,a) ? - Boвa(01.06.2024 08:14 - 08:21)
- Поиском находится где описана функция
AddRandomNumberToGlobalAllocatorIndex(). Комментарий в месте
КАЖДОГО вызова функции? - Cкpипaч(01.06.2024 08:19)
- AGlobalAllocatorIndex + GetRandomNumber() еще красивше. - Boвa(01.06.2024 08:24)
- GaiAddRnd(a) ; Ищется обычным поиском (а GetRandomNumber - не факт, если речь идет о чем-то GlobalAllocatorIndex-специфичном). Cкpипaч(463 знак., 01.06.2024 08:39)
- AGlobalAllocatorIndex + GetRandomNumber() еще красивше. - Boвa(01.06.2024 08:24)
- Поиском находится где описана функция
AddRandomNumberToGlobalAllocatorIndex(). Комментарий в месте
КАЖДОГО вызова функции? - Cкpипaч(01.06.2024 08:19)
- Что находится поиском? Кто-то запрещает давать осмысленные
коментарии в крестах? И с скока стоит минута в разборе что тут
програмист наваял своим add2u_i24(a,b,c), а тем более как понять не
нужно ли ему было написать add2u_i24(a,b,a) ? - Boвa(01.06.2024 08:14 - 08:21)
- Зато все сходу обычным поиском находится. Повторюсь, минута времени
техподдержки стоит больше чем три часа разработки. - Cкpипaч(31.05.2024 15:45)
- Мисье знает толк... - Boвa(31.05.2024 09:48)
- Первой строкой, в комментарии, сама формула, потом портянка из
вызовов функций. - Cкpипaч(31.05.2024 07:43)
- В обоих случаях была куча готового кода, который нужно было запустить, а не переписать с нуля. Было бы там всё сделано через функции проблем было бы куда меньше. i24 вообще возникло из-за того, что ПО изначально разрабатывалось на ассемблере без всякой оглядки на существование Си, поэтому в сишной реализации, которую я пытался применить в своих целях, всякой атипичной дичи было много. - AlexG(24.05.2024 12:35)
- Напишите с помощью ваших add_i24(a, b, c) какую-нибудь сложную
формулу. :-) - Boвa(31.05.2024 07:26)
- Явно C#... - RxTx(30.05.2024 15:26)
- © Много блага не бывает! - RxTx(23.05.2024 21:31)
- Ещё остался открытым вопрос благо ли это. Как по мне, то как
минимум сомнительное. Умножение матриц через "*" даёт что? Делает
код короче? Хочется ругаться матом, поэтому промолчу.
Самосохраняющиеся переменные зачем? Чтобы через некоторое время
выпустить это дело из внимания и облажаться? 24-х битные целые -
это прикольно. Однако даже с базовыми целочисленными не всё / не
всем до конца понятно, есть нюансы, тут ещё новый тип на нашу
голову. - mr-x(23.05.2024 22:11)
- Про само*** опустим. А вот умножение матриц через оператор * , при
условии что матрица инкапсулирована в объект (символ) дает снижение
сложности. Управление сложностью помогает сделать систему более
понятной. Накладные расходы могут возрастать. - RxTx(23.05.2024 22:49)
- Что такое "***" не понятно. А в A*B спич не про инкапсуляцию, а про
перегрузку операторов. - mr-x(24.05.2024 10:19)
- Слово "самосохранение" было длинное: я хотел написать
"самосохранение опустим". Важна именно инкапсуляция в объекте
"матрица" необходимых операторов/методов/полей. Это делает конечный
код менее сложным и более понятным. - RxTx(30.05.2024 05:04)
- Менее/более относительно чего? Плохого кода на бейсике? В Сях я
работал с библиотекой с точно такими же паблик и приват методами и
членами. И точно так же из-за вИденья афтора не мог реализовать
весь потенциал либы без вытягивания символов из её внутренностей.
Потому что сцуко красивые лаконичные абстракции снаружи. И пришлось
трахнуть эту либу для извлечения скрытых элементов данных. - =AlexD=(30.05.2024 09:20)
- AlexG: > С абстракциями в C++ можно оторваться по полной.
Например, для начала сделать: <...> ...матрицы,
математические операции с которыми в коде записываются в стиле
A*B RxTx(123 знак., 30.05.2024 15:20)
- Я не умножаю матрицы каждый день. Гораздо чаще мне приходится
следить за тем, что-бы списки не сожрали всю память. И С++ мне тут
ну вообще никак не поможет, скорее спрячет проблему, запутает и
заставит приделать к библиотеке костыли. В своё время я наигрался с
С++ всласть. Шаблоны с инлайн методами позволяют экономить каждый
байт сохраняя неплохую модульность проекта. Но в целом писать
val->metod() или metod(val) - разница не велика. - =AlexD=(30.05.2024 16:33)
- А VAL::Method(); ? - VladislavS.(30.05.2024 17:29)
- VAL_Method() Синтаксический сахар в С++ есть, но не совсем там где
хотелось бы и довольно кривовато. На С++ я большую часть времени
думаю как ему объяснить чего хочу. Временами просто подбешивает. - =AlexD=(30.05.2024 17:47)
- Ещё VAL_Method легко переименовать в VAL_Method2 сразу во всех
исходниках. А Method внутри VAL запаришься выколупывать по всем
исходникам, чтобы при этом не затронуть другой Method внутри VAL2 и
других классах/неймспейсах. - Ale3000(31.05.2024 07:33)
- +100! Конечно сейчас никто уже не пишет код в редакторе Нортон
Командера (я - пишу), но возможность найти простым текстовым
поиском - полезна. - Cкpипaч(31.05.2024 07:45)
- А в каких редакторах работает переименование членов класса по всему
исходнику? Пробовал eclipse и VS Code - не нашёл там такого. Это
есть в Embarcadero, но не работает: глючит и портит исходник. - Ale3000(31.05.2024 10:14)
- Рефакторинг в Clion работает с огромными проектами. Также Visual Studio (не Code). Также Vim и плагины. - RxTx(31.05.2024 20:41)
- Кхе-кхе :) Ссылка(->) PyCharm неплохо справляется. А на Си я избегаю повторяемых имен. Все что нелокальное - имеет длинное, интуитивно понятное имя. Cкpипaч(1 знак., 31.05.2024 15:44, ссылка)
- SlickEdit вроде нормально рефакторит, но на очень больших проектах
не проверял. Делаю проще - меняю имя и смотрю где компиляция упала.
Но бывают проблемы с условной компиляцией и закомментированными
огрызками. - =AlexD=(31.05.2024 10:38)
- Бывает, что компилируется нормально. Например, вместо
переименованного метода подсовывает метод из родительского класса.
Или в дочернем классе переименовал метод, а в родительском классе
этот же метод, но виртуальный, не переименовал. В результате
совершенно другая часть программы начинает по-другому работать.
Трудно такие ошибки искать. - Ale3000(31.05.2024 10:53 - 13:10)
- О, ну эту жопу лучше вообще не трогать. Это выстрел даже не в ногу а сразу в яйца. - =AlexD=(31.05.2024 13:06)
- Бывает, что компилируется нормально. Например, вместо
переименованного метода подсовывает метод из родительского класса.
Или в дочернем классе переименовал метод, а в родительском классе
этот же метод, но виртуальный, не переименовал. В результате
совершенно другая часть программы начинает по-другому работать.
Трудно такие ошибки искать. - Ale3000(31.05.2024 10:53 - 13:10)
- А в каких редакторах работает переименование членов класса по всему
исходнику? Пробовал eclipse и VS Code - не нашёл там такого. Это
есть в Embarcadero, но не работает: глючит и портит исходник. - Ale3000(31.05.2024 10:14)
- +100! Конечно сейчас никто уже не пишет код в редакторе Нортон
Командера (я - пишу), но возможность найти простым текстовым
поиском - полезна. - Cкpипaч(31.05.2024 07:45)
- Ещё VAL_Method легко переименовать в VAL_Method2 сразу во всех
исходниках. А Method внутри VAL запаришься выколупывать по всем
исходникам, чтобы при этом не затронуть другой Method внутри VAL2 и
других классах/неймспейсах. - Ale3000(31.05.2024 07:33)
- VAL_Method() Синтаксический сахар в С++ есть, но не совсем там где
хотелось бы и довольно кривовато. На С++ я большую часть времени
думаю как ему объяснить чего хочу. Временами просто подбешивает. - =AlexD=(30.05.2024 17:47)
- А VAL::Method(); ? - VladislavS.(30.05.2024 17:29)
- Я не умножаю матрицы каждый день. Гораздо чаще мне приходится
следить за тем, что-бы списки не сожрали всю память. И С++ мне тут
ну вообще никак не поможет, скорее спрячет проблему, запутает и
заставит приделать к библиотеке костыли. В своё время я наигрался с
С++ всласть. Шаблоны с инлайн методами позволяют экономить каждый
байт сохраняя неплохую модульность проекта. Но в целом писать
val->metod() или metod(val) - разница не велика. - =AlexD=(30.05.2024 16:33)
- AlexG: > С абстракциями в C++ можно оторваться по полной.
Например, для начала сделать: <...> ...матрицы,
математические операции с которыми в коде записываются в стиле
A*B RxTx(123 знак., 30.05.2024 15:20)
- Менее/более относительно чего? Плохого кода на бейсике? В Сях я
работал с библиотекой с точно такими же паблик и приват методами и
членами. И точно так же из-за вИденья афтора не мог реализовать
весь потенциал либы без вытягивания символов из её внутренностей.
Потому что сцуко красивые лаконичные абстракции снаружи. И пришлось
трахнуть эту либу для извлечения скрытых элементов данных. - =AlexD=(30.05.2024 09:20)
- Слово "самосохранение" было длинное: я хотел написать
"самосохранение опустим". Важна именно инкапсуляция в объекте
"матрица" необходимых операторов/методов/полей. Это делает конечный
код менее сложным и более понятным. - RxTx(30.05.2024 05:04)
- Возражаю. Знание что "оператор *" имеет нестандартное поведение увеличивает сложность! Cкpипaч(36 знак., 24.05.2024 09:31)
- Чойта вдруг - RxTx(30.05.2024 06:09)
- Потому что это не очевидно из текста самой строки. Нужно в голове
держать дополнительную информацию. Даже: c =
a.hyperspace_mul_by(b); намного лучше. - Cкpипaч(30.05.2024 16:19)
- Когда человек видит оператор для пользовательских типов, он и так понимает что в первый раз необходимо посмотреть документацию или код. Некоторый малый рост сложности по сравнению с линейным дубовым написанием существует, это объективно и нельзя отрицать. Но как только требуется что-то посложнее Mtx4_Mul(&result, &mtx1, &mtx2); - а это будет именно так. т.е. серия сложений-перемножений итд лучше если запись будет как можно проще, операторы инкапсулированы в/с RxTx(664 знак., 30.05.2024 17:32)
- Потому что это не очевидно из текста самой строки. Нужно в голове
держать дополнительную информацию. Даже: c =
a.hyperspace_mul_by(b); намного лучше. - Cкpипaч(30.05.2024 16:19)
- Чойта вдруг - RxTx(30.05.2024 06:09)
- Что такое "***" не понятно. А в A*B спич не про инкапсуляцию, а про
перегрузку операторов. - mr-x(24.05.2024 10:19)
- Про само*** опустим. А вот умножение матриц через оператор * , при
условии что матрица инкапсулирована в объект (символ) дает снижение
сложности. Управление сложностью помогает сделать систему более
понятной. Накладные расходы могут возрастать. - RxTx(23.05.2024 22:49)
- Бесплатных пряников не бывает. За все блага придется платить, каждая прослойка содержит кирпич, которым вас ударит по голове. Не удивляйтесь когда это произойдет. - Cкpипaч(23.05.2024 21:36)
- Ещё остался открытым вопрос благо ли это. Как по мне, то как
минимум сомнительное. Умножение матриц через "*" даёт что? Делает
код короче? Хочется ругаться матом, поэтому промолчу.
Самосохраняющиеся переменные зачем? Чтобы через некоторое время
выпустить это дело из внимания и облажаться? 24-х битные целые -
это прикольно. Однако даже с базовыми целочисленными не всё / не
всем до конца понятно, есть нюансы, тут ещё новый тип на нашу
голову. - mr-x(23.05.2024 22:11)
- Скорее забавные частные случаи и удобство. Перенос кода с платформы
где были именно такие целые числа и многое на этом завязано.
Перенос кода с платформы где сохранение переменных обеспечивалось
просто атрибутом при объявлении. Перенос математического алгоритма
описанного на матрицах из статьи в код. - AlexG(24.05.2024 04:22)
- ...Кнопку "сделать пиздато"... :) - RxTx(21.05.2024 16:47)
- Всё перечисленное есть благо? Зачем оно? - mr-x(23.05.2024 21:28)
- И про то, как Хрущов называл абстракционистов. - Kpoк(21.05.2024 19:20)
- Пишет.Но для себя сделал вывод.Если задача просит плюсы значит пора подключать дополнительно чистого программиста. - PlainUser(21.05.2024 06:24)
- Смотря какие задачи стоЯт. Эффективность программы (быстродействие,
объём кода) или читабельность и переносимость? Что важнее?
Программа должна работать быстро и чётко, либо программа должна
быть легка в отладке и обеспечивать комфортный сервис поиска в себе
ошибок? - vpv.vpv(20.05.2024 09:14)
- Быстро - это С, а легка в отладке это С++ - верно? Никогда не
задумывался над тем, что С++ дает легкость поиска ошибок.
Интересная мысль, благодарю. - Mty1(20.05.2024 22:46)
- "Первое правило для написание хорошей программы состоит в том,
чтобы подумать" (с) Вершинин О.Е. 1986г. - vpv.vpv(21.05.2024 10:31)
- В 1986 году не было понятия "шаблон программирования" да и системы было гораздо меньше. - Boвa(01.06.2024 08:42)
- А он ее не дает. - Cкpипaч(20.05.2024 23:34)
- "Первое правило для написание хорошей программы состоит в том,
чтобы подумать" (с) Вершинин О.Е. 1986г. - vpv.vpv(21.05.2024 10:31)
- Быстро - это С, а легка в отладке это С++ - верно? Никогда не
задумывался над тем, что С++ дает легкость поиска ошибок.
Интересная мысль, благодарю. - Mty1(20.05.2024 22:46)
- Ещё недавно считал, что достаточно С, а плюсы, как жалкое поделие, нафиг не нужны, ибо C# как ООП рулит. Но пришлось пользоваться C, который Clang (Keil v6), и стало понятно, что закончились возможности получать от компилятора ожидаемого результата - при любой оптимизации линейный код уже невозможно отлаживать хождением по шагам. В GCC 10+ практически то же. Т.е. уюта больше нет. Ещё и частично поломали вольности с нерантаймовым управлением константными указателями - для меня Vit(1039 знак., 19.05.2024 09:11)
- В MCU пишу исключительно на С++/asm. если использую внешние с-like
либы - боль, переписываю. из за одного printf уже можно предать
анафеме C. Если не начинали то лучше напрячся и стартовать с С++.
лет через 15 поймете что сэкономили 10. - klen(18.05.2024 23:49)
- Боль - это когда наоборот. Интерфейс на С++ нельзя использоватьв
коде на С, приходится городить прокладки. Вообще следует отличать:
Код своей библиотеки ты можешь писать на чем угодно. Даже на
бейсике :-) А вот интерфейс к либе изволь предоставить на С. Можно
допом на С++, если либа тоже на нем написана и позволяет. - il-2(20.05.2024 07:01)
- С либу можно использовать в С++ ??? Вы уверены? а ваши сраные
Cишные глобальные переменные и внешние ссылки куде вать? в задницу
себе вставть? увольте, я 15 лет на С писал... хватить этого
анонизьма. Никому не посоветую С. тогда сразу rust чтоб моск не
засирать. - klen(20.05.2024 15:31)
- Попутный вопрос: этот...твой спич о некоей "божественности" [C++ ]
(vs [C]) применительно более к какой сфере программирования?
Embedded или для Soft'а верхнего уровня (прикладные программы,
пакеты программ и т.п.) ? Или ты т.с. накрыл С++ "куполом" обе
сферы в своём выборе? З.Ы. Не получится ли как у ...этой негритянки
излишнее громадьё? )>>> SERGHIO(1 знак., 21.05.2024 17:07, ссылка)
- С++ покрывает потребности и того, и другого. - VladislavS.(22.05.2024 07:47)
- Что не удивительно, ведь в плюсах есть волшебное extern "C" :))) - ЫЫyкпy(22.05.2024 08:02)
- Угу. И класс с виртуальными методами туда - хуякс! %) - Cкpипaч(22.05.2024 08:52)
- Что не удивительно, ведь в плюсах есть волшебное extern "C" :))) - ЫЫyкпy(22.05.2024 08:02)
- С++ покрывает потребности и того, и другого. - VladislavS.(22.05.2024 07:47)
- Конечно можно, и без всяких проблем. А наоборот - нельзя. Ты как знаток заумных плюсов может быть не в курсе элементарной вещи :-) Или я вообще не понимаю, о чем ты вначале написал. Начни с начала - в чем заключается сложность использовать Сишные библиотеки в проекте(в файле) С++ ? По мне таких сложностей не существует. Но может я не все знаю... - il-2(20.05.2024 15:50)
- Дык С++ либы и вовсе невозможно использовать нигде кроме как в родной плюсовой экосистеме. - =AlexD=(20.05.2024 15:38)
- Попутный вопрос: этот...твой спич о некоей "божественности" [C++ ]
(vs [C]) применительно более к какой сфере программирования?
Embedded или для Soft'а верхнего уровня (прикладные программы,
пакеты программ и т.п.) ? Или ты т.с. накрыл С++ "куполом" обе
сферы в своём выборе? З.Ы. Не получится ли как у ...этой негритянки
излишнее громадьё? )>>> SERGHIO(1 знак., 21.05.2024 17:07, ссылка)
- Боль - это переписывать на кресты без goto программу написанную на перво-Бейсике. - Boвa(20.05.2024 12:06)
- С либу можно использовать в С++ ??? Вы уверены? а ваши сраные
Cишные глобальные переменные и внешние ссылки куде вать? в задницу
себе вставть? увольте, я 15 лет на С писал... хватить этого
анонизьма. Никому не посоветую С. тогда сразу rust чтоб моск не
засирать. - klen(20.05.2024 15:31)
- Предать анафеме легко, а вот найти адекватную замену некоторым возможностям printf уже не так просто. - ЫЫyкпy(19.05.2024 06:23)
- Боль - это когда наоборот. Интерфейс на С++ нельзя использоватьв
коде на С, приходится городить прокладки. Вообще следует отличать:
Код своей библиотеки ты можешь писать на чем угодно. Даже на
бейсике :-) А вот интерфейс к либе изволь предоставить на С. Можно
допом на С++, если либа тоже на нем написана и позволяет. - il-2(20.05.2024 07:01)
- Дык, напиши "калькулятор" на C++Builder - прочувствуешь краешек
ООП. Блядство стандартов от 11го пройдёт мимо (т.е. будет "С с
классами"). И посмотришь на свои задачи уже осмысленно - нужно ли
оно тебе... POV(153 знак., 18.05.2024 23:08)
- Я как то делал прогу на С++ в ДОС в далеком 93 для управления установкой отжига. С графическим интерфейсом и меню. Там было наследование классов для GUI, и вроде все к месту. А зачем оно в МК мне не ясно. Может удобно сделать класс EEPROM с методами, и класс UART с методами. И работать с 3мя UART на раз два три просто? Я не втыкаю. - Mty1(20.05.2024 23:08)
- Конечно есть. Обязательно начните программировать на CPP. Это следующая ступень после асм и С. - Бoмж(18.05.2024 22:59)
- С++ (если без фанатизма) подходит для МК идеально. Samx(331 знак., 18.05.2024 22:52)
- Один, очень простой вопрос: Как в МК с Гарвардской архитектурой и
флешем реализуется "создание экземпляра класса" в рантайме? Ах
никак, у нас раннее связывание, на этапе компиляции? Тогда о каких
"плюсах" мы говорим? Где же тогда хвалёный полиморфизм? Или он
реализуется компилятором, по методу "предварительного
окостылевания", чтобы человек, глядя в исходники, мог высокопарно
мыслить объектами и классами, а процессор выполнять свой
процедурный код. :))) - vpv.vpv(20.05.2024 09:38)
- Экземпляры класса создаются точно так же как экземпляры структур, нет никакой разницы. Проблема может быть только в особенностях архитектуры 51 (а не гарварда вообще) - компилируемый стек, высокие накладные на вызов функции по указателю и т.д. - =AlexD=(21.05.2024 10:11)
- А в чём проблема? Код в памяти кода, экземпляр класса (данные + указатель на таблицу виртуальных функций) в памяти данных. - ЫЫyкпy(20.05.2024 23:50)
- (страшным шопотом) 8х51 МК с внешней памятью программ можно было
превратить в Фон-Неймановскую архитектуру. - Alex68(20.05.2024 16:06)
- Я в 90х так и делал. Когда овладел DS87C520-33, имея внешнее ПЗУ
К573РФ4А :-)))) Прицепил к ПЗУ кеш-память 61С256-12нс, генератор
32мГц делился при сбросе на 4. На тактовой 8Мгц я копировал
содержимое ПЗУ в ОЗУ, и на рубеже адресов 0x00FF->0x0100
(когда мультиплексный младший адрес и данные на шине равны нулю,
т.е. команде "nop") - я переключал процессором делитель с 1:4 на
1:1, и проц взлетал на 32МГц, работая с внешней 12нс памятью
"программ". - vpv.vpv(21.05.2024 10:48)
- ну. "были ж люди как люди" (С) Крок - Alex68(21.05.2024 22:50)
- Можно подробностей что под этим подразумевается? - POV(21.05.2024 09:58)
- Наверное, п.2.3.5 DVV(1 знак., 21.05.2024 10:43, ссылка)
- Совершенно верно. Далее нужный код копируется в ОЗУ. и ему передается управление. - vpv.vpv(21.05.2024 10:51)
- nPSEN объединить с nRD и вместо внешней ПЗУ, ОЗУ. И можно писать в
память программ. - mse homjak(21.05.2024 10:28)
- имано. - Alex68(21.05.2024 22:46)
- Фон-нейман-то тут где? Нет единого адресного пространства, разные
шины, даже разными командами доступ обеспечивается. Это ни
формально ни с точки зрения программиста (хоть бы и на Сях) не
фон-нейман... POV(144 знак., 21.05.2024 11:32)
- Появляется единое пространство во внешней памяти. Можэте получать
доступ через запись/чтение, а можэте, через ПСЕН. На этом принципе
было создано бесчисленное количество внутрисхемных эмуляторов 8051.
И что за беда, что разные команды, если одни являются подмножэством
других? - mse homjak(21.05.2024 12:05)
- Ну что за словоблудие.. 51й как никакой другой это строгий гарвард.
К чему пытаться его обозвать иначе, когда за это приходит платить
тактами доступа к ячейкам памяти? - POV(21.05.2024 12:08)
Мальчик-девочкастрогий-не строгий, какая, в жопу, разница? Если он ведёт себя какуткафонНейман. В диапазоне внешней памяти. У вас внешняя память однородна. Вы в неё пишете, как в ОЗУ, читаете, как ОЗУ и выполняете код. - mse homjak(21.05.2024 12:15)- и можна писать самомодифицирущийся код. либо код вперемежку с данными. как на православном деке. - Alex68(21.05.2024 22:48)
- Ну что за словоблудие.. 51й как никакой другой это строгий гарвард.
К чему пытаться его обозвать иначе, когда за это приходит платить
тактами доступа к ячейкам памяти? - POV(21.05.2024 12:08)
- Из новостей: "Полупроводниковый гигант отменил проект инновационного процессора, в разработку которого было вложено 3 года и 100500 млн доллариев, так как члены совета директоров не смогли прийти согласию, это Гарвард или фон Нейман". - SciFi(21.05.2024 11:35)
- Появляется единое пространство во внешней памяти. Можэте получать
доступ через запись/чтение, а можэте, через ПСЕН. На этом принципе
было создано бесчисленное количество внутрисхемных эмуляторов 8051.
И что за беда, что разные команды, если одни являются подмножэством
других? - mse homjak(21.05.2024 12:05)
- Наверное, п.2.3.5 DVV(1 знак., 21.05.2024 10:43, ссылка)
- Я в 90х так и делал. Когда овладел DS87C520-33, имея внешнее ПЗУ
К573РФ4А :-)))) Прицепил к ПЗУ кеш-память 61С256-12нс, генератор
32мГц делился при сбросе на 4. На тактовой 8Мгц я копировал
содержимое ПЗУ в ОЗУ, и на рубеже адресов 0x00FF->0x0100
(когда мультиплексный младший адрес и данные на шине равны нулю,
т.е. команде "nop") - я переключал процессором делитель с 1:4 на
1:1, и проц взлетал на 32МГц, работая с внешней 12нс памятью
"программ". - vpv.vpv(21.05.2024 10:48)
- Зачем в рантайме? У меня и на компе-то большинство классов - статические. Samx(71 знак., 20.05.2024 11:49)
- бл... не знаю не знаю... писал тут под чужой проект на С++ полностью который под ARM... там чтобы просто на флажок вывести чего-либо надо было продумать архитектурно как это сделать в тестовых целях... все на С++, инициализации периферии тоже... - sav6622(19.05.2024 10:48)
- с фанатизмом еще лучше. поговорим о С++23 coroutine применительно к
mcu c 2к ОЗУ и 16к FLAH ? - klen(18.05.2024 23:51)
- Ну нет почти задач с миганием ледов под корутины. Уметь это
неплохо. Но как правило не нужно. - POV(18.05.2024 23:59)
- Зато про прототреды есть :-) И я уже говрил как-то, что никак не
мог перестроить свои мозги Samx(129 знак., 19.05.2024 00:18)
- да вот проблема в перестройки мозгов, а не в С и С++. это нерешамая
проблема. - klen(20.05.2024 15:32)
- Погоди махать шашкой. В плюсовой версии, локальные переменные треда
можно делать переменными экземпляра объекта. В чисто си-шной -
статическими переменными внутри функции или глобальными
переменными. Как по мне, в плане возможности выстрелить себе в
ногу, две очень большие разницы. - Cкpипaч(20.05.2024 15:53)
- В IAR'е Си не совсем чистый, а "подплюсованный". Функции можно
инлайнить. Везде, где можно, я стараюсь использовать локальные
переменные (компилятор их сует в регистры и после эффективно
жонглирует). Даже комментарии "//" - вроде как тоже из плюсов?
Первый, "ламповый", "чистый" Си времён K&R уже давно канул в
Лету. Нынешний диалект Си в IAR мне очень нравится - он берёт всё
нужное из C++, а ненужное не берёт )) - vpv.vpv(21.05.2024 11:17)
- 1) Инлайн не нужен. Просто не нужен. 2) Комментарии // - это C99. - SciFi(21.05.2024 11:19)
- В IAR'е Си не совсем чистый, а "подплюсованный". Функции можно
инлайнить. Везде, где можно, я стараюсь использовать локальные
переменные (компилятор их сует в регистры и после эффективно
жонглирует). Даже комментарии "//" - вроде как тоже из плюсов?
Первый, "ламповый", "чистый" Си времён K&R уже давно канул в
Лету. Нынешний диалект Си в IAR мне очень нравится - он берёт всё
нужное из C++, а ненужное не берёт )) - vpv.vpv(21.05.2024 11:17)
- Погоди махать шашкой. В плюсовой версии, локальные переменные треда
можно делать переменными экземпляра объекта. В чисто си-шной -
статическими переменными внутри функции или глобальными
переменными. Как по мне, в плане возможности выстрелить себе в
ногу, две очень большие разницы. - Cкpипaч(20.05.2024 15:53)
- да вот проблема в перестройки мозгов, а не в С и С++. это нерешамая
проблема. - klen(20.05.2024 15:32)
- Зато про прототреды есть :-) И я уже говрил как-то, что никак не
мог перестроить свои мозги Samx(129 знак., 19.05.2024 00:18)
- Ну нет почти задач с миганием ледов под корутины. Уметь это
неплохо. Но как правило не нужно. - POV(18.05.2024 23:59)
- Один, очень простой вопрос: Как в МК с Гарвардской архитектурой и
флешем реализуется "создание экземпляра класса" в рантайме? Ах
никак, у нас раннее связывание, на этапе компиляции? Тогда о каких
"плюсах" мы говорим? Где же тогда хвалёный полиморфизм? Или он
реализуется компилятором, по методу "предварительного
окостылевания", чтобы человек, глядя в исходники, мог высокопарно
мыслить объектами и классами, а процессор выполнять свой
процедурный код. :))) - vpv.vpv(20.05.2024 09:38)
- Если есть возможность изучить и уметь использовать C++ - изучайте и
используйте. Я вот, на C без плюсов застрял. И жалею, что не могу
просто взять, и попробовать плюсы. Учиться надо... - Nikolay_Po(18.05.2024 20:56)
- Я бОльшую часть жизни дальше чем "Си с классами" не заплывал, Samx(312 знак., 18.05.2024 22:57)
- Сколько раз делал теплицы, ни разу полиморфизм не потребовался.
Сколько у вас контуров регулирования на один кристал выходило? - Cкpипaч(18.05.2024 23:00)
- Ну там было много датчиков разных типов и несколько регуляторов
разных типов. Samx(194 знак., 18.05.2024 23:19)
- Я повторю свой вопрос - сколько на один кристал? Мне это важно. - Cкpипaч(19.05.2024 08:57)
- В последней версии таблица (массив указателей ) управляющих
автоматов содержит 84 автомата пяти разных типов. Samx(327 знак., 20.05.2024 11:58)
- Спасибо. - Cкpипaч(20.05.2024 14:53)
- В последней версии таблица (массив указателей ) управляющих
автоматов содержит 84 автомата пяти разных типов. Samx(327 знак., 20.05.2024 11:58)
- Полиморфизм пришлось к месту в столь нишевой железячной задаче?!... POV(202 знак., 18.05.2024 23:28)
- Был аналогичный случай. Контроллер насосной станции. Пусковая
аппаратура, непосредсвенно крутящая двигатели, может использоваться
разная. В итоге 17 классов, реализующих взаимодействие с очень
разными частотниками, устройствами плавного пуска и разными
вариантами схем на контакторах и основной алгоритм, которому можно
подсунуть любые объекты этих классов в любом разумном сочетании. AlexG(175 знак., 19.05.2024 05:09)
- Ребята, вы серьёзно? Я кагбэ этих насосных станций абы не сотню
разных сделал, откуда 17 классов?! Несколько раздельных процессов в
биг-луп: несколько на опрос устройств, разного типа (по одному
процессу на тип), таблица состояния в памяти, основной алгоритм и
пара процессов на обмен данными по сети. Cкpипaч(323 знак., 19.05.2024 09:23)
- 17 это, упрощенно, количество поддерживаемых типов частотников.
Объекты, которые умеют управлять тем, что подключено именно к этому
шкафу создаются по необходимости (в соответсвии с конфигурацией).
Объекты всех 17 типов не существуют одновременно, хотябы потому что
насосов максимум 4. - AlexG(19.05.2024 20:19)
- В моей практике, конкретный тип частотника накладывает отпечаток на
прикладной алгоритм управления. Дополнительные сигналы контроля,
требующие обработки, различия в логике встроенных ПИД-регуляторов.
Инкапсулировать - отсекать "избыточное" и ограничивать функционал.
Но у каждого свои фломастеры, и свое чувство прекрасного. - Cкpипaч(19.05.2024 20:28)
- Вот этот весь отпечаток в классе и остается. Встроенные ПИДы не
задействованы. Не то чтобы прям прекрасно получилось, но это
позволяет не лезть в код при каждом заказе насосной станции. В,
условно, прошлом поколении контроллеров и их ПО был жесткий расчет
на конкретный частотник и конкретную конфигурацию станции и это был
полнейший тупик с околонулевым повторным использованием прошивок и
отладкой почти каждой станции на стенде с реальной водой и
насосами. Некоторые AlexG(214 знак., 19.05.2024 21:05)
- Кот и лампа :( - Cкpипaч(19.05.2024 21:18)
- На всё упомянутое могу показать фото контроллеров, руководства по
эксплуатации, страницы на сайте. Исходники - не могу. И испытания
станций не фотографировались, насколько помню. - AlexG(20.05.2024 02:54)
- Просто рассказы ужасы невозможности построения модульных систем без
ООП я слышал уже много раз. Они безпочвенны. Но как патерн
проектирования - конечно имеет право на жизнь. С оговоркой - не
единственно возможный. - Cкpипaч(20.05.2024 08:21)
- Кто говорит, что невозможно? Наоборот, умеренное (без фанатизма, я ж сказал) использование C++ даёт новые возможности, причём практически даром. Samx(377 знак., 20.05.2024 12:58)
- Я не утверждаю что это невозможно. Просто была такая задача и C++
для ее решения пригодился. - AlexG(20.05.2024 09:13)
- Вам на двоих один ответ - у меня претензии не к плюсам, как
таковым, а к избыточной инкапсуляции. Схема
"Модель-контроллер-вид", по моему опыту, лучше, ибо позволяет
избежать "пустых абстракций", сохраняя и модульность, и возможность
повторного использования кода. Cкpипaч(1 знак., 20.05.2024 16:28, ссылка)
- 1. Не понятно, как вы из существования классов, реализующих
унифицированную работу с какой-то внешней аппаратурой пришли к
выводу об избыточной инкапсуляции. Я ведь не дал больше никаких
деталей. Предлагаете разбить это на модель контроллер и вид? А
зачем? Оператор вообще не работает с такой сущностью как
"частотник"/"пусковая аппаратура". Да и пользовательский интерфейс
тут не самая важная часть. Это автоматика, она большую часть
времени без присутствия чаловека работает. 2. AlexG(648 знак., 20.05.2024 20:34)
- Спасибо за вопросы :) Cкpипaч(2755 знак., 20.05.2024 22:18)
- Уже спрашивал когдато, еще попробую. Можешь в приложении к сишечке
ссылок полезных подкинуть? - Andreas(20.05.2024 16:31)
- У меня кроме Кернигана-Ричи ничео нет. Все остальное "музыкой
навеяло" (я вообще на Паскале пишу, просто компилятором Си
компилирую). - Cкpипaч(20.05.2024 17:06)
- Как это?!(про указанное в скобках) "даже используя си можно писать
на бейсике"? Или компиляция в промежуточный код на си? (вроде
фрипаскаль умеет) - Dingo(21.05.2024 05:35)
- Например, не использовать присвоения внутри вычислений условия в
if. Отказаться от всех фишек Си (и Плюсов), отсутствующих в
Паскале. Разница языков программирования вовсе не в скобках {}
вместо begin end. - Cкpипaч(21.05.2024 16:45)
- Это я понимаю. Взять ту же строгую типизацию: gcc можно попросить
через командную строку. Но я вот паскаль не на таком уровне уровне
знаю, чтобы ограничивать себя самостоятельно. PS: А циклы тоже
только с шагом в 1 используете? - Dingo(22.05.2024 05:17)
- Не настолько :) Cкpипaч(67 знак., 22.05.2024 07:59)
- Это я понимаю. Взять ту же строгую типизацию: gcc можно попросить
через командную строку. Но я вот паскаль не на таком уровне уровне
знаю, чтобы ограничивать себя самостоятельно. PS: А циклы тоже
только с шагом в 1 используете? - Dingo(22.05.2024 05:17)
- Программу на паскале можно написать на любом языке. Вопрос методики
и самоконтроля. - =AlexD=(21.05.2024 08:28)
- Согласно первоисточнику "... закоренелый настоящий программист
может написать фортрановскую программу на любом языке." Однажды я
собственными глазами видел такое чудо. Это была программа на
Паскале, в ней был раздел объявления меток и были те метки с
именами от lbl01 до lbl99 почти без пропусков :))) - ЫЫyкпy(21.05.2024 09:22)
- Переиначивать эту цитату можно как угодно, потому что она не о
языках, а о методологиях проектирования. - =AlexD=(21.05.2024 10:13)
- Именно. Вплоть до банального - в отдельном файле объявляется некий тип данных (структура и указатель на нее) и все функции из этого файла принимают первым параметром такой указатель, что-то делая вокруг этой сущности. Чем это от класса и методов отличается? - да ничем, по сути. Cкpипaч(233 знак., 21.05.2024 16:46)
- Знаем мы эту методологию. "Я на асме/фортране/васике кодил, всё
получалось, и сейчас получится, вы меня своим паскалем не
соблазните!" :-) - SciFi(21.05.2024 10:41)
- дык так и писал. и чо. станки по сей день летают. правда чуть ниже обычного. - Alex68(21.05.2024 22:53)
- Фиг с ней, с нумерацией. Программа работала? :-) - SciFi(21.05.2024 09:28)
- Работала. Делала что-то с графами, для поиска оптимального размещения компонентов на печатной плате. ЫЫyкпy(61 знак., 21.05.2024 09:48)
- Переиначивать эту цитату можно как угодно, потому что она не о
языках, а о методологиях проектирования. - =AlexD=(21.05.2024 10:13)
- Согласно первоисточнику "... закоренелый настоящий программист
может написать фортрановскую программу на любом языке." Однажды я
собственными глазами видел такое чудо. Это была программа на
Паскале, в ней был раздел объявления меток и были те метки с
именами от lbl01 до lbl99 почти без пропусков :))) - ЫЫyкпy(21.05.2024 09:22)
- Например, не использовать присвоения внутри вычислений условия в
if. Отказаться от всех фишек Си (и Плюсов), отсутствующих в
Паскале. Разница языков программирования вовсе не в скобках {}
вместо begin end. - Cкpипaч(21.05.2024 16:45)
- Как это?!(про указанное в скобках) "даже используя си можно писать
на бейсике"? Или компиляция в промежуточный код на си? (вроде
фрипаскаль умеет) - Dingo(21.05.2024 05:35)
- У меня кроме Кернигана-Ричи ничео нет. Все остальное "музыкой
навеяло" (я вообще на Паскале пишу, просто компилятором Си
компилирую). - Cкpипaч(20.05.2024 17:06)
- 1. Не понятно, как вы из существования классов, реализующих
унифицированную работу с какой-то внешней аппаратурой пришли к
выводу об избыточной инкапсуляции. Я ведь не дал больше никаких
деталей. Предлагаете разбить это на модель контроллер и вид? А
зачем? Оператор вообще не работает с такой сущностью как
"частотник"/"пусковая аппаратура". Да и пользовательский интерфейс
тут не самая важная часть. Это автоматика, она большую часть
времени без присутствия чаловека работает. 2. AlexG(648 знак., 20.05.2024 20:34)
- Вам на двоих один ответ - у меня претензии не к плюсам, как
таковым, а к избыточной инкапсуляции. Схема
"Модель-контроллер-вид", по моему опыту, лучше, ибо позволяет
избежать "пустых абстракций", сохраняя и модульность, и возможность
повторного использования кода. Cкpипaч(1 знак., 20.05.2024 16:28, ссылка)
- Просто рассказы ужасы невозможности построения модульных систем без
ООП я слышал уже много раз. Они безпочвенны. Но как патерн
проектирования - конечно имеет право на жизнь. С оговоркой - не
единственно возможный. - Cкpипaч(20.05.2024 08:21)
- На всё упомянутое могу показать фото контроллеров, руководства по
эксплуатации, страницы на сайте. Исходники - не могу. И испытания
станций не фотографировались, насколько помню. - AlexG(20.05.2024 02:54)
- Кот и лампа :( - Cкpипaч(19.05.2024 21:18)
- Вот этот весь отпечаток в классе и остается. Встроенные ПИДы не
задействованы. Не то чтобы прям прекрасно получилось, но это
позволяет не лезть в код при каждом заказе насосной станции. В,
условно, прошлом поколении контроллеров и их ПО был жесткий расчет
на конкретный частотник и конкретную конфигурацию станции и это был
полнейший тупик с околонулевым повторным использованием прошивок и
отладкой почти каждой станции на стенде с реальной водой и
насосами. Некоторые AlexG(214 знак., 19.05.2024 21:05)
- Несколько лет назад (каждые пару лет?) мы тут обсуждали статью о
вреде инкапсуляции данных. Склонен считать, что сама по себе
инкапсуляция неплоха, но она подталкивает программиста к созданию
"пустых слоев" абстракции. А это уже инфернальное зло. - Cкpипaч(19.05.2024 20:24)
- Много лет назад я написал код на С. Всё было понятно. Потом решил
переписать код на С++ с несколькими уровнями наследования и
виртуальными методами, чтобы было ещё понятнее. И теперь в этом
коде я ничего не могу понять. Ale3000(204 знак., 20.05.2024 04:35)
- Да. Только мне регулярно приходится выдерживать баталии против молодый-амбициозных. Cкpипaч(513 знак., 20.05.2024 08:30)
- Много лет назад я написал код на С. Всё было понятно. Потом решил
переписать код на С++ с несколькими уровнями наследования и
виртуальными методами, чтобы было ещё понятнее. И теперь в этом
коде я ничего не могу понять. Ale3000(204 знак., 20.05.2024 04:35)
- В моей практике, конкретный тип частотника накладывает отпечаток на
прикладной алгоритм управления. Дополнительные сигналы контроля,
требующие обработки, различия в логике встроенных ПИД-регуляторов.
Инкапсулировать - отсекать "избыточное" и ограничивать функционал.
Но у каждого свои фломастеры, и свое чувство прекрасного. - Cкpипaч(19.05.2024 20:28)
- 17 это, упрощенно, количество поддерживаемых типов частотников.
Объекты, которые умеют управлять тем, что подключено именно к этому
шкафу создаются по необходимости (в соответсвии с конфигурацией).
Объекты всех 17 типов не существуют одновременно, хотябы потому что
насосов максимум 4. - AlexG(19.05.2024 20:19)
- Ребята, вы серьёзно? Я кагбэ этих насосных станций абы не сотню
разных сделал, откуда 17 классов?! Несколько раздельных процессов в
биг-луп: несколько на опрос устройств, разного типа (по одному
процессу на тип), таблица состояния в памяти, основной алгоритм и
пара процессов на обмен данными по сети. Cкpипaч(323 знак., 19.05.2024 09:23)
- 1. Ввел класс TGeneralSensor. Samx(512 знак., 19.05.2024 00:14)
- это ж надо так извратиться:) - Vit(19.05.2024 09:38)
- Почему извратиться? Наоборот, самый прямой путь - для чего это всё
в С++ и придумано. Ну вот вам другой канонический пример: Samx(402 знак., 19.05.2024 20:34)
- это другое:) вот возьмите дуину - там есть setup и loop. это похоже
на старт (с какой-то инициализацией и т.п.) и бесконечный процесс,
который по сути таки перезапускаемый набор операций. так вот у
процесса с идеологией run-to-complete (см. Quantum Leaps), т.е.
конечный автомат (finite state machine), котрый торчит из вашего
doStep() есть множество сходных названий, и, КМК, это скорее задача
(task). вы соорудили примитивный диспетчер, но собственно задачи
запихали по-глубже Vit(1204 знак., 19.05.2024 21:19)
- Ну да, я же так и сказал - всё, что на C++ делается просто и
прозрачно, можно сделать руками на C, и при этом не получить
ничего, кроме потерянного времени. Samx(106 знак., 20.05.2024 01:27)
- я вам объяснил, почему считаю конкретный случай извратом, в котором ещё и сами плюсы притянуты за уши, делая код абсолютно непрозрачным. вместо сервиса-спулера вы рожаете негибкое решение в виде массива с удивительными глубинами. насчет больше и дольше - ваши фантазии. вопрос не по примененному языку, а по архитектуре - там где-то в консерватории бардак. и звените - Vit(20.05.2024 10:06)
- Ну да, я же так и сказал - всё, что на C++ делается просто и
прозрачно, можно сделать руками на C, и при этом не получить
ничего, кроме потерянного времени. Samx(106 знак., 20.05.2024 01:27)
- Т.е ужэ имея готовый набор функций 1-вире, вместо
sendByte1Wire(data), вы (условно) пользуете SendByteIIC(data)?
Нахуя, а главное, зачем? - mse homjak(19.05.2024 20:54)
- Наоборот - уже имея отлаженный код работы с I2C-датчиком, я просто
заменяю обращение к члену класса TI2CSoft на обращение к его
наследнику TI2CSoftBy1wire Samx(283 знак., 20.05.2024 12:13)
- Это понятно. Просто вам полюбому нужно всё написать ручками. Только
у условного меня, на Ц, будет либо переназначение дефайнов, либо
просто две функции, где это уже будет сделано прям в коде. - mse homjak(20.05.2024 12:45)
- Да, и в каждый вызов функции нужно будет явно передавать структуру
с переменными состояния. Датчиков то несколько десятков. И для чего
этот геморрой? Samx(117 знак., 20.05.2024 13:04)
- Да я, собсно, не против. mse homjak(665 знак., 23.05.2024 22:22)
- Да, и в каждый вызов функции нужно будет явно передавать структуру
с переменными состояния. Датчиков то несколько десятков. И для чего
этот геморрой? Samx(117 знак., 20.05.2024 13:04)
- Это понятно. Просто вам полюбому нужно всё написать ручками. Только
у условного меня, на Ц, будет либо переназначение дефайнов, либо
просто две функции, где это уже будет сделано прям в коде. - mse homjak(20.05.2024 12:45)
- Возможно, вы не поняли. В этом случае, через существующую линию
1wire, на дальнем конце, с помощью расширителя портов 1wire,
реализован I2C для опроса удалённого I2C-устройства через имеющуюся 1wire-сеть. - Nikolay_Po(19.05.2024 21:06)
- Это, как раз, понятно. Я не детализированно обозвал функции. типа
setStartIIC() и setStart1wire(). Ну и набор вверх до записи-чтения.
Т.е. это всё уже должно быть написано. Но вызов сделан не как
написал я выше, а как принято в ЦПП. Дажэ не так mse homjak(578 знак., 19.05.2024 21:33 - 20.05.2024 12:48)
- Как-то делал девайс с несколькими SPI на STM, ну и в нём заюзал
LWIP. Его отлаживать без дебажного выхлопа неинтересно было, ну и
пришлось заюзать ногу SWO, а оно пересекалось с одним из SPI и
подходящих свободных не было. Сделал SPI ногодрыгом, но выделил
указатель SPI-ного типа на какую-то левую память для SPIn и не
менял API и уже написанный код. - Vit(19.05.2024 22:01)
- Так в том и дело, заработало и хрен с ним. Эти механизьмы дают лютый выхлоп в некой стандартной среде, на неком стандартном оборудовании. Причом, чтобы низкий уровень ужэ кто-то написал. Тогда, да, пусть лошадь думает, у неё голова большая. А так, автоматика: нажал на кнопку, мешок на спине. Нажал другую, спина в мыле. Ну, мож кому-то, действительно, помогает, ХЗ. - mse homjak(19.05.2024 22:02)
- Как-то делал девайс с несколькими SPI на STM, ну и в нём заюзал
LWIP. Его отлаживать без дебажного выхлопа неинтересно было, ну и
пришлось заюзать ногу SWO, а оно пересекалось с одним из SPI и
подходящих свободных не было. Сделал SPI ногодрыгом, но выделил
указатель SPI-ного типа на какую-то левую память для SPIn и не
менял API и уже написанный код. - Vit(19.05.2024 22:01)
- Это, как раз, понятно. Я не детализированно обозвал функции. типа
setStartIIC() и setStart1wire(). Ну и набор вверх до записи-чтения.
Т.е. это всё уже должно быть написано. Но вызов сделан не как
написал я выше, а как принято в ЦПП. Дажэ не так mse homjak(578 знак., 19.05.2024 21:33 - 20.05.2024 12:48)
- Наоборот - уже имея отлаженный код работы с I2C-датчиком, я просто
заменяю обращение к члену класса TI2CSoft на обращение к его
наследнику TI2CSoftBy1wire Samx(283 знак., 20.05.2024 12:13)
- это другое:) вот возьмите дуину - там есть setup и loop. это похоже
на старт (с какой-то инициализацией и т.п.) и бесконечный процесс,
который по сути таки перезапускаемый набор операций. так вот у
процесса с идеологией run-to-complete (см. Quantum Leaps), т.е.
конечный автомат (finite state machine), котрый торчит из вашего
doStep() есть множество сходных названий, и, КМК, это скорее задача
(task). вы соорудили примитивный диспетчер, но собственно задачи
запихали по-глубже Vit(1204 знак., 19.05.2024 21:19)
- Спасибо. Я уже было подумал что сам свихнулся :) - Cкpипaч(19.05.2024 09:52)
- Почему извратиться? Наоборот, самый прямой путь - для чего это всё
в С++ и придумано. Ну вот вам другой канонический пример: Samx(402 знак., 19.05.2024 20:34)
- это ж надо так извратиться:) - Vit(19.05.2024 09:38)
- Был аналогичный случай. Контроллер насосной станции. Пусковая
аппаратура, непосредсвенно крутящая двигатели, может использоваться
разная. В итоге 17 классов, реализующих взаимодействие с очень
разными частотниками, устройствами плавного пуска и разными
вариантами схем на контакторах и основной алгоритм, которому можно
подсунуть любые объекты этих классов в любом разумном сочетании. AlexG(175 знак., 19.05.2024 05:09)
- Я повторю свой вопрос - сколько на один кристал? Мне это важно. - Cкpипaч(19.05.2024 08:57)
- Ну там было много датчиков разных типов и несколько регуляторов
разных типов. Samx(194 знак., 18.05.2024 23:19)
- Сколько раз делал теплицы, ни разу полиморфизм не потребовался.
Сколько у вас контуров регулирования на один кристал выходило? - Cкpипaч(18.05.2024 23:00)
- Я бОльшую часть жизни дальше чем "Си с классами" не заплывал, Samx(312 знак., 18.05.2024 22:57)
- вынужденно на ардуино для макетирования, там их язык приплюсованный - NAUT(18.05.2024 14:38)
- Пишет. Есть. По сравнению с C основные плюсы, наверное, в том, что можно многое переложить на компилятор и стандартную библиотеку и не устраивать закат солнца вручную. AlexG(79 знак., 18.05.2024 14:32)
- Для вас - точно нет. Только больше запутает. - SciFi(18.05.2024 14:29)
- +1 - Aleksey_75(18.05.2024 14:38)
- Как минимум, два плюса есть. - mse homjak(31.05.2024 17:16)