Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Историческая справка. Согласно классической теореме Бома и Джакопини, всякая реальная программа может быть

Читайте также:
  1. II Историческая обстановка на Руси накануне начала княжения Александра Невского
  2. А) Культурная принадлежность и историческая ситуация как факторы, обусловливающие содержательный аспект душевной болезни
  3. АНАЛИТИЧЕСКАЯ СПРАВКА О ДЕЯТЕЛЬНОСТИ ПЕДАГОГА
  4. Биографическая справка
  5. Внутриние и внешне-политическое положение Ка-на во второй половине XVIIIв. Историческая роль Абылай хана
  6. Глава 1. Доисторическая Греция. Вакханки. Появление Орфея
  7. Историко-географическая справка

Согласно классической теореме Бома и Джакопини, всякая реальная программа может быть построена из функциональных блоков (действий) и двух конструкций: цикла и дихотомического выбора (развилки) [1]. Эдсгер Дейкстра обогатил и усилил эту идею, предложив отказаться от оператора безусловного перехода goto и ограничиться тремя управляющими конструкциями: последовательность, цикл, выбор [2].

Дональд Кнут подверг критике тезис Дейкстры о полном исключении goto, продемонстрировав случаи, где goto полезен. В итоге возникла плодотворная дискуссия, строго говоря, не завершенная до сих пор, в ходе которой выявились четыре варианта мнений (табл. 4).

Таблица 4

Позиция участников дискуссии Используются три структурные конструкции? Используются заменители goto? Используются goto?
Вариант 1 Да Нет Нет
Вариант 2 Да Нет Да
Вариант 3 Да Да Да
Вариант 4 Да Да Нет

Вариант 1 описывает ортодоксальную позицию Дейкстры, согласно которой оператор goto имеет “гибельные последствия” и поэтому “должен быть исключен из всех языков программирования высокого уровня”. Исходя из этого были разработаны языки без goto: PDL [3], BLISS и др.

Вариант 2 отражает мнение ранних критиков Дейкстры, позиция которых выражается словами: “использование оператора goto может оказаться уместным в лучших структурированных программах”; “всегда были примеры программ, которые не содержат goto и аккуратно расположены лесенкой в соответствии с уровнем вложенности операторов, но совершенно непонятны, и были другие программы, содержащие goto и все же совершенно понятные”. Поэтому нужно “избегать использования goto всюду, где это возможно, но не ценой ясности программы” [4].

Как известно, полемика по goto “растревожила осиное гнездо” и всколыхнула “весь программистский мир”. Варианты 1 и 2 выражают крайние позиции участников дискуссии, между которыми, как казалось вначале, компромисс невозможен. Однако ситуация изменилась с изо­бретением и широким распространением заменителей goto, примерами которых являются: в языке СИ — операторы break, continue, return и функция еxit (), в языке МОДУЛА-2 — операторы RETURN, EXIT, процедура HALT и т. д.

Заменители — особый инструмент, который существенно отли­чается как от трех структурных управляющих конструкций, так и от goto. Они обладают двумя важными преимуществами по сравнению с goto:

1) не требуя меток, заменители исключают ошибки, вызванные путаницей с метками;

2) каждый заменитель может передать управление не куда угодно (как goto), а в одну-единственную точку, однозначно определяемую ключевым словом заменителя и его местом в тексте. В результате множество точек, куда разрешен переход, сокращается на порядок, что также предотвращает ошибки.

Вариант 3 описывает языки СИ, АДА и др., где имеются заменители и на всякий случай сохраняется goto.

Вариант 4 соответствует языку МОДУЛА-2, где также есть заменители, однако goto исключен. Следует подчеркнуть, что при наличии заменителей сфера применения goto резко сужается, так что удельный вес ошибок, связанных с его применением, заметно уменьшается; поэтому вопрос об исключении goto теряет прежнюю остроту.

Идея структуризации оказала большое влияние на практику. Практически во все императивные языки высокого уровня на этапе их разработки или позже были введены структурные конструкции цикла и ветвления, а также, что очень важно, различные заменители goto.


Дата добавления: 2015-08-21; просмотров: 76 | Нарушение авторских прав


Читайте в этой же книге: Классификация знаний | Что такое профессиональные знания? | Учебные экспертные системы | Визуализация экспертных систем | Визуализация методологий | Визуализация биологических алгоритмов | Другие примеры визуализации | Описание структуры деятельности | Нужен ли стандарт для описания деятельности? | Что такое атом? |
<== предыдущая страница | следующая страница ==>
Прочие операции| Четыре принципа структуризации блок-схем, предложенные Э.Дейкстрой

mybiblioteka.su - 2015-2024 год. (0.006 сек.)