Александр Ильин писал(а):
... Так что не знаю, насколько он фундаментален. Где у самого Дейкстры можно прочитать обоснование? Дайте кто-нибудь ссылку на первоисточник, пожалуйста.
В своей книге "Дисциплина программирования", Дейкстра описывает мини язык, который он по ходу книги развивает и добавляет туда новые элементы. Сначала появляется оператор "пропустить", затем "отказать", затем "набор охраняемых команд" и наконец "набор охраняемых команд" немного преобразуется и получается цикл Дейкстры, хотя в самой книге он так не называется.
Вот как происходит переход от "набора охраняемых команд" к циклу:
Цитата:
Конструкция if-fi представляет собой только один из двух возможных способов построения оператора из набора охраняемых команд. В конструкции if-fi состояние, при котором все предохранители имеют ложные значения, ведет к отказу. В нашей второй форме мы разрешаем, чтобы состояние, при котором нет ни одного предохранителя с истинным значением, приводило к правильному завершению; поскольку в этой ситуации не запускается никакой список операторов, вполне естественно, что при этом возникает семантическая эквивалентность с пустым оператором. Однако это разрешение на правильное завершение, когда нет ни одного предохранителя с истинным значением, дополняется тем, что работе не разрешается завершаться, пока хотя бы один предохранитель является истиной.
Еще в предисловии к книге Дейкстра пишет:
Цитата:
Проанализировав в свете этого влияния все известные мне языки программирования, я пришел к выводу, что ни они сами, ни их подмножества не подходят для моих целей. С другой стороны, я считаю себя настолько не подготовленным к созданию нового языка программирования, что дал зарок не заниматься этим в ближайшее пятилетие, и я твердо знаю, что этот срок еще не вышел. (Прежде, помимо всего прочего, мне нужно было написать эту монографию.) Я попытался выбраться из этого тупика, создав лишь подходящий для моих целей мини-язык и включив в него только те элементы, которые представляются совершенно необходимыми и достаточно обоснованными.