При всем уважении к вам, смею заметить, что вы не понимаете сути текста, который написал Дейкстра.
Есть перевод статьи Дейкстры
http://hosting.vspu.ac.ru/~chul/dijkstra/goto/goto.htmЦитата:
Мое второе замечание - то, что наши интеллектуальные силы в большей степени связаны со статическими отношениями, и что наши способности представлять процессы, развивающиеся во времени, развиты относительно плохо. Исходя из этого, мы должны делать (как мудрые программисты, осознающие свои ограничения) все возможное, чтобы сократить концептуальную пропасть между статической программой и динамическим процессом, чтобы сделать соответствие между программой (разворачивающейся в пространстве текста) и процессом (разворачивающимся во времени) настолько очевидным, насколько это возможно.
Если текст программы заменить на Дракон-схему программы, то суть останется та же.
Основной вопрос из которого следует, что goto вреден:
Цитата:
Давайте теперь рассмотрим, как мы можем охарактеризовать состояние процесса. (Вы можете представить себе этот вопрос очень конкретно: предположите, что процесс, рассматриваемый как последовательность действий во времени, остановлен после произвольного действия, какие данные мы должны иметь, чтобы точно определить порядок, в котором следует повторить процесс, чтобы дойти до той же точки?)
Цитата:
Разнузданное применение оператора go to имеет прямым следствием то, что становится ужасно трудно найти осмысленный набор координат, в которых описывается состояние процесса.
Таким образом возьмем произвольную Дракон-схему и задумаемся над тем, какие "координаты" нам нужны для того, чтобы, если остановить процесс в произвольный момент, можно было точно определить весь маршут (то есть всю предыдущую последовательность действий). И все те же замечания Дейкстры, которые касаются текста, также применимы и для Дракон-схем.
Если есть простая последовательность операторов, то легко найти такую коодинату.
Если есть развилка (IF), то также легко указать коодинату.
Если есть обычный цикл, то также можно указать коодинату.
А если есть структуры, в которых участвуют "неструктурные" переходы (в тексте они могут конструироваться при помощи goto, break, continue, return, а Дракон-схеме путем указатения адреса шампура (возможно не точная терминология)), то такую коодинату сложно найти.
Дейкстра пишет:
Цитата:
С оператором go to можно, конечно, все еще описывать состояние процесса однозначно при помощи счетчика числа действий, выполненных от старта программы (т.е., некоторой разновидности нормализованных часов). Трудность в том, что такие координаты, хотя они и уникальные, просто бесполезные.
То есть это равносильно тому, что человек должен последовательно прокручивать алгоритм или глазами перемещаться по всем иконкам Дракон-схемы столько раз сколько алгоритм должен выполнится. (В обычных языках программирования - это эквивалентно тому, что программист при помощи пошагового отладчика "прокручивает" программу)
Тем самым мы приходим к тому, с чего начали, что при наличии таких "неструктурных" элементов возникает разрыв между статическим представлением Дракон-схемы и динамическим выполнением алгоритма.
А если исключить "неструктурные" элементы, которые могут быть в Дракон-схемах, то статическое представление алгоритма в виде схемы будет описывать динамический процесс выполнения алгоритма при наличии небольшого количества "координат".
Таким образом,
Цитата:
Мое второе замечание - то, что наши интеллектуальные силы в большей степени связаны со статическими отношениями
схема станет более эргономичной.