почему переходы на метки это плохо?

Тема в разделе "LANGS.C", создана пользователем VaVa, 6 фев 2019.

  1. VaVa

    VaVa Member

    Публикаций:
    0
    Регистрация:
    21 авг 2018
    Сообщения:
    34
    Неоднократно слышал что goto - это плохой стиль программирования (да ещё это иногда про switch говорят). Не скажите почему, ведь на asme переход на метку обычное дело и в порядке вещей.
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    если использовать его правильно, то ничего... проблема с гото пошла из-за того, что сишные адепты юзали его, где попало, что приводило к большим проблемам с читаемостью и пониманием написанного гавно-кода... еще в бородатые времена у плюсовых компиляторов был баг, когда в некоторых случаях из-за гото не срабатывали деструкторы, тк компилятор был туповат... то есть гото ломало раии концепты...
    --- Сообщение объединено, 6 фев 2019 ---
    вообще, если интересен этот вопрос, советую ознакомится с первоисточником - статьей Дейкстры из 70ых "гото консидеред хармфул" или что-то такое...
    --- Сообщение объединено, 6 фев 2019 ---
    во, вроде нашел... спасибо гуглу... 68 год, ппц...
     

    Вложения:

    • Dijkstra68.pdf
      Размер файла:
      609,2 КБ
      Просмотров:
      431
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    VaVa,

    Потому что затрудняет читаемость кода. Так например обычное условие в тексте наглядно, визуально можно его видеть. А ветвление не наглядно, в таком случае нужно тратить лишние усилия - помнить все метки. При их даже не большом количестве это становится проблемой. А есчо фишка в том, что видя условные конструкции/циклы и прочее наглядное не нужно в уме держать граф, понимать связь между ветвлениями. Так как это отображено визуально. А десяток goto требует понятие алгоритма.
     
    Последнее редактирование модератором: 9 фев 2019
  4. UbIvItS

    UbIvItS Well-Known Member

    Публикаций:
    0
    Регистрация:
    5 янв 2007
    Сообщения:
    6.243
    а в итоге "элегантные коды" (типо читабельные) довели программирование до ручки :)
     
  5. VaVa

    VaVa Member

    Публикаций:
    0
    Регистрация:
    21 авг 2018
    Сообщения:
    34
    как-то весомых аргументов против goto нет... а asm рулит (хоть его скоро и не станет вообще особенно под win)
     
  6. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.792
    VaVa, :rofl:

    00.jpg
     
  7. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    Инде кипятком тут все обоссыт, когда эту фразу увидит...
     
  8. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Да да, скоро ядро перепишут на дотнете , а загрузчик будет на петоне.
     
  9. VaVa

    VaVa Member

    Публикаций:
    0
    Регистрация:
    21 авг 2018
    Сообщения:
    34
    прикольный ник! Но M$ давно уже на С# переходит и избавляется постепенно от натив кода. В новой Visual Studio приложения для маркета пишутся только под .Net так что скоро и С++ не станет
    --- Сообщение объединено, 7 фев 2019 ---
    не питон M$ не любит - скорее всего будет на бейсеке
    --- Сообщение объединено, 7 фев 2019 ---
    хватит ржать скоро будем плакать ...
     
  10. Minzdrav

    Minzdrav Well-Known Member

    Публикаций:
    0
    Регистрация:
    21 мар 2017
    Сообщения:
    1.082
    А на чём будут писать кампеляторы если не будет асемблера?
    На машинном коде?
     
  11. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    подавляющее количество компиляторов написано на языке самих компиляторов, так называемые селф-хостед компиляторы... для сборки новой версии просто нужно не потерять предыдущую версию... так компиль C# написан на C# (рослин имеется ввиду), GCC и Clang написаны на плюсах, компиль Rust написан на Rust, компиль Nim на Nim и тд и тп...
    --- Сообщение объединено, 7 фев 2019 ---
    не мелкомягкими едиными живы... есть линукс и мак, где языки для разработки по-умолчанию нативные...
     
  12. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.576
    Это им не поможет. Все равно малварь будет.
     
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    M0rg0t,

    Верно. Это лишь упрощает атаку и делает анстаб софт. Это никогда не будет использовано в км. Эти яп не для этого, сам выхлоп такого компилера не пригоден для режима, где нужен контроль на уровне железа. Ключевой фундамент ядра пилится на асм, туда не допускают тех, у кого разум промыт скриптами.
     
  14. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
     
  15. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Rel,

    У вас там на видосе человек что то чирикает в микрофон, я это не понимаю. Переведи, раз ссылку привёл на это.
     
  16. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    они рассказывают, как они писали дров сетевой карты под линукс на разных высокоуровневых языках...
     
  17. VaVa

    VaVa Member

    Публикаций:
    0
    Регистрация:
    21 авг 2018
    Сообщения:
    34
    DDK переименовали в WDK - всё для C# ...
     
  18. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    пока мелкомягкие не запилят нормальный нативный компиль для C# (а попытки уже были, смотри .net native и corert), ни о каких драйверах на С# речи быть не может... возможно на определенном этапе фреймворк будет интегрирован в ядро, но нужно понимать, что как минимум текущий сборщик мусора - не про ядро совсем... есть проекты типа cosmos и mosa, но особых успехов от них мир так и не увидел, хотя идеи может быть там и неплохие зашиты...