Cтраница 3
Такого типа абстрактные машины находят широкое применение при изучении и проверке свойств программ, поскольку хорошо определенная абстрактная машина позволяет отвлечься от излишних подробностей. [31]
Характерной особенностью такого подхода является то, что преследуется цель доскональ него изучения свойств программ на чисто синтаксическом уровне или, в более общем случае, свойств, зависящих только от некоторых точно сфор. [32]
Объекты типа процесс сохраняют нулевые атрибуты уровня, уровни же предварительно распределенных объектов типа контекст регулируются при логическом изъятии этих объектов из списка предварительно распределенных и связывании их в динамическую цепь. Существенно, что объекты типа процесс имеют нулевой уровень, так как благодаря этому свойству программы управления процессами могут манипулировать ими ( и ссылаться на них) без риска вызвать нарушение уровня. [33]
В любой программе некоторые ячейки памяти содержат числа, которые по смыслу задачи, решаемой программой, истолковываются - замещают или представляют определенные классы объектов реального мира или их свойства. Роль человека, разрабатывающего модель, состоит в том, что он использует при моделировании эти естественные свойства программ ЭВМ. Эти свойства могут быть использованы для имитации поведения человека, однако в своей сущности эти программы остаются обычными программами ЭВМ. [34]
Разрабатывая алгоритм, следует, таким образом, учитывать, можно ли будет достаточно просто проконтролировать программу, составленную по выбранному алгоритму, и в случае когда предвидятся большие затруднения, нужно отдать предпочтение другому, более выгодному для этапа отладки, алгоритму. Нужно всегда помнить, что главным критерием ценности программы является ее правильность, и для гарантирования такого свойства программы следует жертвовать другими показателями, такими, например, как скорость работы или требуемый объем памяти. Давно ушли в прошлое те времена, когда программу оценивали только по количеству команд в ней. [35]
![]() |
Диалоговое окно мастера AppWizard при создании программы Test с перемещаемой панелью инструментов и строкой состояния ( Step 4. [36] |
При создании нового приложения с помощью AppWizard в главное окно программы можно включить перемещаемую панель инструментов, строку состояния или оба эти элемента, задавая соответствующие установки в окнах мастера AppWizard. Панель инструментов и строка состояния, сгенерированные AppWizard, содержат типичный набор компонентов и, вероятно, их необходимо будет изменить в соответствии с фактическими командами и свойствами программы. [37]
В статических программах последовательность выполнения операторов задается в явном виде и может быть установлена без выполнения программы. В динамических программах последовательность выполнения операторов или команд устанавливается либо уточняется в ходе реализации программы. Свойство программ изменять организацию связи между операторами и командами называется самоизменяемостью. [38]
Это позволяет избегать неправильных шагов, особенно на стадии освоения программы. К аналогичным результатам приводит и способность программы после каждого действия оператора автоматически сохранять результат. Это свойство программы сохранит вам массу нервных клеток, когда после набора вами сметы из полутора сотен расценок какой-нибудь электрик обесточит ваше помещение, выключив методом научного тыка не тот пакетный выключатель. [39]
Реальная программа, как правило, обеспечивает выполнение значительно большего количества команд, чем их число в самой программе. Это возможно благодаря тому, что некоторые серии команд программы выполняются многократно, подвергаясь в случае необходимости преобразованиям. Такое свойство программ обеспечивают, включая э их состав группы операторов, называемые циклами. [40]
Реальная программа, как правило, обеспечивает выполнение значительно большего количества команд, чем их число в самой программе. Это возможно благодаря тому, что некоторые серии команд программы выполняются многократно, подвергаясь в случае необходимости преобразованиям. Такое свойство программ обеспечивают, включая в их состав группы операторов, называемые циклами. [41]
![]() |
Аксиомы преобразования утверждений при обратном просмотре. [42] |
Число повторений цикла может быть различным в зависимости от значения В. Поэтому нам необходимо третье утверждение для точки внутри цикла ( называемое индуктивным утверждением или инвариантом цикла ], чтобы мы могли применить для доказательства правильности метод математической индукции. Индуктивное утверждение должно описывать все свойства программы, которые инвариантны для выбранной точки в цикле. [43]
Со времени появления этой работы многие исследователи пытались построить эффективные алгоритмы для этой задачи и реализовать их программно. Эти усилия предпринимались часто в рамках конкретных проектов в области автоматизации программирования и вертификации программ. Это делалось потому, что свойства программ, которые пытаются установить, иногда сводимы к утверждениям о сложении натуральных чисел. [44]
Разумеется, важно разработать некоторые средства для построения планов с циклами или другие методы равной силы. Я не вижу каких-либо существенных проблем, которые могли бы возникнуть при формулировании системы в терминах теории алгоритмов, и, по-видимому, ограничения, которые накладывают аксиомы причинности на формирование плана, являются всего лишь результатом сравнительно слабого еще развития теории. Например, вызывает большие трудности доказательство желаемых свойств программ, таких, как эквивалентность и конечность, в то время как относительная польза от этого невелика. Так, в случае простых циклов индуктивное предположение при доказательстве конечности должно гарантировать, что на предварительные условия свободы п-й итерации не могло повлиять выполнение ( п - 1) - й итерации. [45]