Инвариантное программирование: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
оставлено: не понимаю, о чём статья, но бессвязным текстом не выглядит |
м Евгений Мирошниченко переименовал страницу Инвариантно-основанное программирование в Инвариантное программирование: Согласно обсуждению на СО (короче и точнее) |
(нет различий)
|
Версия от 08:34, 9 августа 2019
Инвариантно-основанное программирование — методология программирования, при которой спецификации и инварианты описываются до основного тела программы. Описание инвариантов во время процесса программирования имеет ряд преимуществ: требует от программиста сформировать идеи о поведении программы явно до того, как их реализовать, и инварианты могут быть вычислены в процессе выполнения, что помогает выявить общие ошибки программирования. Более того, достаточно сильные инварианты могут быть использованы для формальной проверки программы на корректность, основываясь на формальной семантике тела программы. Однако для полной проверки нетривиальных программ потребуется язык программирования, совмещённый со спецификациями и объединённый в мощную систему формальных доказательств. В этом случае высокая степень автоматизации доказательств также возможна.
В императивных языках программирования основные организующие структуры — это блоки управления потоком выполнения, такие как цикл со счётчиком (for), цикл с предусловием (while) и условные операторы (if). Такие языки плохо подходят для инвариантно-ориентированного программирования, поскольку они принуждают программиста принимать решения об управлении потоком до написания инвариантов. Более того, такие языки программирования не имеют нужной поддержки для описания спецификаций и инвариантов, поскольку в них нет кванторов и они не могут выражать свойства высшего порядка.
Идея разработки программы совместно с ее доказательством сформурована Дейкстрой. Фактически написание инвариантов перед телом программы описывалось такими исследователями как M. H. van Emden, John C. Reynolds[англ.] и Ralph-Johan Back[англ.].
Литература
- Back, Ralph-Johan: Invariant Based Programming: Basic approach and Teaching Experience, Formal Aspects of Computing, 14 February 2008, ISSN 0934-5043 (Print) 1433-299X (Online)
Для улучшения этой статьи желательно:
|