170 похожих чатов

Или тут парадигма, если не плюсы, то ничего?

43 ответов

9 просмотров

Я сказал как писать лучше, вы — предложили писать на другом языке — зачем? непонятно

Danya🔥
Я сказал как писать лучше, вы — предложили писать ...

Ну вске было не так, речь шла конкретно и динамических массивах, вы зачем-то начали предлагать вектор ... мотивируя это тем что тогда не надо сделать за утечками пасяти и пр. просто если не надо ни за чем следить и вообще можно обстрагироваться выше, то зачем это вообще?

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
Ну вске было не так, речь шла конкретно и динамиче...

делаю вывод - на плюсах есть смысл писать только говнокод, иначе проще взять питон

Pavel Kazakov
коротко: ты не шаришь, извини

Так я и не притендовал на то что я шарю))

Alexander Karaev
делаю вывод - на плюсах есть смысл писать только г...

т.е. низкоуровневый код на плюсах - это говнокд?

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
т.е. низкоуровневый код на плюсах - это говнокд?

использование new [] при отсутствии резонных на то причин - говнокод

Alexander Karaev
использование new [] при отсутствии резонных на то...

почему, потому что можно забыть его удалить? или в чем он так плох?

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
т.е. низкоуровневый код на плюсах - это говнокд?

в 2021 году, со всей тонной инженерного опыта, который был накоплен за десятилетия, это очень плохо

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
почему, потому что можно забыть его удалить? или в...

в том, что в С++ - минное поле, в любой момент может выскочить исключение, а ресурс незащищен. даже если ты аккуратно напишешь delete, до него может не дойти

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
Ну вске было не так, речь шла конкретно и динамиче...

С++ пропагандирует такую вещь как Zero-Cost Abstractions. Автоматическое управление памяти по определению лучше ручного, потому что оно уменьшает когнитивную нагрузку с писателя программы по управлению ресурсами и их владением и при чтении программы её легче понять, когда у тебя владение ресурсом явно обозначено абстракциями, сырые указатели не предоставляют таких средств. Если вы хотите динамический массив, у которого нельзя будет поменять размер после создания, при этом, чтобы это был не const vector, то есть чтобы сами элементы можно было менять — то надо использовать std::unique_ptr<T[]> Я его не посоветовал новичку, потому что это будет скорее усложнение для новичкового кода, а вектор — достаточно нормальный компромисс, чтобы избежать говнокода в виде ресурса без явного указания владения.

Alexander Karaev
использование new [] при отсутствии резонных на то...

При использовании 98 стандарта - это тоже плохо?

Danya🔥
С++ пропагандирует такую вещь как Zero-Cost Abstra...

Ну простите, я то думал что весь сахар всего этого в том что есть возможнось самостоятельно управлять ресурсами, а оказывается все уже давно нет.

Николай
При использовании 98 стандарта - это тоже плохо?

в C++98 всё же есть RAII, на худой конец - auto_ptr

Alexander Karaev
в C++98 всё же есть RAII, на худой конец - auto_pt...

Нас за авто дрючили в универе. На данный момент у меня о нем плохое мнение за такое обучение

Николай
Нас за авто дрючили в универе. На данный момент у ...

он был проблемный в плане измененной семантики копирования, но функцию свою выполнял.

Alexander Karaev
какой стандарт был в универе?

98, я спрашивал, почему не 11, я в 11 году поступил. Сказали типа такая программа, хотите новее - изучайте сами

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
Ну простите, я то думал что весь сахар всего этого...

У тебя есть такая возможность, но пользоваться ей имеет смысл только внутри RAII обёртки, которая в итоге будет делать это за тебя. А так да - ручное управление ресурсами это сложно, а программист стремится уменьшать сложность программы

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
почему, потому что можно забыть его удалить? или в...

Первая версия программы: int* arr = new int[10]; ... delete[] arr; Кто-то добавил код, который бросает исключение: (и хорошо если они не забыли добавить try/catch) int* arr = new int[10]; try { ... // exception } catch (...) { delete[] arr; } delete[] arr; Тоже самое с вектором в любой версии программы std::vector<int> arr(10); А теперь ещё представь что в первой версии передавался указатель куда-то и сохранялся и не дай бог ты воспользуешься им после удаления. Или ты передал его в функцию, которая делает вычисления и в новой версии программы там добавили строчку, которая удаляет этот массив, а твой код не поправили и получается double free.

Alexander Karaev
в C++98 всё же есть RAII, на худой конец - auto_pt...

Да лучше уж свой scoped_ptr наговнякать или буст взять

Danya🔥
Да лучше уж свой scoped_ptr наговнякать или буст в...

Без мув семантики как ты scoped_ptr наговнякаешь? Запретишь копирование?

Danya🔥
Первая версия программы: int* arr = new int[10]; ....

Ну с такой точки зрения я не рассматривал) Опять же я не собирался юзать плюсы для прода и тем более уж работать на них. Но в целом я понял, в случе рабоы командой кто-то можеи просто сломать программу. В данном случае автоматическое управление действительно было бы удобней и отказоусточиваей.

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
Ну простите, я то думал что весь сахар всего этого...

В большинстве случаев важна корректность программы и её поддерживаемость. Ручное управление ресурсами редко даёт бенифиты.

Kirill Bolshakov
Без мув семантики как ты scoped_ptr наговнякаешь? ...

Ну а в бусте по твоему как сделано?) Если что, scoped_ptr == const unique_ptr

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
Ну с такой точки зрения я не рассматривал) Опять ж...

Да даже не в случае командной работы, ты через неделю просто можешь забыть что ты как реализовал и сам себе на грабли наступить

Danya🔥
В большинстве случаев важна корректность программы...

Ну мне по сути нужны плюсы для программирования микрух и делать я буду это в одно лицо. А с учтом весьма ограниченного колзва ресурсов лучше наверно будет менеджерить их руками? Или все же можно юзать обстракции и это не сильно будет тянуть?

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
Ну мне по сути нужны плюсы для программирования ми...

Рекомендую попробовать написать хорошо с точки зрения кода, а если микруха не вытянет, то переписывать на плохо)

Danya🔥
Да лучше уж свой scoped_ptr наговнякать или буст в...

Тогда не было буста, если не ошибаюсь

Danya🔥
Когда?

98 стандарт

Николай
98 стандарт

Буст появился в начале нулевых

Danya🔥
Рекомендую попробовать написать хорошо с точки зре...

ну там 80mHz и 1.5 метра для прошивы ... =) ладно, понял, короче не стоит лезть во все это вот управление и попытаться все же начать с абстракций. Просто сколько я либ для рабоыт с теми или иными датчиками/мониторами не открывал, там все написано без абстракций. Ну и там cpp11

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
ну там 80mHz и 1.5 метра для прошивы ... =) ладно,...

С++ предоставляет варианты как получать неабстрагированные данные из абстракций Условно — метод data у вектора

Danya🔥
С++ предоставляет варианты как получать неабстраги...

Ну т.е. берем абстракцию, а если надо то работаем с сырыми данными из неё? А астракция чисто для защиты от утечек памяти и стабтльности?

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
Ну т.е. берем абстракцию, а если надо то работаем ...

приложение можно условно разделить на несколько компонент, каждая из которых работает на своём уровне абстракции. если в соседних строчках написаны new и std::vector, это печально

Alexander Karaev
приложение можно условно разделить на несколько ко...

Ну пока у меня ничего не написано) мне пока надо реализовать мессив фиксированной длинны в который можно толкать данные в конец и при его заполнении, которые должны вываливаться из начала) Я пошел пока что через шаблон т.к. там могут быть разные данные и разная размреность. Надо на основе этого массива будет рисовать граффик на мониторчике. Благо этот код для пет проекта ))

🤙🏻 ℙ𝔸𝕍𝔼𝕃 ᏦᎾᏢᏦᎾᏉ
Ну пока у меня ничего не написано) мне пока надо р...

Если размер задаётся на этапе компиляции, то юзай параметр шаблона (число) + std::array<T, N>. Если на этапе выполнения, то юзай std::unique_ptr<T[]> + std::make_unique<T[]>.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта