Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
17.08.2007 21:38

uux
Участник (+887, -80)
Откуда: Москва
Зарегистрирован: 02.12.2006
Сообщений: 1625

Великий и могучий Гоуту Неубиваемый

Тут перевод TADS-мануала неожиданно натолкнул меня на мысль: что может заставить современнх программистов использовать оператор безусловного перехода a.k.a. goto? Речь, естественно, идет не о программировании на Ассемблере, Fortran 66 и т. п., а о более-менее структурированных языках, позволяющих теоретически вообще без него обойтись. Обращаюсь к программистам среди наших форумчан (их, к счастью, есть у нас:): пользуетесь ли вы оператором goto и в каких целях?

Начну, как положено, с себя. Я goto пользуюсь, пожалуй, исключительно при программировании на Visual Basic for Applications. Делаю это по следующим причинам: во-первых, ряд процедур удобнее генерировать при помощи встроенных "визардов", а они их генерят как раз с активным использованием goto. Править каждый раз такую процедуру вручную, убирая goto - значит сводить на нет все преимущества автоматизации;). Во-вторых, безусловный переход на метку в VBA удобно использовать при проверке на возникновение ошибки. В этом случае все обработчики ошибок локализуются в конце процедуры, что делает код в целом более читаемым. И, хотя теоретически подобной группировки можно добиться и другими средствами (и, например, программируя на Паскале, я бы совершенно точно организовал такую группировку без goto), в VBA такой способ кажется почему-то наиболее естественным и удобным.

Отредактировано uux (17.08.2007 21:40)

Неактивен

0    0    #2
21.08.2007 21:46

Blob
диван найт
Зарегистрирован: 21.08.2007
Сообщений: 5

Re: Великий и могучий Гоуту Неубиваемый

Всем привет!
Эх, сколько же споров я провел на эту тему...

Итак:
1. Действительно, без готы можно обойтись. Всегда.
2. С точки зрения перформанца другие способы, в большинстве случаев - проигрывают.
3. С точки зрения асма все другие способы тоже не лишены готов.
4. Иногда читабельней готу использовать, нежеле лепить маниакально что-то другое. См. MSDN.
Пока всё smile

Неактивен

0    0    #3
21.08.2007 21:55

Blob
диван найт
Зарегистрирован: 21.08.2007
Сообщений: 5

Re: Великий и могучий Гоуту Неубиваемый

Olegus! Дай мальчику блеснуть знаниями. Участие в святых войнах может пойти на пользу. smile

Неактивен

0    0    #4
21.08.2007 22:27

Blob
диван найт
Зарегистрирован: 21.08.2007
Сообщений: 5

Re: Великий и могучий Гоуту Неубиваемый

Кстати, VoLk88. А как ты "по роду специализации" относишься к "switch, case" стэйтменту?

Неактивен

0    0    #5
22.08.2007 20:09

Blob
диван найт
Зарегистрирован: 21.08.2007
Сообщений: 5

Re: Великий и могучий Гоуту Неубиваемый

VoLk88 написал:

но киселём расплываться перед недопрограммистами я не собираюсь

Ты попутался, студент! Уровень твоих познаний в программировании уже всем ясен. Вопросов нет. Вопрос в другом. Какие такие заслуги на програмерском поприще позволяют тебе такие высказывания? Ты не Страус часом?

Неактивен

0    0    #6
23.08.2007 14:52

Blob
диван найт
Зарегистрирован: 21.08.2007
Сообщений: 5

Re: Великий и могучий Гоуту Неубиваемый

VoLk88 написал:

Код:

for (...)
    for (...) {
        ...
        if (disaster) /* если бедствие */
            goto error; /* уйти на ошибку */
error: /* обработка ошибки */
    ликвидировать беспорядок

аналогично что и

Код:

for (...)
    for (...) {
        ...
        if (disaster) /* если бедствие */
            [b]call sub_error();[/b] /* вызвыть событие обработки ошибки */
sub_error(){} /* обработка ошибки */
    ликвидировать беспорядок

время сейчас немного другое...

Ну и как ты будешь удалять локальные объекты в call sub_error();? GC состряпаешь? А когда вернешся из call sub_error();, что делать будешь?

Неактивен

Powered by PunBB
© copyright 2001–2026 iFiction.Ru