РЕАЛІЗАЦІЯ ОБ’ЄКТНО-ОРІЄНТОВАНОЇ ПАРАДИГМИ ПРОГРАМУВАННЯ МОВОЮ C
DOI:
https://doi.org/10.32782/tnv-tech.2023.5.8Ключові слова:
ООП, С, трансляція, виключення, обробка помилок, інтерфейс, поліморфізм, віртуальна таблиця методів, ABI, стабільність API.Анотація
Мова програмування C дозволяє створювати застосунки, що працюють на майже кожній актуальній платформі від поширених x86-сумісних процесорів, до MIPS у PlayStation One, від ARM у більшості сучасних смартфонів, до POWER-10 на великих серверах. Компілятор цієї мови з’являється для платформи інколи раніше ніж сама платформа з’являється фізично. Простота мови де є відносно невелика кількість вбудованих конструкцій дозволяє просто реалізувати початкову версію компілятора для цільової платформи. Створення застосунків із використанням С легше ніж з використанням асемблера, де, на відміну від C немає поняття циклів, типів чи методів, уже значно спрощує розробку, проте все іще є достатньо складним процесом так C не має вбудованих механізмів для керування пам’яттю, роботи з помилками або повторним використанням коду, окрім як використання спільних функцій та методів. З іншого боку існують більш високорівневі мови, які вимагають значної кількості засобів для своєї роботи (інтерпретатор, віртуальна машина, набір системних бібліотек, які оптимізовані для конкретної платформи, тощо), але суттєво спрощують розробку. Часто, інфраструктура певної мови прив’язана до певної апаратної чи програмної платформи і не може бути використана аналогічним чином у інших середовищах, до того ж усі додаткові засоби необхідні для виконання, забирають частину ресурсів пристрою, що обмежує клас пристроїв, де можна виконувати код написаний цією мовою. Існує спосіб отримати зручність переваги коду на C, що виконується швидко та майже будь-якій апаратній платформі й писати значно більш простий код. Для цього можна використовувати дворівневу компіляцію, де код мовою C – буде проміжним представленням і буде компілюватися в машинні інструкції компілятором C. Подібні мови уже існують (Vala, V, Zig) і кожна з них представляє свій варіант трансляції та своє бачення ООП. У статті розглядається бібліотека, що реалізує функціонал потрібний для забезпечення ООП, без прив’язки до конкретної апаратної платформи та з можливістю легко інтегрувати створені компоненти у інші програмні рішення.
Посилання
Deborah J. Armstrong. The quarks of object-oriented development. Communications of the ACM. 2006. Vol. 49. № 2. p. 123–128.
Brian W. Kernighan, Dennis M. Ritchie. C Programming Language. Second edition. London, 1988. 272 p.
Rabinowitz Henry, Schaap Chaim. Portable C. Hoboken, 1990. 269 p.
Manuel Costanzo and others. Performance vs Programming Effort between Rust and C on Multicore Architectures: Case Study in N-Body. Arxiv. 2021. Vol 2107. Article 11912.
Booch, G. Object Oriented Analysis and Design with Applications. Boston, 1994. 608 p.
Iqbaldeep Kaur and others. Research paper on object oriented software engineering. International journal of computer science and technology. 2016. Vol. 7, Issue 4. p. 36–38.
H. Hourani, H. Wasmi, T. Alrawashdeh. A Code Complexity Model of Object Oriented Programming (OOP). IEEE Jordan International Joint Conference on Electrical Engineering and Information Technology (JEEIT). Amman, Jordan, 2019, p. 560–564.
Репозиторій коду бібліотеки GLib. URL: https://github.com/GNOME/glib/tree/main/glib. (дата звернення: 13.12.2023).
Репозиторій коду ядра Linux. URL: https://github.com/torvalds/linux. (дата звернення 13.12.2023).
Репозиторії із стандартами C++. URL: https://github.com/cplusplus/draft (дата звернення 13.12.2023).
Репозиторій транслятора мови Vala. URL: https://gitlab.gnome.org/GNOME/vala (дата звернення 13.12.2023).
Репозиторій реалізованої бібліотеки. URL: https://github.com/FlaviusHouk/Obj (дата звернення 13.12.2023).