РАСШИРЕНИЕ ЯЗЫКА C ДЛЯ ПОДДЕРЖКИ ПРОЦЕДУРНО-ПАРАМЕТРИЧЕСКОГО ПОЛИМОРФИЗМА (2023)
Разработка программного обеспечения зачастую связана с расширением функциональности. Для повышения надежности в этом случае необходимо минимизировать изменение ранее написанного кода. Для инструментальной поддержки эволюционной разработки программ была предложена процедурно-параметрическая парадигма программирования, что позволило повысить возможности процедурного подхода. Это обеспечивает безболезненное расширение как данных, так функций, используя при этом статическую типизацию. В работе рассматривается включение процедурно-параметрического программирования в язык C. Предлагаются дополнительные синтаксические конструкции, ориентированные на поддержку предлагаемого подхода. К ним относятся: параметрические обобщения, специализации обобщений, обобщающие функции, обработчики специализаций. Описываются их семантика, возможности и особенности технической реализации. Для проверки возможностей использования данного подхода построены модели процедурно-параметрических конструкций на языке программирования C. Приведенный пример демонстрирует гибкое расширение программы и поддержку множественного полиморфизма.
Идентификаторы и классификаторы
- eLIBRARY ID
- 50471292
При разработке программных систем необходимо учитывать различные дополнительные факторы, многие из которых определяются как критерии качества программного обеспечения (ПО). Расширение программы без изменения ранее написанного кода является одним из них. Оно обуславливается как неполным знанием окончательной функциональности программ во время ее создания и начальной эксплуатации, так и необходимостью ускорить выход продукта на рынок за счет реализации только базового набора функций с последующим его наращиванием. В подобных ситуациях добавление новых программных конструкций в код, сопровождаемое его изменением, зачастую ведет к появлению ошибок и непредсказуемому поведению.
Эволюционное расширение программ во многом связано с использованием динамического полиморфизма, который обеспечивает обработку ветвей программы во время ее выполнения, не используя при этом явной проверки альтернативных вариантов. Это отличает его от статического полиморфизма, при котором альтернативные вычисления выявляются во время компиляции. Изначально решения, связанные с реализацией динамического полиморфизма, были предложены для объектно-ориентированной (ОО) парадигмы. Например, в бестиповых и динамически типизированных ОО языках используется «утиная типизация». Ее идея заключается в том, что если любые, даже несвязанные объекты, имеют одинаковый по сигнатуре метод, они, каждый по своему, могут обработать обращение к нему. Это решение реализовано в языках программирования Smalltalk [1], Python [2] и многих других.
Список литературы
-
D. Shafer and D. A. Ritz, Practical Smalltalk. Using Smalltalk/V, Springer-Verlag. 1991, p. 233.
-
H. John, Advanced Guide to Python 3 Programming, Springer. 2019, p. 497.
-
M. Gregoire, Professional C++, John Wiley & Sons. 2018, p. 1122.
-
E. Sciore, Java Program Design, Apress Media. 2019, p. 1122.
-
J. Albahari and B. Albahari, C# 6.0 Pocket Reference: Instant Help for C# 6.0 Programmers, O’Reilly Media. 2016, p. 224.
-
A. Freeman, Pro Go: The Complete Guide to Programming Reliable and Efficient Software Using Golang, Apress. 2022, p. 1105.
-
J. Blandy, J. Orendorff, and L. F. Tindall, Programming Rust, O’Reilly Media. 2021, p. 735.
-
E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns. Elements of Reusable Object-Oriented Software, Addison-Wesley Professional. 1994, p. 416.
-
A. Alexandrescu, Modern C++ Design. Generic Programming and Design Patterns Applied. Addison-Wesley Professional. 2001, p. 360.
-
S. Meyers, More elfective C++. 35 New Ways to Improve Your Programs and Designs, Addison-Wesley Professional. 1996, p. 318.
-
A. Legalov, "OOP, Multimethods and Pyramidal Evolution", Open Systems, no. 3, pp. 41-45, 2002, In Russian.
-
L. Demichiel, "Overview: The common lisp object system", Lisp and Symbolic Computation, no. 1, pp. 227-244, 1989.
-
B. Stroustrup, Design and Evolution of C++, Addison-Wesley Professional. 1994, p. 480.
-
A. Legalov, Procedurally-parametric programming paradigm. Is it possible as alternative to the object-oriented style?, Dep. hands. Number 622-V00 Dep. VINITI 13.03.2000. 2000, p. 43, In Russian.
-
I. Legalov, "Using of generalized records in procedural-parametric programming language", Scientific Bulletin of the NSTU, vol. 28, no. 3, pp. 25-37, 2007, In Russian. EDN: KVIIRF
-
A. Legalov and D. Schvetc, "Procedural language with support for evolutionary design", Scientific Bulletin of the NSTU, vol. 15, no. 2, pp. 25-38, 2003, In Russian. EDN: ORHYOX
-
A. Legalov and P. Kosov, "Evolutionary extension of programs using the procedural-parametric approach", Computational Technologies, vol. 21, no. 3, pp. 56-69, 2016, In Russian. EDN: UBTYNI
-
Linux x86 Program Start Up or - How the heck do we get to main()? [Online]. Available: http://dbp- consulting.com/tutorials/debugging/linuxProgramStartup.html.
-
An example of an evolutionary extension of a program using a procedural-parametric approach. [Online]. Available: https://github.com/kreofil/c-evolution-example.
-
A. Legalov, "Multimethods and paradigms", Open Systems, no. 5, pp. 33-37, 2002, In Russian.
-
Clang: a C language family frontend for LLVM. [Online]. Available: https://clang.llvm.org/.
-
The LLVM Compiler Infrastructure. [Online]. Available: https://llvm.org/.
-
LibTooling. [Online]. Available: https://clang.llvm.org/docs/LibTooling.html.
Выпуск
Другие статьи выпуска
Статья посвящена построению корпуса предложений, размеченных по общей тональности на 4 класса (положительный, отрицательный, нейтральный, смешанный), корпуса фразеологизмов, размеченных по тональности на 3 класса (положительный, отрицательный, нейтральный), и корпуса предложений, размеченных по наличию или отсутствию иронии. Разметку проводили волонтёры в рамках проекта «Готовим тексты алгоритмам» на портале«Люди науки».На основе имеющихся знаний о предметной области для каждой из задач были составлены инструкции для разметчиков. Также была выработана методика статистической обработки результатов разметки, основанная на анализе распределений и показателей согласия оценок, выставленных разными разметчиками. Для разметки предложений по наличию иронии и фразеологизмов по тональности показатели согласия оказались достаточно высокими (доля полного совпадения 0.60-0.99), при разметке предложений по общей тональности согласие оказалось слабым (доля полного совпадения 0.40), по-видимому, из-за более высокой сложности задачи. Также было показано, что результаты работы автоматических алгоритмов анализа тональности предложений улучшаются на 12-13 % при использовании корпуса, относительно предложений которого сошлись мнения всех разметчиков (3-5 человек), по сравнению с корпусом с разметкой только одним волонтёром.
Задача распознавания именованных сущностей (named entity recognition, NER) состоит в выделении и классификации слов и словосочетаний, обозначающих именованные объекты, таких как люди, организации, географические названия, даты, события, обозначения терминов предметных областей. В поисках лучшего решения исследователи проводят широкий спектр экспериментов с разными технологиями и исходными данными. Сравнение результатов этих экспериментов показывает значительное расхождение качества NER и ставит проблему определения условий и границ применения используемых технологий, а также поиска новых путей решения. Важным звеном в ответах на эти вопросы является систематизация и анализ актуальных исследований и публикация соответствующих обзоров. В области распознавания именованных сущностей авторы аналитических статей в первую очередь рассматривают математические методы выделения и классификации и не уделяют внимание специфике самой задачи. В предлагаемом обзоре область распознавания именованных сущностей рассмотрена с точки зрения отдельных категорий задач. Авторы выделили пять категорий: классическая задача NER, подзадачи NER, NER в социальных сетях, NER в предметных областях, NER в задачах обработки естественного языка (natural language processing, NLP). Для каждой категории обсуждается качество решения, особенности методов, проблемы и ограничения. Информация об актуальных научных работах каждой категории для наглядности приводится в виде таблицы, содержащей информацию об исследованиях: ссылку на работу, язык использованного корпуса текстов и его название, базовый метод решения задачи, оценку качества решения в виде стандартной статистической характеристики F-меры, которая является средним гармоническим между точностью и полнотой решения. Обзор позволяет сделать ряд выводов. В качестве базовых технологий лидируют методы глубокого обучения. Основными проблемами являются дефицит эталонных наборов данных, высокие требования к вычислительным ресурсам, отсутствие анализа ошибок. Перспективным направлением исследований в области NER является развитие методов на основе обучения без учителя или на основе правил. Возможной базой предобработки текста для таких методов могут служить интенсивно развивающиеся модели языков в существующих инструментах NLP. Завершают статью описание и результаты экспериментов с инструментами NER для русскоязычных текстов.
Численное исследование различных процессов приводит к необходимости уточнения (расширения) границ применимости вычислительных конструкций и инструментов моделирования. В настоящей статье изучается дифференцируемость в пространстве интегрируемых по Лебегу функций и рассматривается согласованность этого понятия с основополагающими вычислительными построениями такими, как разложение Тейлора и конечные разности. Функцию f из L1[a;b] назовём (k,L)-дифференцируемой в точке x0 из (a;b), если существует алгебраический многочлен P, степени не выше k, такой, что интеграл по отрезку от x0 до x0+h для f−P есть o(hk+1). Найдены формулы для вычисления коэффициентов такого P, представляющие собой предел отношения интегральных модификаций конечных разностей Δmh(f,x) к hm,m=1,⋯,k. Получается, что если f∈Wl1[a;b], и f(l) является (k,L)-диффе\-ренци\-руемой в точке x0, то f приближается тейлоровским многочленом с точностью o((x−x0)l+k), а коэффициенты разложения могут быть найдены указанным выше способом. Для исследования функций из L1 на множестве применяется дискретная <<глобальная>> конструкция разностного выражения: на основе частного Δmh(f,⋅) и hm строится последовательность {Λmn[f]} кусочно-постоянных функций, подчинённых разбиениям полуинтервала [a;b) на n равных частей. Показано, что для (k,L)-диффе\-ренци\-руемой в точке x0 функции f последовательности {Λmn[f]},m=1,⋯,k, сходятся при n→∞ в этой точке к коэффициентам приближающего в ней функцию многочлена. С помощью {Λkn[f]} устанавливается теорема: {\it <<f из L1[a;b] принадлежит Ck[a;b]⟺ f равномерно (k,L)-диффе\-рен\-цируе\-ма на [a;b]>>.} Отдельное место занимает изучение построений, соответствующих случаю m=0. Их рассматриваем в L1[Q0], где Q0 -- куб в пространстве Rd. По заданной функции f∈L1 и разбиению τn полузамкнутого куба Q0 на nd равных полузамкнутых кубов построим кусочно-постоянную функцию Θn[f], определяемую как интегральное среднее f на каждом кубе Q∈τn. Данная вычислительная конструкция приводит к следующим теоретическим фактам: {\it \,1)\,f из L1 принадлежит Lp,1≤p<∞,⟺{Θn[f]} сходится в Lp; ограниченность {Θn[f]}⟺f∈L∞; 2)\,последовательности {Θn[⋅]} определяют на классах эквивалентности оператор-проектор Θ в пространстве L1; 3)\,для функции f∈L∞ получаем Θ[f]¯¯¯¯¯¯∈B, где B -- это пространство ограниченных функций, а Θ[f]¯¯¯¯¯¯ -- доопределённая на множестве меры ноль функция Θ[f](x), и выполняется равенство ∥∥Θ[f]¯¯¯¯¯¯∥∥B=∥f∥∞. } Таким образом, в семействе пространств Lp можно заменить L∞[Q0] на B[Q0].
В работе рассмотрена задача моделирования информационного обмена адаптивной системы управления движением группы беспилотных летательных аппаратов (БЛА). Движение группы БЛА осуществляется в соответствии с адаптивным алгоритмом оптимального управления пространственной перестройкой. Оптимальные управления строятся обеспечивающими минимум общей затрачиваемой энергии. Параметры математической модели движения группы БЛА уточняются в процессе полета в соответствии с изменяющимися внешними условиями. В соответствии с этим уточняются управляющие воздействия. Это требует значительных вычислительных ресурсов и накладывает особые требования на систему информационного обмена между БЛА и пунктом управления. Предложена схема информационного обмена между БЛА и пунктом управления, позволяющая рассчитать оптимальные параметры передающих устройств.
В статье рассматриваются неориентированные кратные графы произвольной натуральной кратности k > 1. Кратный граф содержит ребра трех типов: обычные, кратные и мультиребра. Ребра последних двух типов представляют собой объединение k связанных ребер, которые соединяют 2 или (k + 1) вершину соответственно. Связанные ребра могут использоваться только согласованно. Если вершина инцидентна кратному ребру, то она может быть инцидентна другим кратным ребрам, а также она может быть общим концом k связанных ребер мультиребра. Если вершина является общим концом мультиребра, то она не может быть общим концом никакого другого мультиребра.Как и для обычного графа, для кратного графа можно ввести целочисленную функцию длины ребра и поставить задачу о кратчайшем пути между двумя вершинами. Кратный путь является объединением k обычных путей, согласованных на связанных ребрах кратных и мультиребер. В статье оптимизирован полученный ранее алгоритм поиска кратчайшего пути в произвольном кратном графе. Показано, что оптимизированный алгоритм полиномиален. Таким образом, задача о кратчайшем пути является полиномиальной для любого кратного графа.
Издательство
- Издательство
- ЯрГУ им. П.Г. Демидова
- Регион
- Россия, Ярославль
- Почтовый адрес
- 150003, Ярославль, Советская, 14,
- Юр. адрес
- 150003, Ярославль, Советская, 14,
- ФИО
- Иванчин Артем Владимирович (Ректор)
- E-mail адрес
- rectorat@uniyar.ac.ru
- Контактный телефон
- +7 (485) 2797702