Уважаемые БКшники, прошу поделиться инфой о ПЗУ языка Пролог для БК0010 или БК0010-01.
ПЗУ, вероятно, имеет адрес 140000.
Кто что слыхал на эту тему ?
- - - Добавлено - - -
На днях сдамплю ПЗУшку и выложу в облако Майл.ру, в 100% формате.
Вид для печати
Уважаемые БКшники, прошу поделиться инфой о ПЗУ языка Пролог для БК0010 или БК0010-01.
ПЗУ, вероятно, имеет адрес 140000.
Кто что слыхал на эту тему ?
- - - Добавлено - - -
На днях сдамплю ПЗУшку и выложу в облако Майл.ру, в 100% формате.
Так вроде была уже?
Которая "Пpoлoг-Д 1.0 (C) Copyright 1990 by AW Corp." ?
- - - Добавлено - - -
Только у меня вроде с чипкодом 02 (120000), если я ничего не путаю...
Ещё бы документацию по этому Прологу добыть... Или там встроенный help?
Мне сейчас нечем КС посчитать. Да и я не дома сейчас ;-)
- - - Добавлено - - -
В том что у меня нет встроенного хелпа. Поэтому я на него и забил давно. Хотя вроде где-то на дискетах была документация. И вроде даже тут пробегала, если я не путаю.
https://pic.maxiol.com/thumbs/155870...0524154120.jpg
Сдампить вот просто так на БК11М нельзя, т.к. ПЗУ на 140000 адресе.
У Вас новее. Так программатором же можно сдампить....
https://cloud.mail.ru/public/jpnX/5BgfoNUjS
140000 адрес для БК0010.
Можете добавлять в диск для модуля ЭСППЗУ.
к/с 161623
Должно работать на БК0010 с СОЗУ в адресе 140000-157777 ( 8 ).
Что и как программировать - не в курсах . У меня на клаве не работают : пробел, СУ, ПР, НР, КТ - т.к. надо менять пленку.
*
Как дампил ?
1. Загрузил программу PRG.SAV
2. Перезапустил БК11М с удержанием клавы.
3. Вставил в колодку на плате ПЗУ "Пролог".
4. Набрал в адресе 10000 ( 8 ) программку, которая включает 12-ю страницу ПЗУ, ждет 10 сек ( в которые надо отключить 324 ПЗУ БК11М - 140000 адрес ), щелкает релешкой, ждет еще 10 сек, и выходит в пульт БК11М.
5. Проверяю в буфере на адресе 20000 - да, дамп скопировался, к/с в норме.
6. Запускаю PRG.SAV с 1000 адреса - программатор поддерживает все платформы, включая ДВК.
7. Провожу п.1 - "чтение с диска дампа", но с отрицательным к-во слов - т.е. записываю на диск дамп из буфера.
8. Небольшое жонгирование диском в эмуле ДВК господина Патрона.
9. Кладу результат в Облако.
Доб.
ПЗУ ( КМ1801РР1 ) сегодня отправятся andy7109
если только там есть какие то самопальные расширения, пролог это язык логического программирования и он ничего не знает про "память"Цитата:
А из Пролога можно заносить числа в ячейки памяти?
Добавил в свой FPGA проект ПЗУ пролога на место модуля 3.
А как его запустить из монитора?
Живой БК001Х никогда не было.
Сейчас у меня подключены ПЗУ монитора, фокала, пролога и тесты.
Вложение 69086
Просёк.
Вложение 69087
Из монитора <ЛАТ> P <ВК>
Проверил: на БК-0010 с контроллером СМК работает даже чтение и запись на диск.
На БК-0011 не запускается, надо писать отдельный загрузчик. Нужно это кому-нибудь? Запускать Пролог на БК-0011М с СМК.
И да, если кому попадётся документация - киньте плиз.
как понимаю дока по нему вот тут
Цитата:
Григорьев С. Работа системы Пролог-Д //Информатика и образование,1990, №4. С. 41-44.
Григорьев С. Программирование на Прологе-Д //Информатика и образование, 1990, № 5. С. 50-56.
Григорьев С. Графические средства системы Пролог-Д //Информатика и образование, 1990, № 6. С. 47-49.
Григорьев С. Обработка списков на Прологе-Д //Информатика и образование, 1991, № 1. С. 41-42.
Григорьев С. Пролог-Д в ПЗУ БК-0010 //Информатика и образование, 1992, №3-4.-С. 38-39.
Григорьев С., Морозов М. Давайте попробуем Пролог //Информатика и образование, 1987, №4. С. 14-16.
неа, нету, как раз за 92й год отсканированных только 1й номер везде лежит толькоЦитата:
А есть ссылки на сканы этих журналов?
похоже что 2 и 3 номера в которых ПЗУ описано как раз только в библиотеках
Григорьев С., Морозов М. Давайте попробуем Пролог //Информатика и образование, 1987, №4. С. 14-16.
Битая ссылка http://oldpc.su/lib/magaz/info/1987_4.djvu
Остальное скачивается, спасибо!
Вложение 69090
Начал переводить документацию Пролога-Д в текстовый вид, надеюсь кому-нибудь пригодится.
Начинаю выкладывать документацию Пролога-Д.
"Информатика и образование" №4 1987
Скачать: Вложение 69095
С удивлением узнал, что в 1987-ом году Пролог написан на Бейсике... Надеюсь, позже его перевели в коды.
Скрытый текст
С. Григорьев, М. Морозов
Йошкар-Ола
Давайте попробуем Пролог
О традиционных языках и нетрадиционных задачах
Когда рассматривают круг проблем, связанных с изучением и использованием языков программирования в школе, обычно имеют в виду традиционные языки - Бейсик. Рапиру, Паскаль и т.п. В чем главная особенность этих, так называемых процедурных, языков? В ориентации на вычислительную машину. Процедурные языки развивались как средство записи операций, выполняемых вычислительной машиной, и отражают непривычное для человека «машинное мышление». Такой подход предполагает: чтобы ЭВМ решила задачу, необходимо построить алгоритм, определяющий последовательность действий, и запрограммировать его, а машина, точно следуя по указанному пути, сделает то, что было задумано.
Однако подобный образ действий вне физико-математических дисциплин сталкивается с серьезными трудностями.
Ориентированный на математические расчеты Бейсик малопригоден для отражения предметного мира, скажем, географии, истории, иностранного языка. Даже большие возможности символьной обработки, заложенные в Рапире, оказываются недостаточными.
Есть и другая проблема, возникающая при обучении школьников программированию на традиционных языках: поиск конкретных реальных задач, решать которые удобно, используя программирование.
В вузе вопрос решается просто: студентов заставляют работать с численными методами решения математических задач. В младших классах школы проблему пытаются обойти, вводя исполнителя (например, «черепаху»), действующего как ЭВМ. В старших классах все-таки приходится обращаться к вычислению площадей, решению квадратных, нелинейных и других уравнений.
Но школьникам еще предстоит долгий путь до практического применения этих численных методов! Это произойдет, например, когда в вузе будут изучены математические модели реальных физических процессов. А главное, в развитии и использовании современной вычислительной техники наметился явный отход от вычислений. Вчерашнему школьнику предстоит столкнуться в своей практической деятельности с экспертными системами, системами обеспечения принятий решений, базами знаний и всем тем, что принято называть технологией обработки знаний или искусственным интеллектом. А это потребует и других навыков, и другого, «немашинного», мышления.
Возникает необходимость поиска новых, более адекватных средств общения с компьютерами; здесь нельзя не обратиться к активно развивающемуся сейчас логическому программированию и языку программирования Пролог.
Появившись в начале 70-х гг. в лаборатории искусственного интеллекта в университете г. Марселя, Пролог на протяжении почти десяти лет оставался известен лишь узкому кругу специалистов. Но тот факт, что логическое программирование и сам Пролог были положены в основу японского проекта ЭВМ пятого поколения, привлек к языку всеобщее внимание.
В отличие от традиционных языков, которые нужны для изложения способа решения задачи, на Прологе формулируется только ее постановка. Пользователь должен сообщить ЭВМ необходимые факты и несколько правил, описывающих, как эти факты соотносятся друг с другом, а она из полученной информации сформирует ответ на поставленный вопрос.
В основу Пролога положен сложный математический аппарат логики предикатов первого порядка и теории логического вывода. Однако, чтобы изучить этот язык и работать с ним, нет необходимости вникать в тонкости математической логики, как нет необходимости вникать в принципиальную схему телевизора, прежде чем включить его вечером.
Пролог очень легок для изучения и использования, но, несмотря на это, намного мощнее, чем любой другой язык, используемый в настоящее время на микро-ЭВМ. Часто оказывается, что программа на Прологе почти на порядок короче, чем на процедурном языке программирования.
Против Пролога существует предубеждение, что его эффективная реализация возможна только на больших, мощных ЭВМ. Действительно, в недалеком прошлом это было так, и в СССР Пролог действовал только на ЕС ЭВМ и СМ ЭВМ. Теперь ситуация изменилась. Оказалось, что его можно приспособить для быстрой и эффективной работы на небольших машинах и при этом создать развитые средства программной поддержки, ориентированные на пользователя. Сейчас существует реализация Пролога для всех микро-ЭВМ с операционной системой СР/М, в Институте программных систем АН СССР разработана реализация для микро-ЭВМ «Ямаха».
Эти достижения укрепили позицию Пролога как практичного, простого языка, при годного для использования в школьной информатике. Широкое применение языка такого типа планируется в болгарских школах для изучения гуманитарных наук; реализуется проект «Логика как язык компьютеров для детей». Аналогичные работы проводятся в СССР.
Программа на Прологе-Д
Опишем процесс программирования на упрощенном логическом языке, реализованном авторами и названном Пролог-Д.
В процедурных языках программа состоит из операторов. В совокупности операторы описывают этапы, необходимые для достижения заданной цели. Программа на Прологе-Д состоит из последовательности предложений (фактов и правил), порядок которых значения не имеет. Совокупность фактов и правил называют базой данных.
Вот пример простой программы:
В этой программе предложения (1) и (2) - факты, а предложение (3) - правило. В конце каждого предложения ставится точка с запятой. Факты дают представление об объектах и действиях. Предложение «Надя - мама Аси», записанное в виде факта МАМА (НАДЯ, АСЯ), можно было бы записать и как МАМА (АСЯ, НАДЯ), (исправив при этом (2) на МАМА (ДАША, АСЯ), а в (3) записав БАБУШКА (В, А)).Код:МАМА (НАДЯ, АСЯ); (1)
МАМА (АСЯ, ДАША); (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);
ДА
[свернуть]
пролог наверное самый простой язык из всех что есть, но у тех кто привык к императивному, у тех мозг взрывается, мне пришлось интерпретатор в свое время написать что бы понять как что работает и за студентов задания поделать
Делится на две части.
Часть первая - выборка информации
Часть вторая - добавление, изменение, удаление.
Если программер крут - он первую часть решает одним оператором выборки. Со второй частью значительно тяжелей (и как правило одним оператором обойтись можно только в тривиал случаях).
Но поскольку действительно -
тяжело, ибо проектирование структуры преследует не удобство, а производительность, обычно сейчас применяют всякие обёртки, которые являются мостиком между удобством работы с объектами в предметной области (например - накладная - с точки зрения, скажем, бухгалтерии - единое целое, куда как атрибуты входят всякие даты покупки, клиент, позиции и тюпю - всё в ОДНОМ объекте) и правильностью хранения инфы в БД. И уж как оно там объект предметной области раскладывает на всякие таблице и иже с ними - программера не заботит. Да, с одной стороны удобней, а с другой стороны появилась куча программеров, которые работают с БД, вообще не представляя - а чего там в ней и как... В общем - за всё надо платить.
То же во многих статьях пишут, но чес гря не совсем понимаю в чём его простота. Хотя там пишут, что он прост в чтении программы, но сложен в написании. Но по мне он в чтении не прост, кроме того, как писал ранее, в голове всё равно приходится держать структуру, так и не очень понятно по синтаксису.
Почему вместо
МАМА (НАДЯ, АСЯ);
не писать
НАДЯ (МАМА) АСЯ;
что ближе к естественному языку.
Так же непонятно почему тут СОБЫТИЕ (НАИМЕНОВАНИЕ, СТРАНА, ГОД НАЧАЛА, ГОД КОНЦА); в скобках свойства события, а предыдущем случае не так и единообразней тогда была бы запись НАДЯ (МАМА, АСЯ);
мама(надя, ася) это потому что описывает факт что надя это мама аси, считай что у тебя таблица в базе данных с именем "мама" и в ней два столбца первый кто и второй кого
Меня пока вымораживает только то, что в статье 1987-го года знаки вопроса отделены пробелами, а в статье 1990-го года пишутся слитно. Автор тот же, журнал тот же, язык тот же, платформа та же... а пишут по-разному.
Другой редактор (профессия)?
Да, только у этой таблицы нет наименования колонок и всё это надо держать в голове. Я что-то не увидел, а в Прологе комментарии допускаются? В общем, судить о простоте довольно специализированного языка спустя 40 лет и когда знаком с современными ЯП довольно сложно. Возможно, в 70-х для определённых задач в сравнении с Fortran-77 он был пределом простоты..
наименований нет, вместо этого используется порядок и вместо sqlовского select * from мама в прологе получается мама(X,Y)Цитата:
Да, только у этой таблицы нет наименования колонок и всё это надо держать в голове.
комментарии в стандартном прологе обычно начинаются с % и до конца строки
программирование в прологе в целом строится на паттерн матчинге, том который сейчас в современные языки входит все больше и больше и считается крутатой, в той же scala к примеру
И который мы (я не про конкретно про паттерн матчинг, а в принципе), не знаю о его крутате использовали в тыща-девятьсот-лохматом-году. Как например - событийное и клиент-серверное программирование в (примерно) 1985 году в игре (многотерминальная) Змейка. Помню, визг при игре в неё стоял почище, чем при сетевой игре в Doom в (примерно) 1995 :)
Я пока вот что не понял в Прологе: как он отличает значение от переменной?
В том же англо-русском словаре есть такие слова как A и I. Если я задам вопрос ? RUSENG(Я,I) какой ответ получится - I=I или TRUE? То есть буква I будет воспринята как переменная, для которой надо найти значение, или как значение, которое связано с "Я"?
Пока что мне попадались примеры типа ? RUSENG(Я,A) и они выдавали ответ A=I, что логично. Но ведь я заранее не знаю какое там значение, и выбранное мной имя переменной может совпасть со значением. Тогда ответ получится не string, а boolean. Возможно, "I=I" автоматически преобразуется в "TRUE", но на фига мне TRUE, если я хочу получить текстовое значение для дальнейшего использования?
Болванка для получения ответа. Или, точнее, локальная переменная. Согласно документации, в Прологе переменные действуют только внутри одной строки.
Но ответ всё равно же куда-то выдаётся, наверное его можно использовать? Что-то такое было написано, что не всегда возможно составить запрос одной строкой.
- - - Добавлено - - -
А, вот пишут «вопрос не должен содержать новых атомов и переменных». Но опять же, если при задании правила я использовал переменную I, то как Пролог определит что я имел в виду в вопросе: переменную I или её значение, равное I?
Или вот ещё пример. У нас есть англо-русский словарь (описан выше в документации). Я хочу ввести новое правило: как определить, что слова - синонимы. Во всех примерах используют переменные a, b, c или x, y, z, но я хочу использовать I, J, K - вроде как не запрещено. Тогда получается:
То есть два слова - синонимы, если для них находятся одинаковые переводы на английский (первое правило) или одинаковые переводы на русский (второе правило). Правда, здесь не учитывается что слов вообще может не быть в словаре (но это пока и не важно).Код:СИНОНИМ(I,J)<-RUSENG(I,K),RUSENG(J,K);
СИНОНИМ(I,J)<-RUSENG(K,I),RUSENG(K,J);
Теперь я хочу написать вопрос. Он не должен содержать новых переменных. Хорошо, использую переменную I. Пишу:
И не понимаю, что должен выдать Пролог - все синонимы слова "Я" (me, I, myself, ego) или значение "ИСТИНА" (в том смысле, что да, "I" и "Я" - синонимы).Код:? СИНОНИМ(I,Я)
Зависит от того, что он считает переменной. Судя по документации, можно предположить, что переменными он считает только латинские буквы от A до Z, то есть однобуквенные слова на латинице. Тогда кроме I = Я должны выдаться другие русские слова, которые переводятся на английский как me, myself, ego (если они есть в списке фактов).
Вообще, насколько я помню, в большинстве реализаций, переменные - это любые слова, начинающиеся с заглавной латинской буквы. Чтобы такое слово не считалось переменной, его нужно писать в кавычках.
Примеры из Wikipedia заключают английские слова в кавычки. В документации к Пролог-Д для БК-0010 об этом пока ни слова.
Кстати, обнаружил арифметическую ошибку в статье 1990-го года. Неправильный результат работы программы у них там. Я даже проверил, набив эту программу... Ну ничего, исправляю по ходу дела. Выложу документацию уже без ошибок.
А вообще, судя по всему, придётся свою документацию написать - сжатую и понятную.