Работа с данными в учебном языке программирования Синхро
Автор: Городняя Лидия Васильевна
Статья в выпуске: 2 т.12, 2023 года.
Бесплатный доступ
Статья является продолжением собственных предыдущих исследований автора в рамках многолетней работы по созданию учебного языка программирования СИНХРО, предназначенного для ознакомления с параллелизмом. Основное направление работ - уточнение понятий, способствующих подготовке небольших многопоточных программ при обучении параллельному программированию. Главный результат последнего года заключается в развитии механизма взаимодействия локальной и общей памяти. Дан приоритет парадигме функционального программирования, популярной при подготовке прототипов многопоточных программ. Это помогло преодолеть зависимость порядка вычислений от последовательности вхождения выражений в текст программы и размещения данных в памяти. Описаны отличия от привычных понятий программирования, сдерживающих решение задач организации параллельных вычислений и предельно распределенных систем из ряда потоков, взаимодействующих в терминах доступа к значениям переменных, возможно расположенных в общей памяти. Повышен базовый уровень воздействий на память. Часть из них укрупнены для предотвращения неожиданностей из-за асинхронности и ослабления императивности элементов распределенных систем. Добавлено понятие команд-двойников для управления императивной синхронизацией взаимодействующих устройств, полезное при решении вопросов освобождения памяти.
Дисциплина доступа к памяти, функциональное программирование, многопоточные программы, неизменяемость данных, восстановление данных, освобождение памяти
Короткий адрес: https://sciup.org/147240876
IDR: 147240876 | УДК: 004.43, | DOI: 10.14529/cmse230205
Working with data in the Synhro educational programming language
The article is devoted to clarifying the concepts that are useful in preparing small multi-threaded programs for teaching parallel programming. The approach was formed in the process of creating the SYNHRO language. The priority is given to the paradigm of functional programming, which is popular in the preparation of prototypes of multi-threaded programs. A description of differences from the usual ideas that hinder the solution of problems of organizing parallel computing and extremely distributed systems from a number of threads interacting in terms of access to the values of variables, possibly located in a shared memory is given. A mechanism for the interaction of local and shared memory is proposed. The main models of organizing parallel computing are taken into account and a number of concepts and methods are refined, which changes during the transition from conventional programming to the representation of multi-threaded and multiprocessor programs. First of all, this is the overcoming of the dependence of the order of calculations on the sequence of occurrence of expressions in the program text. Further, the basic mechanism of influences on memory changes. Some of them are made more complex to prevent surprises due to asynchrony and weakening the imperativeness of executing elements of distributed systems. The concept of twin commands has been added to control the imperative synchronization of interacting devices, useful in resolving memory freeing issues.
Список литературы Работа с данными в учебном языке программирования Синхро
- Городняя Л.В. Язык параллельного программирования СИНХРО, предназначенный для обучения. Новосибирск, Препринт ИСИ СО РАН № 180, 2016. 30 с.
- Городняя Л.В. О курсе «Начала параллелизма» // Ершовская конференция по информатике, секция «Информатика образования», Новосибирск, 27 июля 2011. С. 51-54.
- Воеводин В.В. Параллельные вычисления. СПб.: БХВ-Петербург, 2002. 608 с.
- Хоар Ч. Взаимодействующие последовательные процессы. Издательство «Мир», 1989. 264 с.
- McCarthy J. LISP 1.5 Programming Manual. Cambridge: The MIT Press, 1963. 106 p. DOI: 10.7551/mitpress/5619.001.0001.
- Backus J. Can programming be liberated from the von Neumann style? A functional stile and its algebra of programs // Commun. ACM. 1978. Vol. 21, no. 8. P. 613-641. DOI: 10.1145/359576.359579.
- Хендерсон П. Функциональное программирование. M.: Мир, 1983. 349 с.
- Лавров С.С. Функциональное программирование // Компьютерные инструменты в образовании. 2002. № 2-4. С. 42-52.
- Лавров С.С., Городняя Л.В. Функциональное программирование. Принципы реализации языка Лисп // Компьютерные инструменты в образовании. 2002. № 5. С. 49-58.
- Городняя Л.В. Основы функционального программирования. М.: Интернет-Университет Информационных технологий, 2004. 272 с.
- Городняя Л.В. Первые реализации языка Lisp в СССР // Материалы второй Международной конференции «Развитие вычислительной техники и ее программного обеспечения в России и странах бывшего СССР», SoRuCom-2011, Великий Новгород, 12-16 сентября 2011. С. 95-100.
- Сапп D.C. SISAL 1.2: A Brief Introduction and tutorial. Preprint UCRL-MA-110620. Lawrence Livermore National Lab., Livermore, California, May, 1992. 128 p.
- Бурдонов И.Б., Косачев А.С. Семантики взаимодействия с отказами, дивергенцией и разрушением. Часть 2. Условия конечного полного тестирования // Вестник Томского государственного университета. 2011. Т. 2, № 15.
- Koopman Р., Michels S., Plasmeijer R. Dynamic Editors for Well-Typed Expressions // Trends in Functional programming - 22nd International Symposium, 22nd International Symposium, TFP 2021, Virtual Event, February 17-19, 2021. Revised Selected Papers. Vol. 12834. Springer, 2021. P. 44-66. LNCS. DOI: 10.1007/978-3-030-83978-9_3.
- Erann Gat Lisp as an Alternative to Java. URL: https://flownet.com/gat/papers/ lisp-java.pdf (дата обращения: 05.04.2023).
- Иртегов Д.В. Введение в операционные системы. СПб.: БХВ-Петербург, 2008. 1040 с.
- Кнут Д.Э. Искусство программирования, том 1, выпуск 1. MMIX — RISC-компьютеры нового тысячелетия. М.: Вильямс, 2017. 160 с.
- Вирт Н. Построение компиляторов. М.: ДМК Пресс, 2010.
- Айлиф Дж. Принципы построения базовой машины. М.: Мир, 1973. 119 с.
- Эванс Б., Гоф Дж., Ньюленд К. Java: оптимизация программ. Практические методы повышения производительности приложений в JVM. М.: Диалектика, 2019. 448 с.
- Городняя Л.В. Абстрактная машина языка программирования учебного назначения СИНХРО // Вестник НГУ. Серия: Информационные технологии. 2021. Т. 19, № 4. С. 16-35.
- Грабер М. Введение в SQL. М.: Лори, 1996. 337 с.
- Левин В.К. Отечественные суперкомпьютеры семейства МВС. URL: http: //parallel. ru/mvs/levin.html (дата обращения: 05.04.2023).