ilovb писал(а):
Дэвид Парнас -- легендарная личность.
Он является автором концепции
абстрактных типов данных, чрезвычайно популярной в 1980-ых гг. в нашем Новосибирском филиале Института Точной Механики и Вычислительной Техники.
Всем известный набивший оскомину пример: абстрактный тип данных "
стек".
Аксиомы стека. Абстрактный тип данных "стек" как новая математическая сущность. Попытки создания "новой" математики последователями концепции, понятно, ни к чему не привели. Большое число "примеров" абстрактных типов, в которых кругом торчат
императивные "уши". Здесь удивляет другое. Почему никто не сказал, что
аксиомы стека -- это глупость. Есть аксиомы натуральных чисел, из которых и следуют все свойства стека, а аксиом стека просто не должно быть. Это классический пример того, что подавляющее большинство людей внушаемы, не только простых людей, но и принадлежащих научному сообществу. Впрочем,
вера в науке -- интересная, но другая тема.
Дэвид Парнас заслуженно считается одним из отцов современной
объектно-ориентированной технологии. И вполне мог бы почивать на лаврах. Но вот один лабух написал статью под названием "Использование принципов Парнаса в ... чего-то там в функциональном программировании". Дэвид не на шутку завелся и разразился гневной статьей с критикой формальных методов.
Хотя аргументация Д.Парнаса большей частью примитивна, научное сообщество позитивно отреагировало на справедливую критику текущего состояния дел в области формальных методов. Перестали кричать на каждом углу "Grand Challenge" и вообще стали более скромно себя вести.
В чем Д.Парнас безусловно прав, это то, что формальные методы практически не применяются в производственном программировании, их доля в мире менее процента. Это было подтверждено и на одном из обзорных пленарных докладов по истории формальных методов, посвященных сорокалетию формальных методов. Здесь необходимо уточнение: все же речь идет о
сильных формальных методах, таких как дедуктивная верификация. Например, статические верификаторы (см.
лекцию 2) наверняка используются более чем в 10% случаев. Но их применять могут все, не только специалисты по формальным методам, хотя лишь специалисты способны хорошо написать assert'ы.
Подчеркнем, что Дэвид Парнас не против формальных методов. Он лишь предлагает пересмотреть их основы, утверждает, что нет прогресса. А где он есть? Во всей мировой науке Computer Science ступор по меньшей мере последние 20 лет.
Д. Парнас не единственный, кто критикует формальные методы. Академик Виктор Иванников ранее говорил о бесполезности дедуктивной верификации. Однако продолжал учить дедуктивной верификации своих студентов в МГУ. Года три-четыре назад В.П. Иванников изменил свою точку зрения.
Дедуктивная верификация применяется для модулей ядра ОС Linux. Совсем недавно профессор Андрей Терехов из Питера, внедривший международный образовательный стандарт по Программной инженерии в Российском университетском образовании, сказал, что формальные методы -- это хе..ня. Наверное, он не стал бы бросаться такими словами, если бы почитал зарубежные работы или хотя бы познакомился с работами своих коллег из ИСП РАН. Впрочем, подобные суждения провоцирует слабость наших работ по формальным методам.
Есть другие причины неприменения формальных методов в практическом программировании.
Это неумение программистов писать формальные спецификации. Данная проблема была затронута
в одном из сообщений. Формальным методам учат только в ведущих мировых университетах. Инженеры-верификаторы -- это уровень PhD (кандидатской диссертации). Понятно, что таких немного. А специально систематически, писать формальные спецификации в мире больше нигде не учат. А надо бы.