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

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

43 ответов

8 просмотров

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

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[]>.

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Коллеги, я тут для личных нужд пошел ставить MQTT сервер, пощупал mosquitto, но ужаснулся отсутствию такой банальности, как HTTP API для посмотреть список топиков. А тут что,...
Maksim Lapshin
9
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
Карта сайта