2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 
Сообщение09.05.2006, 05:23 
Заслуженный участник


15/05/05
3445
USA
wowec писал(а):
...Кстати, его сайт сильно хвастается, в каких крутых областях этот пролог применяется.

IBM тоже хвастался(-ась,-ись), что их VisualAge Smalltalk применяется каким-то швейцарским банком. Всвязи с чем вспомнилось, что в теории вероятностей событие с вероятностью ноль "случается чаще", чем невозможное событие.

 Профиль  
                  
 
 
Сообщение11.05.2006, 19:31 
Заслуженный участник
Аватара пользователя


07/03/06
1898
Москва
Цитата wowec
Цитата:
По поводу того, в какой последовательности изучать Пролог - тут, наверное, сколько людей, столько и мнений. Изложу своё. (Иногда заглядываю на прологовский форум http://progz.ru/forum/viewforum.php?f=10, там частенько обсуждаются вопросы его оптимального изучения и преподавания, но все они выглядят для меня какими-то слишком высокими материями. Наверное, для тех, у кого Пролог основной рабочий инструмент, а не дополнительный (как у меня), мир выглядит по-другому). Во-первых, заведите себе книжек (классикой являются Клоксин-Меллиш, Братко, и Стерлинг-Шапиро, все есть в инете): например, http://dstu2204.narod.ru/3sem/lp/bratko.cab, или посмотрите на http://progz.ru/forum/viewtopic.php?t=11193, на lib.org.by тоже кое-что есть. Мне в своё время книжка Братко здорово помогла. Изучение, по-моему, лучше начинать с чисто логических вещей, убрав всё процедурное (ввод-вывод, отсечение, динамическое добавление-удаление предложений и т.п.). Поначалу даже лучше и без рекурсии обойтись. Например, рассмотреть задачку типа построения таблиц истинности формул логики высказываний: на базе логических связок с заданными таблицами
'не'(0,1).
'не'(1,0).
'или'(0,0,0).
'или'(0,1,1).
'или'(1,0,1).
'или'(1,1,1).
и т.п. построить таблицу истинности при помощи заданной формулы, например,
'->'(X,Y,Result) :- 'не'(X,NotX), 'или'(NotX,Y,Result).
или помоделировать задачки из анализа логических схем (типа задаём сигналы на входе и смотрим, что будет на выходе или наоборот). Ещё пример - поиск команд в таблице чемпионата по какому-нибудь критерию (типа запросов на выборку в sql).
2. добавить рекурсию. Типичные задачи: программа "родственные отношения" (есть во всех книжках и в инете), программа поиска пути по карте каких-нибудь транспортных маршрутов или схеме метро (пока без нахождения пути, а просто найти ответ на вопрос: до каких пунктов можно с пересадками добраться из заданного).
3. рассмотреть понятие составного терма ("структуры"). Здесь примеры на символьную арифметику: дифференцирование, упрощение, раскрытие скобок и т.п.
4. Списки. Теперь можно добавлять нахождение пути по карте с занесением этого пути в список. Ну и всякие простые операции со списками: member, конкатенация, обращение, etc. Кстати задача Эйнштейна.
5. Численные расчёты: вычисление факториала, чисел Фибоначчи и т.п.
6. Основы процедурной семантики (программа "большой, тёмный" из книжки Братко), отсечение. Только самые простые и необходимые вещи типа добавления отсечения в вычисление факториала, чтобы не было переполнения стека. По опыту, студенты коммерческого вуза процедурную семантику не понимают даже после 1 семестра изучения (а многие - и вообще никогда), поэтому лучше их этим сильно не грузить - только самое необходимое.
7. Метод решения задач "поиск в пространстве состояний". Программа "обезьяна и банан". На эту тему могу дать учебный пример генератора расписаний занятий.
8. Форматированный вывод, файловый ввод-вывод.
9. Динамическое добавление-удаление предложений программы. "Самообучающийся факториал", динамическая СУБД.
10. Метапредикаты (not, =.. , call, functor, clause, etc.)
11. Предикаты высших порядков (bagof, setof, findall).
Ну по ходу процесса будет видно: возможно, что-то надо копать глубже, а что-то вообще опустить.
Наверное, параллельно надо проходить какие-то теоретические основы (например, минут по 10 в начале каждой лекции). По крайней мере, по-моему, обязательно следующее: логика высказываний - логика предикатов 1 порядка - клаузальная форма логики предикатов - клаузы Хорна, т.к. это лежит в основе логич. программирования.

Большое спасибо за интересные и полезные интернет ссылки, мнения и рекомендации.

 Профиль  
                  
 
 
Сообщение25.05.2006, 18:32 
Аватара пользователя


25/05/06
3
Украина, Харьков
Возможно Пролог кто-то и считает сошедшим со сцены. Однако, рекомендую обратить внимание на вполне современную технологию XSLT - язык преобразования XML.
Я, будучи хорошо знаком и с Прологом и с XSLT, могу сказть что существуют очень мощные параллели. Попробуйте например решить задачку замены в любой строке одного слэша '/' двумя '//' не имея "прологового" мышления в рекурсиях и итерациях.
Резюме, если пролог умер, то инкарнация есть! Он возродился в XSLT

 Профиль  
                  
 
 
Сообщение25.05.2006, 19:59 
Заслуженный участник


15/05/05
3445
USA
Mick-R писал(а):
Возможно Пролог кто-то и считает сошедшим со сцены. Однако, рекомендую обратить внимание на вполне современную технологию XSLT - язык преобразования XML.
Я, будучи хорошо знаком и с Прологом и с XSLT, могу сказть что существуют очень мощные параллели. Попробуйте например решить задачку замены в любой строке одного слэша '/' двумя '//' не имея "прологового" мышления в рекурсиях и итерациях.
Резюме, если пролог умер, то инкарнация есть! Он возродился в XSLT

То, что Вы описываете, относится скорее к рекурсивному подходу, чем непосредственно к Прологу (логический вывод, метод резолюции). В этом смысле Лисп не хуже.
Кстати о реинкарнациях, фирма Ericsson в свое время создала непроцедурный язык Erlang для телекоммуникационных приложений (сейчас OpenSource). Авторы утверждают, что разработали его под влиянием Пролога.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 19 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group