powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
25 сообщений из 474, страница 13 из 19
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496443
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonВообще у меня сложилось стойкое впечатление что
в форуме мало людей которые по существу могут пояснить,
а зачем им собственно вообще нужен реал-тайм. Обычно в 99%
бизнес задач такой вопрос вообще не стоит.Так уж устроена жизнь, что большинство подсистем либо одновременно детерминированы и по времени, и по памяти, либо одновременно недетерминированы. Скажем, очень нечасто увидишь софтинку, которая за предопределённое время на одном и том же объёме данных отожрёт непредсказуемо большой объём памяти, но при этом работает стабильно :) Поэтому "покупая" ради отсутствия деградации по памяти детерминизм по этой самой памяти, детерминизм по времени получаешь в подарок. Скажем, по временным характеристикам нас вполне устраивает и обычный линуксовый аллокатор, но нас не устраивает его фрагментация памяти на больших аптаймах, поэтому мы используем свой карманный TLSF. Если при этом у нас и время стабильнее, это "приятный необязательный пустячок", не более.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496448
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonDima Tпропущено...

Пользы от него ноль. Какие претензии могут быть к бесполезному?
Ты можешь на C# написать пример как-бы ты хотел использовать
финалайзер по "полезному" ?
Как полноценный деструктор. Например закрыть открытые ресурсы ОС (файлы, мутексы и т.д.).
Деструктор С++ полезен потому что однозначно определен момент его запуска, а финализер гарантирует только "когда-нибудь точно сработаю" и это делает его бесполезным.

Как уже выше написал 20679521 в C# для эмуляции деструктора изобрели интерфейс IDisposable и оператор using(). Для большинства случаев этого достаточно.

Спорить тут особо не о чем. Финализер вместо деструктора это побочный эффект сборки мусора, т.к. в коде никак не контролируется выход объектов за область видимости, т.е. не отслеживается момент когда объект стал мусором.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496461
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruС другой стороны, если учесть, что у нас своё
--- управление памятью
--- управление сокетами
--- кластерный IPC
--- диспетчеризация доступа к дискам
... и даже, к примеру, поддержка нитей на том железе, где OS их не имеет, а при этом нам надо не "настоящий" реал-тайм, а interactive/near-interactive, то QNX нам вовсе не обязателен.... то вам уже можно просто сделать свою операционку и не заморачиваться с другими.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496471
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbiv_an_ruС другой стороны, если учесть, что у нас своё
--- управление памятью
--- управление сокетами
--- кластерный IPC
--- диспетчеризация доступа к дискам
... и даже, к примеру, поддержка нитей на том железе, где OS их не имеет, а при этом нам надо не "настоящий" реал-тайм, а interactive/near-interactive, то QNX нам вовсе не обязателен.... то вам уже можно просто сделать свою операционку и не заморачиваться с другими.Для операционки надо добавить бутявку, HAL + драйверы, консоль и кучу мелкой пофигени, вроде таблиц маршрутизации или часовых поясов. Лучше уж заморачиваться с одной готовой операционкой, чем с уймой этих мелочей :)
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496473
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Так в c# с областью видимости — напряжёнка — нету её
( разве что оптимизатор может узреть)

Не надо механически привычки с с++ переносить на шарп
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496586
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилТак в c# с областью видимости — напряжёнка — нету её
( разве что оптимизатор может узреть)
Область видимости объекта - это места в коде где может встречаться его имя.

Если областей видимости нет это значит что в шарпе можно снаружи функций обращаться к ее локальным переменным, и много других приколов.
Лучше перефразируйте что вы хотели сказать, а то пока получается какая-то бессмыслица ))
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496647
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytondbpatchпри этом отдельный ржач - в продакшине есть даже методика, когда выключают принудительно очистку old-generation, дескать дешевле просто на выходных приложение рестартовать и заново загрузить кеши из базы данных. вполне себе подход, чо
Вы наверное не в курсе. Вы просто не разрабатывали подобные приложения. Например
ПО обработки equities, options имеет ярко выраженный сутошный лайф-цикл. Биржа
открывается в определённое время суток. А потом закрывается. На момент закрытия
приложение никому не нужно. И его можно ребутнуть. Какую из этого можно получить
пользу? Я думаю - очевидно.

тебе-то из подвала оно конечно виднее. из суточных лайф циклов - про good till cancel/day ты тоже уже в курсе?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496656
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyЕсли областей видимости нет это значит что в шарпе можно снаружи функций обращаться к ее локальным переменным, и много других приколов.
можно.

Через замыкания, например( которые не требуют явной спецификации)
попавши в замыкание, локальная (с лексической точки зрения ) становится глобальной и живёт своей жизнью
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496660
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonПо поводу QNX. Иван решил отмолчаться. Ну ОК.

Из топиков по сабж я могу вспомнить только мой спор
с неким Petrav на тему ПО и самолетов. А также
с Базистом по поводу создания СУБД с нулевым
откликом.

Вообще у меня сложилось стойкое впечатление что
в форуме мало людей которые по существу могут пояснить,
а зачем им собственно вообще нужен реал-тайм. Обычно в 99%
бизнес задач такой вопрос вообще не стоит. Этот аспект
может быть описан так называемых NFR (Non functional
requirements) где-то одим из подпунктов. Там может
быть что flow, заявки на покупку или продажу акций
должен быть отработан не более чем за 300 мс. Но
это будет требование только для нашей системы. Не
для внешних микросервисов. Они могут лагать как им удобно.
Жесткий риалтайм в большинстве случаев это действительно не обязательное требование даже если его явно выдвигают.
Тут больше из отряда обеспечения запаса прочности.

Я в бытность потратил месяца два, чтоб обеспечить гарантированные 30к записей в секунду в default СУБД в продакшине.
Заказчик так захотел.
А на реальных продакшинах у него практически никогда не было больше 2к. В среднем.

А вот в пике - доходило до 20к.

А подобное разгильдяйское отношение к времени отклика оно куммулятивное - тут ты не обеспечил, там не обеспечил, а в результате
хрясь, в определенной ситуации у тебя и до time-out дошло, клиент потерял деньги, и тому подобное.

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

maytonПо поводу UI для систем с MM (managed memory).

Для UI приложений написанных на Java, есть коробочная
рекомендация - включать +UseConcMarkSweepGC.
Навскиду не помню но кажется эта опция включена
во все дефолтные конфигурации пусковых скриптиков
bash для продуктов комании Jetbrains. Этого достаточно
чтобы комфортно работать и не видеть т.н. stop-the-world
о которых так много говорят в топике.

P.S. Я прошу прощения что пишу только по Java. C .Net я давно
не работал и не в курсе как там и чего. Если кто в теме - то
дополните.
Да, продукты Jetbrains выглядят "повеселее" в плане отзывчивости и незалипаемости.
Хотя у них проблемы спонтанных тормозов все равно остаются, хотя как говорят наши джависты - это уже проблема
не самой JVM, а уже непосредственно кода IDE.

Тем не менее, сравнение с Visual Studio или Delphi IDE они до сих пор не выдерживают. Но, как говорят джависты - привыкнуть можно. Угум.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496667
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилЧерез замыкания, например( которые не требуют явной спецификации)
попавши в замыкание, локальная (с лексической точки зрения ) становится глобальной и живёт своей жизнью
Вы путаете область видимости и время жизни.
Замыкание находися внутри функции, поэтому оно может ссылаться на ее переменные.
А время жизни захваченных переменных продлевается естественно.

Ну и не становится в шарпе (и нигде) захваченная переменная глобальной, ее область видимости - замыкание )))
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496704
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyА время жизни захваченных переменных продлевается естественно.
но эта "локальная" переменная - уже не может жить на стеке.

ничего я не путаю. лексическая область видимости - локальная, время жизни - может превышать время жизни активации. хорошая такая "локальная переменная."
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496859
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставлю вопрос о переносе топика в Программирование
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496870
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изопропилно эта "локальная" переменная - уже не может жить на стеке.
Физически она находится в замыкании. А само замыкание может храниться в локальной переменной, т.е. на стеке
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496889
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyИзопропилно эта "локальная" переменная - уже не может жить на стеке.
Физически она находится в замыкании. А само замыкание может храниться в локальной переменной, т.е. на стеке

хранение объектов на стеке - это "фича" C++, мало кто еще так делает. обычно на стеке хранятся лишь ordinals - int, pointer.
в этом ключе реализация замыкания довольно проста - ordinals просто копируются по значению,
а объекты - т.к. все равно в куче, мы копируем лишь указатель-ссылку на них

тут другое интереснее - переменные могут и на стеке не храниться, а прямо в регистрах исполняться, в т.ч. параметры функций.

недавно люди из мира Java получили разрыв шаблона, когда узнали, что первые параметры функции передаются не через стек,
а через регистры, но, как оказалось, в их мире не все так радужно

впрочем, какая разница откуда копировать...

Модератор: Тема перенесена из форума "C++".
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496918
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchТем не менее, сравнение с Visual Studio или Delphi IDE они до сих пор не выдерживают. Но, как говорят джависты - привыкнуть можно. Угум.
Я не думаю что продукт из семейства Delphi IDE можно ставить в сравнение. Он очень нишевый
и опции autocompletition там будут определены только в узком сегменте языков.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496919
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchДа, продукты Jetbrains выглядят "повеселее" в плане отзывчивости и незалипаемости.
Хотя у них проблемы спонтанных тормозов все равно остаются, хотя как говорят наши джависты - это уже проблема
не самой JVM, а уже непосредственно кода IDE.
Да. Спонтанные тормоза могут быть. Но я здесь откомментарю.
Я часто из за плеча замечал как мои коллеги инсталлируют среды разработки.
Красивый и красочные мастер установки предлагает тонну всяких фич типа там
фреймворки и языки. Коллеги не глядя тынцают "выбрать все". А потом гневно
отшвыривают от себя клавиатуру и бубнят дескыть чего это "оно" затупило?

Вобщем-то каждый случай надо разбирать отдельно. Может быть даже и активность
антивируса создала траблы.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496921
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_ruОдин ньюанс. Статистику по нашим процессам top запросто показывает с суффиксом не "m", и не "g", а "t". Ни один GC не будет вести себя прилично, если в колонках VIRT и RES маячат суффиксы "t"
Я понял. Спасибо Иван.

Я думаю что как раз тот самый компромисс о котором я говорил - это MM + неуправляемая куча.
И экспертный вопрос - какому приложению и в какой пропорции сколько отдать.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496923
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TAnatoly MoskovskyА в джаве еще к тому же и отсутсвие деструкторов (по выходу из области видимости).
В C# та же проблема, там порешали интерфейсом IDisposable и оператором using()
КМК в Java есть шаблон try-finally или try-with-resources который создан
для отбивания подобных ситуаций. Я имею в виду немедленное освобождение
native ресурсов ОС таких как файлы, сокеты, мьютексы используя кастомный
API.

Но опять-же ... если вы играете в парадигме языка то вам нет острой необходимости
это использовать. Стандартные либы покрывают 99.9% кейсов. Что у вас там?

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

Но сходу спрошу. Если этот продукт такой замечательный и при этом поддерживает интерфейс
аллокатора то почему его не сделали дефолтным для Linux/FreeBSD?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496927
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tmaytonпропущено...

Ты можешь на C# написать пример как-бы ты хотел использовать
финалайзер по "полезному" ?
Как полноценный деструктор. Например закрыть открытые ресурсы ОС (файлы, мутексы и т.д.).
Деструктор С++ полезен потому что однозначно определен момент его запуска, а финализер гарантирует только "когда-нибудь точно сработаю" и это делает его бесполезным.

Как уже выше написал 20679521 в C# для эмуляции деструктора изобрели интерфейс IDisposable и оператор using(). Для большинства случаев этого достаточно.

Спорить тут особо не о чем. Финализер вместо деструктора это побочный эффект сборки мусора, т.к. в коде никак не контролируется выход объектов за область видимости, т.е. не отслеживается момент когда объект стал мусором.
Дима. Еще добавлю. КМК именно буферизация (или отложенная деаллокация) дает преимущества.
Это как в БД и файловых системах. Если ты делаешь батчинг с умным предвариельным анализм
батча - то можешь здорово сэкономить на всем объеме операций.

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

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

Ну ты как? ОК? Не ОК?
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496928
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchAnatoly Moskovskyпропущено...

Физически она находится в замыкании. А само замыкание может храниться в локальной переменной, т.е. на стеке

хранение объектов на стеке - это "фича" C++, мало кто еще так делает. обычно на стеке хранятся лишь ordinals - int, pointer.
в этом ключе реализация замыкания довольно проста - ordinals просто копируются по значению,
а объекты - т.к. все равно в куче, мы копируем лишь указатель-ссылку на них
Я прошу прощения. Я уже достаточно зафлудил топик. Но кину еще 5 копеек.

Один чел мне рассказывал про Rust.

В Rust используется интересная модель уборки мусора основанная на анализе
переменых на стеке и на формальном доказательстве в фазе компиляции того
что наши ссылки не задействованы и в последующей деаллокацией.

Я пока за этот факт ничего не знаю т.к. с растом не знаком и ожидаю что кто-то
подтвердит или даст пруфы или краткую резюмирующую инфу.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496930
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чё-то здесь про QNX говорили. Он дорого стоит - поэтому "распил" называется.
А про количество строк - ху кновс. В Ассемблере всё с новой строки.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496935
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonЯ еще не читал про этот TLSF. На все не хватает времени. Но скачал в ебук. Надеюсь что если
не в рамках этого топика то в других мы дойдем до обсуждения.

Но сходу спрошу. Если этот продукт такой замечательный и при этом поддерживает интерфейс
аллокатора то почему его не сделали дефолтным для Linux/FreeBSD?TLSF в среднем медленнее Дугласа Ли раза в два. Да, в очень редком плохом случае Дуглас Ли протормозит в _сто_ раз дольше TLSF, но это не каждый день случается.
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39496993
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iv_an_rumaytonЯ еще не читал про этот TLSF. На все не хватает времени. Но скачал в ебук. Надеюсь что если
не в рамках этого топика то в других мы дойдем до обсуждения.

Но сходу спрошу. Если этот продукт такой замечательный и при этом поддерживает интерфейс
аллокатора то почему его не сделали дефолтным для Linux/FreeBSD?TLSF в среднем медленнее Дугласа Ли раза в два. Да, в очень редком плохом случае Дуглас Ли протормозит в _сто_ раз дольше TLSF, но это не каждый день случается.
Получил разрыв шаблона. Douglas «Doug» S. Lea это известная личность среди создателей
Пакета java.concurrency. Но вы очевидно имели в виду другое...
...
Рейтинг: 0 / 0
На чём лучше писать код при одинаковом количестве строк: на C или на C++?
    #39497040
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А все ОК. Разобрался. А то по ссылкам уже каких-то баскетболистов нагуглил.
...
Рейтинг: 0 / 0
25 сообщений из 474, страница 13 из 19
Форумы / Программирование [игнор отключен] [закрыт для гостей] / На чём лучше писать код при одинаковом количестве строк: на C или на C++?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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