Важная информация

User Tag List

Страница 3 из 8 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 75

Тема: ПЗУ языка Пролог для БК0010

  1. #21

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Нажмите на изображение для увеличения. 

Название:	prolog-doc.jpg 
Просмотров:	103 
Размер:	20.6 Кб 
ID:	69090
    Начал переводить документацию Пролога-Д в текстовый вид, надеюсь кому-нибудь пригодится.
    Последний раз редактировалось Manwe; 26.05.2019 в 20:34.
    manwe.pdp-11.ru

  2. #22

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Начинаю выкладывать документацию Пролога-Д.
    "Информатика и образование" №4 1987
    Скачать: Prolog-1987-4.zip
    С удивлением узнал, что в 1987-ом году Пролог написан на Бейсике... Надеюсь, позже его перевели в коды.

    Скрытый текст


    С. Григорьев, М. Морозов
    Йошкар-Ола

    Давайте попробуем Пролог

    О традиционных языках и нетрадиционных задачах

    Когда рассматривают круг проблем, связанных с изучением и использованием языков программирования в школе, обычно имеют в виду традиционные языки - Бейсик. Рапиру, Паскаль и т.п. В чем главная особенность этих, так называемых процедурных, языков? В ориентации на вычислительную машину. Процедурные языки развивались как средство записи операций, выполняемых вычислительной машиной, и отражают непривычное для человека «машинное мышление». Такой подход предполагает: чтобы ЭВМ решила задачу, необходимо построить алгоритм, определяющий последовательность действий, и запрограммировать его, а машина, точно следуя по указанному пути, сделает то, что было задумано.
    Однако подобный образ действий вне физико-математических дисциплин сталкивается с серьезными трудностями.
    Ориентированный на математические расчеты Бейсик малопригоден для отражения предметного мира, скажем, географии, истории, иностранного языка. Даже большие возможности символьной обработки, заложенные в Рапире, оказываются недостаточными.
    Есть и другая проблема, возникающая при обучении школьников программированию на традиционных языках: поиск конкретных реальных задач, решать которые удобно, используя программирование.
    В вузе вопрос решается просто: студентов заставляют работать с численными методами решения математических задач. В младших классах школы проблему пытаются обойти, вводя исполнителя (например, «черепаху»), действующего как ЭВМ. В старших классах все-таки приходится обращаться к вычислению площадей, решению квадратных, нелинейных и других уравнений.
    Но школьникам еще предстоит долгий путь до практического применения этих численных методов! Это произойдет, например, когда в вузе будут изучены математические модели реальных физических процессов. А главное, в развитии и использовании современной вычислительной техники наметился явный отход от вычислений. Вчерашнему школьнику предстоит столкнуться в своей практической деятельности с экспертными системами, системами обеспечения принятий решений, базами знаний и всем тем, что принято называть технологией обработки знаний или искусственным интеллектом. А это потребует и других навыков, и другого, «немашинного», мышления.
    Возникает необходимость поиска новых, более адекватных средств общения с компьютерами; здесь нельзя не обратиться к активно развивающемуся сейчас логическому программированию и языку программирования Пролог.
    Появившись в начале 70-х гг. в лаборатории искусственного интеллекта в университете г. Марселя, Пролог на протяжении почти десяти лет оставался известен лишь узкому кругу специалистов. Но тот факт, что логическое программирование и сам Пролог были положены в основу японского проекта ЭВМ пятого поколения, привлек к языку всеобщее внимание.
    В отличие от традиционных языков, которые нужны для изложения способа решения задачи, на Прологе формулируется только ее постановка. Пользователь должен сообщить ЭВМ необходимые факты и несколько правил, описывающих, как эти факты соотносятся друг с другом, а она из полученной информации сформирует ответ на поставленный вопрос.
    В основу Пролога положен сложный математический аппарат логики предикатов первого порядка и теории логического вывода. Однако, чтобы изучить этот язык и работать с ним, нет необходимости вникать в тонкости математической логики, как нет необходимости вникать в принципиальную схему телевизора, прежде чем включить его вечером.
    Пролог очень легок для изучения и использования, но, несмотря на это, намного мощнее, чем любой другой язык, используемый в настоящее время на микро-ЭВМ. Часто оказывается, что программа на Прологе почти на порядок короче, чем на процедурном языке программирования.
    Против Пролога существует предубеждение, что его эффективная реализация возможна только на больших, мощных ЭВМ. Действительно, в недалеком прошлом это было так, и в СССР Пролог действовал только на ЕС ЭВМ и СМ ЭВМ. Теперь ситуация изменилась. Оказалось, что его можно приспособить для быстрой и эффективной работы на небольших машинах и при этом создать развитые средства программной поддержки, ориентированные на пользователя. Сейчас существует реализация Пролога для всех микро-ЭВМ с операционной системой СР/М, в Институте программных систем АН СССР разработана реализация для микро-ЭВМ «Ямаха».
    Эти достижения укрепили позицию Пролога как практичного, простого языка, при годного для использования в школьной информатике. Широкое применение языка такого типа планируется в болгарских школах для изучения гуманитарных наук; реализуется проект «Логика как язык компьютеров для детей». Аналогичные работы проводятся в СССР.

    Программа на Прологе-Д

    Опишем процесс программирования на упрощенном логическом языке, реализованном авторами и названном Пролог-Д.
    В процедурных языках программа состоит из операторов. В совокупности операторы описывают этапы, необходимые для достижения заданной цели. Программа на Прологе-Д состоит из последовательности предложений (фактов и правил), порядок которых значения не имеет. Совокупность фактов и правил называют базой данных.
    Вот пример простой программы:
    Код:
    МАМА (НАДЯ, АСЯ);	(1)
    МАМА (АСЯ, ДАША);	(2)
    БАБУШКА (А, В)<—МАМА (А, С), МАМА (С, В); (3)
    В этой программе предложения (1) и (2) - факты, а предложение (3) - правило. В конце каждого предложения ставится точка с запятой. Факты дают представление об объектах и действиях. Предложение «Надя - мама Аси», записанное в виде факта МАМА (НАДЯ, АСЯ), можно было бы записать и как МАМА (АСЯ, НАДЯ), (исправив при этом (2) на МАМА (ДАША, АСЯ), а в (3) записав БАБУШКА (В, А)).
    Важно, чтобы заданная последовательность аргументов сохранялась на всем протяжении программы.
    Правило (3) определяет зависимость одних объектов или действий от других и записывается в общем виде так:
    Код:
    СЛЕДСТВИЕ<-ФАКТ 1, ФАКТ 2;
    Его можно прочесть так: «Если ФАКТ 1 верен, ФАКТ 2 верен, то СЛЕДСТВИЕ тоже верно». Левая часть правила - СЛЕДСТВИЕ - называется головой, а составляющие правой части - целями.
    В программе (1)-(3) имена и слова БАБУШКА, НАДЯ, АСЯ, МАМА, ДАША называются атомами. Атомы - это константы, они не меняют своего значения при выполнении программы. Записываются атомы в виде последовательности букв, цифр и пробелов и начинаются с буквы. Константой является и целое, представляющее собой последовательность цифр.
    В правиле (3) А, В, С - переменные. Область действия переменных в Прологе ограничивается одним предложением. Если переменная в голове правила принимает какое-либо значение, то его же она принимает и в целях. Переменные могут обозначаться одной буквой или последовательностью букв (заканчивающейся апострофом или нижним подчеркиванием, когда значение переменной несущественно).
    Выражения вида (1) и (2) (в частности, выражение БАБУШКА (А, В)) называются термами.
    Программа должна заканчиваться одним или несколькими вопросами. Вопрос записывается как факт, но впереди должен стоять вопросительный знак. Если, например, к программе (1)-(3) добавить вопрос
    Код:
    ? БАБУШКА (НАДЯ, А);
    то машина ответит:
    Код:
    А=ДАША
    Вопрос должен соответствовать ряду условий:
    атом, с которого начинается вопрос, должен стоять в голове хотя бы одного из правил базы данных;
    вопрос не должен содержать новых атомов и переменных, в противном случае Пролог-Д ответит «не знаю».
    На вопрос, не содержащий переменных, программа ответит «да», если в базе данных есть факт, совпадающий с вопросом, или «нет» в противном случае; если вопрос содержит переменные, то будут напечатаны все возможные их значения. Например, на
    Код:
    ? МАМА (А, -);
    машина ответит
    Код:
    А = НАДЯ
    А = АСЯ
    Немного о реализации языка

    Поиск ответа на вопрос в Прологе-Д осуществляется доказательством теоремы, основанной на логических предложениях, из которых состоит программа. Доказательство осуществляется методом резолюций и основано на алгоритме, предложенном в работе: Sammut R. A., Sammut С. A. Implementation of UNSW-PROLOG // Austr. Comp. Journ. V. 15. P. 57-90 - и отличающемся достаточно высокой эффективностью.
    Интерпретатор языка реализован на Бейсике для ДВК-2 и занимает 8К байт. Этот выбор обусловлен тем, что Бейсик широко распространен. Кроме того, хотя реализация интерпретатора Пролога-Д на интерпретаторе Бейсика и уменьшает скорость работы, зато обеспечивается определенная экономия памяти, необходимой для хранения программы на Прологе-Д.
    В настоящее время разрабатывается версия Пролога-Д на Бейсике MSX для «Ямахи» и БК-0010. В ней несколько повышена скорость интерпретации.

    Простые программы для разных уроков
    География. База данных с фактами вида ГРАНИЧИТ (СТРАНА 1, СТРАНА 2) и одним правилом позволит создать информационную систему, дающую сведения о соседях каждой страны. Например, для юго-запада Европы:
    Код:
    ГРАНИЧИТ (ПОРТУГАЛИЯ, ИСПАНИЯ);
    ГРАНИЧИТ (ИСПАНИЯ, ФРАНЦИЯ);
    ГРАНИЧИТ (ФРАНЦИЯ, ШВЕЙЦАРИЯ);
    ГРАНИЧИТ (ФРАНЦИЯ, БЕЛЬГИЯ);
    ГРАНИЧИТ (ФРАНЦИЯ, ФРГ);
    ГРАНИЧИТ (ФРАНЦИЯ, ИТАЛИЯ);
    ГРАНИЧИТ (ФРАНЦИЯ, ЛЮКСЕМБУРГ);
    ГРАНИЧИТ (A, B)<-ГРАНИЧИТ (B, A);
    На вопрос
    Код:
    ? ГРАНИЧИТ (ИСПАНИЯ, ФРАНЦИЯ);
    машина ответит «да», а на вопрос
    Код:
    ? ГРАНИЧИТ (ИСПАНИЯ, БЕЛЬГИЯ);
    ответ будет отрицательный.
    Можно узнать и всех соседей Испании, задав вопрос
    Код:
    ? ГРАНИЧИТ (ИСПАНИЯ, А);
    Ответ будет:
    Код:
    А = ПОРТУГАЛИЯ
    А = ФРАНЦИЯ
    Легко сформулировать базу данных по принадлежности стран частям света, используя факты вида
    Код:
    НАХОДИТСЯ (СТРАНА, ЧАСТЬ СВЕТА);
    Аналогично можно заложить информацию о природных условиях и ресурсах каждой страны, городах, населении, промышленности и т. д.

    История. Курс истории содержит большое количество фактов, поэтому историческая информация легко укладывается в конструкции Пролога-Д. Например, база данных с фактами вида
    Код:
    СОБЫТИЕ (НАИМЕНОВАНИЕ, СТРАНА, ГОД НАЧАЛА, ГОД КОНЦА)
    позволит записать основные исторические события, относящиеся к той или иной эпохе. Формулируя различные вопросы, можно узнать, что, когда, где произошло. А добавив в вопросы операции сравнения над целыми числами, можно получить интересные сведения и по хронологии. База данных об исторических деятелях создается с использованием фактов вида
    Код:
    ИСТОРИЧЕСКИЙ ДЕЯТЕЛЬ (ИМЯ, ГОД РОЖДЕНИЯ, ГОД СМЕРТИ);
    Иностранный язык. Достаточно просто написать программу, которая будет представлять собой англо-русский и русско-английский словари одновременно. С ее помощью отыскиваются эквиваленты русских и английских слов, проверяется словарный запас. База данных имеет вид
    Код:
    ЗНАЧЕНИЕ (МАМА, MAMMY);
    ЗНАЧЕНИЕ (ПАПА, DADDY);
    ЗНАЧЕНИЕ (БАБУШКА, GRANNY);
    ЗНАЧЕНИЕ (МИР, PEACE);
    ЗНАЧЕНИЕ (НЕБО, SKY);
    и т. д.
    Задав несколько вопросов, можно получить ответы:
    Код:
    ? ЗНАЧЕНИЕ (МИР, А);
    А = PEACE
    ? ЗНАЧЕНИЕ (A, SKY);
    А = НЕБО
    ? ЗНАЧЕНИЕ (ПЕТЯ, А);
    НЕ ЗНАЮ
    ? ЗНАЧЕНИЕ (МАМА, MAMMY);
    ДА
    Таким образом, используя минимальные средства логического программирования и создавая простейшие базы данных, можно строить интересные, полезные компьютерные системы для самых разных школьных уроков. Если же привлечь мощные средства Пролога для обработки списков, аппарат встроенных функций, то нетрудно построить простые системы автоматического перевода с языка на язык, аналитических преобразований. И как знать, может быть, скоро, овладев аппаратом логического программирования, школьники будут строить свои маленькие экспертные системы? Давайте попробуем поработать с Прологом!
    [свернуть]
    Последний раз редактировалось Manwe; 28.05.2019 в 23:25.
    manwe.pdp-11.ru

  3. #23

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,480
    Спасибо Благодарностей отдано 
    310
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    217 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Manwe Посмотреть сообщение
    Нужно это кому-нибудь?
    Я конечно не программист, но посмотрел несколько примеров на Вики, на Хабре и уже из этой книги - у меня от них взрывает моск :-)
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  4. #24

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,504
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    у меня от них взрывает моск
    Оно из разряда декларативного программирования - задаешь правила, задаешь вопрос - комп сам пытается найти ответ. Из этой же оперы SQL

  5. #25

    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,131
    Спасибо Благодарностей отдано 
    55
    Спасибо Благодарностей получено 
    257
    Поблагодарили
    195 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    пролог наверное самый простой язык из всех что есть, но у тех кто привык к императивному, у тех мозг взрывается, мне пришлось интерпретатор в свое время написать что бы понять как что работает и за студентов задания поделать

  6. #26

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,480
    Спасибо Благодарностей отдано 
    310
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    217 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Из этой же оперы SQL
    Про это я читал, это действительно похоже на БД, но написанную plain text. И если почитать коменты, то всё, в принципе, понятно. Непонятно только как читать/писать программу если она больше 5 строчек, как удержать в голове структуру БД :-/
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  7. #27

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,504
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CodeMaster Посмотреть сообщение
    Непонятно только как читать/писать программу
    Делится на две части.
    Часть первая - выборка информации
    Часть вторая - добавление, изменение, удаление.
    Если программер крут - он первую часть решает одним оператором выборки. Со второй частью значительно тяжелей (и как правило одним оператором обойтись можно только в тривиал случаях).

    Но поскольку действительно -
    Цитата Сообщение от CodeMaster Посмотреть сообщение
    удержать в голове структуру БД
    тяжело, ибо проектирование структуры преследует не удобство, а производительность, обычно сейчас применяют всякие обёртки, которые являются мостиком между удобством работы с объектами в предметной области (например - накладная - с точки зрения, скажем, бухгалтерии - единое целое, куда как атрибуты входят всякие даты покупки, клиент, позиции и тюпю - всё в ОДНОМ объекте) и правильностью хранения инфы в БД. И уж как оно там объект предметной области раскладывает на всякие таблице и иже с ними - программера не заботит. Да, с одной стороны удобней, а с другой стороны появилась куча программеров, которые работают с БД, вообще не представляя - а чего там в ней и как... В общем - за всё надо платить.

  8. #28

    Регистрация
    26.04.2009
    Адрес
    г. Воронеж
    Сообщений
    6,480
    Спасибо Благодарностей отдано 
    310
    Спасибо Благодарностей получено 
    249
    Поблагодарили
    217 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Raydac Посмотреть сообщение
    пролог наверное самый простой язык из всех что есть
    То же во многих статьях пишут, но чес гря не совсем понимаю в чём его простота. Хотя там пишут, что он прост в чтении программы, но сложен в написании. Но по мне он в чтении не прост, кроме того, как писал ранее, в голове всё равно приходится держать структуру, так и не очень понятно по синтаксису.
    Почему вместо
    МАМА (НАДЯ, АСЯ);
    не писать
    НАДЯ (МАМА) АСЯ;
    что ближе к естественному языку.
    Так же непонятно почему тут СОБЫТИЕ (НАИМЕНОВАНИЕ, СТРАНА, ГОД НАЧАЛА, ГОД КОНЦА); в скобках свойства события, а предыдущем случае не так и единообразней тогда была бы запись НАДЯ (МАМА, АСЯ);
    "Во времена всеобщей лжи говорить правду - это экстремизм" - афоризм.

  9. #29

    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,131
    Спасибо Благодарностей отдано 
    55
    Спасибо Благодарностей получено 
    257
    Поблагодарили
    195 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    мама(надя, ася) это потому что описывает факт что надя это мама аси, считай что у тебя таблица в базе данных с именем "мама" и в ней два столбца первый кто и второй кого

  10. #30

    Регистрация
    06.12.2017
    Адрес
    г. Москва
    Сообщений
    1,724
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    406
    Поблагодарили
    257 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Меня пока вымораживает только то, что в статье 1987-го года знаки вопроса отделены пробелами, а в статье 1990-го года пишутся слитно. Автор тот же, журнал тот же, язык тот же, платформа та же... а пишут по-разному.
    manwe.pdp-11.ru

Страница 3 из 8 ПерваяПервая 1234567 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ПРОЛОГ для БК?
    от tnt23 в разделе БК-0010/0011
    Ответов: 32
    Последнее: 27.09.2018, 20:50
  2. Листинг ПЗУ БК0010
    от Jarik65535 в разделе БК-0010/0011
    Ответов: 1
    Последнее: 12.07.2017, 09:42
  3. Ответов: 0
    Последнее: 29.05.2015, 00:40
  4. Создание кросскомпилятора языка Оберон для Z80
    от Oleg N. Cher в разделе Программирование
    Ответов: 35
    Последнее: 27.03.2012, 14:36

Ваши права

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