A method of tuning programs on .Net platform with rewriting rules
Software tool for computation optimization that allows to optimize semiautomatically to increase execution speed was developed. Plugin for TermWare system, which implements the concept of rewriting rules, was developed. The plugin represents an analyzer for C# using Roslyn platform and generates ter...
Збережено в:
Дата: | 2019 |
---|---|
Автори: | , |
Формат: | Стаття |
Мова: | Ukrainian |
Опубліковано: |
Інститут програмних систем НАН України
2019
|
Теми: | |
Онлайн доступ: | https://pp.isofts.kiev.ua/index.php/ojs1/article/view/357 |
Теги: |
Додати тег
Немає тегів, Будьте першим, хто поставить тег для цього запису!
|
Назва журналу: | Problems in programming |
Завантажити файл: |
Репозитарії
Problems in programmingid |
pp_isofts_kiev_ua-article-357 |
---|---|
record_format |
ojs |
resource_txt_mv |
ppisoftskievua/10/885d6023fe551c1303500920bd0ed210.pdf |
spelling |
pp_isofts_kiev_ua-article-3572024-04-28T11:02:47Z A method of tuning programs on .Net platform with rewriting rules Метод настраивания программ на платформе .Net с помощью переписывающих правил Засіб налаштування програм на платформі .NET за допомогою переписувальних правил Mamedov, T.A. Doroshenko, А.Yu. cellular automaton «Conway's Game of Life»; autotuning; analyzer; speed measurement UDC 004.4'24 клеточный автомат игра «Жизнь»; автотюнинг; анализатор; измерение быстродействия УДК 004.4'24 клітинний автомат гра життя; автотюнінг; вимірювання швидкодії УДК 004.4'24 Software tool for computation optimization that allows to optimize semiautomatically to increase execution speed was developed. Plugin for TermWare system, which implements the concept of rewriting rules, was developed. The plugin represents an analyzer for C# using Roslyn platform and generates terms for TermWare system from source code. The work of software tool was illustrated on «Conway's Game of Life» - famous academic example. A comparison of the results of processing the implementation of the algorithm using the TermWare system and the Eazfuscator.NET library was given. The results were obtained by experiments on various data sizes. Speed of the program before and after modifications, the number of modifications required in the source code to work with the system was measured. The developed system and Eazfuscator.NET framework were tested on personal computer. Разработано программное средство для оптимизации вычислений, которое позволяет в полуавтоматическом режиме осуществить оптимизацию программы, увеличив её быстродействие. Для этого разработан специальный плагин на систему TermWare, в котором реализована концепция правил переписывания. Плагин осуществляет работу анализатора языка C# с помощью платформы Roslyn и генерирует термы для системы TermWare с исходного кода программы. Программное средство проиллюстрировано на известном академическом примере «Игра жизнь». Приведено сравнение результатов обработки реализации алгоритма с помощью системы TermWare и библиотеки Eazfuscator.NET. Результаты были получены в следствии экспериментов на различных размерах данных. Измерена скорость работы программ до и после модификаций, количество необходимых модификаций в исходном коде для работы с системой. Испытания разработанного метода и библиотеки Eazfuscator.NET были проведены на персональном компьютере. Розроблено програмний засіб для оптимізації обчислень, що дозволяє в автоматизованому режимі здійснити оптимізацію програми шляхом підвищення її швидкодії. Для цього реалізовано спеціальний плагін до системи переписувальних правил TermWare, за допомогою якого система здійснює налаштування програм, написаних на платформі .NET. Плагін використовує аналізатор Roslyn, реалізований генератор термів системи TermWare з вихідного коду програми. Програмний засіб проілюстровано на відо-мому прикладі клітинного автомату «Гра життя» на різних розмірах площини. Під час експериментів проведені виміри швидкодії програми до та після модифікації вихідного коду. Наведене порівняння результатів роботи методу самоналаштування за допомогою TermWare та інструментарію під назвою Eazfuscator.NET. Експерименти розробленого методу та бібліотеки Eazfuscator.NET проведені на персональному комп’ютері. Інститут програмних систем НАН України 2019-06-16 Article Article application/pdf https://pp.isofts.kiev.ua/index.php/ojs1/article/view/357 10.15407/pp2019.02.011 PROBLEMS IN PROGRAMMING; No 2 (2019); 11-16 ПРОБЛЕМЫ ПРОГРАММИРОВАНИЯ; No 2 (2019); 11-16 ПРОБЛЕМИ ПРОГРАМУВАННЯ; No 2 (2019); 11-16 1727-4907 10.15407/pp2019.02 uk https://pp.isofts.kiev.ua/index.php/ojs1/article/view/357/359 Copyright (c) 2019 PROBLEMS IN PROGRAMMING |
institution |
Problems in programming |
baseUrl_str |
https://pp.isofts.kiev.ua/index.php/ojs1/oai |
datestamp_date |
2024-04-28T11:02:47Z |
collection |
OJS |
language |
Ukrainian |
topic |
cellular automaton «Conway's Game of Life» autotuning analyzer speed measurement UDC 004.4'24 |
spellingShingle |
cellular automaton «Conway's Game of Life» autotuning analyzer speed measurement UDC 004.4'24 Mamedov, T.A. Doroshenko, А.Yu. A method of tuning programs on .Net platform with rewriting rules |
topic_facet |
cellular automaton «Conway's Game of Life» autotuning analyzer speed measurement UDC 004.4'24 клеточный автомат игра «Жизнь» автотюнинг анализатор измерение быстродействия УДК 004.4'24 клітинний автомат гра життя автотюнінг вимірювання швидкодії УДК 004.4'24 |
format |
Article |
author |
Mamedov, T.A. Doroshenko, А.Yu. |
author_facet |
Mamedov, T.A. Doroshenko, А.Yu. |
author_sort |
Mamedov, T.A. |
title |
A method of tuning programs on .Net platform with rewriting rules |
title_short |
A method of tuning programs on .Net platform with rewriting rules |
title_full |
A method of tuning programs on .Net platform with rewriting rules |
title_fullStr |
A method of tuning programs on .Net platform with rewriting rules |
title_full_unstemmed |
A method of tuning programs on .Net platform with rewriting rules |
title_sort |
method of tuning programs on .net platform with rewriting rules |
title_alt |
Метод настраивания программ на платформе .Net с помощью переписывающих правил Засіб налаштування програм на платформі .NET за допомогою переписувальних правил |
description |
Software tool for computation optimization that allows to optimize semiautomatically to increase execution speed was developed. Plugin for TermWare system, which implements the concept of rewriting rules, was developed. The plugin represents an analyzer for C# using Roslyn platform and generates terms for TermWare system from source code. The work of software tool was illustrated on «Conway's Game of Life» - famous academic example. A comparison of the results of processing the implementation of the algorithm using the TermWare system and the Eazfuscator.NET library was given. The results were obtained by experiments on various data sizes. Speed of the program before and after modifications, the number of modifications required in the source code to work with the system was measured. The developed system and Eazfuscator.NET framework were tested on personal computer. |
publisher |
Інститут програмних систем НАН України |
publishDate |
2019 |
url |
https://pp.isofts.kiev.ua/index.php/ojs1/article/view/357 |
work_keys_str_mv |
AT mamedovta amethodoftuningprogramsonnetplatformwithrewritingrules AT doroshenkoayu amethodoftuningprogramsonnetplatformwithrewritingrules AT mamedovta metodnastraivaniâprogrammnaplatformenetspomoŝʹûperepisyvaûŝihpravil AT doroshenkoayu metodnastraivaniâprogrammnaplatformenetspomoŝʹûperepisyvaûŝihpravil AT mamedovta zasíbnalaštuvannâprogramnaplatformínetzadopomogoûperepisuvalʹnihpravil AT doroshenkoayu zasíbnalaštuvannâprogramnaplatformínetzadopomogoûperepisuvalʹnihpravil AT mamedovta methodoftuningprogramsonnetplatformwithrewritingrules AT doroshenkoayu methodoftuningprogramsonnetplatformwithrewritingrules |
first_indexed |
2024-09-16T04:07:53Z |
last_indexed |
2024-09-16T04:07:53Z |
_version_ |
1818568271228567552 |
fulltext |
Інструментальні засоби та середовища програмування
© Т.А. Мамедов, А.Ю. Дорошенко, 2019
ISSN 1727-4907. Проблеми програмування. 2019. № 2 11
УДК 004.4'24 https://doi.org/10.15407/pp2019.02.011
Т.А. Мамедов, А.Ю. Дорошенко
ЗАСІБ НАЛАШТУВАННЯ ПРОГРАМ НА ПЛАТФОРМІ .NET
ЗА ДОПОМОГОЮ ПЕРЕПИСУВАЛЬНИХ ПРАВИЛ
Розроблено програмний засіб для оптимізації обчислень, що дозволяє в автоматизованому режимі здій-
снити оптимізацію програми шляхом підвищення її швидкодії. Для цього реалізовано спеціальний пла-
гін до системи переписувальних правил TermWare, за допомогою якого система здійснює налаштуван-
ня програм, написаних на платформі .NET. Плагін використовує аналізатор Roslyn, реалізований гене-
ратор термів системи TermWare з вихідного коду програми. Програмний засіб проілюстровано на відо-
мому прикладі клітинного автомату «Гра життя» на різних розмірах площини. Під час експериментів
проведені виміри швидкодії програми до та після модифікації вихідного коду. Наведене порівняння
результатів роботи методу самоналаштування за допомогою TermWare та інструментарію під назвою
Eazfuscator.NET. Експерименти розробленого методу та бібліотеки Eazfuscator.NET проведені на пер-
сональному комп’ютері.
Ключові слова: клітинний автомат гра життя, автотюнінг, вимірювання швидкодії.
Вступ
Ручна оптимізація займає немалий
час в циклі розробки програмних засобів,
тому в останні роки розроблюються різні
автоматизації цього процесу, зокрема,
шляхом самоналаштування програм на
цільову платформу. Концепція такого під-
ходу під назвою автотюнінгу вже давно
існує в світі інформаційних технологій і з
кожним роком стає все більш важливою,
оскільки обсяг коду програмних систем
і/або кількість оброблюваної інформації
зростає все більше і більше, а швидкодія
програм стає більш гострою проблемою
[1]. На сьогодні створено досить багато
систем, які реалізують концепцію автотю-
нінгу. Серед них, для прикладу, можна
назвати такі системи, як ATLAS [2],
AbcLibScript [3], TuningGenie [4].
В даній роботі для цієї мети була
використана система переписувальних
правил TermWare [5], для якої був реалізо-
ваний parser/printer для мови C#. Також
був використаний інструментарій
TuningGenie для вимірювання швидкодії
програми на різних ділянках коду. Наведе-
но порівняння різних підходів до концепції
автотюнінгу, серед яких є і використання
такого засобу автоматизації програм на
мові C# як Eazfuscator.NET [6].
Матеріал даної роботи організова-
ний наступним чином. В розділі 1 описа-
ний алгоритм, який був розроблений на
мові C# для експерименту. В розділі 2 ко-
ротко описана реалізація плагіну
TermWare для роботи з мовою C#. В тре-
тьому розділі описано засоби та реалізацію
аналізатора мови C#. В останньому розділі
описаний експеримент та результати оп-
тимізації програми за допомогою перепи-
сувальних правил та інструментарію
Eazfuscator.NET.
1. Алгоритм програми
«Гра життя»
«Гра життя» являє собою нескін-
ченну, двомірну ортогональну сітку квад-
ратних клітин, кожна з яких знаходиться в
одному з двох можливих станів, живих
або мертвих (або заселених і ненаселених
відповідно) [7]. Кожна клітина взаємодіє
зі своїми вісьмома сусідами, які є кліти-
нами, розташованими горизонтально, вер-
тикально або по діагоналі. На кожному
кроці відбуваються наступні переходи:
будь-яка жива клітина з мен-
шою, ніж двома живими сусідами вмирає,
як ніби за ненаселення;
будь-яка жива клітина з двома
або трьома живими сусідами живе на на-
ступному поколінні;
будь-яка жива клітина з більш
ніж трьома живими сусідами вмирає через
перенаселення;
https://doi.org/10.15407/pp2019.02.011
Інструментальні засоби та середовища програмування
12
будь-яка мертва клітина з трьо-
ма живими сусідами стає живою клітиною,
за допомогою відтворення.
В реалізації програми для даної ро-
боти на початку вказуються константи, які
визначають розмір площини (сітки) та кі-
лькість поколінь. Переходячи на наступне
покоління, всі правила застосовуються
одночасно до всіх клітин на площині та
відбувається дискретний момент «наро-
дження» або «смерті».
Псевдокод для визначення всіх су-
сідів для клітини.
BEGIN
NUMBER numOfAliveNeighbors=0, x, y,
heigth, width;
ARRAY OF ARRAYS cells
FOR (i = x-1; i < x + 2; i++)
{
FOR (j = y-1; j < y + 2; j++)
{
IF (!((i < 0 || j < 0) || (i >= heigth || j >=
width)))
{
if (cells[i, j] == true)
{
numOfAliveNeighbors++;
}
}
}
}
END
Псевдокод основної дії (перехід на
наступне покоління) наведений далі.
BEGIN
NUMBER heigth, width;
ARRAY OF ARRAYS cells;
FOR (i = 0; i < heigth; i++)
{
FOR (j = 0; j < width; j++)
{
numOfAliveNeighbors=CalcNeigh(i, j);
IF (cells[i, j] == TRUE)
{
IF (numOfAliveNeighbors < 2 AND
numOfAliveNeighbors > 3)
{
cells[i, j] = FALSE;
}
}
ELSE
{
IF (numOfAliveNeighbors == 3)
{
cells[i, j] = TRUE;
}
}
}
}
END
2. Система Termware
Для здійснення всіх перетворень
використовується платформа переписува-
льних правил Termware, докладно описана
в [5]. Termware призначена для опису пе-
ретворення над термами, тобто виразами
виду f (𝑡1…𝑡𝑛). Для завдання перетворень
використовуються правила Termware, тоб-
то конструкції виду source [condition] –>
destination [action].
Тут source – вихідний терм (зразок
для пошуку), condition – умова застосуван-
ня правила, destination – перетворений
терм, action – додаткове дія при спрацьо-
вуванні правила. Кожен з 4 компонентів
правила може містити змінні (які запису-
ються у вигляді $ var), що забезпечує спі-
льність правил. Компоненти condition і
action є необов'язковими. Вони можуть
виконувати довільний процедурний код,
зокрема використовувати додаткові дані
про програму.
Застосування правила відбувається
наступним чином: спочатку знаходиться
підтерм вхідного терма (дерева програми),
який підходить під source. Далі перевіря-
ється умова застосування (якщо вона є).
Якщо умова виконується, відбувається
заміна source на destination. При цьому
змінні в destination замінюються відповід-
ними значеннями з source. Також викону-
ється дія action (якщо воно було присутнє).
Кожне перетворення задається сис-
темою правил, тобто набором правил, які
послідовно застосовуються до даного тер-
Інструментальні засоби та середовища програмування
13
му (дереву програми). Порядок застосу-
вання правил визначається стратегією. У
систему Termware вбудовані кілька основ-
них стратегій, таких як TopDown,
BottomUp, FirstTop. Крім того, можливе
створення додаткових стратегій.
3. Реалізація плагіну для
TermWare для роботи з мовою C#
3.1. Аналізатори мови C#. Існує
досить багато аналізаторів для мови C#,
такі як Metaspec C# parser library та інші,
описані в роботі [6]. Але проблематика
аналізаторів мови C# полягає у тому, що
мова має вже вісім версій. У 2015 році ви-
йшла платформа Roslyn [8] з відкритим
вихідним кодом, що розробляється корпо-
рацією Microsoft, і містить у собі компіля-
тори і засоби для розбору і аналізу коду,
написаного на мовах програмування C # і
Visual Basic.
Різні нововведення на зразок code
fixes реалізуються саме за рахунок викори-
стання Roslyn.
За допомогою засобів аналізу, на-
даними платформою Roslyn можна прово-
дити повний розбір коду, аналізуючи всі
підтримувані конструкції мови.
Середовище Visual Studio дозволяє
створювати на основі Roslyn як вбудовані
в саму IDE інструменти (розширення
Visual Studio), так і незалежні додатки
(standalone інструменти).
3.2. Реалізація. В даній роботі був
використаний фреймворк TermWare, в
якому розроблений концепт термінальних
систем об’єктних структур та переписува-
льних правил. TermWare написаний на
мові Java, але використовує окремо плагін
Parser/Printer. Тому незважаючи на те, що
фреймворк написаний на одній технології,
він надає можливість мультиплатформнос-
ті. Для цього був створений екземпляр
TermWareInstance – це, образно говорячи,
стрижень, який містить у собі ієрархічну
систему доменів і словники імен парсерів
мов та принтерів. Для роботи з будь-яким
іншим стеком технологій треба реалізува-
ти 2 інтерфейси: IParser, IParserFactory.
Загальний паттерн використання
цих інтерфейсів наступний:
програміст визначає парсер мо-
ви, відповідний інтерфейсу IParser і фаб-
рику IParserFactory;
перед використанням розбирача
цієї мови повинна бути зареєстрована своя
фабрика парсерів для відповідної мови,
використовуючи метод TermWareInstance.
addParserFactory (String language, IParser-
Factory factory).
Після цього виклик loadFile(fname,
X) буде використовувати парсер відповід-
ної мови X.
Для синтаксичного аналізу програм
було використано можливості відкритого
програмного забезпечення – компілятора
Roslyn. За допомогою компілятора можна
отримати синтаксичне дерево реалізованої
програми, яке і потрібно для парсеру.
Оскільки Roslyn працює на CLR, а
парсер/принтер повинен працювати на
JVM, для розв’язування цієї проблеми був
використаний міст jni4net, який дозволяє
реєструвати будь-який dll файл, згенерова-
ний за допомогою інструменту proxygen,
який створює обгортку до будь-якої біблі-
отеки [9]. Це дозволяє використовувати та
створювати екземпляри класів з C# на Java
та навпаки з Java на C#.
Також наведена спрощена UML-
діаграма класів відповідного парсеру на
рис. 1.
Далі буде наведений приклад терму
для методу NextGeneration().
For(Assignment(i,0), i<=Heigth, Increment(i),
For(Assignment(j,0), i<=Width, Increment(j),
[DeclarationAssignment(numOfAliveNeighb
ors, int, [MethodCall(CalcNeighbor, i, j)],
If(ArrayElement(ArrayElement(cells, i), j), [
If (numOfAliveNeighbors<2, [
Assignment(ArrayElement(ArrayElement(cell
s, i), j), false)])
If (numOfAliveNeighbors>3, [
Assignment(ArrayElement(ArrayElement(cell
s, i), j), false)])])
If(NotEqual(ArrayElement(ArrayEle
ment(cells, i), j)), true),
[If (Equal(numOfAliveNeighbors, 3)),
[Assignment(ArrayElement(ArrayElement(ce
lls, i), j), true)
])))])]
Інструментальні засоби та середовища програмування
14
Рис. 1. Спрощена діаграма класів плагіну для TermWare
Наступний код – це приклад терму
для методу визначення сусідів клітини
CalcNeighbor(x, y).
[DeclarationAssignment(numOfAliveNeighb
ors, int, 0),
For(Assignment(i, x – 1), i < x + 2,
Increment(i),
For(Assignment(j, y – 1), j < y + 2,
Increment(j),
If(Not(Or(Or(i<0,j<0),Or(i>=Heigth,j
>=Width))),
[If(ArrayElement(ArrayElement(cells, i), j),
[Increment(numOfAliveNeighbors)]
)])]
4. Експеримент
Для визначення ефективності про-
грамних перетворень проведено експери-
мент із застосуванням двох видів автома-
тичної оптимізації програми.
Експеримент складався з порівнян-
ня результатів виконання програм, отри-
маних за допомогою описаних систем.
Експеримент проводився з викори-
станням комп’ютера, оснащеної процесо-
ром Intel Core i7-7700HQ 2.80GHz з обся-
гом оперативної пам'яті в 16 Гб.
Масштабування дослідної задачі
регулюється за допомогою вибору розміру
площини, на якому здійснюється «Гра
життя», а також кількість поколінь, які
повинні пройти перед закінченням вико-
нання програми.
Експеримент проводився на різних
розмірах площини, починаючи від 300 і
закінчуючи розмірами в 1200000 клітин.
Результат експериментів виводить-
ся на Excel файл та показаний на рис. 2, де
можна побачити, що застосування системи
TermWare є більш ефективним з точки зо-
ру швидкодії в порівнянні з бібліотекою
Eazfuscator.NET.
Інструментальні засоби та середовища програмування
15
Рис. 2. Результат тестів програми
Як видно з графіка, система
TermWare випереджає Eazfuscator.NET,
коефіціент прискорення порівняно з немо-
дифікованою програмою і TermWare скла-
дає приблизно на 1.34, а з бібліотекою
Eazfuscator.NET – на 1.15.
З іншого боку, якщо порівнювати
довжину коду, то в цьому випадку
Eazfuscator.NET не потребує ніяких моди-
фікацій коду для застосування, тому в
цьому випадку ця бібліотека краща за ви-
користання TermWare.
Висновок
Розроблено та реалізовано плагін
системи переписувальних правил
TermWare для роботи з мовою C#, що до-
зволяє оптимізувати програми, написані
цією мовою, в атоматизованому режимі у
напрямку покращення їх швидкодії. Про-
ведено порівняння з фреймворком
Eazfuscator.NET на відомому академічному
прикладі клітинного автомата «Гра жит-
тя».
Література
1. Naono K., Teranishi K., Cavazos J., Suda R.
(2010), Software Automatic Tuning From
Concepts to State-of-the-Art Results. – Berlin:
Springer.
2. R Clinton Whaley, Jack J Dongarra, ATLAS.
Encyclopedia of Parallel Computing. 2011.
C. 95–101.
3. Katagiri T., Kise K., Honda H., Yuba T.,
AbcLibScript: A directive to support
specification of an auto-tuning facility for
numerical software. Parallel Computing.
2006. С. 92–112.
4. Pavlo A. Ivanenko, Anatoliy Y. Doroshenko,
and Kostiantyn A. Zhereb, TuningGenie:
Auto-Tuning Framework Based on Rewriting
Rules // in: 10th International Conference,
ICTERI 2014, Kherson, Ukraine, June 9-12,
2014, Revised Selected Papers, Series:
Communications in Computer and
Information Science, (Ermolayev, V., Mayr,
H.C., Nikitchenko, M., Spivakovsky, A.,
Zholtkevych, G. (Eds.)), Springer. CCIS Vol.
469. 2014. P. 139–160.
5. TermWare [Електронний ресурс]. Режим
доступу до ресурсу: http://www.gradsoft.ua/
products/termware_rus.html
6. Eazfuscator.NET [Online]. Available from:
https://www.gapotchenko.com/eazfuscator.net
Інструментальні засоби та середовища програмування
16
7. Doroshenko A., Shevchenko R. A rewriting
framework for rule-based programming
dynamic applications. Fundamenta Infor-
maticae. 2006. Vol. 72, N 1–3. P. 95–108.
8. Roslyn [Електронний ресурс]. Режим дос-
тупу до ресурсу: https://github.com/
dotnet/roslyn
9. Жереб К.А., Программный инструмента-
рий, основанный на правилах для автома-
тизации разработки приложений на плат-
форме Microsoft .NET. Управляющие сис-
темы и машины. 2009, №4. С. 51–59.
10. JNI4NET [Електронний ресурс]. – Режим
доступу до ресурсу: http://jni4net.com/
11. Application of Rewriting Term System for
Source Code Analysis [Електронний ре-
сурс]. Режим доступу до ресурсу:
http://www.gradsoft.ua/eng/whitepapers/secr2
008/secr2008-1.html
References
1. Naono, K., Teranishi, K., Cavazos, J., Suda,
R. (2010), Software Automatic Tuning From
Concepts to State-of-the-Art Results. – Berlin:
Springer.
2. R Clinton Whaley, Jack J Dongarra, ATLAS.
Encyclopedia of Parallel Computing. 2011.
P. 95–101.
3. Katagiri T., Kise K., Honda H., Yuba T.,
AbcLibScript: A directive to support
specification of an auto-tuning facility for
numerical software. Parallel Computing.
2006. P. 92–112.
4. Pavlo A. Ivanenko, Anatoliy Y. Doroshenko,
and Kostiantyn A. Zhereb, TuningGenie:
Auto-Tuning Framework Based on Rewriting
Rules // in: 10th International Conference,
ICTERI 2014, Kherson, Ukraine, June 9-12,
2014, Revised Selected Papers, Series:
Communications in Computer and
Information Science, (Ermolayev, V., Mayr,
H.C., Nikitchenko, M., Spivakovsky, A.,
Zholtkevych, G. (Eds.)), Springer, CCIS Vol.
469, 2014. P. 139–160.
5. TermWare [Online]. Available from:
http://www.gradsoft.ua/products/termware_ru
s.html
6. Eazfuscator.NET [Електронний ресурс]. –
Режим доступу до ресурсу:
https://www.gapotchenko.com/eazfuscator.net
7. Doroshenko A., Shevchenko R. A rewriting
framework for rule-based programming dy-
namic applications. Fundamenta Informaticae.
– 2006. – Vol. 72, No. 1–3. – P. 95–108.
8. Roslyn [Online]. Available from:
https://github.com/dotnet/roslyn
9. Zhereb K., Программный инструментарий,
основанный на правилах для автоматиза-
ции разработки приложений на платформе
Microsoft .NET // Control systems and
computers.(4). P. 51–59. (in Russian).
10. JNI4NET [Online]. Available from:
http://jni4net.com/
11. Application of Rewriting Term System for
Source Code Analysis [Online]. Available
from: http://www.gradsoft.ua/eng/white-
papers/secr2008/secr2008-1.html
Одержано 03.05.2019
Про авторів:
Мамедов Турал Алірзайович,
студент 2 курсу магістратури в
Київському національному університеті
імені Тараса Шевченка.
Кількість наукових публікацій в
українських виданнях – 2.
https://orcid.org/0000-0003-3029-5834,
Дорошенко Анатолій Юхимович,
доктор фізико-математичних наук,
професор, завідувач відділу теорії
комп’ютерних обчислень,
професор кафедри автоматики та
управління в технічних системах
НТУУ “КПІ імені Ігоря Сікорського”.
Кількість наукових публікацій в
українських виданнях – понад 150.
Кількість наукових публікацій в
зарубіжних виданнях – понад 50.
Індекс Хірша – 5.
http://orcid.org/0000-0002-8435-1451
Місце роботи авторів:
Київський національний університет імені
Тараса Шевченка, кафедра теорії та техно-
логії програмування.
Національний технічний університет
України "КПІ імені Ігоря Сікорського" та
Інститут програмних систем
НАН України,
03187, м. Київ-187,
проспект Академіка Глушкова, 40.
Тел.: (044) 526 3559.
E-mail: tural.mamedov1@gmail.com,
doroshenkoanatoliy2@gmail.com
mailto:tural.mamedov1@gmail.com
|