![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: нет Всего: 118 |
Если отвечать на поставленный вопрос именно относительно Linux, то там ответ прозрачный и идет от его создателя - goto используется для оптимизации кода по скорости и используются особенности компилятора gcc.
А философские рассуждения - нужен goto или не нужен вообще. Даже матом выругаться бывает к месту. И если смотреть коды Linux, то если смотреть контекст, когда используется goto, достаточно все ясно и не вызывает проблем. |
|||
|
||||
Paradox |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1135 Регистрация: 18.11.2002 Где: Россия Репутация: нет Всего: 1 |
Процитирую HexoGenus:
По-моему тут дело не втом что лень лишний раз постучать по кнопочкам, а лень просто лишний раз сесть и немного подумать как можно обойтись без гото
По-моему на асемблере трудно что то написать без гото а точнее без jz,jmp и т.д. А еще в 70-х был Алгол 68 и Fortran со своей знаменитой записью идентификаторов и последующей ошибкой стоимостью 10 000 000 000$ ![]() -------------------- --- |
||||
|
|||||
Fantasist |
|
||||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
На уровне кода нет ни имен, ни типов, ни классов. На уровне кода мы вообще имеем только цифры. Но это ничего не показывает. 2Chingachguk: А ты вообще не лезь в наш структурный мир. ![]() Chingachguk, ты пишишь на ассемблере, и ты мыслишь ассемблером. Мышление уже у тебя так натренировалось. Ты очень крут в своей области, но это не типично и мало подходит для крупной командной разработки. Шахматная программа не сложна как программа. В ней сложны алгоритмы. Взаимодействий там довольно мало - она все обращена в себя.
Более того, память может быть выделенна динамически и никогда не освобождаться. Потому что кто-то решил перескачить через тот кусок кода, который отвественен за это - а так по тексту этого и не заметно. Куча ошибок можно получить. А без goto он подумает, как это сделать по другому, и тогда он более вероятно заметит, что должно быть выполнено. Новичкам поэтому вообще сильно не реккомендую использовать goto. Именно потому, что положившись на него, они будут меньше уделять внимания построению правильной структуры. Еще пример:
Казалось бы все логично, но кому-то может оказаться невдомек, что объект err скорее всего должен был быть уничтожен при выходе из catch{}, однако этот этап мы перескочили. -------------------- Волны гасят ветер... |
||||||
|
|||||||
Chingachguk |
|
||||||||||||||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Не вопрос:
_ЗЫ_1: Только не надо говорить мне, что есть локальные подпрограммы. В-первых, это ненужный довесок (чего он делает более понятным ?). Во-вторых, например у меня в BC.310 у меня их просто нет. Или я пишу для терминалов (сейчас) на СИ - TXO. И там тоже нет локальных подпрограмм. _ЗЫ_2: Это был ход ..e7-e6, если Вы хотите играть белыми. И я знаю немало хороших продолжений ;)
Можно, есть пакет под win32 со всей фигней типа IF, ELSE. Например, так можно писать даже VXD.
![]() ![]() Да ООП есть даже в ассемблере ! (см. Тома Свана книгу).
Ж)
А кто-то пробовал иначе - работать в команде на ассемблере ? Видимо, да. Вот примеры: 1. ДОС. Да, ДОС3+ очень грамотная и достаточно устойчивая, понятная разработчику ЛЮБОГО уровня система. Написана на ассемблере. 2. win98. Большая часть драйверов переписана на асм и от этого она сильно выиграла по сравнению с 95. Тоже была команда.
Это был пример того, что главное - это Результат. Как бы тупо он не был написан. Если Петя напишет тупейший код через goto, а Маша - через классы, но Петина программа будет работать в 10 раз быстрее, то чью программу предпочтет пользователь ? -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
||||||||||||||
|
|||||||||||||||
Fantasist |
|
||||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
С каких это пор ассемблере стал кодом? Вроде как был языком так и оставался. И даже если там есть что-то типа ООП, то уж точно по типизации ассемблер не сравниться с высокоуровневыми языками.
Chingachguk, а как ты думаешь, почему сейчас так мало пишут на ассемблере? Я имею в виду цельные коммерческие проекты чисто на ассемблере? Покажите мне софтверную фирму, которая разрабатывает продукты хотя бы для среднего бизнеса на ассемблере. Ни в жизнь не поверю что такая есть. А ДОС могли и два человека написать. [/QUOTE]2. win98. Большая часть драйверов переписана на асм и от этого она сильно выиграла по сравнению с 95. Тоже была команда
Да конечно. Если ты, Chingachguk, напишишь операционную систему на асм, котороя будет быстрее и безглючнее чем Windows, и не будет уступать ей по возможностям, возможно многие пользователи предпочтут ее. Теперь, сколько шансов ее написать тебе в одиночку? Далее тебе понадобиться выпустить следующую версию, причем быстро. Надо же расширяться, продвигаться. Придут люди которых ты заставишь работать с твоим кодом, а его будет ОЧЕНЬ много. Каковы шансы, что они разберуться с ним быстро и правильно? Что они не повтыкают туда до фига глюков, ибо чего-то не заметили или на так поняли? Почему ты думаешь, слово "инкапсуляция", так часто витает в воздухе передового программерского мира? Все дело в том же - борьба за более строгую структурность, ибо только так можно поддерживать устойчивость при современных темпах и объемах разроботки программного обеспечения. -------------------- Волны гасят ветер... |
||||||
|
|||||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Кстати, а почему эта тема все еще не во флейме?
-------------------- Волны гасят ветер... |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
По определению, здесь обсуждаются вопросы о языке C, я не вижу причин почему нельзя обсудить и такой вопрос тоже. -------------------- 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 |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Не-а, здесь уже обсуждают философию программирования. К С++ это прямиком не относится.
-------------------- Волны гасят ветер... |
|||
|
||||
MadGhost |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 20.11.2002 Репутация: нет Всего: нет |
по моему разговор ни о чем, там где он нужен, т.е. там где он необходим конечно лучше его поставить. Но если можно обойтись без него и вспоминать его не стоит.
У меня например никогда не вставал вопрос нужен гото или нет, я просто даже не знаю как и где метки ставить, оно мне не надо. кодю на Delphi, C++. т.е. реализация этих языков позволяет полностью избавить от ненужных GOTO. |
|||
|
||||
Turboman |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 15 Регистрация: 11.12.2002 Где: Краснодар Репутация: нет Всего: нет |
Goto как goto...
![]() ![]() ![]() |
|||
|
||||
Андрей |
|
|||
Unregistered |
По-моему товарищ Chingachguk абсолютно прав по-поводу
использования goto для выхода из вложенных циклов. Я, например, если и применяю его то только с этой целью. Конечно, если посидеть да подумать можно организовать циклы так, чтобы можно было обойтись и без goto, но зачем. А вот слишком много их, это конечно не к месту. Где-нибудь один раз на 1000 строк -- это вполне нормально. |
|||
|
||||
Lelik12345 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 5.2.2006 Репутация: нет Всего: нет |
народ, помогите студентке, т.е. мне, очень надо!!
![]() в общем прога состоит из диалога, там про возраст, есть функция goto? которая бесконечно все пишет, как мне из нее выти??? помогите плиз, или подскажите другую функцию бесконечную, которая автоматом выходит...пожалуйста!!! ![]() Добавлено @ 00:23 ой забыла сказать, это все на С++3.1 на досе |
|||
|
||||
Dreamer_0x01 |
|
||||
![]() Терминатор ![]() ![]() Профиль Группа: Участник Сообщений: 780 Регистрация: 14.4.2005 Где: Санкт-Петербург Репутация: нет Всего: 12 |
что значит состоит из диалога? Хм...Надо бы записать в афоризмы ![]()
Так. Давайте для начала выясним, что означают эти понятия. А потом уже разберемся с вашей проблемой. -------------------- Нет ничего невозможного. Есть цели, и есть время и силы на их достижение. |
||||
|
|||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: 4 Всего: 67 |
ж) телепаты в отпуске, так что код в студию....и желательно в отдельном топике...
-------------------- СУВ, Partizan. |
|||
|
||||
secado |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.2.2006 Репутация: нет Всего: 3 |
Если вы хотите использовать goto полезно будет знать следующее: по умолчанию, все операторы условные команды jmp в Assembler указывающие на предыдущие команды отмечаются как вероятно исполняемые (по модулю предсказанию переходов) - как составные части циклов, а те которые указывают далее по программе - как не исполняемые (счиатется, что jyb исполняют переход при невыполнении какого-то условия, if then .... else). Можно в ручном режиме указать модулю предсказания переходов возможность исполнения того или иного jmp, путем префикса - 2E (да) и 3E(нет)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |