Немного компьютерной лингвистики

Feb 04, 2022 20:37

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

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

Известен неполный интерфейс к нему (мелкие детали опущены):
  • создать новый каталог верхнего уровня, задавая Номер Устройства/Начальный Номер Блока/Число Блоков для каталога
  • создать в каталоге верхнего уровня массив, задавая имя массива и НУ/ННБ/ЧБ, где массив будет храниться
  • открыть массив по имени, он становится текущим
  • занести в текущий массив запись "ключ-данные" (если запись с таким ключом уже есть, возвращается ошибка)
  • считать из текущего массива данные по ключу
  • удалить из текущего массива запись по ключу
  • модифицировать новыми данными в текущем массиве запись по ключу (если записи с таким ключом не было, выполняется как "занести")

Известно, что код работает на "микропрограммном" принципе. Интерфейсные вызовы дают "чёрному ящику" следующие последовательности микрокоманд:
  • создать каталог: 10-21
  • создать массив: 31-11-15-21-26-11-14-12-10-21
  • открыть массив: 31-11-14-12-25
  • занести запись: 11-15-21-26 (в случае ошибки отрабатывает только 11-15)
  • считать данные: 11-14-22
  • удалить запись: 11-14-23-27
  • модифицировать: 11-15-00-21-26-40 (подаётся на вход и выполняется, если такой записи не было); если была, то вместо этого выполняется 11-15-20

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

puzzle, retrocomputing, language

Previous post Next post
Up