Цитата(Oleg_Z @ 25.02.05 17:19)
Но цель развития программирвоания - свести все команды ближе к человеческому языку, и от безусловных переходов решили отказаться!
На ловца и зверь бежит
Недавно ковырялся в настройках ГТА вай сити(рульная фановая игра, если кто не слышал или не играет) и залез в скрипты. Уж насколько скрипты к человеческому языку приближены, а вот оказалось что там всё через GOTO работает
Ведь что есть гото, это машинный вариант человеческой команды-приветствия "да пошёл ты на... в..." только без мата. А уж сколько этими короткими фразами в человеческом языке можно сказать. Но неприятие нецензурной (отнюдь не нормативной
) лексики этого не позволяет. Тут же цивильно - ну не обидится же комп если на регистр его пошлют
Вывод, иногда
в некоторых прогах без этого обойтись сложно, если специально не подгонять задачу под возможности решения без гото.
То о чём ты спрашиваешь, уже когда-то обсуждалось на форуме, конкретно система "сушняк турбо" - моё извращение над турбовизион. Там приведён работающий макет проги с оконным интерфейсом. Естественно пупырится всё через гото, управление объектами тоже через гото. Можешь поискать на форуме инфу или скачать исходники с моего сайта. Принцип такой. Ядро программы состоит из бесконечного цикла на гото типа:
Код
BEGIN
A:=0;
1:
............................
GOTO 3;
2:
.............................
3:
CASE A OF
0: PROCEDUR1;
1: GOTO 2;
2: PROCEDUR2;
3: PROCEDUR3;
END;
IF A=100 THEN GOTO 100;
GOTO 1;
100:
END.
Цикл на гото и есть тело проги, он запускает объекты, процедуры, да всё что угодно. Каждая процедура или объект при запуске считывает данные и номер команды из массива глобальных переменных, туда же всё и сохраняет. Выполнив действие объект записывает команду в переменную и отрубается(сохраняет завещание с которым далее работает адвокат). Это может быть команда запустить что-то ещё, или предоставить дополнительную инфу и запуститься снова - зависит от вашей фантазии. Объект в данном случае становится как бы обычной процедурой, а не основой проги. Команда считывается в операторе CASE или IF THEN, и опять по кругу. Бесконечная мясорубка перемалывающая инфу. Основной прикол в том, что любые объекты не живут слишком долго и используются по очереди, а
значит обеспечивается совместимость несовместимых сабжей.