Про пользу от философии

Пару месяцев назад я написал довольно обширный текст о том, что под логическое программирование можно подвести некую «философскую» базу. [info]nicka_startcev, разумеется, меня немного подкалывал — а вот сегодня закономерно впал в некую ересь. Читаем:

Глобальные Правила Игры должны быть расписаны в виде алгоритмов: делай раз, делай два, проверяй три, полученную сумму заноси в такую-то кассу.

Нормальная такая точка зрения для программиста, хорошо знающего только процедурное программирование. То, что записано, как алгоритм — то понятно. Все остальное должно быть в этом виде переписано. В общем, пресловутое «алгоритмическое мышление» в крайней стадии.

Но даже те, кто зверски пихал развитие этого «алгоритмического мышления» в школьную программу, не утверждали, что оно является единственно верным. Например, А. Г. Кушниренко в своих «лекциях» для учителей информатики упоминал (часть D2) о «процедурной, функциональной и логической традиции». Обычная школьная информатика — процедурная (или «алгоритмическая»), функциональная требует понимания слова «функция«, логическое программирование кажется чем-то «не от мира сего». А ведь с ним сталкивался любой, кто не прогуливал в школе другой предмет — «Основы государства и права».

Если кто помнит, то система законодательства в юридической теории — это совокупность правовых норм, состоящих из гипотезы (условий применимости нормы), диспозиции (требуемых действий) и санкции (что будет, если диспозиция не выполнена). Эти части, как учит нас Википедия, являются опциональными — например, в большинстве статей УК нет гипотезы, а присутствует лишь диспозиция и санкция. В нормах Конституции, напротив, отсутствует санкция — зато ее можно почерпнуть из УК («никто не может быть лишен жизни» и куча статей УК — от «убийства» до «причинения смерти по неосторожности»). Законодательство оказывается типичной «базой знаний» — только изложенной не на Prolog, а на естественном языке.

Такие же базы знаний — это внутренности, например, DLP-систем и вообще — близких к ним «по духу» систем информационной безопасности. Что-то построено на основе регулярных выражений, где-то используются хитрые Domain-Specific Languages — но общая «парадигма программирования» тут оказывается «логической». Оказывается, что написанные в виде «правовых норм» документы переводятся в машинно-читаемый вид в виде системы неких правил — и это очень близко к «логическому программированию» в его чистом рафинированном виде.

Про пользу от философии: 3 комментария

  1. Эх, жаль компьютерра сдохла. Любили они там на подобные темы мысью по древу растекаться…
    Вообще, если не сильно влом, не мог бы ты кратко, для чайников рассказать про неалгоритмические способы программирования? На уровне «для младшего школьного возраста», т.е. без привлечения матана и прочих сложностей.
    Было бы крайне занимательно.

    1. “Для младшего школьного возраста” — вряд ли, там довольно интересные математические идеи и хотелось бы не переходить к объяснению «на пальцах». Формул писать не буду, но вот «отрывочные знания» из школьной геометрии и, может быть, первого семестра матана были бы полезны (точнее, не сами знания, а понимание аксиоматического подхода).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *