powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
25 сообщений из 474, страница 14 из 19
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497053
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДима. Еще добавлю. КМК именно буферизация (или отложенная деаллокация) дает преимущества.
Это как в БД и файловых системах. Если ты делаешь батчинг с умным предвариельным анализм
батча - то можешь здорово сэкономить на всем объеме операций.

И поэтому КМК сиюминутное пожелание срочно отработать "деструктор" приводит к ненужной
суетливой активности и потере общего КПД.

И еще раз. Я ратую за компромисс а не за "священную войну против GC и MM".

Ну ты как? ОК? Не ОК?
Деструктор и освобождение памяти это разные вещи. Деструктор это логика уровня приложения. Сообщение объекту что он больше не используется сразу как он стал ненужным. Я об этом. Что там реально с памятью происходит - не важно.

Пример с БД неудачен, т.к. РСУБД и ООП никак не пересекаются. Но в РСУБД есть аналог деструктора - триггер.

В общем деструктор нужная штука и там где его нет изобретают всякие костыли для его эмуляции.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497079
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПример с БД неудачен, т.к. РСУБД и ООП никак не пересекаются. Но в РСУБД есть аналог деструктора - триггер.

Я другое имел в виду. Если рассматривать MM как структуру данных то и "чистку" неиспользуемых
объектов в памяти лучше делать не "штучно" а массово.

Это повышает общий КПД алгоритма хотя и вводит некую задержку в освобождение памяти. Но кому
нужен жесткий синхронизм?

Тебе нужен?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497080
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВ общем деструктор нужная штука и там где его нет изобретают всякие костыли для его эмуляции.
По поводу костылей для языков с GC.

Костыль номер раз.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    /**
     * With 'finally' section
     */
    public static void dangerousMethod1(){
        try{
            // TODO: Fucken native dangerous callbacks
            //NativeResource.use();
        } finally {
            // TODO: Fucken destructor section
            //NativeResource.safeclose();
        }
    }



И костыль номер два - это try-with-resources о котором я говорил. Его легко нагуглить. Там будет и перегруженный
метод ::close(). Это и есть как-бе деструктор.

Насколько это костыльно по 10 балльной шкале? Я не знаю. Я думаю что не очень. Т.к. сам юзкейс очень специфичен.
Ситуации когда тебе кровь-из-носа нужно освободить ресурсы достаточно редки. Их можно посчитать по пальцам.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497096
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonСитуации когда тебе кровь-из-носа нужно освободить ресурсы достаточно редки
разве это не типовая ситуация?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497102
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
завтра обязательно будет "лучше", чем было вчера.

try-with-resources появился спустя 15 лет после старта дохлой java-идеи, когда в нее вдыхалась уже третья жизнь, потенциал которой будут выбирать еще лет пять-семь вперед, благодаря впрыснутой в машину invokedynamic ( говорят, к java-11, наконец, пересмотрят генерики, и сделают их почти такими же "плохими", как в c++ (генерирующими на этапе компиляции версию класса для использующего типа, (а сначала-то появились в генерации 2.5 "хорошие" - с затиранием фактического типа)).

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

Это вопрос математики.
Даг Ли явил в malloc имени себя любимого нечто, что спустя 15-20 лет было переосмыслено как потенциальная возможность математической гарантии управления памятью.

К тому моменту, когда математика окончательно сойдется, ява перестанет быть java-ой, так как потребность иметь поддержку управления памятью, отличную от предоставляемой операционной системой просто отпадет.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497145
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилmaytonСитуации когда тебе кровь-из-носа нужно освободить ресурсы достаточно редки
разве это не типовая ситуация?
Это не типовая ситуацию для языков с GC. Другими словами - вы хотите чтобы объект, который
покинул scope - немедленно (физически) был удален из eden/surv/oldgen. И вы его факт удаления
тут-же зафиксировали в memree(..).
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497148
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЭто не типовая ситуацию для языков с GC. Другими словами - вы хотите чтобы объект, который
покинул scope - немедленно (физически) был удален из eden/surv/oldgen. И вы его факт удаления
тут-же зафиксировали в memree(..).Это неправильная посылка. Финализатор позволяет сделать "изощрённое освобождение памяти", но заменой деструктора он всё равно не станет.
Деструктор требуется тогда, когда необходимо явно управлять временем жизни любых ресурсов, кроме памяти JVM.
Тривиальный пример - сокеты IP-стека.
Там, где "плюсовики" один раз напишут деструктор и дальше будут управлять временем жизни объекта "расставляя фигурные скобочки", "кофеманам" придётся явно прописывать try/finally.
С моей кочки зрения это не минус и не плюс: try/catch всё равно необходимы, а необходимость прописывать finally устраняет синтаксический сахар try-with-resource.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497164
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ другое имел в виду. Если рассматривать MM как структуру данных то и "чистку" неиспользуемых
объектов в памяти лучше делать не "штучно" а массово.
Точно так же можно массово освобождать память в С++. Пропиши свой delete, где запоминай указатели на освобождаемую память, а затем массово их удали в нужный тебе момент. Уже писал: деструктор - это логика уровня приложения. Способ управления памятью тут ни при чем.
maytonИ костыль номер два - это try-with-resources о котором я говорил. Его легко нагуглить. Там будет и перегруженный
метод ::close(). Это и есть как-бе деструктор.
Почитал про try-with-resources, это тоже самое что using() в C#.
maytonНасколько это костыльно по 10 балльной шкале? Я не знаю. Я думаю что не очень.
Не особо костыльно. Чуть больше кода.
maytonТ.к. сам юзкейс очень специфичен.
Ситуации когда тебе кровь-из-носа нужно освободить ресурсы достаточно редки. Их можно посчитать по пальцам.
От задач зависит. Мне часто надо. А может я просто привык что есть дестуктор, поэтому с ним мне удобнее.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497172
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TТочно так же можно массово освобождать память в С++. Пропиши свой delete, где запоминай указатели на освобождаемую память, а затем массово их удали в нужный тебе момент. Уже писал: деструктор - это логика уровня приложения. Способ управления памятью тут ни при чем.
Убедил. Согласен что деструктор - это логика управления приложением.

А свой delete прописывать не хочу. Ну... по крайней мере это не будет кастомизацией
приложения. Как платформа или язык - да. Как приложение - нет.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497337
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonМне кажется в спорах о m.management можно выделить две крайности. Два антогонизма.

1. Мемори leaks вызванные ошибкай разработчика при обработке исключения или просто ошибкой.
2. Накладные расходы на управляемую кучу в виде стоп-вселенная и потребления мегафлопов.

Оба тезиса имеют место. Но многие ораторы не ищут компромисса между 1 и 2 а просто доказывают
Правильность линии свой партии.
Не вижу смысла рассматривать какую либо [не]оптимальность ГЦ при потреблении Явой памяти в обычном случае в >3.5 раза больше.

ИзопропилAnatoly MoskovskyА время жизни захваченных переменных продлевается естественно.
но эта "локальная" переменная - уже не может жить на стеке.

ничего я не путаю. лексическая область видимости - локальная, время жизни - может превышать время жизни активации. хорошая такая "локальная переменная."
Лямбда в c# превращается в целый независимый класс и живет в хипе.

ShSergeЧё-то здесь про QNX говорили. Он дорого стоит - поэтому "распил" называется.
А про количество строк - ху кновс. В Ассемблере всё с новой строки.
VxWorks стоила (сравнивал давно) столько же. Конкурируй.
Хотя есть и подешевле варианты RT-систем, RTOS-32 например.

Но Майтон верно написал - не всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497410
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglЛямбда в c# превращается в целый независимый класс и живет в хипе.

Хм... я-бы перепроверил этот факт. Есть мысль что все-таки не в класс а в статический метод.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497415
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

trust me, i'm an engineer =)

на хабре пробегала статья с кодом из il-dasm
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497422
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(разводя руками)

Зачем нам Хабр? Давайте щас соберем код. И дизассемблернём.

P.S. В статьи на Хабре я охотно верю. Но эволюция версий ПО мать ее так...
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497447
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonХм... я-бы перепроверил этот факт. Есть мысль что все-таки не в класс а в статический метод.
Лямбда не может быть в общем случае просто функцией. У ее экземпляров обычно есть состояние.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497448
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskymaytonХм... я-бы перепроверил этот факт. Есть мысль что все-таки не в класс а в статический метод.
Лямбда не может быть в общем случае просто функцией. У ее экземпляров обычно есть состояние.предлагаю не травмировать обитателя упрощенного форума
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497457
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
оффтопик
авторне всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С.
Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497494
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskymaytonХм... я-бы перепроверил этот факт. Есть мысль что все-таки не в класс а в статический метод.
Лямбда не может быть в общем случае просто функцией. У ее экземпляров обычно есть состояние.
Приведите пример
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497502
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxоффтопик
авторне всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С.
Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С?
Например: Ада, Модула . Стоит ещё учитывать для чего используется система - степень требуемой надёжности. "С" это ширпотреб, его никто в здравом уме не рассматривает как основу систем реального времени с гарантиями качества.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497539
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)azsxоффтопик
пропущено...

Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С?
Например: Ада, Модула . Стоит ещё учитывать для чего используется система - степень требуемой надёжности. "С" это ширпотреб, его никто в здравом уме не рассматривает как основу систем реального времени с гарантиями качества.

Не затруднит развить вашу глубокую мысль ?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497546
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
schiНе затруднит развить вашу глубокую мысль ?
а что в ней непонятного?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497551
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxоффтопик
авторне всем нужен RT, добавлю еще, что там где он действительно нужен, часто не нужен С.
Скажите, пожалуйста, а на чём же пишут системы реального времени, если не на С?
Алгоритмы заказчика на
https://en.wikipedia.org/wiki/IEC_61131
К языкам относится часть 3

Но вот сама ОС контроллеров, скорее всего на С. По крайней мере, внешние интерфейсы для расширения низкоуровневой функциональности я видел только Сишные.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497560
azsx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, я не силён в нерусском и мой вопрос скорее для повышения общего уровня образованности. Я нашёл по вашей ссылке такую цитату:
авторIEC 61131-3 currently defines five programming languages for programmable control systems: function block diagram (FBD), ladder diagram (LD), structured text (ST; similar to the Pascal programming language), instruction list (IL; similar to assembly language), and sequential function chart (SFC).[12] These techniques emphasize logical organization of operations.[11]
Из неё я делаю вывод, что при программировании программируемого логического контролёра (plc) в том числе используют язык, похожий на паскаль.
В то же время мне всегда казалось, что операционные системы реального времени (real time os) -- это windows nt, qnx и прочие.То есть это полноценные ос, просто умеют прерывания делать жёсткие в определённые моменты времени.
То есть Ваша ссылка не подходит, она не для этого.
Я совсем не прав? В чём мои ошибки?
зы
Меня просто также удивило, что критичные к времени приложения пишут не на С, я ответа не знаю, хочу спросить.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497563
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне показалось что камент Руслана скорее философский.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497601
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsx,

Есть две большие области применения RT - embedded и PLC

В первой применяются ОС более-менее общего назначения, как ты написал. На самом деле там может быть и не RT-ос, а простенькая прошивка (например как в ардуино) или даже клон DOS или простого (не РТ) Линуха. Но обычно поддержка RT есть.

Во второй - только hard-RT, свои закрытые ОС, и тот стандарт, что я указал.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497607
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
azsxМеня просто также удивило, что критичные к времени приложения пишут не на С, я ответа не знаю, хочу спросить.
критичные к времени и надёжности приложения пишут не на С

всякие контроллёры на ардуино это ширпотреб, от которых ничего критичного не зависит
более того там все гарантии нулевые

представили, например, как боинг запустить с такими гарантиями?
...
Рейтинг: 0 / 0
25 сообщений из 474, страница 14 из 19
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]