Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Оператор goto, Хорошо или плохо 
:(
    Опции темы
Sun
Дата 19.9.2002, 20:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Account removed
***


Профиль
Группа: Экс. модератор
Сообщений: 1611
Регистрация: 14.8.2002

Репутация: нет
Всего: 48



Все знают что "goto" это плохо, но почему в ядре Linux он встречается почти в каждом модуле? Или настоящие программеры не боятся оператора "goto"?


--------------------
Account removed
PM MAIL   Вверх
FdX
Дата 19.9.2002, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 13.8.2002

Репутация: нет
Всего: нет



Цитата
Или настоящие программеры не боятся оператора "goto"?


Ага.

Ну а вообще не достаточно просто уметь_писать на С++. Надо знать ещще тонкости вроде работы со стеком (на уровне комманд асма) при вызове функций и тому подобные вещи.

Если знаешь, как все пашет, проги не будут глючить
PM MAIL ICQ   Вверх
Grey
Дата 19.9.2002, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 25.3.2002

Репутация: нет
Всего: нет



Плохо, когда лепят его где непопадя.
Хорошо, когда использование goto упрощает код и облегчает его понимание.
А догматичные запреты на его использование, это полный бред помоему.
PM MAIL   Вверх
Baa
Дата 19.9.2002, 23:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



На самом деле, ничего плохого нету в goto. Просто это считается дурным тоном...Вспомним ассемблер...там без меток - это маразм...Да и ведь goto - это ведь инструкция jmp, а её используют циклы и т.д.


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Tamerlann
Дата 17.11.2002, 07:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 183
Регистрация: 10.11.2002
Где: Минск, Беларусь

Репутация: нет
Всего: 2



А зачем вообще использовать goto, когда в С++ уже всё необходимое есть: циклы, if'ы и процедуры. Мне кажется, прога построенная на процедурах гораздо легче читается и понимается, никогда не запутаешся. :)
--------------------
http://timursdev.blogspot.com/ 
PM MAIL WWW Skype   Вверх
Fantasist
Дата 18.11.2002, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Код
На самом деле, ничего плохого нету в goto. Просто это считается дурным тоном...Вспомним ассемблер...


Что все так к ассемблеру аппелируют? Это крайне не типичный язык - структурности в нем никакой нету. goto как раз и не реккомендуют использовать, потому что он нарушает структурное построение. Если ты пишишь для себя, то пожалуйста, хоть на каждом шаге его ставь. И если ты потом сам в ней сможешь разобраться то никаких проблем. Будешь работать в команде, тебя так за это будут пинать.
 Кстати, расказывал один человек работающий в софтверной компании, что он видел как у них кто-то применил goto. Выглядело это примерно так:
Код

...
goto  SorryGuysICantBelieveIDidThat;
....
...
SorryGuysICantBelieveIDidThat:
...


:)


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Baa
Дата 18.11.2002, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2639
Регистрация: 12.4.2002
Где: Москва

Репутация: 8
Всего: 12



Я к тому, что на уровне кода цикл обычный не отличается от того же гото.
А про удобочитаемость, дык тут тоже не всегда верно... Есть варианты, когда гото читается легче, чем циклы. (токо вот я их превисти не могу ;-) )
з.ы. а сам я гото не использую почему-то ;-) даже в прогах для себя... видать наставление не использовать гото отложилось в подсознании ;-)


--------------------
"Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande
PM ICQ   Вверх
Vano
Дата 18.11.2002, 14:20 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Тут все про циклы, а вот я знаю пример использования goto в фунции, вместо того чтоюы плодить сотни рекурсивных вызовов ее, и что структурнее и в чем прще разобраться это еще вопрос (это из области создания компиляторов, если пример интересный могу привести)
  Вверх
Vit
Дата 18.11.2002, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
Alex101
Дата 18.11.2002, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 891
Регистрация: 8.4.2002
Где: Москва

Репутация: нет
Всего: 10



Цитата(Baa @ 18.11.2002, 02:39)
Я к тому, что на уровне кода цикл обычный не отличается от того же гото.

Ну, все же для цикла с пареметром есть команда loop ...
А насчет goto...
Есть программа генерации перестановок в нерекурсивном варианте, так там
goto очень даже к месту...


--------------------
С уважением, А. Фролов.
PM MAIL ICQ   Вверх
HexoGenus
Дата 18.11.2002, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Цитата(Guest @ 18.11.2002, 06:20)
Тут все про циклы, а вот я знаю пример использования goto в фунции, вместо того чтоюы плодить сотни рекурсивных вызовов ее, и что структурнее и в чем прще разобраться это еще вопрос (это из области создания компиляторов, если пример интересный могу привести)

Вопрос что удобнее использовать для расчетов ???
Счеты или компьютер...?

Вот вам нужно выполнить расчет какой-то экономической операции...
Рядом стоят счеты на которых это можно быстро сделать и компьютер который нужно загрузить, запустить к примеру тот же ексел, подумать как составить форму, какие вписать в нее формулы, выключить компьютер.

Ну так что ???

Вот тут и появляется такой термин как информационная культура...
1. человек который всегда в первую очередь хватается за счеты обладает низкой информационной культурой,
2. человек который всегда сначала хватается за компьютер - это программист  :D ,
3. а человек который вместо того что бы сразу за что то хвататься, сначала подумает, может ли данный расчет использоваться как типовой и применяться в дальнейшем и если да то в первую очередь попробует решить задачу при помощи компьютера - это разумный человек обладающий высокой информационной культурой...

(Надеюсь всем присутствующим не нужно объяснять почему компьютер для большинства расчетов лучше чем счеты? Часть размышлений по этому поводу опускаю...)

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

Что нам говорят боги программирования:
- оператор гото снижает читаемость программ...
- следовательно повышает вероятность появления ошибок...
- ухудшает условия для работы оптимизирующих компиляторов (а следовательно при большом количестве гото программа в большинстве вариантов будет работать медленнее чем та же программа построенная при помощи конструкций языков высокого уровня)
- человек начавший использовать гото без явной необходимости для данной реализации подобен наркоману который каждый день хочет увеличить дозу вдвое ...

Теперь, что нам говорят любители использовать гото и любители использовать счеты:
1. Некоторые реализации более легко читаемы если использовать гото...
1. Некоторые расчеты быстрее сделать используя счеты...
2. Тут все про циклы, а вот я знаю пример использования goto в фунции, вместо того чтобы плодить сотни рекурсивных вызовов ее, и что структурнее и в чем прще разобраться это еще вопрос ...
2. Тут все говорят про компьютеры а я вот баланс своего ларька подбила используя тетрадь и счеты быстрее многих финансистов...
3. Все знают что "goto" это плохо, но почему в ядре Linux он встречается почти в каждом модуле? Или настоящие программеры не боятся оператора "goto"? (Дело в том что ядро операционной системы должно быть максимально скоростным и поэтому там используется ручная оптимизация кода - что является уделом программистов которые для меня боги, которым кажется что разница в скорости выполнения MOV AX,0 и SUB AX,AX понятна и ёжику, там используется тесная связь с ассемблером а он без оператора безусловного перехода становится очень громоздким)  
3. Почему говорят что в расчетах надо использовать компьютеры... Вот я на столе у главбуха тоже видела счеты (калькулятор) и хотя рядом стоит компьютер ОН счетами тоже пользуется!!!!! Так значит компьютер не нужен!!!! Это сколько же нужно выучить, его еще и купить нужно... Зачем он нам нужен когда есть счеты!!!!

Надеюсь никого не обидел ??? Я просто хотел свою мысль сделать ярче... ;-)

Теперь скажите мне вы будете уважать бухгалтера который не смотря на то что рядом стоит компьютер иногда использует счеты ?  :D Конечно будете...
Но если зайдете на форум бухгалтеров и увидете бухгалтера который будет поливать помоями компьютеры и кричать что счеты это руллез форева и он не согласен с тем что их нельзя использовать в бухгалтерии ???

Это будет просто показатель его низкой профессиональной грамотности (не в смысле что он бухгалтерию плохо знает а в том смысле что он и сам будет перед каждым отчетом сидеть по уши в бумагах и своих подчиненных будет долбать как дятел за то что они ему долго ведомости ручками переписывают хотя он и попросил всего три экземпляра простыни на 5 метров  :D )

Вобщем каждый кто пытается в форуме при всем народе кричать о том что гото можно использовать в программах (а то мы этого не знали) лишний раз показывает свой низкий профессиональный уровень и пытаясь спорить с теми кто пишет учебники (вроде как он умнее этих профессоров) уподобляется человеку плюющему на богов сидящих в небе (закон всемирного притяжения еще никто не отменял)...
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
Paradox
Дата 18.11.2002, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



HexoGenus по-моему тут никто не кричал гото рулезз форева...
Человек, который сразу хватается за компьютер это не программист, или по крайней мере бестолковый программист. Толковый же в свою очередь сначала подумает как и что он будет делать а уж потом хватается.
И вот если я к примеру в процессе работы над некоторой проблеммой прихожу к выводу что гото будет к месту (а все реализации без гото либо потребуют больших усилий, либо сделают программу нечитаемой) я его использую.
Оговорюсь сразу:в профессиональной деятельности я еще ни разу гото не использовал, но предубеждений по поводу его использования у меня нет.

Этот вопрос сродни тому хорошо ли иметь в программе глобальные переменные или нет. По этому поводу можно дискуссию развести еще больше этой.

Кстати интересно, какой трактат по этому поводу напишет HexoGenus


--------------------
---
PM MAIL WWW   Вверх
HexoGenus
Дата 18.11.2002, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Цитата(Paradox @ 18.11.2002, 11:14)
HexoGenus по-моему тут никто не кричал гото рулезз форева...

Я не говорю что здесь кто то об этом кричал но постоянно кто нибудь это тему в форумах нет нет да и поднимет  :D
Цитата

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

Имеется в виду что программисты обычно знания о счетах и калькуляторах со временем отбрасывают как избыточные рудиментарные остатки и поэтому для нас любую задачу (почти всегда) просто приятнее решать при помощи компа ... (в каждой шутке есть доля шутки)
Цитата

И вот если я к примеру в процессе работы над некоторой проблеммой прихожу к выводу что гото будет к месту (а все реализации без гото либо потребуют больших усилий, либо сделают программу нечитаемой) я его использую.
Оговорюсь сразу:в профессиональной деятельности я еще ни разу гото не использовал, но предубеждений по поводу его использования у меня нет.

Ты вообще до конца мой фельетончик прочитал ???
Или не вытерпел и сразу ответ написал... :angry:
Я же там понятно написал что я не против использования гото там где это действительно необходимо а против постоянных попыток доказать что он нужен...

Повторю еще раз... это показывает не только уровень непрофессионализма но и то что человек не хочет прислушиваться к мнению профессионалов ...

Часто этот вопрос про гото задается только для того что бы подразнить админов и профи :D
Мне кажется что по этому вопросу стоило бы заготовить что то вроде перечня случаев когда гото можно удачно использовать, когда он приводит к ухудшению кода и образцы программ начинающих программистов насыщенных гото как арбуз семечками и вот этот документик скидывать на почту данному участнику форума одновременно удаляя его вопрос ...

Цитата

Этот вопрос сродни тому хорошо ли иметь в программе глобальные переменные или нет. По этому поводу можно дискуссию развести еще больше этой.


Кстати еще одна из причин почему не стоит использовать гото без причины...
Если мы создаем цикл и внутри него переменную то сразу за его пределами она уничтожается за ненадобностью ... а если мы реализуем цикл через гото то область жизни переменной может стать чрезмерной излишне засоряя память...  
Только понимая все эти ньюансы (а их очень не мало) можно понять почему начинающим программистам рекомендуют вообще не использовать гото...

Разве это называется ПРЕДУБЕЖДЕННОСТЬ?

Цитата

Кстати интересно, какой трактат по этому поводу напишет HexoGenus


Заказывали? Получите... распишитесь... :D
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
Chingachguk
Дата 18.11.2002, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата

HexoGenus Дата сообщения: 18.11.2002,10:43

Теперь, что нам говорят любители использовать гото и любители использовать счеты:
1. Некоторые реализации более легко читаемы если использовать гото...


Именно так. Лично я пробовал и без него (писал и пишу на Pas,C,Asm...) так и с ним (Pas,C,Asm,..). Да, я не оговорился - пакет win32 masm позволяет писать на ассемблере в струкутрном виде (с IF,ELSE...). Иногда лучше так, иногда - нет. А ВЫ пробовали его использовать, или только цитируете классиков ?

Цитата

1. Некоторые расчеты быстрее сделать используя счеты...


Примерно в 70-е годы проводился конкурс шахматных программ. Участники были представлены разными навороченными алгоритмами, написанными в силу их сложности на структурных языках. В то же время наша программа ("Каисса"?) была написана исключительно тупо и на ассемблере - те с goto. И что ? Победила именно она !

Цитата

2. Тут все говорят про компьютеры а я вот баланс своего ларька подбила используя тетрадь и счеты быстрее многих финансистов...


Все верно. Главное - результат. Если ваша БД, написанная на "структурном" языке со всякими моделями в RWin добавляет 1 запись 60 секунд, то нафиг ее.

Цитата

3. Все знают что "goto" это плохо, но почему в ядре Linux он встречается почти в каждом модуле? Или настоящие программеры не боятся оператора "goto"?


Видимо, те люди предпочитают все проверить и выбрать ЛУЧШЕЕ, а не верить многократно скопированным изречениям.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
HexoGenus
Дата 18.11.2002, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Экс. модератор
Сообщений: 110
Регистрация: 28.8.2002
Где: Ростов-на-Дону

Репутация: нет
Всего: нет



Цитата(Chingachguk @ 18.11.2002, 14:06)
Видимо, те люди предпочитают все проверить и выбрать ЛУЧШЕЕ, а не верить многократно скопированным изречениям.

Хммммм.... ну спасибо  :D
ну хорошо давайте так...
гото позволяет в любой момент перейти в другую точку программы так???
этим самым достигается то что какая то часть программы может использоваться повторно не более того...?
Что еще реализует эту идею?
Циклы для многократного повтора подряд и функции для повтора рекурсивного или непериодического...

Что несут в себе полезного циклы?
1. Задание области видимости переменных которые не будут нужны за пределами цикла...
2. Повышенная наглядность при чтении программы...

Что несут в себе полезного функции?
Да замучаешься перечислять... тут и удобная передача аргументов и ... и... да возьми любую книжку по С и поймешь что именно благодаря тому что здесь наглядно определяются функции этот язык и получил такую популярность...

Когда мы вместо функций и циклов начинаем применять гото (а именно так обычно и поступают многие из-за того что лень чуть больше постучать по кнопочкам) то мы отказываемя от всех этих преимуществ...

Когда гото получает преимущество перед конструкциями языков высокого уровня?
Как только нужно максимально все ускорить, ведь на вызовы функций и передачу им аргументов идет время... а если нужен цикл вечный то что может быть проще гото... ;-)

Мое предложение такое давайте выложим не просто метафизические рассуждения хорошо или плохо а так:
В данных случаях будет польза: .........
В данных случаях будет вред: .........
:baaa
--------------------
Когда невозможно уже работать напряженнее, начни работать умнее.
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 18.11.2002, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 118



Если отвечать на поставленный вопрос именно относительно Linux, то там ответ прозрачный и идет от его создателя - goto используется для оптимизации кода по скорости и используются особенности компилятора gcc.

А философские рассуждения - нужен goto или не нужен вообще. Даже матом выругаться бывает к месту. И если смотреть коды Linux, то если смотреть контекст, когда используется goto, достаточно все ясно и не вызывает проблем.
PM MAIL WWW ICQ   Вверх
Paradox
Дата 19.11.2002, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1135
Регистрация: 18.11.2002
Где: Россия

Репутация: нет
Всего: 1



Процитирую HexoGenus:

Цитата
Когда мы вместо функций и циклов начинаем применять гото (а именно так обычно и поступают многие из-за того что лень чуть больше постучать по кнопочкам) то мы отказываемя от всех этих преимуществ...


По-моему тут дело не втом что лень лишний раз постучать по кнопочкам, а лень просто лишний раз сесть и немного подумать как можно обойтись без гото

Цитата
Примерно в 70-е годы проводился конкурс шахматных программ. Участники были представлены разными навороченными алгоритмами, написанными в силу их сложности на структурных языках. В то же время наша программа ("Каисса"?) была написана исключительно тупо и на ассемблере - те с goto. И что ? Победила именно она !


По-моему на асемблере трудно что то написать без гото а точнее без jz,jmp и т.д.
А еще в 70-х был Алгол 68 и Fortran со своей знаменитой записью идентификаторов и последующей ошибкой стоимостью 10 000 000 000$ :notify


--------------------
---
PM MAIL WWW   Вверх
Fantasist
Дата 19.11.2002, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Цитата
Я к тому, что на уровне кода цикл обычный не отличается от того же гото


На уровне кода нет ни имен, ни типов, ни классов. На уровне кода мы вообще имеем только цифры. Но это ничего не показывает.

2Chingachguk: А ты вообще не лезь в наш структурный мир.  :D
Chingachguk, ты пишишь на ассемблере, и ты мыслишь ассемблером. Мышление уже у тебя так натренировалось. Ты очень крут в своей области, но это не типично и мало подходит для  крупной командной разработки.
 Шахматная программа не сложна как программа. В ней сложны алгоритмы. Взаимодействий там довольно мало - она все обращена в себя.

Цитата
Если мы создаем цикл и внутри него переменную то сразу за его пределами она уничтожается за ненадобностью ... а если мы реализуем цикл через гото то область жизни переменной может стать чрезмерной излишне засоряя память


Более того, память может быть выделенна динамически и никогда не освобождаться. Потому что кто-то решил перескачить через тот кусок кода, который отвественен за это - а так по тексту этого и не заметно. Куча ошибок можно получить. А без goto он подумает, как это сделать по другому, и тогда он более вероятно заметит, что должно быть выполнено.
Новичкам поэтому вообще сильно не реккомендую использовать goto. Именно потому, что положившись на него, они будут меньше уделять внимания построению правильной структуры.
Еще пример:
Код

{
 PrepearWork();
 try
 {
   DoWork();
 }
 catch (EMyError err)
 {
   if (!NeedToFinishWork())
      goto Exit;
   PrepearErrorFinishWork();
 };
 FinishWithWork();
Exit:
}


Казалось бы все логично, но кому-то может оказаться невдомек, что объект err скорее всего должен был быть уничтожен при выходе из catch{}, однако этот этап мы перескочили.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Chingachguk
Дата 19.11.2002, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата

HexoGenus Дата сообщения: 18.11.2002,14:50
{...}
Мое предложение такое давайте выложим не просто метафизические рассуждения хорошо или плохо а так:
В данных случаях будет польза: .........


Не вопрос:

Цитата

// Циклы вложенные, числом 3 или больше
for (i1=0;i1<End_I1;i1++)
{
  for (i2=0;i2<End_I2;i2++)
  {
    for (i3=0;i3<End_I3;i3++)
    {
     ...
     // Тут нам внезапно нужно сделать exit, но перед выходом необходимо
     // выполнить код после метки AllWorkDone
     // И самое естественное и короткое - это goto !
     goto AllWorkDone;
     ...
    }
  }
}

AllWorkDone:
// Например, закрытие хэндлов файлов и тп
close();
free... etc


_ЗЫ_1: Только не надо говорить мне, что есть локальные подпрограммы. В-первых, это ненужный довесок (чего он делает более понятным ?). Во-вторых, например у меня в BC.310 у меня их просто нет. Или я пишу для терминалов (сейчас) на СИ - TXO. И там тоже нет локальных подпрограмм.

_ЗЫ_2: Это был ход ..e7-e6, если Вы хотите играть белыми. И я знаю немало хороших продолжений ;)

Цитата

Paradox Дата сообщения: 18.11.2002,17:58
{...}
По-моему на асемблере трудно что то написать без гото а точнее без jz,jmp и т.д.
{...}


Можно, есть пакет под win32 со всей фигней типа IF, ELSE. Например, так можно писать даже VXD.

Цитата

Fantasist Дата сообщения: 18.11.2002,23:16
{...}
На уровне кода нет ни имен, ни типов, ни классов. На уровне кода мы вообще имеем только цифры. Но это ничего не показывает.


??? Это в ассемблере-то нету типов и классов ???
Да ООП есть даже в ассемблере ! (см. Тома Свана книгу).

Цитата

2Chingachguk: А ты вообще не лезь в наш структурный мир.  


Ж)

Цитата

Chingachguk, ты пишишь на ассемблере, и ты мыслишь ассемблером. Мышление уже у тебя так натренировалось. Ты очень крут в своей области, но это не типично и мало подходит для  крупной командной разработки.


А кто-то пробовал иначе - работать в команде на ассемблере ? Видимо, да. Вот примеры:

1. ДОС. Да, ДОС3+ очень грамотная и достаточно устойчивая, понятная разработчику ЛЮБОГО уровня система. Написана на ассемблере.
2. win98. Большая часть драйверов переписана на асм и от этого она сильно выиграла по сравнению с 95. Тоже была команда.

Цитата

Шахматная программа не сложна как программа. В ней сложны алгоритмы. Взаимодействий там довольно мало - она все обращена в себя.


Это был пример того, что главное - это Результат. Как бы тупо он не был написан. Если Петя напишет тупейший код через goto, а Маша - через классы, но Петина программа будет работать в 10 раз быстрее, то чью программу предпочтет пользователь ?


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Fantasist
Дата 20.11.2002, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Код
Это в ассемблере-то нету типов и классов
Да ООП есть даже в ассемблере !


С каких это пор ассемблере стал кодом? Вроде как был языком так и оставался. И даже если там есть что-то типа ООП, то уж точно по типизации ассемблер не сравниться с высокоуровневыми языками.

Цитата
А кто-то пробовал иначе - работать в команде на ассемблере ? Видимо, да. Вот примеры:

1. ДОС. Да, ДОС3+ очень грамотная и достаточно устойчивая, понятная разработчику ЛЮБОГО уровня система. Написана на ассемблере.


Chingachguk, а как ты думаешь, почему сейчас так мало пишут на ассемблере?
Я имею в виду цельные коммерческие проекты чисто на ассемблере? Покажите мне софтверную фирму, которая разрабатывает продукты хотя бы для среднего бизнеса на ассемблере. Ни в жизнь не поверю что такая есть. А ДОС могли и два человека написать.

[/QUOTE]2. win98. Большая часть драйверов переписана на асм и от этого она сильно выиграла по сравнению с 95. Тоже была команда
Цитата


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

[QUOTE]Если Петя напишет тупейший код через goto, а Маша - через классы, но Петина программа будет работать в 10 раз быстрее, то чью программу предпочтет пользователь ?


Да конечно. Если ты, Chingachguk, напишишь операционную систему на асм, котороя будет быстрее и безглючнее чем Windows, и не будет уступать ей по возможностям, возможно многие пользователи предпочтут ее. Теперь, сколько шансов ее написать тебе в одиночку? Далее тебе понадобиться выпустить следующую версию, причем быстро. Надо же расширяться, продвигаться. Придут люди которых ты заставишь работать с твоим кодом, а его будет ОЧЕНЬ много. Каковы шансы, что они разберуться с ним быстро и правильно? Что они не повтыкают туда до фига глюков, ибо чего-то не заметили или на так поняли? Почему ты думаешь, слово "инкапсуляция", так часто витает в воздухе передового программерского мира? Все дело в том же - борьба за более строгую структурность, ибо только так можно поддерживать устойчивость при современных темпах и объемах разроботки программного обеспечения.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Fantasist
Дата 20.11.2002, 02:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Кстати, а почему эта тема все еще не во флейме?


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Vit
Дата 20.11.2002, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: нет
Всего: 207



Цитата(Fantasist @ 19.11.2002, 09:09)
Кстати, а почему эта тема все еще не во флейме?

По определению, здесь обсуждаются вопросы о языке 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
PM MAIL WWW ICQ   Вверх
Fantasist
Дата 20.11.2002, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: 4
Всего: 41



Не-а, здесь уже обсуждают философию программирования. К С++ это прямиком не относится.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
MadGhost
Дата 20.11.2002, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 20.11.2002

Репутация: нет
Всего: нет



по моему разговор ни о чем, там где он нужен, т.е. там где он необходим конечно лучше его поставить. Но если можно обойтись без него и вспоминать его не стоит.

У меня например никогда не вставал вопрос нужен гото или нет, я просто даже не знаю как и где метки ставить, оно мне не надо.

кодю на Delphi, C++.

т.е. реализация этих языков позволяет полностью избавить от ненужных GOTO.
PM MAIL   Вверх
Turboman
  Дата 13.12.2002, 16:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 11.12.2002
Где: Краснодар

Репутация: нет
Всего: нет



Goto как goto... :D  :D  :D
PM MAIL   Вверх
Андрей
Дата 17.12.2002, 05:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











По-моему товарищ Chingachguk абсолютно прав по-поводу
использования goto для выхода из вложенных циклов. Я, например,
если и применяю его то только с этой целью.
Конечно, если посидеть да подумать можно организовать циклы
так, чтобы можно было обойтись и без goto, но зачем.
А вот слишком много их, это конечно не к месту.
Где-нибудь один раз на 1000 строк -- это вполне нормально.
  Вверх
Lelik12345
Дата 5.2.2006, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.2.2006

Репутация: нет
Всего: нет



народ, помогите студентке, т.е. мне, очень надо!! smile
в общем прога состоит из диалога, там про возраст, есть функция goto? которая бесконечно все пишет, как мне из нее выти??? помогите плиз, или подскажите другую функцию бесконечную, которая автоматом выходит...пожалуйста!!! smile
Добавлено @ 00:23
ой забыла сказать, это все на С++3.1 на досе
PM MAIL   Вверх
Dreamer_0x01
Дата 5.2.2006, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Терминатор
**


Профиль
Группа: Участник
Сообщений: 780
Регистрация: 14.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 12



Цитата(Lelik12345 @ 5.2.2006, 00:22 Найти цитируемый пост)

в общем прога состоит из диалога, там про возраст, есть функция goto

что значит состоит из диалога?

Цитата(Lelik12345 @ 5.2.2006, 00:22 Найти цитируемый пост)

которая бесконечно все пишет

Хм...Надо бы записать в афоризмы smile


Цитата(Lelik12345 @ 5.2.2006, 00:22 Найти цитируемый пост)

или подскажите другую функцию бесконечную,  которая автоматом выходит



Так. Давайте для начала выясним, что означают эти понятия.
А потом уже разберемся с вашей проблемой.


--------------------
Нет ничего невозможного. Есть цели, и есть время и силы на их достижение.
PM ICQ   Вверх
Partizan
Дата 5.2.2006, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 4
Всего: 67



ж) телепаты в отпуске, так что код в студию....и желательно в отдельном топике...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
secado
Дата 6.2.2006, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 5.2.2006

Репутация: нет
Всего: 3



Если вы хотите использовать goto полезно будет знать следующее: по умолчанию, все операторы условные команды jmp в Assembler указывающие на предыдущие команды отмечаются как вероятно исполняемые (по модулю предсказанию переходов) - как составные части циклов, а те которые указывают далее по программе - как не исполняемые (счиатется, что jyb исполняют переход при невыполнении какого-то условия, if then .... else). Можно в ручном режиме указать модулю предсказания переходов возможность исполнения того или иного jmp, путем префикса - 2E (да) и 3E(нет)
PM MAIL   Вверх
Goganchic
Дата 7.5.2007, 07:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Прочитал сейчас всю тему: чуть глаза из орбит не выкатились.
Попытаюсь ответить на все: гоуту - зло. Тут приводился пример с линуксом, насчет ручной оптимизации и применения фишек GCC это да, есть такое, и еще, насчет кода ядра, вы когда нибудь читали документацию если не ко всему ядру, то хотя бы к каким-нибудь его инфраструктурам? Я читал доки к netfilter'y и там ясно написано, что код писал хомяк, а чел только записывал коменты с его (хомяка) слов. smile Вот такие линуксойды весселые smile
Еще был пример с вложенным циклом, мне по этому поводу мой бывший препод информатики, у которого опыт практической разработки прог (т.е. он не просто теоретик, а так сказать заслуженный практик программирования) говорит так: не надо создавать такие ситуации чтобы были вложенные циклы из которых надо выходить сразу во вне и все будет хорошо.
PM Jabber   Вверх
MAKCim
Дата 7.5.2007, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Goganchic @  7.5.2007,  07:38 Найти цитируемый пост)
Еще был пример с вложенным циклом, мне по этому поводу мой бывший препод информатики, у которого опыт практической разработки прог (т.е. он не просто теоретик, а так сказать заслуженный практик программирования) говорит так: не надо создавать такие ситуации чтобы были вложенные циклы из которых надо выходить сразу во вне и все будет хорошо. 

как говорится, ну-ну  smile 
Цитата(Goganchic @  7.5.2007,  07:38 Найти цитируемый пост)
гоуту - зло

просто не хочется в очередной раз доказывать, что ты не прав  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Goganchic
Дата 7.5.2007, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



MAKCim, мы говорим о Си или о Си++? Если последнее, то там гоуту просто не нужен, т.к. имеется механизм исключений, который может заменить гоуту, причем в более наглядной форме.
PM Jabber   Вверх
0lmer
Дата 7.5.2007, 13:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 3.12.2006

Репутация: нет
Всего: -1



Лично я за недолгие 3 года программирования использовал готу не больше 4 раз для выхода из циклов поскольку без него размер кода увеличивался а читабельность уменьшалась.

По моему сам по себе готу не есть зло, зло - это когда его криво используют.
(это типа оружия: стреляет не оно само а человек который его держит) 
PM   Вверх
JackYF
Дата 7.5.2007, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Goganchic @  7.5.2007,  12:23 Найти цитируемый пост)
Если последнее, то там гоуту просто не нужен, т.к. имеется механизм исключений, который может заменить гоуту, причем в более наглядной форме. 


Хе. А скорость?
И далеко не факт, что в более понятной.



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 7.5.2007, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(JackYF @  7.5.2007,  16:58 Найти цитируемый пост)
Хе. А скорость?

а вот скорость на порядок снижается

Добавлено через 1 минуту и 30 секунд
Цитата(Goganchic @  7.5.2007,  12:23 Найти цитируемый пост)
мы говорим о Си или о Си++? Если последнее, то там гоуту просто не нужен, т.к. имеется механизм исключений, который может заменить гоуту, причем в более наглядной форме.

а ты сказал
Цитата(Goganchic @  7.5.2007,  07:38 Найти цитируемый пост)
гоуту - зло

применительно к чему?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Anikmar
Дата 7.5.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(MAKCim @  7.5.2007,  19:43 Найти цитируемый пост)
а вот скорость на порядок снижается

А то и больше.

Цитата(Goganchic @  7.5.2007,  12:23 Найти цитируемый пост)
MAKCim, мы говорим о Си или о Си++? Если последнее, то там гоуту просто не нужен, т.к. имеется механизм исключений, который может заменить гоуту, причем в более наглядной форме. 


ИМХО
Исключения ни коим образом не сделаны для замены goto - слишком серьезный механизм, из пушки по воробьям.
Если есть три-четыре вложенных цикла, из гущи которых нужно быстро выпрыгнуть, то при использовании механизма исключений будут очень ощутимые тормоза. При использовании дополнительных флагов - резко потеряется читабельность.
А вот при наличии goto и удобочитаемой метки, да еще в обозримом пространстве программы - дешево и сердито. Всем понятно и красиво.

PM MAIL ICQ   Вверх
Goganchic
Дата 7.5.2007, 22:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Как сказал 0lmer, goto это оружие, ну так вот, оружие тоже разным бывает: одним владеть можно научиться легко, а другим можно и руки себе отхряпать, если ты не шаолиньский манах. Ну так вот, для широких масс goto это зло, я не спорю, что сливки программистского общества могут использовать этот оператор красиво и безопасно, но когда каждый второй начинает закашивать под профессионала, то получается сущая неразбериха и трудновыловимые баги. Себя я не отношу к сливкам программистского общества, поэтому goto не использую.
Теперь насчет исключений: по-моему, в Си++ многие вещи "жутко тормозят", но как известно, они позволяют сделать код более читаемым и кратким (при соответствующей документации и соблюдении стандартов кодирования, конечно, я не пытаюсь сказать, что любой Вася Пупкин сядет за Си++ и сразу же сделает офигительный шедевр). Современное оборудование может спокойной существовать с небольшой "тормознутостью", причем последняя будет не очень заметна (вы уж извините, но не каждый сидить и с секундомером измеряет за сколько времени у него загрузилась картинка, за 1 сек. или за 1.5). Так что вывод таков: если приложение не критично по скорости (если приложение - мощный веб-сервер, для которого 10% потеря в скорости подобна смерти, то тут я даже спорить не буду - все средства оптимизации хороши), то от использования конструкции goto можно отказаться вполне.
Это мое мнение, может оно и не правильное, но я так думаю.

Это сообщение отредактировал(а) Goganchic - 7.5.2007, 22:26
PM Jabber   Вверх
Anikmar
Дата 7.5.2007, 23:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Goganchic @  7.5.2007,  22:24 Найти цитируемый пост)
Так что вывод таков: если приложение не критично по скорости (если приложение - мощный веб-сервер, для которого 10% потеря в скорости подобна смерти, то тут я даже спорить не буду - все средства оптимизации хороши), то от использования конструкции goto можно отказаться вполне.


По-моему весь спор о том, что можно от него отказаться или нужно. Конечно можно! Только вот вопрос: если с goto удобнее что-то сделать нужно ли  менять логику программы, нагромождать скобки и условия с циклами, чтобы обойтись без него?

Я даже встречал где-то мнение: Если вам не обойтись без goto пересмотрите логику вычислений...

Ну-ну. Мы программируем, чтобы получить результат или текст программы на высокоуровневом языке без оператора goto? Смотря кто какую себе цель ставит  smile 
Цитата(Goganchic @  7.5.2007,  22:24 Найти цитируемый пост)
Теперь насчет исключений: по-моему, в Си++ многие вещи "жутко тормозят", но как известно, они позволяют сделать код более читаемым и кратким 

ИМХО. Код программы должен быть понятен для сопровождения. Но это не значит, что его надо писать ради сопровождения. Это не стихи - готовый продукт все-таки работающая программа. И если картинка грузится на 30 секунд дольше, а потом этот "легкий для сопровождения" код без доделок попадает в другую программу, где таких картинок нужно вывести 100 - получим 50 минут  smile  И благодраность от конечного пользователя.

ИМХО
Нет только черного и белого. За разумный компромис! 

Цитата(Goganchic @  7.5.2007,  22:24 Найти цитируемый пост)
в Си++ многие вещи "жутко тормозят", 

Ну уж тут точно скорость от рук на 99% зависит! На мой взгляд Си++ позволяет писать очень скоростные программы (с goto или без - это как раз вторично). Вопрос правильного применения.

PM MAIL ICQ   Вверх
Goganchic
Дата 7.5.2007, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



AnikmarMAKCimJackYF0lmer, в общем я понял свой просчет: мы просто говорим о разных степенях слова "отказаться", просто в моем понимании отказаться, значит использовать только при очень крайней необходимости smile
PM Jabber   Вверх
srd
Дата 8.5.2007, 06:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Гм, если отвлечься от Си++ и поговорить о Си, то я вообще не вижу альтернативы goto.
Код

void some_function()
{
    ...
    if (!invoke_some_api())
        goto cleanup;
    ...
    if (invoke_other_api())
        goto cleanup;

cleanup:
    чистим память
    освобождаем ресурсы
}

Как это сделать без goto? Можно завести переменную для хранения статуса и проверять её перед каждым действием. Можно воспользоваться известным трюком с do {} while(0) и вываливаться из цикла по break, если что-то сломалось. Но мне кажется, что goto и проще и понятней smile

З.Ы.
Видел имитацию исключений в Plain C с помощью setjmp/longjmp, завёрнутых в макросы типа TRY/CATCH etc


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
nerezus
Дата 8.5.2007, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



Цитата

(это из области создания компиляторов, если пример интересный могу привести
 Мм, state machine? Нам тоже пропод твердил, что надо юзать goto, чтобы в условиях не захлебнуться. 
Однако я так и не понял, нахрена: когда писал сам, то у меня была только 2ая уровень вложеенности условий. Как и в примере.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
Vyacheslav
Дата 8.5.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(0lmer @  7.5.2007,  13:04 Найти цитируемый пост)
Лично я за недолгие 3 года программирования использовал готу не больше 4 раз для выхода из циклов поскольку без него размер кода увеличивался а читабельность уменьшалась.

Лично я за 12 лет работы на С++ не использовал его никогда. Не то что бы из приниципа. Просто так получалось.

Добавлено @ 10:30
Цитата(MAKCim @  7.5.2007,  19:43 Найти цитируемый пост)
а вот скорость на порядок снижается


Так у ж прямо  на порядок? Ну и к тому же мой опыт показывает, что при создании больших программныъ комплексов, главное не быстродействие, а читаемость кода.  

Цитата(srd @  8.5.2007,  06:18 Найти цитируемый пост)
Как это сделать без goto? 

Данный пример для С не катит smile 
Код


 void some_function()
{
    ...
    if (invoke_some_api()) {
     ...
       if (invoke_other_api()) {
          ....
       }
   }
        
    чистим память
    освобождаем ресурсы
}
 




--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Anikmar
Дата 8.5.2007, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Vyacheslav @  8.5.2007,  10:23 Найти цитируемый пост)
Ну и к тому же мой опыт показывает, что при создании больших программныъ комплексов, главное не быстродействие, а читаемость кода.  


Спор вялотекущий и ни очем, конечно.

Видимо я старомодный. Но объяснять пользователю, в ответ на его претензии к быстродействию "Зато посмотрите, какой читаемый код" я вижу не совсем правильным. То что исключения разворачиваются по времени действительно на порядок медленнее - уже точно обсуждалось, когда спорили что лучше: возврат кода ошибки или исключение. 
PM MAIL ICQ   Вверх
srd
Дата 8.5.2007, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Цитата(Vyacheslav @  8.5.2007,  17:23 Найти цитируемый пост)
Данный пример для С не катит

То есть предлагаешь кучу вложенных if-ов ради того, чтобы избежать goto? Это ещё хуже smile


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Goganchic
Дата 8.5.2007, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



srd, про си отдельный разговор: в си goto - необходимость
PM Jabber   Вверх
Goganchic
Дата 8.5.2007, 13:08 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Цитата(Anikmar @  8.5.2007,  10:51 Найти цитируемый пост)
Видимо я старомодный. Но объяснять пользователю, в ответ на его претензии к быстродействию "Зато посмотрите, какой читаемый код" я вижу не совсем правильным. То что исключения разворачиваются по времени действительно на порядок медленнее - уже точно обсуждалось, когда спорили что лучше: возврат кода ошибки или исключение.  

Зато с твоей стороны ситуация просто супер, когда пользователь говорит, а я вот хочу еще одну маленькую фичку, на что ему начинают объяснять, что мол мы сможем сделать тебе такую фичку только за пол года, т.к. у нас код очень производительный и понимает его только компилятор.
PM Jabber   Вверх
Vyacheslav
Дата 8.5.2007, 14:31 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(Anikmar @  8.5.2007,  10:51 Найти цитируемый пост)
Видимо я старомодный. Но объяснять пользователю, в ответ на его претензии к быстродействию "Зато посмотрите, какой читаемый код" я вижу не совсем правильным. То что исключения разворачиваются по времени действительно на порядок медленнее - уже точно обсуждалось, когда спорили что лучше: возврат кода ошибки или исключение.  

Вы  просто никогда не занимались поддержкой долгоживущих комплексов, когда код напиман в команде, причем от первоначальной команды уже никого нет в наличии.  Вы так же наверное не выполняли CR( change request) и  не видели удивленного взгляда заказчика, когда они видел количество часов, в которые это выливалось.  А что делать? Если вместо читаемого кода  и централизованного отлова ошибок автор занимался никому не нужной оптимизацией и отлавливанием эксепшенов по месту и привращеним их в коды возврата с последущим goto. 
 


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
HappyLife
Дата 8.5.2007, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 642
Регистрация: 17.5.2006

Репутация: 3
Всего: 8



А мне вот интересно, наступит ли момент, когда каждый перестанет спорить, с тем у кого больше или меньше опыта. Неужели всем так важно доказать свою правоту, вместо того чтобы жить, программировать как удобно, так как подсказывает опыт, так как умеешь. Так как требует ситуацию. 
PM MAIL   Вверх
Vyacheslav
Дата 8.5.2007, 14:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Цитата(HappyLife @  8.5.2007,  14:42 Найти цитируемый пост)
А мне вот интересно, наступит ли момент, когда каждый перестанет спорить, с тем у кого больше или меньше опыта. Неужели всем так важно доказать свою правоту, вместо того чтобы жить, программировать как удобно, так как подсказывает опыт, так как умеешь. Так как требует ситуацию.  

Вы противоречите сами себе smile

Цитата(HappyLife @  8.5.2007,  14:42 Найти цитируемый пост)
когда каждый перестанет спорить, с тем у кого больше или меньше опыта

и
Цитата(HappyLife @  8.5.2007,  14:42 Найти цитируемый пост)
программировать ... так как подсказывает опыт


А вот это
Цитата(HappyLife @  8.5.2007,  14:42 Найти цитируемый пост)
программировать как удобно, так как умеешь

весьма спорно.  Иногда при постановке вопроса "как удобно,  как умеешь" выясняется , что такого программирования никому, кроме Вас, не надо. 




--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Goganchic
Дата 8.5.2007, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Vyacheslav, полностью согласен
PM Jabber   Вверх
popovda
Дата 8.5.2007, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 290
Регистрация: 9.6.2006
Где: Москва

Репутация: нет
Всего: 6



"А зачем вообще использовать goto".
Например, затем, чтобы из нескольких вложенных циклов изящно выйти. C++ - это не Фортран 90/95, где есть имена циклов - т.н. безопасные метки. Очень удоно, кстати. А если применять goto не в пределах всего кода, а лишь в пределах блока {...} и не использовать его вместо if-else или switch, то все нормально и красиво. Весь ассемблер - это сплошные goto (jmp), и все довольны.


--------------------
С уважением, Попов Д.А.
PM MAIL   Вверх
Anikmar
Дата 8.5.2007, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Goganchic @  8.5.2007,  13:08 Найти цитируемый пост)
Зато с твоей стороны ситуация просто супер, когда пользователь говорит, а я вот хочу еще одну маленькую фичку, на что ему начинают объяснять, что мол мы сможем сделать тебе такую фичку только за пол года, т.к. у нас код очень производительный и понимает его только компилятор. 

Если вы посмотрите мое отношение к goto - я никогда не приветствую его применение, если это запутывает код. Мой пост относился к мнению, что исключения призваны заменить goto с чем я не согласен. Если нужно запутать код - то и с goto и без оного его можно сделать просто нечитаемым.
Цитата(Vyacheslav @  8.5.2007,  14:31 Найти цитируемый пост)
Вы  просто никогда не занимались поддержкой долгоживущих комплексов, когда код напиман в команде, причем от первоначальной команды уже никого нет в наличии. 

Сейчас мой род занятий резко отличается от программирования и последним я занимаюсь как раз в неосновное рабочее время. А 7 лет я работал программистом, в команде из 20 человек, с поддержкой кода, написанного уволенными сотрудниками, и адаптации их к нуждам заказчиков. Причем это были аппаратно-программные комплексы, включающие АСУ (программирование контроллеров) и АРМы верхнего уровня. И при разборе чужого кода меня больше бесило отсутствие комментариев, а не наличие goto.

Цитата(HappyLife @  8.5.2007,  14:42 Найти цитируемый пост)
А мне вот интересно, наступит ли момент, когда каждый перестанет спорить, с тем у кого больше или меньше опыта. Неужели всем так важно доказать свою правоту, вместо того чтобы жить, программировать как удобно, так как подсказывает опыт, так как умеешь. Так как требует ситуацию.  

Это спором назвать сложно - так как нету особого повода для спора. Тут скорее обмен мнениями - кто с чем сталкивался на практике.

Цитата(Vyacheslav @  8.5.2007,  14:31 Найти цитируемый пост)
Если вместо читаемого кода  и централизованного отлова ошибок автор занимался никому не нужной оптимизацией и отлавливанием эксепшенов по месту и привращеним их в коды возврата с последущим goto. 

У нас таким авторам сразу давалось по рукам. Начальство следило. А вообще нас заставляли писать так, чтобы чужой код мог быть запросто разобран другим программистом - так как в командировки ездили все и отлаживали код на местах. И не всегда ехал тот, кто писал конкретный участок.
Все вопросы читабельности и модульности решались на этапе проектирования. Были даже соглашения по именам переменных. 

Цитата(Vyacheslav @  8.5.2007,  14:31 Найти цитируемый пост)
никому не нужной оптимизацией и отлавливанием эксепшенов по месту и привращеним их в коды возврата с последущим goto

Тут перечислены все беды - и исключения и коды возврата и goto. Я то высказывал мнение, что нельзя использовать однозначно что-нибудь одно - для каждой ситуации нужно находить элегантный, понятный и быстрый код насколько это, конечно возможно.

PM MAIL ICQ   Вверх
Goganchic
Дата 8.5.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Цитата(Anikmar @  8.5.2007,  15:39 Найти цитируемый пост)
Тут перечислены все беды - и исключения и коды возврата и goto. Я то высказывал мнение, что нельзя использовать однозначно что-нибудь одно - для каждой ситуации нужно находить элегантный, понятный и быстрый код насколько это, конечно возможно.

как показывает практика в 99% случаев это код без goto smile
PM Jabber   Вверх
Anikmar
Дата 9.5.2007, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Goganchic @  8.5.2007,  16:56 Найти цитируемый пост)
как показывает практика в 99% случаев это код без goto  

Полностью согласен. Но ради 1% goto и существует  smile 
PM MAIL ICQ   Вверх
Жуть
Дата 9.5.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 27.6.2006

Репутация: нет
Всего: нет



для 0.00001%

Добавлено через 1 минуту и 35 секунд
хотя яб добавил еще пару "0" между "." и "1"
PM MAIL   Вверх
Goganchic
Дата 9.5.2007, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Anikmar, точно smile
PM Jabber   Вверх
MAKCim
Дата 9.5.2007, 12:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Goganchic @  8.5.2007,  16:56 Найти цитируемый пост)
как показывает практика в 99% случаев это код без goto

 smile 
и много у вас было практики?  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 10.5.2007, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Жуть @  9.5.2007,  12:03 Найти цитируемый пост)
для 0.00001%


А ты столько кода столько 100 / (0.000001 ) == 10^8 == 100 метров написал вообще за свою жизнь?



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Hurricane
Дата 10.5.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 126
Регистрация: 10.4.2007

Репутация: 6
Всего: 9



Цитата(JackYF @ 10.5.2007,  09:50)
Цитата(Жуть @  9.5.2007,  12:03 Найти цитируемый пост)
для 0.00001%


А ты столько кода столько 100 / (0.000001 ) == 10^8 == 100 метров написал вообще за свою жизнь?

Ну налетели, коршуны...  smile Пусть и мой код добавит туда, там, где я goto не пользуюсь, мне не жалко. Может и еще кто-нибудь кодом поделится. С миру по нитке...  smile 
PM MAIL   Вверх
Goganchic
Дата 10.5.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



MAKCim, опыта у меня достаточно, да к тому же пока что ни один заказчик не жаловался на написанный мной код: ни на скорость его работы, ни на расширяемость.

Это сообщение отредактировал(а) Goganchic - 10.5.2007, 19:17
PM Jabber   Вверх
MAKCim
Дата 10.5.2007, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Goganchic
верю, не обижайся  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Anikmar
Дата 10.5.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(JackYF @  10.5.2007,  17:50 Найти цитируемый пост)
А ты столько кода столько 100 / (0.000001 ) == 10^8 == 100 метров написал вообще за свою жизнь?

 smile 

А можно узнать, откуда единица измерения появилась? Был процент случаев употребления и сразу преобразовался в метры кода   smile
 smile  


PM MAIL ICQ   Вверх
v_nikolaev
Дата 11.5.2007, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 6.5.2007

Репутация: нет
Всего: нет



Цитата(HexoGenus @ 18.11.2002,  18:43)
- ухудшает условия для работы оптимизирующих компиляторов (а следовательно при большом количестве гото программа в большинстве вариантов будет работать медленнее чем та же программа построенная при помощи конструкций языков высокого уровня)

не знаю, может уже кто-то написал.

конструкции языка не приводят к так называемым несводимым циклам (циклы у которых несколько входов). а с такими циклами оптимизатору работать труднее. чаще всего он проводит цикловые оптимизации только в сводимых циклах, а несводимые старается свести, но это не всегда удаётся. другой вопрос в том, что и goto далеко не всегда приводит к несводимым.

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

ну ещё есть и определённые правила хорошего тона. 
как однажды аргументировали на разборе задач на олимпиаде:
- перебором пользоваться неудобно.
- в каком смысле.
- в том же смысле, как нехорошо использовать оператор goto smile
PM MAIL   Вверх
JackYF
Дата 11.5.2007, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Anikmar @  10.5.2007,  21:09 Найти цитируемый пост)
Был процент случаев употребления


Ну не будешь же ты говорить, что случаев употребления может быть меньше, чем байтов в исходниках? smile
Так что это я взял минимальный вариант. На самом деле там еще полтора-два порядка нужно накинуть. smile



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Goganchic
Дата 11.5.2007, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Anikmar,  лучше так считать: минимальная конструкция с goto будет иметь вид 
Код

goto a;

Т.е. содержать 7 символов + 2 символа - сама метка + двоеточие итого 9 символов. А вот теперь 9 используй вместо 100.
А вообще, кто сказал, что что  он уже больше не будет писать код в своей жизни? Может пока что идут те 99.999... а гоуту будет потом smile

PM Jabber   Вверх
Anikmar
Дата 11.5.2007, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



 smile 
Цитата(Goganchic @  11.5.2007,  21:57 Найти цитируемый пост)
А вообще, кто сказал, что что  он уже больше не будет писать код в своей жизни? Может пока что идут те 99.999... а гоуту будет потом 

Нет, вы просто не попали в тот процент программистов, которые не заморачиваются и используют любые конструкции языка если им это удобнее  smile 
Вопрос не в количестве кода, а в качестве  smile 
Цитата(JackYF @  11.5.2007,  15:27 Найти цитируемый пост)
Ну не будешь же ты говорить, что случаев употребления может быть меньше, чем байтов в исходниках? 

Фильм "Москва слезам не верит" - Переведи... И-и-ик...  smile 
PM MAIL ICQ   Вверх
JackYF
Дата 12.5.2007, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(Anikmar @  11.5.2007,  22:35 Найти цитируемый пост)
Фильм "Москва слезам не верит" - Переведи... И-и-ик...  smile  

Не понял...



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Anikmar
Дата 12.5.2007, 01:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(JackYF @  12.5.2007,  00:44 Найти цитируемый пост)
Цитата(Anikmar @  11.5.2007,  22:35 )
Фильм "Москва слезам не верит" - Переведи... И-и-ик...  smile  


Не понял...

Да это так, в этом фильме момент есть прикольный. По поводу социального статуса и т.п. Просто я не понял вашей фразы: 
Цитата(JackYF @  11.5.2007,  15:27 Найти цитируемый пост)
Ну не будешь же ты говорить, что случаев употребления может быть меньше, чем байтов в исходниках? 


И вобще - я уже просто нагло офтоплю, мне стыдно...  smile 
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.2351 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.