Мемчики wasm.in

Тема в разделе "WASM.HEAP", создана пользователем Rel, 24 июн 2020.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    То то я смотрю, что существовали/существуют Windows Server, Windows CE, Windows Mobile и Windows Phone. Так что там у тебя за операционные системы? Будет канеш немного забавно, если окажется, что это - системы на базе Linux/Unix.
    --- Сообщение объединено, 23 мар 2021 ---
    Лол! Есть даже: https://ru.wikipedia.org/wiki/Windows_Embedded
     
  2. f13nd

    f13nd Well-Known Member

    Публикаций:
    0
    Регистрация:
    22 июн 2009
    Сообщения:
    1.995
    https://www.renesas.com/us/en/software-tool/hi70004-real-time-os-superh-family
    Забавно не получилось.
     
  3. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    999
    Rel, реалтайм все не на линуксе, в каких-то моментах похожи, но это не линуксы.
     
  4. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Raii всяко удобнее, чем goto cleanup. Хотя в Си собираются добавить что-то вроде defer в языке go.
     
  5. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Microedition,
    Так не делай goto cleanup. Код можно переструктурировать так, что все ветки сами собой в cleanup придут, без всяких вынужденных прыжков.
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    В GCC есть attribute cleanup, но это расширение и стандартом не является. Но да defer давно пора было бы добавить, но это же сишечка, она для спецов сделана, а спецы любят мучать себя без повода.
     
  7. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Когда оставляют от плюсов "си-с-классами" и отказываются от всего того говна, где шаблон на шаблоне и шаблоном погоняет с перегрузкой всего, что только позволяет синтаксис.

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

    Ну, писать функции в которых всего один return и ни одного goto - это привычное дело и никаких проблем не доставляет. И когда этому научишься, никакой defer и нахой не нужон будет :) Мучением это является лишь для любителей петонов и растов.
     
  8. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Мочь-то можно, только код ещё менее читабельным станет.
     
  9. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Для спецовых цэшников это нормально, написал код один раз и не смотришь на него никогда больше. Ну ты же знаешь этих наших спецов - они же идеальные, всегда с первого раза все четко пишут, без всяких там андефайн бихейвиор, буффер оверфлоу и юз афтер фри и тд. Один раз написал и все, читать и вспоминать, что ты там наговнокодил не нужно. Тем более, когда твой код используешь только ты сам, никто тебе никаких багов не зарепортит, если что.
     
  11. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Ну вот буквально первый попавшийся пример: https://github.com/torvalds/linux/b.../testing/selftests/cgroup/test_freezer.c#L193

    Как бы вы переписали его 1) без дублирования кода, 2) без повышения цикломатической сложности?
     
  12. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    rmn, а что с исключениями? RAII тем хорош что деструкторы вызываются автоматом, даже если произошло исключение. Я вообще не понимаю смысл дискуссии - не нравится C++ (или любой другой ЯП) или какие-то его фичи - не используй. Благо на C++ можно писать в С стиле и использовать от ООП минимум. Зачем отказываться от фич если они могут пригодиться?

    Rel, не понимаю почему ты так хейтишь сишников. С очень удобен в использовать при компиляции прошивок МК и т.п. (правда не знаю есть ли плюсы для МК). Говнокодить можно и на С и на плюсах и на других ЯП.
    --- Сообщение объединено, 24 мар 2021 ---
    Microedition, чем плох в данном примере goto? Как раз-таки он и повышает читаемость кода тут.
     
    UbIvItS нравится это.
  13. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
  14. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Код (C):
    1.  
    2. static int test_cgfreezer_simple (const char *root)
    3. {
    4.     int i, ret;
    5.     char* cgroup;
    6.     ret = KSFT_FAIL;
    7.    
    8.     cgroup = cg_name (root, "cg_test_simple");
    9.     if  (cgroup)
    10.     {
    11.         if (cg_create(cgroup))
    12.         {
    13.             for (i = 0; i < 100; i++)
    14.                 cg_run_nowait(cgroup, child_fn, NULL);
    15.              
    16.             if  (!cg_wait_for_proc_count(cgroup, 100) &&
    17.                  !cg_check_frozen(cgroup, false) &&
    18.                  !cg_freeze_wait(cgroup, true) &&
    19.                  !cg_freeze_wait(cgroup, false))
    20.             {
    21.                  ret = KSFT_PASS;
    22.             }
    23.         }
    24.  
    25.         cg_destroy (cgroup);
    26.         free (cgroup);
    27.     }
    28.  
    29.     return ret;
    30. }
    31.  
     
  15. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    Да я сам так частенько делаю. К примеру есть куча COM объектов (или интерфейсов одного объекта, неважно) и в конце их нужно освободить. Или вот к примеру (вб, но код в стиле С).
    --- Сообщение объединено, 24 мар 2021 ---
    Ну это совсем идеальный мир. Исключения могут генерироваться не только тем кодом что ты пишешь.
    --- Сообщение объединено, 24 мар 2021 ---
    Не, я отвечал по поводу замены goto как предлагает rmn, а не про defer.
     
  16. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Скажи это вот этому уникому: https://github.com/moon-chilled/Defer/blob/master/defer.h :rofl:
    И есть attribute cleanup в GCC/MinGW - не так удобно, как RAII, но все же.
     
  17. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Как это в чем? Чтобы определить раз и навсегда, на чем должен писать весь мир :)
    А плюсы я и не использую. Это рел думает, что я не осилил, хотя я намеренно отказался от него в пользу сишечки лет 10 назад, когда увидел, во что его начинают превращать, чтобы угодить подрастающему поколению баранов, не умеющих даже джве строки объединить без переполнения буфера или утечек памяти. В этом мы с ним отличаемся: я знаю оба и могу писать и на том и на другом, а он просто менеджер :)
     
  18. Thetrik

    Thetrik UA6527P

    Публикаций:
    0
    Регистрация:
    25 июл 2011
    Сообщения:
    875
    И что это корректно работает при исключениях?

    Нет. Как пример могу тебе привести рантайм VB в котором обрамлены такие места через setjmp/longjmp. Если ты свой код пишешь для себя, и не используешь никакие 3rd-party библиотеки то можешь не включать обработку исключений.

    https://www.cyberforum.ru/post10058627.html вот наглядный пример я уже привел.
     
  19. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Ну ты имеешь ввиду системное исключение, понятно, что тулзы от мелкомягких умеют их отлавливать (__try и __except в мелкомягких плюсах и обычные исключения в дотнете). Но стандарт ничего про них не знает, например в MinGW в плюсах ты можешь поймать только родное для текущей версии компилятора исключение (для x86 это может быть SjLj или DWARF), и это тупо, я согласен. Особенно когда у тебя две плюсовые либы, которые выбрасывают разные исключения (это канеш редкая утрированная ситуация, но она может быть). Но некоторые языки вполне могут их отлавливать и преобразовывать в свои. Если я ничего не путаю, в Nim исключения построены на SjLj, но при этом еще и отлавливают сигналы юниксовые (про SEH/VEH не могу ничего сказать, не пробовал).

    Происходит статический анализ кода (включая control flow analysis), анализатор просматривает все возможные места, где происходит чтение/запись элемента массива, анализирует индексы в этих местах, если индексы во все время работы функции попадают в интервал от 0 до array.Length - 1, то все нормально, проверку на обращение за границы массива можно опустить. В частности есть цикл, где i меняется от 0 до array.Length, при этом внутри цикла никто произвольным образом не меняет i, то очевидно, что дополнительная проверка здесь не нужна.
     
  20. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    Microedition,
    Не слушай его. А то будешь так же лишний раз кликать по ссылкам, что читать мои посты и молча все проглатывать, не имея возможности язвительно контратаковать, не разрушив легенду :)
    --- Сообщение объединено, 24 мар 2021 ---
    Но они могут. А то, что называется "безопасным" программированием, на самом деле слепая вера в то, что компиль за всем уследит и ничего не допустит. Но эти компили не так идеальны, как в рекламных постах в соцсетях написано, и баглист говнооси на расте не менее жирный, чем у линукса.