Лично я организовал себе локалку в 5Гбит ради стриминга картинки с ПК на автономные VR очки. Чем быстрее картинка передаётся, тем меньше тайминги, всё просто.
И да, эти задержки заметны. Когда ты дёргаешь рукой и она запаздывает ощущается сильнее чем когда дёргаешь мышкой в шутере.
Руководствуются часто тем что нет времени на подумать или пиар-манагер душит и ждёт ответа в следующую секунду. Так даже самые умные люди способны делать необдуманные поступки
Слушок был от друзья-друзей - там в каком-то регионе накрыли группу которая просто оформляла возвраты на новые товары, а-ля "брак", а потом ждали на свалке нужную фуру и делили награбленное.
Но был ли то озон или другой маркетплейс история умалчивает.
Есть несколько знакомых которым буквально впарили IT курсы. Кто-то смирился с утратой денег, но один персонаж... Когда до него дошло что его надурили пошёл к друзьям-друзей подал на них иски во все инстанции которые знал, а потом спустя время, безрезультатного ожидания, ему пришла гениальная идея в голову... Он взял ChatGPT и попросил его обыгрывать злого юриста который вот-вот засудит контору и просто дублировал диалог. Те настолько с него офигели что вернули деньги буквально через час.
Парнишка тот обычный трудяга с завода который в рыбалку играет и бухает по выходным, но чуть-чуть за эти ваши интернеты разбирается. (Нагрели его на 300К с кредитом под проценты интересные)
Скажем так, написать на С++ правильно требует больших компетенций от программиста чем на С. В С есть некоторые оптимизации которые проводятся неявно, чего только const стоит, который регулярно как constexpr оптимизируется. Из-за этого строится и проблема, что написанный в лоб алгоритм может работать быстрее на С, но если переписать С++ правильно, то его реализации могут сильно обогнать тот же С по эффективности.
Мой тейк только в этом.
ЗЫ и в целом это и есть проблема С++, чтобы писать на нём хорошо нужно знать ну ОЧЕНЬ МНОГО вещей, и дело не в библиотеках а именно в кор фичах языка
И тогда мы получим UB , так как мы не даём значения тривиальным типам в дефолтном конструкторе и получаем тот же мусор в памяти. (а иногда нет ибо компилятор, лол)
С++ медленнее чистого Си, особенно С++ с применением продвинутого ООП
Ну ты выдал. Так суть в том что С++ тебе дают абстракции, которые не бесплатные, и в целом всё. Код генерит идентичный, просто на С приходится писать ООП руками, что часто делают в линуксовом коде лол, и потому используют более тупые подходы которые работают на железе неожиданно эффективно.
Далеко ходить не надо, было много статей о том что в битве "чистый код-ооп" VS полотно кода из switch, побеждает последний. Потому что весь switch можно занести в таблицу и за 2-3 инструкции прыгнуть куда нужно, а этот ваш полиморфизм начинает заниматься страшными вещами под капотом.
Решились написать как-то простую демку, дабы проверить свои идеи о "тысячах юнитов на экране". После профилирования оказалось что UI занимает времени столько же, сколько рисование 50К юнитов и сервер для обработки их передвижения. Было грустно(
Эта фича довольно старая, но применять её надо с осторожностью. Как писали выше, это черевата созданием нового диалекта для конкретно вашей либы а так же нарушением ADL, что иногда плохо заканчивается.
Использование функций для этого не совсем кошерно, можно использовать constexpr переменные, дабы получить более вкусный синтаксис. Условно (value->as_int) навариваем сюда концептов и получаем забавный способ что-то сделать
Так беда не в том чтобы предусмотреть это всё, а в том чтобы сделать правильную абстрактную модель.
ИМХО, почти все кейсы использования дефолтных интерфейсов уже изучены в доль и поперёк. Если тебе нужно что-то специфическое, то нанимай деда по серьёзнее, а для остальных 99% хватит и дефолтных либ.
Особенно я не понимаю почему не сделают нормальные либы для новых плюсов(С++20 хотяб). Был бы у тебя условный dev::ina219 в котором тупо карта регистров забита и пару функций для удобной работы, а инициализировался бы он от hal::i2c[0] драйвера который вообще на этапе компиляции считается. И всё были бы счастливы. (Эх... может когда-нибудь и раскрою свой фреймворк)
ЗЫ Я вообще к тому, что слишком абстрактные модели не нужны. Они должны делать ровно то что написано в документации, если клас делает что-то ещё этот клас не имеет права называться аппаратной абстракцией, а скорее клас для обычных пользователей, так сказать.
Так суть манагеров максимизировать прибыль, с чем они и справляются отлично.
Как у нас на производстве шутят - "пришёл манагер на сталелетейный завод и говорит - как у вас всё не оптимизировано! -, и закрыл завод начав закупать сталь из Китая. Чистая прибыль +300%, компания растёт!" Вот тут тоже самое, только в профиль.
Меня тут только explicit напрягает. Мол включить некоторые предупреждения по умолчанию это полезно, да, но не для explicit. Это буквально сломает добрую часть С++. Слишком много логики завязано на этой фиче и просто так запретить её было бы странно.
Лучше бы добавили правило в варнинги, мол тип который не является агрегатом должен указывать явно explicit он или нет. Тогда бы вещи типа С-структур бы работали, а вот всякие самописные менеджеры чего-либо - нет. Всё ещё бы потребовало переписывать кучу кода, но зато было бы +- понятным почему так сделано.
С explicit не будет работать часть низкоуровневых либ по софтварной эмуляции чего-то. Так же не будет работать математика, что значит писать так больше нельзя int x = (3.14 + у)*2, и надо будет учитывать все конверсии, что выглядит как лютый заморочь. А ещё с explicit не работает добрая половина способов инициализации перемнной, буквально ограничивая тебя 1-2 способами.
С [[nodiscard]] ты не сможешь пользоваться даже memcpy, ибо он неожиданно возвращает указатель который ты ему же и передал. Многие функции ОС тоже что-то возвращают и придётся писать кучу веток кода по обработке сколько символов в консоли ты написал, иначе тебе варнингов на пол экрана намолюет.
С лямбдами сложно, ибо в целом можно сделать чтоб компилятор сам строил лямбды, но это будет не везде решаемо. Мол как угадать переменная ссылка или значение? А это важно между прочим. Можно было бы сделать новый синтаксис как в С#, но для лямбд без захвата, тогда было бы прикольно, согласен.
С енумами непонятки какие-то, ибо это "отдельная сущность". Но всё же логично что класс означает что это "объект сам в себе с explicit кастом в дефолтный енум или специальный тип". Хотя меня бы устроило если бы дефолтный енум не сыпал своими членами в пространство имён, хотя это может через классы эмулировать, лол.
Ну да, расписали. Творчество работает из контекста, хаоса и уменьшения этого хаоса. Любой художник который абстракции делает это скажет - "в начале фигню намулевал, а тут вот дерево видно, а тут попугайчика. Тяп-ляп и картина готова", а если бы контекст, тн эмоции, были бы негативными, там вместо "дерева" был бы "взрыв бомбы", а "попугайчик" бы превратился в "мусор".
ЗЫ: Прикол нашей сетки лишь в том что она полносвязно-разряженная+активность копится. Мол ты смотришь на стол, что-то там зарядилось, смотришь на стул, бац! "Тут же поесть можно!" Для текущих ИИ такое невозможно, нужно либо память моделировать либо контекст широкий иметь. И из этого же строится потенциально более сложная творческая деятельность у биологических систем.
Лично я организовал себе локалку в 5Гбит ради стриминга картинки с ПК на автономные VR очки. Чем быстрее картинка передаётся, тем меньше тайминги, всё просто.
И да, эти задержки заметны. Когда ты дёргаешь рукой и она запаздывает ощущается сильнее чем когда дёргаешь мышкой в шутере.
Там террористы все, вы не понимаете! Арабы особенно, это же там все эти вот... Ну религия алах-бабах же, ну?
Руководствуются часто тем что нет времени на подумать или пиар-манагер душит и ждёт ответа в следующую секунду. Так даже самые умные люди способны делать необдуманные поступки
Слушок был от друзья-друзей - там в каком-то регионе накрыли группу которая просто оформляла возвраты на новые товары, а-ля "брак", а потом ждали на свалке нужную фуру и делили награбленное.
Но был ли то озон или другой маркетплейс история умалчивает.
У меня есть кулстори на эту тему.
Есть несколько знакомых которым буквально впарили IT курсы. Кто-то смирился с утратой денег, но один персонаж... Когда до него дошло что его надурили пошёл к друзьям-друзей подал на них иски во все инстанции которые знал, а потом спустя время, безрезультатного ожидания, ему пришла гениальная идея в голову... Он взял ChatGPT и попросил его обыгрывать злого юриста который вот-вот засудит контору и просто дублировал диалог. Те настолько с него офигели что вернули деньги буквально через час.
Парнишка тот обычный трудяга с завода который в рыбалку играет и бухает по выходным, но чуть-чуть за эти ваши интернеты разбирается. (Нагрели его на 300К с кредитом под проценты интересные)
Скажем так, написать на С++ правильно требует больших компетенций от программиста чем на С. В С есть некоторые оптимизации которые проводятся неявно, чего только const стоит, который регулярно как constexpr оптимизируется. Из-за этого строится и проблема, что написанный в лоб алгоритм может работать быстрее на С, но если переписать С++ правильно, то его реализации могут сильно обогнать тот же С по эффективности.
Мой тейк только в этом.
ЗЫ и в целом это и есть проблема С++, чтобы писать на нём хорошо нужно знать ну ОЧЕНЬ МНОГО вещей, и дело не в библиотеках а именно в кор фичах языка
И тогда мы получим UB , так как мы не даём значения тривиальным типам в дефолтном конструкторе и получаем тот же мусор в памяти. (а иногда нет ибо компилятор, лол)
Ну ты выдал. Так суть в том что С++ тебе дают абстракции, которые не бесплатные, и в целом всё. Код генерит идентичный, просто на С приходится писать ООП руками, что часто делают в линуксовом коде лол, и потому используют более тупые подходы которые работают на железе неожиданно эффективно.
Далеко ходить не надо, было много статей о том что в битве "чистый код-ооп" VS полотно кода из switch, побеждает последний. Потому что весь switch можно занести в таблицу и за 2-3 инструкции прыгнуть куда нужно, а этот ваш полиморфизм начинает заниматься страшными вещами под капотом.
Решились написать как-то простую демку, дабы проверить свои идеи о "тысячах юнитов на экране". После профилирования оказалось что UI занимает времени столько же, сколько рисование 50К юнитов и сервер для обработки их передвижения. Было грустно(
Смотря какие функции, кейсов довольно много, но чем новее стандарт тем больше позволяется делать в constexpr выражениях.
Эта фича довольно старая, но применять её надо с осторожностью. Как писали выше, это черевата созданием нового диалекта для конкретно вашей либы а так же нарушением ADL, что иногда плохо заканчивается.
Использование функций для этого не совсем кошерно, можно использовать constexpr переменные, дабы получить более вкусный синтаксис. Условно
(value->as_int)
навариваем сюда концептов и получаем забавный способ что-то сделатьТак это шутка буквально...
"Я майнингом занимаюсь, да. Сколько это приносит денег? Да копейки, ни особо прибыльно. Зачем я этим занимаюсь? Так а как мне ещё бассейн отапливать?"
Может вы просто плохо понимаете современный С++...
Так беда не в том чтобы предусмотреть это всё, а в том чтобы сделать правильную абстрактную модель.
ИМХО, почти все кейсы использования дефолтных интерфейсов уже изучены в доль и поперёк. Если тебе нужно что-то специфическое, то нанимай деда по серьёзнее, а для остальных 99% хватит и дефолтных либ.
Особенно я не понимаю почему не сделают нормальные либы для новых плюсов(С++20 хотяб). Был бы у тебя условный
dev::ina219
в котором тупо карта регистров забита и пару функций для удобной работы, а инициализировался бы он отhal::i2c[0]
драйвера который вообще на этапе компиляции считается. И всё были бы счастливы. (Эх... может когда-нибудь и раскрою свой фреймворк)ЗЫ Я вообще к тому, что слишком абстрактные модели не нужны. Они должны делать ровно то что написано в документации, если клас делает что-то ещё этот клас не имеет права называться аппаратной абстракцией, а скорее клас для обычных пользователей, так сказать.
Есть родственники из деревень и суть проста - там очень доступная работа.
Хочешь наушники новые купить? Пойди у деда вишню собери, пару дней поработать и купишь что хочешь. И работают чуть ли не с 12 лет (из знакомых)
Так суть манагеров максимизировать прибыль, с чем они и справляются отлично.
Как у нас на производстве шутят - "пришёл манагер на сталелетейный завод и говорит - как у вас всё не оптимизировано! -, и закрыл завод начав закупать сталь из Китая. Чистая прибыль +300%, компания растёт!" Вот тут тоже самое, только в профиль.
Меня тут только explicit напрягает. Мол включить некоторые предупреждения по умолчанию это полезно, да, но не для explicit. Это буквально сломает добрую часть С++. Слишком много логики завязано на этой фиче и просто так запретить её было бы странно.
Лучше бы добавили правило в варнинги, мол тип который не является агрегатом должен указывать явно explicit он или нет. Тогда бы вещи типа С-структур бы работали, а вот всякие самописные менеджеры чего-либо - нет. Всё ещё бы потребовало переписывать кучу кода, но зато было бы +- понятным почему так сделано.
С explicit не будет работать часть низкоуровневых либ по софтварной эмуляции чего-то. Так же не будет работать математика, что значит писать так больше нельзя
int x = (3.14 + у)*2
, и надо будет учитывать все конверсии, что выглядит как лютый заморочь. А ещё с explicit не работает добрая половина способов инициализации перемнной, буквально ограничивая тебя 1-2 способами.С [[nodiscard]] ты не сможешь пользоваться даже memcpy, ибо он неожиданно возвращает указатель который ты ему же и передал. Многие функции ОС тоже что-то возвращают и придётся писать кучу веток кода по обработке сколько символов в консоли ты написал, иначе тебе варнингов на пол экрана намолюет.
С лямбдами сложно, ибо в целом можно сделать чтоб компилятор сам строил лямбды, но это будет не везде решаемо. Мол как угадать переменная ссылка или значение? А это важно между прочим. Можно было бы сделать новый синтаксис как в С#, но для лямбд без захвата, тогда было бы прикольно, согласен.
С енумами непонятки какие-то, ибо это "отдельная сущность". Но всё же логично что класс означает что это "объект сам в себе с explicit кастом в дефолтный енум или специальный тип". Хотя меня бы устроило если бы дефолтный енум не сыпал своими членами в пространство имён, хотя это может через классы эмулировать, лол.
Ну да, расписали. Творчество работает из контекста, хаоса и уменьшения этого хаоса. Любой художник который абстракции делает это скажет - "в начале фигню намулевал, а тут вот дерево видно, а тут попугайчика. Тяп-ляп и картина готова", а если бы контекст, тн эмоции, были бы негативными, там вместо "дерева" был бы "взрыв бомбы", а "попугайчик" бы превратился в "мусор".
ЗЫ: Прикол нашей сетки лишь в том что она полносвязно-разряженная+активность копится. Мол ты смотришь на стол, что-то там зарядилось, смотришь на стул, бац! "Тут же поесть можно!" Для текущих ИИ такое невозможно, нужно либо память моделировать либо контекст широкий иметь. И из этого же строится потенциально более сложная творческая деятельность у биологических систем.
ВК это буквально файлопомойка. При должной сноровке можно найти видео любого уровня "морали"