Как известно, полемика по goto растревожила осиное гнездо и всколыхнула весь программистский мир . Варианты 1 и 2 выражают крайние позиции участников дискуссии, между которыми, как казалось вначале, компромисс невозможен. Однако ситуация изменилась с изобретением и широким распространением заменителей goto, примерами которых являются: в языке СИ операторы break, continue, return и функция еxit ( ), в языке МОДУЛА-2 операторы RETURN, EXIT, процедура HALT и т. д.
Вариант 2 отражает мнение ранних критиков Дейкстры, позиция которых выражается словами: использование оператора goto может оказаться уместным в лучших структурированных программах ; всегда были примеры программ, которые не содержат goto и аккуратно расположены лесенкой в соответствии с уровнем вложенности операторов, но совершенно непонятны, и были другие программы, содержащие goto и все же совершенно понятные . Поэтому нужно избегать использования goto всюду, где это возможно, но не ценой ясности программы .
Вариант 1 описывает ортодоксальную позицию Дейкстры, согласно которой оператор goto имеет гибельные последствия и поэтому должен быть исключен из всех языков программирования высокого уровня . Исходя из этого были разработаны языки без goto: PDL, BLISS и др.
Позиция участников дискуссииИспользуются три структурные конструкции?Используются заменители goto?Используются goto?Вариант 1ДаНетНетВариант 2ДаНетДаВариант 3ДаДаДаВариант 4ДаДаНет
Дональд Кнут подверг критике тезис Дейкстры о полном исключении goto, продемонстрировав случаи, где goto полезен. В итоге возникла плодотворная дискуссия, строго говоря, не завершенная до сих пор, в ходе которой выявились четыре варианта мнений (табл. 4).
Согласно классической теореме Бома и Джакопини, всякая реальная программа может быть построена из функциональных блоков (действий) и двух конструкций: цикла и дихотомического выбора (развилки). Эдсгер Дейкстра обогатил и усилил эту идею, предложив отказаться от оператора безусловного перехода goto и ограничиться тремя управляющими конструкциями: последовательность, цикл, выбор.
ИСТОРИЧЕСКАЯ СПРАВКА
В данной главе сделана попытка обосновать заявленные выводы.
Принципы структуризации, положенные в основу визуального синтаксиса языка ДРАКОН, являются искомым решением.
Чтобы разработать эффективный метод структуризации для визуального варианта, необходимо, взяв за основу правила текстового структурного программирования, значительно модифицировать их.
Для визуального программирования подобное утверждение неправомерно. Можно, конечно, тупо перенести правила текстового структурного программирования на визуальный случай. Но это не будет хорошим решением.
Традиционное (текстовое) структурное программирование является, по-видимому, наилучшим решением соответствующей задачи для традиционного (текстового) программирования.
Несмотря на наличие целого ряда общих признаков, текстовое и визуальное структурное программирование существенно разные вещи.
Размышляя над проблемой, автор пришел к следующим предварительным выводам или, лучше сказать, предположениям.
Чтобы отграничить теоретические аспекты визуального структурного программирования от второстепенных деталей, нам понадобится термин шампур-метод . Впрочем, иногда выражения шампур-метод и визуальное структурное программирование будут использоваться как синонимы.
Попробуем включить воображаемый боковой прожектор и взглянуть на проблему под другим углом зрения. Существует некоторое, причем весьма глубокое, хотя и не всегда очевидное сходство между изложенными выше идеями и концепцией структурного программирования. Исходя из этого, введем термин визуальное структурное программирование и определим его как набор правил, совпадающий с визуальным синтаксисом языка ДРАКОН. В концентрированном виде эти правила изложены в гл. 15.
ПОСТАНОВКА ПРОБЛЕМЫ
Наше мышление основано в первую очередь на зрительном восприятии.Вадим Глезер
ВИЗУАЛЬНОЕ СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
by PBworks 5 years, 11 months ago
Комментариев нет:
Отправить комментарий