Go-to

Тема в разделе "Флудилка", создана пользователем Рокки1945, 25 авг 2020.

  1. Airbus

    Airbus Радиохулиган Модератор

  2. Рокки1945

    Рокки1945 Гуру

    если во всё углубляться жизни не хватит - знания быстро устаревают, тем более при современном её ритме
     
  3. issaom

    issaom Гуру

    Лично для меня как наверное для многих людей которые сидят на этои форуме программирование это хобби - а к своему коду у меня есть 3 условия
    1. Код должен быть рабочим и решать МОЮ задачу
    2. Код должен быть написан таким образом, чтобы Я понимал как он работает
    3. Код должен быть написан таким образом, чтобы открыв исходник через пару лет Я сам смог вспомнить как он работает
    какие операторы для этого использовать, (и все прочие правила например как обзывать переменные, писать одну большую длинную портянку или активно использовать процедуры и функции, delay, и.т.д. и и.т.п это уже вопрос вкуса)
    p.s: понятно что для работе над проектом в команде такой подход не приемлем - так как все участники быстро перестанут понимать друг друга.
     
    Последнее редактирование: 26 авг 2020
    Airbus, SergeiL, ИгорьК и ещё 1-му нравится это.
  4. Рокки1945

    Рокки1945 Гуру

    Самое главное это фундаментальные знания (физика и т.д) - а прикладные можно освоить,, при желании.
     
  5. SergeiL

    SergeiL Оракул Модератор

    В моем случае, оказалось, что Си и Unix - это тоже фундаментальные знания. Не устарели за более чем 30 лет.
    При том, что 20 лет это никак не связано с работой.
     
  6. Asper Daffy

    Asper Daffy Иксперд

    Чёт не зашло, букв много, а аргументация ... статья Кнута полувековой давности и та сильнее.

    ===========================

    Мужики, заметьте, даже сам основатель, пророк и апостол секты гоутуфобов Н. Вирт, вынужден был оставить goto в своём языке "Паскаль". Ни на какие мысли не навевает?

    Зато разработчики языка INTERCAL оказались "святее пророка" и не стали включать goto в свой язык, полагая его четырёхбуквенной мерзостью. Зато в языке есть оператор come from ("получить управление из").

    «Как обаятельно для тех, кто понимает», правда?
     
  7. ИгорьК

    ИгорьК Гуру

    Есть/умеем - пользуемся
    Нет/не умеем - не пользуемся,

    Остальное - религия.

    Лучшие аргументы в любую сторону:
    - Бог есть (гото хорошо/ гото плохо), потому что я в него верю!
    - Потому что! ("О чем говорят мужчины")
     
  8. Asper Daffy

    Asper Daffy Иксперд

    Но их-то в статье и не было!

    Или в упоминавшейся статье Кнута: "И чего они прицепились к этому goto? Потому, что слово из четырёх букв?" (для тех, кто не в курсе - английское выражение "слово из четырёх букв" эквивалентно нашему "слово из трёх букв")

    А в статье всё скучно и пресно :-(
     
    ИгорьК нравится это.
  9. Airbus

    Airbus Радиохулиган Модератор

    Ну я ссылку дал не для развлечения а чтоб показать что не так страшен goto как им пугают. Я не пользуюсь-потому что напугали на старте хотя и не вижу ничего плохого. Привык без него и еду по накатанной. Есть же jmp в асме? Чем не goto? А тема и правда интересная
     
  10. b707

    b707 Гуру

    про "плохое" написал SergeiL в самом первом ответе. GoTo нарушает правильную структуру кода (для тех, кому эта "структура" важна)
    По моему мнению главная опасность goto для новичков - обманчивая легкость применения. Вместо того чтоб продумывать правильное взаимодействие кучи вложенных циклов, куда как проще натыкать переходы по goto, превратив код в "винигрет", в котором даже сам автор через месяц не сможет разобраться.
    Это обьяснение того, почему я в целом отношусь к гото негативно. Хотя вполне допускаю, что в умелых руках goto программу не портит.

    В некотором смысле в поддержку своей точки зрения могу сказать, что я крайне редко вижу goto в исходниках программистов среднего и выше-среднего уровня, видимо у профессионалов есть свои причины его не использовать.
     
    Andrey12 нравится это.
  11. ИгорьК

    ИгорьК Гуру

    Я вот тоже думаю, с какой стороны разбивать яйца лучше - с тупой или с острой.
    Не берусь утверждать, но кажется видел более важную проблему, нежели красота чужого кода (ох уж эта забота о правильности других): в древнееврейские времена компиляторы Си не всегда хорошо работали с памятью там, где было много гото. Отсюда и пошла нелюбовь профи с оператору. Потом все наладилось, а мифы и верования - они по наследству.
    Но вот ссылку не дам и сильно не настаиваю.
     
    parovoZZ нравится это.
  12. b707

    b707 Гуру

    красота любого кода (своего или чужого) почти всегда означает его большую понятность - а значит и легкость отладки, поддержки и модифицирования.

    и почему я так люблю проекты с исходниками и люто ненавижу бинарные прошивки :) ? - потому что люблю покопаться в чужом коде и при случае утащить что-то в свои проекты
     
    Andrey12 нравится это.
  13. ИгорьК

    ИгорьК Гуру

    Кто ж спорит: хорошо всегда лучше чем плохо :)
     
  14. parovoZZ

    parovoZZ Гуру

    я тоже goto не пользуюсь. Но сказать почему и плести притянутую за уши чушь типа этой
    не буду.
     
  15. Asper Daffy

    Asper Daffy Иксперд

    Да, чего в ней такого интересного? Эпичные гото-срачи отшумели ещё в 70-ые - 80-ые. С тех пор я как-то ничего нового не видел - ни новых аргументов, ни красивых поворотов мысли.
     
  16. Asper Daffy

    Asper Daffy Иксперд

    И не надо! Весьма обяжешь :)
     
    SergeiL нравится это.
  17. Igor68

    Igor68 Гуру

    Но бывает что без него никак.
    к примеру в swith-case:
    Код (C++):
    ....
    switch (parN) {
       case 1:
           .....
           goto m1;
    m0:  .....
           break;
       case 2:
    m1:  .....
            goto m0;
            break;
       default:
            .....
            break;
    }
    Позволило мне отказаться от вызова ряда функций (экомил стек) да и код короче стал (это для флеш)... да и быстрее в ряде мест... особенно если не желаешь терять контекст (состояние регистров)
     
  18. b707

    b707 Гуру

    а можно увидеть этот кусок в реальном коде?
    Учитывая, что case можно выполнять насквозь, если убрать break - вот так, например, не тоже самое выйдет?
    Код (C++):
    switch (parN) {
       case 1:
           .....   // код перед goto m1
    case 2:
            .....     // код m1
            .....     // код m0
            break;
       default:
            .....
            break;
    }
     
    parovoZZ нравится это.
  19. parovoZZ

    parovoZZ Гуру

    В этом примере достаточно вычеркнуть break и выполнение кода из одного case x перетечёт в следующий case y.

    ыыыы
    сова опередила
     
    b707 нравится это.
  20. a1000

    a1000 Гуру

    Воот вспомнили. В асме без этого никуда. Перефразируя декабристов хочется сказать
    "Страшно далеки мы от народа железа"
     
    Airbus нравится это.