Пролог - попытка объяснить без программирования

Поделиться
HTML-код
  • Опубликовано: 28 дек 2024

Комментарии • 17

  • @АзатМингалеев-в1к
    @АзатМингалеев-в1к 3 года назад +3

    Вспомнить решил уникальные и самобытные языки. Наткнулся на ваш канал, ностальгия накрыла меня...
    P. S. А на Prolog можно написать программу, которая считает что-то. Например хрестоматийные факториалы и числа Фибоначчи, как минимум?

    • @DmitryRomanov
      @DmitryRomanov  3 года назад +1

      Приятной ностальгии )))
      Считать можно всё, и несложно. Когда рекурсию разбирал, было всякое похожее вроде: e.kspu.ru/course/view.php?id=2387#section-28 ))) Гостем пускать должно
      Для примера - у нас есть поразительно офигенный физик в ИМФИ (Якушевич Валерий Иванович, ему за 60 уже), и он прямо жёсткий железячник, но пишет вообще всё на VisualProlog. Так что можно.

  • @АндрейСтрогонов-з1о

    Чем это отличается от pattern matching в Haskell?

    • @DmitryRomanov
      @DmitryRomanov  Год назад

      Я не знаю Haskell, могу только гадать))).
      Судя по habr.com/ru/post/152889/#recursive-type , Хаскель тоже автоматически делает рекурсию при вызове, как и Пролог. У Пролога только есть точки отката для управления перебором по дереву, но я Хаскель совсем не трогал и дальше сравнивать не квалифицирован. Спросил товарища, она хорошо знает Пролог и хотела изучить Хаскель. Ответит, напишу.

    • @DmitryRomanov
      @DmitryRomanov  Год назад

      Подумал немного, есть один вариант ответа ещё: Хаскель идёт по шаблонам, и, когда шаблон совпадает по числу/типу аргументов, вычисляется и возвращается результат.
      В прологе смотрят только число аргументов, и всё. Часто бывает так, что некоторый аргумент слева вообще не известен, и, после входа в правую часть и попытки согласовать или получается это сделать (тогда, и только после этого, неизвестная часть слева примет, наконец, какое-то значение). И, если не примет, или надо будет найти все ответы, поиск будет продолжен дальше с заходом в следующие шаблоны, даже если были попадания выше.
      P.S. товарищ ещё до хаскеля не дошёл, помочь не смогла.

  • @peterkoloskij488
    @peterkoloskij488 Год назад

    Здравствуйте!
    Подскажите, пожалуйста, нет ли описания логики работы пролога? То есть каким образом при обработке запроса происходит обработка графа, как проверяются сложные запросы и тд.
    Заранее благодарю!

    • @DmitryRomanov
      @DmitryRomanov  Год назад

      Есть книга Адаменко и Кучукова:
      www.studmed.ru/adamenko-a-kuchukov-a-logicheskoe-programmirovanie-i-visual-prolog_497a98371ed.html
      11я глава вроде про это

    • @peterkoloskij488
      @peterkoloskij488 Год назад +1

      @@DmitryRomanov Сердечно благодарю!)

    • @DmitryRomanov
      @DmitryRomanov  Год назад

      @@peterkoloskij488 в книге есть ещё где-то глава, где показано, как переписать на прологе все ключевые конструкции обычных языков - условный оператор, цикл, функцию. Сильно помогает голову настроить на пролог и понять механику исполнения.

  • @ФилиппДруан
    @ФилиппДруан 3 года назад +1

    Скажите, а сильно ли мешает отсутствие ИЛИ и НЕ в Прологе?

    • @DmitryRomanov
      @DmitryRomanov  3 года назад

      ИЛИ там просто есть )))
      Если хотите проверить A || B, то пишете (A ; B).
      Пример:
      ---
      a.
      b :- fail.
      c :- fail.
      ?- (a ; b), writeln('ok').
      ---
      Напишет "ок".
      И НЕ там тоже есть ))), но оно применяется только к тому факту, который можно найти и доказать. Это вы почувствуете в ходе практики. Сейчас спешу, но примерно так вспоминается:
      goal :- not(A), ... не получится, надо сперва найти A, а потом делать NOT:
      goal :- , not (A), .

  • @Olegach21
    @Olegach21 4 года назад +2

    Если интерпретатор поддерживает юникод, можно попробовать эмодзи использовать в названиях :)

    • @DmitryRomanov
      @DmitryRomanov  4 года назад

      Надо, но эти видосы уже шли "в ночь" - решил, что или запишу весь цикл как смогу (до рекурсии и списков), или брошу - на семинарах уже глянули и так.
      А в следущем году, особенно если опять нагрузка изменится, надо, правда, эмодзи жахнуть )))

  • @АйдысМонгуш-х7ъ
    @АйдысМонгуш-х7ъ 3 года назад

    Можете помочь с лабораторным работой по visual prolog 5.2?

    • @DmitryRomanov
      @DmitryRomanov  3 года назад +1

      У меня его нет (он платный, да и у меня линукс). Могу ответить на вопросы, но без спойлеров - только подтолкнуть. Преподаватель не просто так вам задания дают, и их надо думать лично, иначе никак - хоть и тяжело это :-\
      Держитесь, пишите 🤝

  • @nsurviver1460
    @nsurviver1460 Год назад

    ?

    • @DmitryRomanov
      @DmitryRomanov  Год назад

      Первое знакомство с Прологом или видео где-то затупило ))) ?