![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Sun |
|
|||
Account removed ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1611 Регистрация: 14.8.2002 Репутация: нет Всего: 48 |
Все знают что "goto" это плохо, но почему в ядре Linux он встречается почти в каждом модуле? Или настоящие программеры не боятся оператора "goto"?
-------------------- Account removed |
|||
|
||||
FdX |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 13.8.2002 Репутация: нет Всего: нет |
Ага. Ну а вообще не достаточно просто уметь_писать на С++. Надо знать ещще тонкости вроде работы со стеком (на уровне комманд асма) при вызове функций и тому подобные вещи. Если знаешь, как все пашет, проги не будут глючить |
|||
|
||||
Grey |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 91 Регистрация: 25.3.2002 Репутация: нет Всего: нет |
Плохо, когда лепят его где непопадя.
Хорошо, когда использование goto упрощает код и облегчает его понимание. А догматичные запреты на его использование, это полный бред помоему. |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
На самом деле, ничего плохого нету в goto. Просто это считается дурным тоном...Вспомним ассемблер...там без меток - это маразм...Да и ведь goto - это ведь инструкция jmp, а её используют циклы и т.д.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Tamerlann |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 10.11.2002 Где: Минск, Беларусь Репутация: нет Всего: 2 |
А зачем вообще использовать goto, когда в С++ уже всё необходимое есть: циклы, if'ы и процедуры. Мне кажется, прога построенная на процедурах гораздо легче читается и понимается, никогда не запутаешся.
![]() --------------------
http://timursdev.blogspot.com/ |
|||
|
||||
Fantasist |
|
||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Что все так к ассемблеру аппелируют? Это крайне не типичный язык - структурности в нем никакой нету. goto как раз и не реккомендуют использовать, потому что он нарушает структурное построение. Если ты пишишь для себя, то пожалуйста, хоть на каждом шаге его ставь. И если ты потом сам в ней сможешь разобраться то никаких проблем. Будешь работать в команде, тебя так за это будут пинать. Кстати, расказывал один человек работающий в софтверной компании, что он видел как у них кто-то применил goto. Выглядело это примерно так:
![]() -------------------- Волны гасят ветер... |
||||
|
|||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Я к тому, что на уровне кода цикл обычный не отличается от того же гото.
А про удобочитаемость, дык тут тоже не всегда верно... Есть варианты, когда гото читается легче, чем циклы. (токо вот я их превисти не могу ![]() з.ы. а сам я гото не использую почему-то ![]() ![]() -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Vano |
|
|||
Unregistered |
Тут все про циклы, а вот я знаю пример использования goto в фунции, вместо того чтоюы плодить сотни рекурсивных вызовов ее, и что структурнее и в чем прще разобраться это еще вопрос (это из области создания компиляторов, если пример интересный могу привести)
|
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Fantasist правильно сказал. Если кому-то удобно использовать Goto пусть использует, беды никакой нет, а вот если в комманде работаешь, то я бы крайне не рекомендовал - могут быть серьёзные проблемы. Я пару месяцев назад вынужден был работать с кодом моего коллеги, который очень уж охоч до Goto - на сотой строке я уже готов был его убить, после тысячной я уже всерьёз задумался не надо ли сходить к начальству и попросить спустить директиву о запрещении пользования Goto программистами компании...
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Alex101 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
Ну, все же для цикла с пареметром есть команда loop ... А насчет goto... Есть программа генерации перестановок в нерекурсивном варианте, так там goto очень даже к месту... -------------------- С уважением, А. Фролов. |
|||
|
||||
HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Вопрос что удобнее использовать для расчетов ![]() Счеты или компьютер...? Вот вам нужно выполнить расчет какой-то экономической операции... Рядом стоят счеты на которых это можно быстро сделать и компьютер который нужно загрузить, запустить к примеру тот же ексел, подумать как составить форму, какие вписать в нее формулы, выключить компьютер. Ну так что ![]() Вот тут и появляется такой термин как информационная культура... 1. человек который всегда в первую очередь хватается за счеты обладает низкой информационной культурой, 2. человек который всегда сначала хватается за компьютер - это программист ![]() 3. а человек который вместо того что бы сразу за что то хвататься, сначала подумает, может ли данный расчет использоваться как типовой и применяться в дальнейшем и если да то в первую очередь попробует решить задачу при помощи компьютера - это разумный человек обладающий высокой информационной культурой... (Надеюсь всем присутствующим не нужно объяснять почему компьютер для большинства расчетов лучше чем счеты? Часть размышлений по этому поводу опускаю...) так и с оператором гото... - сначала был ассемблер - язык с низкой упорядоченностью текстов программ - потом появились языки высокого уровня целью которых было все это упорядочить, уменьшить вероятность появления ошибок, при помощи специальных оптимизирующих компиляторов добиться автоматического улучшения скоростных характеристик получаемых кусков кода... и еще много, много, много всего такого... Что нам говорят боги программирования: - оператор гото снижает читаемость программ... - следовательно повышает вероятность появления ошибок... - ухудшает условия для работы оптимизирующих компиляторов (а следовательно при большом количестве гото программа в большинстве вариантов будет работать медленнее чем та же программа построенная при помощи конструкций языков высокого уровня) - человек начавший использовать гото без явной необходимости для данной реализации подобен наркоману который каждый день хочет увеличить дозу вдвое ... Теперь, что нам говорят любители использовать гото и любители использовать счеты: 1. Некоторые реализации более легко читаемы если использовать гото... 1. Некоторые расчеты быстрее сделать используя счеты... 2. Тут все про циклы, а вот я знаю пример использования goto в фунции, вместо того чтобы плодить сотни рекурсивных вызовов ее, и что структурнее и в чем прще разобраться это еще вопрос ... 2. Тут все говорят про компьютеры а я вот баланс своего ларька подбила используя тетрадь и счеты быстрее многих финансистов... 3. Все знают что "goto" это плохо, но почему в ядре Linux он встречается почти в каждом модуле? Или настоящие программеры не боятся оператора "goto"? (Дело в том что ядро операционной системы должно быть максимально скоростным и поэтому там используется ручная оптимизация кода - что является уделом программистов которые для меня боги, которым кажется что разница в скорости выполнения MOV AX,0 и SUB AX,AX понятна и ёжику, там используется тесная связь с ассемблером а он без оператора безусловного перехода становится очень громоздким) 3. Почему говорят что в расчетах надо использовать компьютеры... Вот я на столе у главбуха тоже видела счеты (калькулятор) и хотя рядом стоит компьютер ОН счетами тоже пользуется!!!!! Так значит компьютер не нужен!!!! Это сколько же нужно выучить, его еще и купить нужно... Зачем он нам нужен когда есть счеты!!!! Надеюсь никого не обидел ![]() ![]() Теперь скажите мне вы будете уважать бухгалтера который не смотря на то что рядом стоит компьютер иногда использует счеты ? ![]() Но если зайдете на форум бухгалтеров и увидете бухгалтера который будет поливать помоями компьютеры и кричать что счеты это руллез форева и он не согласен с тем что их нельзя использовать в бухгалтерии ![]() Это будет просто показатель его низкой профессиональной грамотности (не в смысле что он бухгалтерию плохо знает а в том смысле что он и сам будет перед каждым отчетом сидеть по уши в бумагах и своих подчиненных будет долбать как дятел за то что они ему долго ведомости ручками переписывают хотя он и попросил всего три экземпляра простыни на 5 метров ![]() Вобщем каждый кто пытается в форуме при всем народе кричать о том что гото можно использовать в программах (а то мы этого не знали) лишний раз показывает свой низкий профессиональный уровень и пытаясь спорить с теми кто пишет учебники (вроде как он умнее этих профессоров) уподобляется человеку плюющему на богов сидящих в небе (закон всемирного притяжения еще никто не отменял)... --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
Paradox |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1135 Регистрация: 18.11.2002 Где: Россия Репутация: нет Всего: 1 |
HexoGenus по-моему тут никто не кричал гото рулезз форева...
Человек, который сразу хватается за компьютер это не программист, или по крайней мере бестолковый программист. Толковый же в свою очередь сначала подумает как и что он будет делать а уж потом хватается. И вот если я к примеру в процессе работы над некоторой проблеммой прихожу к выводу что гото будет к месту (а все реализации без гото либо потребуют больших усилий, либо сделают программу нечитаемой) я его использую. Оговорюсь сразу:в профессиональной деятельности я еще ни разу гото не использовал, но предубеждений по поводу его использования у меня нет. Этот вопрос сродни тому хорошо ли иметь в программе глобальные переменные или нет. По этому поводу можно дискуссию развести еще больше этой. Кстати интересно, какой трактат по этому поводу напишет HexoGenus -------------------- --- |
|||
|
||||
HexoGenus |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Я не говорю что здесь кто то об этом кричал но постоянно кто нибудь это тему в форумах нет нет да и поднимет ![]()
Имеется в виду что программисты обычно знания о счетах и калькуляторах со временем отбрасывают как избыточные рудиментарные остатки и поэтому для нас любую задачу (почти всегда) просто приятнее решать при помощи компа ... (в каждой шутке есть доля шутки)
Ты вообще до конца мой фельетончик прочитал ![]() Или не вытерпел и сразу ответ написал... ![]() Я же там понятно написал что я не против использования гото там где это действительно необходимо а против постоянных попыток доказать что он нужен... Повторю еще раз... это показывает не только уровень непрофессионализма но и то что человек не хочет прислушиваться к мнению профессионалов ... Часто этот вопрос про гото задается только для того что бы подразнить админов и профи ![]() Мне кажется что по этому вопросу стоило бы заготовить что то вроде перечня случаев когда гото можно удачно использовать, когда он приводит к ухудшению кода и образцы программ начинающих программистов насыщенных гото как арбуз семечками и вот этот документик скидывать на почту данному участнику форума одновременно удаляя его вопрос ...
Кстати еще одна из причин почему не стоит использовать гото без причины... Если мы создаем цикл и внутри него переменную то сразу за его пределами она уничтожается за ненадобностью ... а если мы реализуем цикл через гото то область жизни переменной может стать чрезмерной излишне засоряя память... Только понимая все эти ньюансы (а их очень не мало) можно понять почему начинающим программистам рекомендуют вообще не использовать гото... Разве это называется ПРЕДУБЕЖДЕННОСТЬ?
Заказывали? Получите... распишитесь... ![]() --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
||||||||||
|
|||||||||||
Chingachguk |
|
||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Именно так. Лично я пробовал и без него (писал и пишу на Pas,C,Asm...) так и с ним (Pas,C,Asm,..). Да, я не оговорился - пакет win32 masm позволяет писать на ассемблере в струкутрном виде (с IF,ELSE...). Иногда лучше так, иногда - нет. А ВЫ пробовали его использовать, или только цитируете классиков ?
Примерно в 70-е годы проводился конкурс шахматных программ. Участники были представлены разными навороченными алгоритмами, написанными в силу их сложности на структурных языках. В то же время наша программа ("Каисса"?) была написана исключительно тупо и на ассемблере - те с goto. И что ? Победила именно она !
Все верно. Главное - результат. Если ваша БД, написанная на "структурном" языке со всякими моделями в RWin добавляет 1 запись 60 секунд, то нафиг ее.
Видимо, те люди предпочитают все проверить и выбрать ЛУЧШЕЕ, а не верить многократно скопированным изречениям. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
||||||||
|
|||||||||
HexoGenus |
|
|||
![]() Шустрый ![]() Профиль Группа: Экс. модератор Сообщений: 110 Регистрация: 28.8.2002 Где: Ростов-на-Дону Репутация: нет Всего: нет |
Хммммм.... ну спасибо ![]() ну хорошо давайте так... гото позволяет в любой момент перейти в другую точку программы так ![]() этим самым достигается то что какая то часть программы может использоваться повторно не более того...? Что еще реализует эту идею? Циклы для многократного повтора подряд и функции для повтора рекурсивного или непериодического... Что несут в себе полезного циклы? 1. Задание области видимости переменных которые не будут нужны за пределами цикла... 2. Повышенная наглядность при чтении программы... Что несут в себе полезного функции? Да замучаешься перечислять... тут и удобная передача аргументов и ... и... да возьми любую книжку по С и поймешь что именно благодаря тому что здесь наглядно определяются функции этот язык и получил такую популярность... Когда мы вместо функций и циклов начинаем применять гото (а именно так обычно и поступают многие из-за того что лень чуть больше постучать по кнопочкам) то мы отказываемя от всех этих преимуществ... Когда гото получает преимущество перед конструкциями языков высокого уровня? Как только нужно максимально все ускорить, ведь на вызовы функций и передачу им аргументов идет время... а если нужен цикл вечный то что может быть проще гото... ![]() Мое предложение такое давайте выложим не просто метафизические рассуждения хорошо или плохо а так: В данных случаях будет польза: ......... В данных случаях будет вред: ......... ![]() --------------------
Когда невозможно уже работать напряженнее, начни работать умнее. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |