Абстрактная машина языка программирования учебного назначения СИНХРО

Городняя Лидия Васильевна
1. Институт систем информатики им. А. П. Ершова СО РАН
2. Новосибирский государственный университет
gorod@iis.nsk.su
Материал поступил в редколлегию 01.12.2021
Статья посвящена ряду решений по организации работы с памятью в учебных языках и системах программирования, нацеленных на обучение подготовке многопоточных программ над общей памятью. Рассмотрение выполнено на материале учебного языка программирования СИНХРО, что позволило анализировать варианты таких решений без ограничений, характерных для традиционных производственных инструментов и устройства стандартных систем программирования. В статье дано определение абстрактной машины и расширение ее системы команд, позволяющее определять поведение программы как распределенной системы из ряда по-токов, взаимодействующих в терминах доступа к значениям переменных, расположенных в общей памяти. Описано устройство общей памяти и механизмы доступа к ней отдельных процессов, представляющих собой последовательности выполнения команд, часть из которых являются запросами к общей памяти. В центре внимания удобство отладки небольших программ, используемых для ознакомления с проблемами параллелизма в процессе обучения, когда темп понимания проблем обучаемыми важнее достижения эффективности и производительности учебных программ. Решение проблем отладки программ полезно при изучении методов программирования, а также при исследовании истории языков программирования, сравнения парадигм программирования, потенциала используемых схем и моделей, оценки уровня новизны создаваемых языков программирования, создания методики измерения разных характеристик программ на моделях и выборе критериев практичности создаваемых программ.
При расширении системы команд абстрактной машины учтены принципы функционального программирования как популярной парадигмы на этапе подготовки прототипов и моделей многопоточных программ. Из этих принципов выполнен вывод следствий, позволяющих успешно выбрать элементарные команды, поддерживающие работу с памятью в стиле неизменяемости данных, обратимости действий и транзакций при обработке данных. Для функционального программирования, как и для учебных задач параллельного программирования, умение обеспечить правильность и полноту решений важнее эффективности и производительности полученных программ. Это путь к созданию надежного и безопасного программного обеспечения. 
Выходные данные: Л. В. Городняя Абстрактная машина языка программирования учебного назначения СИНХРО. Вестник НГУ. Серия: Информационные технологии. 2021 Т.19, №4. C. 16–35. DOI: 10.25205/1818-7900-2021-19-4-16-35