Пару месяцев назад я написал довольно обширный текст о том, что под логическое программирование можно подвести некую “философскую” базу. nicka_startcev, разумеется, меня немного подкалывал – а вот сегодня закономерно впал в некую ересь. Читаем:
Глобальные Правила Игры должны быть расписаны в виде алгоритмов: делай раз, делай два, проверяй три, полученную сумму заноси в такую-то кассу.
Нормальная такая точка зрения для программиста, хорошо знающего только процедурное программирование. То, что записано, как алгоритм – то понятно. Все остальное должно быть в этом виде переписано. В общем, пресловутое “алгоритмическое мышление” в крайней стадии.
Но даже те, кто зверски пихал развитие этого “алгоритмического мышления” в школьную программу, не утверждали, что оно является единственно верным. Например, А. Г. Кушниренко в своих “лекциях” для учителей информатики упоминал (часть D2) о “процедурной, функциональной и логической традиции”. Обычная школьная информатика – процедурная (или “алгоритмическая”), функциональная требует понимания слова “функция“, логическое программирование кажется чем-то “не от мира сего”. А ведь с ним сталкивался любой, кто не прогуливал в школе другой предмет – “Основы государства и права”.
Если кто помнит, то система законодательства в юридической теории – это совокупность правовых норм, состоящих из гипотезы (условий применимости нормы), диспозиции (требуемых действий) и санкции (что будет, если диспозиция не выполнена). Эти части, как учит нас Википедия, являются опциональными – например, в большинстве статей УК нет гипотезы, а присутствует лишь диспозиция и санкция. В нормах Конституции, напротив, отсутствует санкция – зато ее можно почерпнуть из УК (”никто не может быть лишен жизни” и куча статей УК – от “убийства” до “причинения смерти по неосторожности”). Законодательство оказывается типичной “базой знаний” – только изложенной не на Prolog, а на естественном языке.
Такие же базы знаний – это внутренности, например, DLP-систем и вообще – близких к ним “по духу” систем информационной безопасности. Что-то построено на основе регулярных выражений, где-то используются хитрые Domain-Specific Languages – но общая “парадигма программирования” тут оказывается “логической”. Оказывается, что написанные в виде “правовых норм” документы переводятся в машинно-читаемый вид в виде системы неких правил – и это очень близко к “логическому программированию” в его чистом рафинированном виде.
Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).