...
...
Лекция 8
11 ноября 2011 года
Автоматическая декомпозиция и анализ знаков. Парсинг.
Декларативное программирование.
Пролог и теория формальных грамматик
Анализ (декомпозиция) знакового произведения. Парсинг.
Работы по ИИ.
Теория формальных грамматик. Наум Хомский. Syntactic Structures – 1956.
Синтактика и семантика в Формальной Грамматике. Феномен green ideas - виртуальный мир, где они возможны. Зеленые идеи борются - Филфак, книга Будагова.
Шествие идей Хомского. Создание птичьих терминологических языков - чтобы не понимали непосвященные в школу грамм. формализма. Форма Бэкуса-Наура (БНФ - BNF)для описания формальных языков.
Более подробно о Хомском и формальных грамматиках можно найти в Сети, сделав запрос "Хомский БНФ" - или из др кл слов из этого изложения.
Декларативные языки программирования
Пролог.
Эволюция языков программирования. Никлаус Вирт и Непейвода.
Языки обработки символьной информации.
Лисп. Пролог. РЕФАЛ – Анатолий Турчин.
Их особенности.
Процедурные (как?) и декларативные (что?) языки программирования
Декларативные языки программирования
– мыслить в терминах ЦЕЛЕЙ – что нужно?.
Сама сущность Пролога – указывать не КАК сделать – а ЧТО сделать.
Понятие предиката.
Предикация - это любое суждение
О чем угодно - это есть минимальное предложение
Например – что ты мужчина – сразу на Прологе man(Сергей) – одноместный
Ты – сын Ивана двуместный dad (Иван, Сергей)
Может быть многоместный
Простейшая процедура работы с Прологом
Пролог – программа –
Закодированный предикат – «отец»
…
Dad (tom,pete)
…
Запрос –
Dad (X,pete)
…
Ответ –
X = pete
…
Сложные конструкции –
DED (X,Y) :- DAD (X,Z), DAD (Z,Y).
…
Особенности лаб работ.
Программы SENAN и GEOBASE.
…
Рефлексия - общее понятие о том, что это такое.
Р о том, что мы изучили - покрываем декларациями (предикатами об объектах) ПО - и задаем об этом ПО вопросы - ЧТО нам нужно.
Прологовский когнитивный процессор работает с предикатами и выдает ответ.
Но - обратим внимание - предикат DED - это уже предикат на двух предикатах DAD n t - это суждение - отец отца
А может быть еще интереснее - рекурсивное определение - неизвестное определяем через само неизвестное!
PREDOK (X,Y) :- PREDOK (X,Z), DAD(Z,Y).
Послав запрос -
PREDOK (X,tom)
мы получим всех предков Тома - если все они будут достаточно подробно описаны.
Это все очень мощные и эффективные свойства Пролога
...
...
|