17.4.4.
Стиль программирования
В
литературе о программировании задач общего назначения часто обсуждается понятие
"стиль программирования". Существует огромное множество книг о том,
как писать программы, и кажется, что в них можно найти рекомендации на все случаи
жизни.
Но
эти рекомендации слабо соотносятся со спецификой программирования задач искусственного
интеллекта и, в частности, систем, основанных на знаниях. Тот массив программ
на языке LISP, который накопился за многолетнюю практику применения этого языка
в программировании задач искусственного интеллекта, повергнет в ужас любого студента,
проштудировавшего классические труды по структурному программированию. В программах
зачастую используются нестандартные способы управления последовательностью выполнения
операторов, непредусмотренное никакими канонами динамическое связывание переменных
и совершенно "безответственные" манипуляции со структурами данных, такими
как списки свойств. Но в последние годы ситуация здесь значительно улучшилась
(с точки зрения приверженцев строго структурированного стиля оформления текста
программы). Чтобы убедиться в этом, сравните, например, обзоры [Winston and
Horn, 1983] и [Winston and Horn, 1981]. Как бы там ни было, но написать
хорошую программу на языке LISP — это искусство, которым владеют единицы, хотя
тексты большинства самых лучших программ искусственного интеллекта можно демонстрировать
студентам в качестве наглядного пособия, как не надо писать программы.
Но, к сожалению, более чем 25-летний опыт совершенствования стиля программирования на LISP не востребуется разработчиками новых языков и инструментальных сред. Для меня, например, остается загадкой, что же представляет собой хороший стиль программирования по отношению к языку (и среде) КЕЕ. Мне приходилось наблюдать, как инженеры по знаниям, много лет проработавшие с языками структурного программирования, буквально падали в обморок от мешанины подключения процедур, комбинированных методов и активных значений в КЕЕ-программах. Это не следует рассматривать как серьезную критику в адрес функциональных возможностей языка, а скорее как констатацию того факта, что любые сложные инструментальные средства нуждаются в адекватной методологии пользования ими. Единственным исключением, на мой взгляд, является язык OPS5, о методике использования которого написана прекрасная книга [Brownston et al, 1985].
| Maya 3D графика в кино и телевидении Воздействие испытаний ядерного оружия на здоровье населения Объектно-ориентированный язык программирования Java Объектно-ориентированное программирование Delphi Библиотека визуальных компонентов VCL и ее базовые классы Кроссплатформенное программирование для Linux Элементы управления Win32 Элементы управления Windows XP Файлы и устройства ввода/вывода Что такое экспертная система? Объектно-ориентированное программирование Инструментальные средства разработки экспертных систем Программирование на языке CLIPS Критерии и количественные характеристики надежности Расчет характеристик надежности невостанавливаемых резервированных изделий Расчет надежности системы с постоянным резервированием Интегрирование тригонометрических функций ; |