На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
Страницы: (7) 1 2 [3] 4 5 ... Последняя » все  ( Перейти к последнему сообщению )  
> Нелюбовь к goto
    к слову в /usr/src/kernel-source2.4.18/kernel/fork.c :

    repeat:
               for_each_task(p) {
                     if(....) {
                           if(...) {
                                 .......
                           }
                           goto repeat;
                     }
                     ....
               }
               ....
         }
      2 tserega:
      Если ты имел в виду не инлайн, то, плюс ко всему, этот код будет работать еще и медленнее.

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

      Действительно, запутать программу goto переходами проще чем без них, поэтому в универах и учат обходиться без гоуто пока это возможно. Продвинутые преподы так учат. Менее продвинутые челы просто запрещают его использовать.

      Да, и подумай на досуге, почему Кэрниган и Ритчи оставили в goto в "C".

      2 Grand:
      Цитата
      Изначально в лексике языков программирования использовались операторы типа if, for, goto.. Цикл можно было реализовать только параметрический с определенным шагом. Для организации циклов с "предусловием" и "постусловием" приходилось использовать структуры if .... goto.  В последствии с развитием языков появилияь и с операторы циклов типа while и do и необходимость в "старом" методе организации циклов отпала сама по себе

      Вообще то, избежать слишком частого использования goto можно используя только break и continue, конструкции while и do...while вообще избыточны, счастье наступило вовсе не из-за них.
        О вкусах не спорят.
        Когда пишется программа "на день", то тут не до красоты. А если серьезный проект, то желательно, чтобы его можно было понять не только самому через какое-то время, но и чтобы поняли другие. Программист на qbasik-е с трудом поймет процедурную программу.
          используя гото можно прогу так послать :) о-го-го. А конструкции за скобки никогда не вылазят вот в чем прелесть
            2 tserega: Дело не во вкусах, просто есть разница между "Стараться не использовать" и "Никогда не использовать". Действовать нужно исходя из контекста, так ведь?
              Код linux kernel полон goto (желающие могут проверить grep'ом)
              Про goto в линуксе:

              http://lxr.linux.no/source/Documentation/CodingStyle#L184
                Я за GOTO

                С ним действительно бывает проще. И алгоритм выглядит понятней.
                  некрофилы, блин... :D
                    :)
                    Прикреплённая картинка
                    Прикреплённая картинка
                        Не помню, когда в последний раз использовал гото........
                        Желание отбил один препод (который был ещё и моим начальником, когда я подрабатывал на кафедре). Он, если увидит хоть один гото, сразу начинает жутко глумиться.... Мне было ооочень неприятно. С тех пор не использую. И считаю, что можно и без него обойтись.
                        Кстати, все, кого я знаю, считают (вот уж не знаю, почему), что люди, использующие гото - не программисты вовсе.
                        Сообщение отредактировано: Хакас -
                          Хакас

                          А ты почитай веточку по ссылке, которую я привел.
                          Как раз тот не программист, кто не испорльзует инструмент (в данном случае язык программирования) во всей его широте только потому, что "кто-то сказал, что это плохо".
                            Предлагаю написать письмо в международный комитет по защите программистов, чтобы запретить Goto и подобных ему ;)
                            На мой взгляд, личное дело каждого использовать или не использовать.
                            Для одних это "табу", для других это обычный оператор. Может просто кто-то не понимает, как его можно применить, ну не нужен он ему и черт с ним, зачем морочить себе голову. Складывается такое впечатление, что люди которые не используют Goto испытывают комплекс неполноценности и оправдываются перед другими, что, мол и без Goto неплохо живется, а может наоборот. Все по разному учились, кого-то учили, кому-то запретили, но ведь у каждого есть своя голова и каждый сам решит, как ему лучше, независимо от своих учений.
                            А если код нечитабельный, то не лезь в него, предоставь это тем, кто разберет любой код, не можешь использовать Goto, не используй.
                            Не думаю, что те дядьки, которые создали нынешние языки программирования, просто добавили Goto для красоты.
                            Написал две одинаковых программы с использованием и без Goto, скомпилил и дизассемблировал, и что, они ничем не отличаются, только одной строкой, все остальное один в один.
                            jnz short loc_401B6F с Goto
                            jz short loc_401B6F без Goto
                            Можно сделать вывод, что разница только в удобстве программирования.
                            Это как послать кого-нить, слова меняются, а смысл нет.
                              По опыту разбора старых математических исходников на фортране, в которых активно используется goto, могу сказать, что где-то 95% случаев применения этой конструкции служило для реализации функционала, который легко и естественно реализовывался при помощи if/then/else и прочих структурных заморочек. В оставшихся случаях было очень сложно подобрать подходящий эквивалент без goto. Но вот какое дело, хоть эквивалент было сложно подобрать, но в большинстве случаев можно было организовать программу так, чтобы в этом не возникало необходимости. Просто по другому решить и всё.

                              Случаи, когда goto был совершенно необходим, потому что без него было тяжело и некрасиво - таких случаев единицы.
                                Демо А я и не спорю :) Я просто говорю, что есть люди, которые гото не периваривают и из-за них можно запросто потерять работу :(
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0693 ]   [ 15 queries used ]   [ Generated: 22.04.24, 18:57 GMT ]