Preview

Труды Института системного программирования РАН

Расширенный поиск

Сравнение объектно-ориентированного и процедурно-параметрического полиморфизма

https://doi.org/10.15514/ISPRAS-2025-37(6)-3

Аннотация

Динамический полиморфизм часто применяется в ситуациях, связанных с определением и обработкой альтернативных ситуаций в процессе выполнения программ, обеспечивая гибкое расширение ранее написанного кода. Он широко используется в статически типизированных языках объектно-ориентированного программирования за счет совместного применения наследования и виртуализации. Языки программирования Go и Rust, также поддерживают динамический полиморфизм, используя для его реализации статическую утиную типизацию. Еще один подход предлагает процедурно-параметрическая парадигма программирования, обеспечивающая гибкое эволюционное расширение как вариантных данных, так и обрабатывающих их функций, включая ситуации, связанные с множественным полиморфизмом, которые возникают при реализации мультиметодов. В работе проводится сравнение возможностей динамического полиморфизма объектно-ориентированной и процедурно-параметрической парадигм, по поддержке гибкой разработки программного обеспечения. Сопоставляются базовые техники, обеспечивающие расширение функциональности программ, рассматриваются особенности реализации паттернов проектирования.

Об авторах

Павел Владимирович КОСОВ
Национальный исследовательский университет «Высшая школа экономики»
Россия

Аспирант факультета компьютерных наук НИУ «Высшая школа экономики». Его научные интересы связаны с разработкой языков программирования и компиляторов, оптимизацией LLVM, эволюционной разработкой программного обеспечения.



Александр Иванович ЛЕГАЛОВ
Национальный исследовательский университет «Высшая школа экономики»
Россия

Доктор технических наук, профессор факультета компьютерных наук НИУ «Высшая школа экономики». Его научные интересы: технологии программирования, эволюционная разработка программного обеспечения, архитектурно-независимое параллельное программирование, языки программирования.



Список литературы

1. Фуксман, А. Л. Технологические аспекты создания программных систем. / А. Л. Фуксман – М.: Статистика, 1979. – 184 с.

2. Горбунов-Посадов, М. М. Система открыта, но что-то мешает. / М. М. Горбунов-Посадов // Открытые системы. 1996. № 6. С. 36–39.

3. Горбунов-Посадов, М. М. Конфигурационные ориентиры на пути к многократному использованию. / М. М. Горбунов-Посадов – ИПМ им. М.В.Келдыша РАН. Препринт № 37, 1997 г.

4. Горбунов-Посадов, М. М. Облик многократно используемого компонента. / М. М. Горбунов-Посадов // Открытые системы. 1998. № 3. С. 45–49.

5. Горбунов-Посадов, М. М. Расширяемые программы. / М. М. Горбунов-Посадов – М.: Полиптих, 1999.

6. Горбунов-Посадов, М. М. Эволюция программы: структура транзакции. / М. М. Горбунов-Посадов // Открытые системы. 2000, № 10. С. 43–47.

7. M. Gregoire, Professional C++, John Wiley & Sons. 2018, p. 1122.

8. E. Sciore, Java Program Design, Apress Media. 2019, p. 1122.

9. A. Freeman, Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang, Apress. 2022, p. 1105.

10. J. Blandy, J. Orendorff, and L. F. Tindall, Programming Rust, O’Reilly Media. 2021, p. 735.

11. E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley Professional. 1994, p. 416.

12. Легалов А.И. Процедурно–параметрическая парадигма программирования. Возможна ли альтернатива объектно-ориентированному стилю? - Красноярск: 2000. Деп. рук. № 622-В00 Деп. в ВИНИТИ 13.03.2000. - 43 с. Доступна в сети Интернет: http://www.softcraft.ru/ppp/pppfirst/, accessed 30.08.2024.

13. Легалов И.А. Применение обобщенных записей в процедурно–параметрическом языке программирования // Научный вестник НГТУ, 2007. № 3 (28). С. 25–38.

14. Легалов А.И. Швец Д.А. Процедурный язык с поддержкой эволюционного проектирования. --- Научный вестник НГТУ, № 2 (15), 2003. С. 25-38.

15. Легалов А.И., Косов П.В. Эволюционное расширение программ с использованием процедурно–параметрического подхода // Вычислительные технологии. 2016. Т. 21. № 3. С. 56–69.

16. Прата С. Язык программирования C. Лекции и упражнения, 5-е издание. : Пер. с англ. – М.: Издательский дом «Вильямс», 2013. – 960 с.

17. Легалов А.И., Косов П.В. Процедурно-параметрический полиморфизм в языке с для повышения надежности программ. // XIV Всероссийское совещание по проблемам управления, ВСПУ-2024, Москва 17-20 июня 2024 г. С. 2827-2833. https://vspu2024.ipu.ru/preprints/2827.pdf, accessed 30.08.2024.

18. Легалов А.И., Косов П.В. Расширение языка C для поддержки процедурно–параметрического полиморфизма. Моделирование и анализ информационных систем. 2023;30(1):40-62. doi: 10.18255/1818-1015-2023-1-40-62.

19. Clang: A c language family frontend for llvm. [Online]. Available: https://clang.llvm.org/, accessed 05.06.2025.

20. Язык процедурно-параметрического программирования PPC. Репозиторий компилятора языка на Gitverse: https://gitverse.ru/kpdev/llvm-project. Ветка pp-extension-v2, accessed 05.06.2025.

21. Примеры на Гитхаб, написанные с использованием процедурно–параметрической версии языка C: https://github.com/kreofil/evo-situations, accessed 05.06.2025.

22. Реализация паттерна ОО проектирования Visitor на языке программирования C++: https://refactoringguru.cn/ru/design-patterns/visitor/cpp/example, accessed 02.09.2025.


Рецензия

Для цитирования:


КОСОВ П.В., ЛЕГАЛОВ А.И. Сравнение объектно-ориентированного и процедурно-параметрического полиморфизма. Труды Института системного программирования РАН. 2025;37(6):43-58. https://doi.org/10.15514/ISPRAS-2025-37(6)-3

For citation:


KOSOV P.V., LEGALOV A.I. Comparison of Object-Oriented and Procedural-Parametric Polymorphism. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2025;37(6):43-58. (In Russ.) https://doi.org/10.15514/ISPRAS-2025-37(6)-3



Creative Commons License
Контент доступен под лицензией Creative Commons Attribution 4.0 License.


ISSN 2079-8156 (Print)
ISSN 2220-6426 (Online)