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 08:31

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Учусь на математика-программиста и поэтому призераю goto. В теории алгоритов есть постулат, что и без этого оператора можно создать ЛЮБОЙ алгоритм.
Использование этого оператора показывает несостоятельность программиста как такового.

Неактивен

0    0    #3
21.08.2007 18:53

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Для начала хочу отметить, что обсуждаем тут не опечатки и даже не грубейшие ошибки в словах русского, а конкретный вопрос программирования.
Я не говорю про Урок - там просто глупо делать циклы и условия, а исходный код старой версии я видел - там всё очень локанично и красиво реализовано, так что программирование квестов с обычным программированием сравнить можно только закрыв глаза.
Можно не лезть в рекурсию и обойти её в большенстве случаев, а приведённый выше пример решается без ГоТо, хоть и не так просто как с ним, с пмощью цикла с условием (или вообще с помощью любого цикла).

Неактивен

0    0    #4
21.08.2007 19:40

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Olegus t.Gl. написал:

VoLk88 написал:

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

Например? Можно привести пример? И, желательно, не просто демонстрацию, что данную задачу можно сделать без goto или рекурсии, а чтобы текст читался.

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

Неактивен

0    0    #5
22.08.2007 16:20

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Такой резонанс! Спасибо! Так вот, что хочу сказать:

Blob написал:

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

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

"Постулат" (или аксиома) - это то, что принимается без доказательств. Однако, насколько я знаю, доказатаельство ненужности goto - имеется. Так что это теорема, а не "постулат".

Доказательства для бесполезного оператора? Можно ещё напридумывать кучу операторов и надоказывать теорем, не правда ли?

Я не знал, сколько тебе лет, Олегус, но теперь уважаю твой возраст. А то, что ты экономист, а не программист по образованию очень жаль - ты пропустил множество предметов касающихся алгоритмов и программирования.
А не использую гоуту, так как про него и не помнил никогда - всегда на "подсознательном" уровне обхожусь и причём легко.

Кстати, загляни в исходники прекрасной ОС Linux - там есть довольно много goto. В целях увеличения скорости и уменьшения объёма кода. Хотя золотое правило - ограничиваться goto внутри одной процедуры...

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

Не люблю линух - я люблю пользоваться нужными мне программами, а не воевать всё время с пингвинами, уж простите.

Неактивен

0    0    #6
22.08.2007 18:24

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

2Sfunx
Какая глупость про if-goto... в селект-кейс (на С) вообще все пункты выполняются до бреак, начиная с отмеченого, и он является "полуаналагом" if then else (elseif elseif elseif...) end if (это для пущей понятливости)
И линух - не самая удобная (это 100%) и надёжная уж п(р)оверь. Виндой пользуются в России 95% пользователей и софт в основном под неё пишут. Дрова хрен под линух найдёшь, да просто КУЧА НЕДОСТАТКОВ! Но не о линухе...
А какая у тебя книжка "по программированию" - синияя или толстая? по программированию на чём? Наверное, у тебя клёвая книжка...
Вообще чё напали-то все? Если никто из вас не может без GoTo обойтись это совсем не значит, что больше никто не сможет! Короче, GoTo не есть истина и всегда обхожу эту дрянь, а ты, дорогой Sfunx можешь и дальше пользоваться чем тебе угодно, в любых целях и количествах. А если бы ты был повнимательнее при работе с отладчиком, то заметил бы, что jmp, jp, jnz не всегда используются как GoTo, чаще это тот самый If. А с машиной Тьюринга игрался? Читал статьи самого Тьюринга или Поста? Нет? Оно и видно...

Неактивен

0    0    #7
22.08.2007 19:08

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Olegus t.Gl. написал:

VoLk88 написал:

Вообще чё напали-то все?

Никто, собственно, на тебя не нападает. Просто были поставлены вопросы, выдвинуты аргументы, приведены выдержки из реального практического опыта. Всё это спокойно и степенно. Ты же, VoLk88, не привёл ни одного рационального аргумента — всё сплошь эмоциональные, я уж не говорю про оскорбления. Все отсылки к авторитетам также сделаны «в общем ключе». Попробуй продавить народ конкретикой — горлопаны всегда тушуются перед голыми прозрачными фактами. Глядишь, народ и уважительней отнесётся к твоему мнению.
Это типа как спорить на тему, что можно всю жизнь прожить, ни разу человека по яйцам не ударив, — дурной тон это, всегда можно решить проблему по-другому, более цивилизованно…

Знаете, мне вот больше делать нечего, как каждому расписывать всё и выжимать примеры. По-моему не маленькие тут, чтобы "вынь да положь". Так обычно в технарях учат - делай так и вот так, а теория лишняя. Я сам начал программировать и учился в основном по исходникам, а теперь сам же могу из теории и общих положений вынести для себя что-то. Может новый топик начать: "Великий и могучий Вайл Неубиваемый", так там найдутся те, кто скажет, что без него никак и всё тут и скрещивать самому цикл с условием можно, но геморно, хотя в машинном коде всё будет аналогично, просто дело удобства.
Пусть тушуются все кому не лень над голыми фактами, но киселём расплываться перед недопрограммистами я не собираюсь (и врядли кто-то хочет).
А проблемы собственно и нет никакой - Фон Нейман сказал, что принцип модульности один из основополагающих, а его перевирают те самые горлопаны и сами же удивляются: "а почему этот процессор(ОЗУ, видеокарта...) мне не подходят".

Неактивен

0    0    #8
23.08.2007 10:19

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

На ассемблере вчистую не программировал, но как я вижу (как понял) там goto=then, т.е. слово по-другому пишется, а смысл тот же.
Специально смотрел исходники: звезда номер 5, зомби 2, приключения маленького пупса написаны без GoTo. Также смотрел исходники некоторых крактро от Razor1911, тоже нет никаких GoTo.

Знаешь, Sfunx, лемминиги не лемминги, но не все же программёры, некоторым нужно просто печатать, другим рисовать, а третьим играть и для таких людей и работает программист.

А ассемблер и яву очень различаются, что приемлимо в ас-ре, то несовсем в яву. Я конечно понимаю, что в асме без этого никак (достаточно открыть любую прогу в отладчике и всё будет в сплошных переходах, но без этого-то там никак!)

В Java есть причудливая форма try{} (пытаться) и для неё catch (exception x){}, что является условным переходом, выполняющимся при появлении исключительной ситуации.

А Линухи стали ставить по школам и универам из-за дорогой лицензии Окон, вот и всё.

И вобщем мы тут говорим не о программировании огромнейших длиннющих программ, а о текстовых квестах.

Спасибо за замечания, конечно, но пока я GoTo ни разу не использовал за всю свою жизнь.

Неактивен

0    0    #9
23.08.2007 10:33

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Куда мы залезли с этим GoTo? Тут люди вообще целые топики создают:

КАК НА ПАСКАЛЕ ЗАДАТЬ МССИВ?
Сегодня 15:12:41 : Nex

)))))))

Неактивен

0    0    #10
23.08.2007 11:03

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Код:

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

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

Код:

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

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

Неактивен

0    0    #11
23.08.2007 11:54

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Вот решил спросить у друга-программиста (программист из онлайн-игры "империя звёзд").
простите за ненорматив, но из песни слова не выкинешь.

VoLk88 (17:20) :
ты на чём щас программируешь?

777 (17:36) :
вкрадце если, то на С++.

VoLk88 (17:37) :
скажи мне друг, сколько раз ты использовал goto?

777 (17:37) :
ниразу, а что?

VoLk88 (17:39) :
да тут утверждают, что блядь гото клёвый и частенько приходиться им пользоваться, чтобы не раздувать прогу до немыслимых размеров, но ведь это же всю структуру нарушает!

777 (17:41) :
но ведь switch() - это тот же goto... только стандартизованный.. а свитчей у меня тут пиздец сколько.... ))

VoLk88 (17:42) :
он больше на if похож...

777 (17:43) :
это if и goto вместе, я б сказал...
потому что каждый case - это метка.

777 (17:43) :
и это, сука, факт. )))

VoLk88 (17:45) :
в vb (хоть и говно) канает if... elseif...elseif...elseif...end if так он тоже как свич!

777 (17:46) :
это та же хуйня, что и просто  } else { if() {} } написать.. после компиляции то работает одинаково... просто синтаксис позволяет сократить запись..

VoLk88 (17:48) :
ну да, я это и имел ввиду
спасибо

777 (17:48) :
не за что.. рад был повыебываться по всякой хуйне вместе с Вами. бляяя...

Неактивен

0    0    #12
23.08.2007 15:21

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

никогда меня столько не цитировали)

Неактивен

0    0    #13
25.08.2007 18:30

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Ишь ты, спеси то сколько .... какие мы гуманитарии, млин. И откуда такие познания о учебном процессе "технарей", милый? Дал бы я тебе от имени всех технарей в твое интеллигентное рыло, сынок... да, Заратустра не позволяет.  Ты сам-то, прежде, чем игрулину свою написать, много if-теории прочитал, теоретик хренов?

Зерр, дружок, я кондидат в мастера спорта по боксу и жили бы мы в одном городе - рыло бы бито у тебя было, не сомневайся.
А игрулина моя - это всего 4 дня на программирования движка, написание сюжета и текстов, а также на весь дизайн. Игры я пишу не претендуя на всемирную славу, а просто от нечего делать.

Уважаемые, самые умные и хорошие, самые талантливые и честные, самые клёвые программисты и самые учёные из доучившихся, к вам обращаюсь. Мы тут говорили о конкретном операторе goto, а не о переходах как таковых. Логично предположить, что первое сообщение выглядело бы примерно так:
"Как вы относитесь к многострочным программам? Можно ли обойтись одной строчкой?".
Переходы всегда есть, а вот конекретно goto - нет!
Я про одно, а вы про другое, как малые дети всё равно что.

Разве что как цитату диалога (можно даже воображаемого) по аське с «близким другом». Типа как VoLk88 привёл лог общения с приятелем…

Меня обвиняют в фальсификации или я что-то не так понял?
...и не аська, а агент.

А ты, зеррр уважаемый, программист или писатель? Может и моё упущение, но в игры твои я не играл, да и как писателя тебя совсем не знаю, только вот на форуме и в ЖЖ читал, да и только.

Неактивен

0    0    #14
26.08.2007 16:57

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Уважаемый Olegus t.Gl.. (правда уважаемый), спасибо за мудрые замечания, но оскорблять я стал только в ответ и совсем этого не хотел, но "грубостью на грубость" - только так. Человек я мирный и спокойный, даже не смотря на спортивные достижения.
Только такой мудрый человек мог разрешить эту ситуацию. Я не могу похвастать программированием прошивок для кассовых аппаратов, но для многих компаний в нашем городе писал узкоспециализированный софт.
Боюсь моя вспыльчивсоть только из-за моего недопонимания (и не только моего как следствие) вот и всё.
Зерр конечно же великий популяризатор (да и в Красноярске я был. Даже возможно, что ещё приеду на какие-нибудь соревнования или сборы wink ), но после такой популяризации моя страсть к текстовым квестам немного поостыла.
У меня до сих пор чувство, что говорили мы о разных вещах... Всем спасибо!

Неактивен

0    0    #15
29.08.2007 17:02

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Так вот, Зерр, раз ты просто игрок, то, имхо, не должен делать такие выводы о "простоте программирования квестов", а тем более написать сам сюжет и придумать паззлы (даже тупые и простые) не так уж просто и ты это знаешь.
Я очень люблю твои обзоры и читаю их постоянно, но такие высказывания, как по поводу моей последней игры, имхо, не уместны от человека далёкого от программирования. Да, я знаю, что игра не сильная и ни на что не претендует, но не нужно этого. Я работал над парсером, сделал отличный движок, движок для лабиринта, написал три локации (очень объёмные, они разбиты на несколько локаций каждая) с альтернативными прохождениями (Хломид подбодрил и я начал работу), а вот после этой тёрки я бросил всю работу и желания возвращаться к ней нет никакого, хотя делал долго и получалось вроде неплохо. Кто-то будет тупо хаить, даже не зная как это делалось, чего стоило, а конструктивной критики почти не будет... А зачем мне это надо? Убивать своё время на ненужную работу? Удовольствия от работы над игрой в ближайшее время мне не удасться получить, а против себя я делать ничего не буду.
Простите, накипело.

Неактивен

0    0    #16
30.08.2007 10:20

VoLk88
Участник
Откуда: космодром Свободный
Зарегистрирован: 22.07.2007
Сообщений: 32
Вебсайт

***in trance we trust***

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

Подумай еще раз, не ищешь ли (даже подсознательно) повод, чтобы избавиться от поднадоевшей работы.

Я прекрасно знаю, что такое, когда работаешь только, чтобы закончить. Мне вообще теперь просто неинтересна тема ИЛ. Вряд ли вообще теперь буду работать в этом направлении. А про бездействие я вообще ничего не понял, суть в том, что мне просто теперь всё равно.

Неактивен

Powered by PunBB
© copyright 2001–2026 iFiction.Ru