Proceedings of the International scientific and practical conference ―Science and Society‖ (February 26-28, 2026) / Publisher website: www.naukainfo.com. – Kharkiv, Ukraine, 2026. - 355 p.
95 комп'ютера. Хоча високорівневі мови програмування, такі як C#, впровадили бібліотеки на кшталт Task Parallel Library (TPL), ручна розробка такого коду не є тривіальною і вимагає значних зусиль та знань розробника для коректної та високоефективної реалізації. Тому автоматизація таких завдань розглядається як спосіб забезпечення доцільності та цілей продуктивності такої розробки. Існує значна прогалина в дослідженнях застосування паралельного програмування (в тому числі, автоматизованого) на мові C# порівняно з такими мовами, як C та Java [1, 2]. Багато наявних інструментів зосереджені лише на одному аспекті всього циклу розробки, а саме, виявлення проблем з синхронізацією потоків або ж генерація коду на основі моделі системи. Крім того, хоча автоматизація розробки коду паралельних обчислень розглядалась для таких мов, як C++ або Java, застосування розроблених підходів для мови C# потребує подальших досліджень. Основна частина. Аналізуючи літературу за темою дослідження, можна виділити кілька напрямків автоматизації розробки паралельних обчислень. Найчастіше на практиці застосовується статичний аналіз коду, наприклад, за допомогою такого засобу як ParallelChecker [3, 4], на предмет проблем з синхронізацією потоків (дедлоки та стан гонитви даних). Інший подібний метод, описаний в [5], виконує натомість пошук патернів застосування застарілих конструкцій паралелізації (методи класу Thread) і автоматично виправляє такий код, застосовуючи більш високорівневі конструкції класів Task та Parallel. Перевагою статичного аналізу є швидкість знаходження проблемних місць. Однак, даний підхід може давати хибні результати. Іншим напрямком автоматизації паралельних обчислень є генерація коду з різних моделей, таких як мережі Петрі [6] або система алгоритмічних алгебр [7]. що є спрощеними варіантами програми у візуальному вигляді чи створеного за допомогою власної мови програмування. Побудова таких моделей вимагає багато часу програміста, проте це перекривається відсутністю проблем з помилками синхронізації у згенерованому коді (це залежить лише від точності самої моделі). Однак, такий спосіб важко застосувати до існуючого коду.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTAxMzIwNA==