Preview

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

Расширенный поиск
Том 37, № 6: ноябрь-декабрь
7-20
Аннотация

В статье исследуется длина адаптивной различающей последовательности для семейства инициальных полностью определенных наблюдаемых, возможно, недетерминированных автоматов. Приводится верхняя оценка длины такой последовательности и показывается ее достижимость. Обсуждается, каким образом полученные результаты можно применить при построении адаптивных диагностических тестов на основе конечно-автоматной модели.

21-42
Аннотация

Представлен подход к реализации компонент JavaBeans, который обеспечивает создание определяемых пользователем компонент без их компиляции, путем манипуляций с существующими компонентами. Компонентная модель JavaBeans содержит принципиальные ограничения. Компоненты в ней являются классами, определенными для манипулирования их инстансами в предназначенной для этого среде манипулирования. Цель манипуляций – достичь требуемых состояний инстансов компонент и поведения их агрегации в целом; готовая агрегация может быть сериализована и десериализована позже в аналогичной среде. Тут скрыто противоречие: начиная с использования набора инстанциируемых классов, мы в итоге приходим к копированию агрегации из их инстансов. Чтобы использовать определяемую пользователем агрегацию для получения нового составного компонента, требуется сгенерировать его класс, подменяющий парадигму программирования (с инстанциирования на копирование). Предложено расширение компонентной модели JavaBeans, позволяющее динамически создавать определяемые пользователем компоненты без их кодогенерации и копирования агрегации инстансов.

43-58
Аннотация

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

59-82
Аннотация

Методы статического анализа определяют свойства программы без ее выполнения, при этом различные свойства позволяют решать различные задачи. Мы выполнили обзор статей, посвященных статическому анализу Golang. В данной работе мы изучили 34 публикации, опубликованные с момента выхода первой версии языка Go 1.0 (с 2012 по 2025 год включительно), посвящённые статическому анализу исходного кода на языке Golang. На основе проведённого анализа мы выделили основные направления и методы использования статического анализа, а также рассмотрели используемые промежуточные представления, особенности языка Golang, влияющие на процесс анализа, и трудности, с которыми сталкиваются разработчики статических анализаторов. Этот обзор будет полезен как разработчикам статических анализаторов, так и разработчикам программ на языке Golang, предоставляя им систематизированное понимание текущего состояния исследований в области статического анализа исходного кода на языке Golang.

83-100
Аннотация

В данной работе описывается подход к проверке результатов статического анализа кода при помощи больших языковых моделей (LLM), выполняющий фильтрацию предупреждений с целью удаления ложных. Для составления запроса к LLM предложенный подход сохраняет информацию, собранную анализатором, такую как абстрактное синтаксическое дерево программы, таблицы символов, резюме типов и функций. Эта информация может как напрямую передаваться в запросе к модели, так и использоваться для более точного определения фрагментов кода, необходимых для проверки истинности предупреждения. Подход был реализован в SharpChecker – промышленном статическом анализаторе для языка C#. Его тестирование на реальном коде показало повышение точности результатов на величину до 10 процентных пунктов при сохранении высокой полноты (от 0,8 до 0,97) для чувствительных к контексту и путям межпроцедурных детекторов утечки ресурсов, разыменования null и целочисленного переполнения. Для детектора недостижимого кода применение информации из статического анализатора позволило повысить полноту на 11–27 процентных пунктов по сравнению с подходом, использующим в запросе только исходный код программы.

101-120
Аннотация

В данной работе описан механизм автоматической классификации предупреждений статического анализа с использованием методов машинного обучения. Статический анализ является инструментом поиска потенциальных уязвимостей и ошибок в исходном коде. Однако зачастую статические анализаторы генерируют большое количество предупреждений, причем как истинных, так и ложных. Вручную проанализировать все найденные анализатором дефекты является трудоемкой и времязатратной задачей. Разработанный механизм автоматической классификации показал высокую точность более 93% при полноте около 96% на наборе предупреждений, сгенерированных промышленным инструментом статического анализа Svace при анализе реальных проектов. Генерация набора данных для модели машинного обучения основана на предупреждениях и метриках исходного кода, полученных в процессе анализа проекта статическим анализатором. В работе рассматриваются различные подходы к отбору и обработке признаков классификатора с учетом различных особенностей рассматриваемых алгоритмов машинного обучения. Эффективность работы механизма и его независимость от языка программирования позволили добавить его в промышленный инструмент статического анализа Svace. Были рассмотрены различные подходы к интеграции инструмента, учитывающие специфику статического анализатора, и выбран наилучший из них.

121-134
Аннотация

Данное исследование предлагает гибридный подход к реализации встраиваемых компиляторных функций, направленных на улучшение производительности. Встраиваемые компиляторные функции – особые функции, которые предоставляют доступ к низкоуровневым возможностям или улучшают производительность. Текущие реализации, как правило, используют либо раскрытие на месте, либо подходы, основанные на вызове. Раскрытие на месте может избыточно увеличить размер кода и время компиляции, но создать более эффективный код по времени исполнения. Подходы, основанные на вызове, могут проигрывать по производительности в связи с вызовом функции, но выигрывают по размеру кода и времени компиляции. Мы рассматриваем реализации встраиваемых функций в нескольких современных компиляторах виртуальных машин: в виртуальной машине Java HotSpot и в Android RunTime. Мы реализуем гибридный подход в LLVM-компиляторе для виртуальной машины Ark. Ark – это экспериментальная байткодная виртуальная машина со сборкой мусора, динамическим и статическим компиляторами. Мы сравниваем наш гибридный подход с раскрытием на месте и подходом, основанном на вызовах, на большом наборе бенчмарков. Результаты показывают, что гибридный подход по времени исполнения показывает значительное улучшение. Строковые бенчмарки выполняются быстрее на 6.8% по сравнению с подходом, основанном исключительно на вызовах, в то же время, чистое раскрытие на месте быстрее на 0.7% гибридного подхода. Мы рассматриваем две версии гибридного подхода. "Untouched" версия позволяет LLVM самому принимать решение о встраивании функции или выборе вызова. Подход "heuristic" мы разработали после того, как заметили, что LLVM в "untouched" подходе производит излишне агрессивное встраивание функций. Данная статья поможет разработчикам компиляторов найти баланс между временем исполнения, размером кода и временем компиляции при реализации встраиваемых функций.

135-148
Аннотация

В статье описывается аннотирование исходного кода для статического анализа. Рассмотрены атрибуты C/C++ и аннотации JVM-языков. Приведены основные цели и причины аннотирования исходного кода для статического анализа. Описаны основные аспекты реализации поддержки пользовательских аннотаций в анализаторе Svace.

149-166
Аннотация

Автоматическое распознавание заголовков таблиц остается сложной задачей из-за разнообразия макетов, включая многоуровневые заголовки, объединенные ячейки и нестандартное форматирование. В данной статье впервые предложена методология оценки эффективности больших языковых моделей в решении этой задачи с использованием текстовых подсказок (промпт-инжиниринга). Исследование охватывает восемь различных моделей и шесть стратегий текстовых подсказок, от минималистичных (zero-shot) до сложных с примерами (few-shot), на выборке из 237 таблиц. Результаты демонстрируют, что размер модели критически влияет на точность: крупные модели (405 млрд. параметров) достигают F-меры ≈ 0.80–0.85, тогда как малые (7 млрд. параметров) показывают F1 ≈ 0.06–0.30. Усложнение текстовых подсказок за счет пошаговых инструкций, критериев поиска и примеров улучшает результаты только для крупных моделей, тогда как для малых приводит к деградации из-за перегруженности контекста. Наибольшие ошибки возникают при обработке таблиц с иерархическими заголовками и объединенными ячейками, где даже средние и крупные модели теряют точность распознавания. Практическая значимость работы заключается в выявлении оптимальных конфигураций текстовых подсказок для разных типов моделей. Например, для крупных моделей эффективны краткие инструкции, а для средних – пошаговые инструкции с критериями поиска. Данное исследование открывает новые возможности по созданию универсальных инструментов для автоматического анализа заголовков таблиц.

167-180
Аннотация

Реализация и развитие чат-ботов как сервиса электронного правительства в значительной степени способствуют модернизации и повышению эффективности государственных услуг. Используя технологии Microsoft - в частности, сервис Azure OpenAI - возможно быстро и эффективно разработать интеллектуальных чат-ботов. При интеграции с порталом электронного правительства такие чат-боты обеспечивают пользователям улучшенный доступ к информации и персонализированную коммуникацию между гражданами и государственными учреждениями. Одной из ключевых проблем на сегодняшний день является отсутствие эффективных каналов связи, что приводит к увеличению времени отклика и снижению удовлетворенности пользователей. Цель данной работы – разработка чат-бота, который повысит качество предоставляемых услуг и сделает государственные сервисы более доступными гражданам через портал электронного правительства. В работе анализируются функциональные возможности чат-бота, такие как генерация ответов, проверка релевантности заданных вопросов и фильтрация информации. Кроме того, внимание уделяется правовым и этическим аспектам, защите данных, а также постоянному обучению модели для поддержания точности данных. В исследовании также рассматривается и демонстрируется, каким образом современные технологии, основанные на искусственном интеллекте, способствуют приближению государственных услуг к пользователям. Предлагаемое решение выявленных проблем заключается в внедрении модели чат-бота с интеграцией в портал электронного правительства для улучшения коммуникации. В конечном итоге основное внимание уделяется цифровизации и модернизации услуг в государственном секторе для получения выгод для общества в целом.

181-192
Аннотация

В статье рассматриваются показатели множественного числа существительных в южных, переходном, центральных и северных диалектах селькупского языка. Материалом послужили корпусные данные объемом более 85,000 словоформ, расположенные на платформе Lingvodoc и в личных архивах (файлы Fieldworks Language Explorer), а также общие грамматические и лексические труды по языку. Множественное число существительных может быть выражено суффиксами -t(V), ‑la, -i (-ni), контаминированным показателем -lat, суффиксами множественного числа в совокупности с показателями взаимной связи -sa- и собирательного множества mɨ- -sat, -sala, -mɨt, ‑mɨtla, а также суффиксом собирательного множества -mɨ без дополнительных маркеров множественности. В результате исследования было выяснено, что основным маркером множественного числа в южной и переходной языковых зонах является -la, в центральных васюганском и тымском, а также северных диалектах – -t(V). В центральном нарымском диалекте встречаются оба показателя -t(V) и -la в том числе в контаминированной форме -lat, где для северной части более характерен суффикс -t(V), а для южной -la. В северных и центральных диалектах в посессивных формах используется показатель множественного числа -i (‑ni), в то время как в южных и переходном диалектах он был вытеснен показателем -la в тех же позициях. В южных, переходном, центральных и северных диалектах с терминами родства используется суффикс взаимной связи -sa- вместе с -t(V)sat; реже в южных, центральных и северных диалектах суффикс собирательного множества -mɨ- вместе с -t(V)-mɨt. В северных диалектах для выражения собирательного множества без дополнительных числовых показателей применяется показатель -.

193-202
Аннотация

В статье рассматриваются названия мастей лошади, которые имеют лексические параллели в тюркских языках Урало-Поволжья и монгольских языках. Исследования проводились с учетом данных по этимологии и лексикологии тюркских и монгольских языков. Предпринималась попытка выявления ареалов распространения отдельных лексем. Поиск этимологий и картографирование проводились на лингвистической платформе ЛингвоДок. Выявлены следующие особенности тюрко-монгольских параллелей цветообозначений в тюркских языках Урало-Поволжья: во-первых, часть общих для тюркских языков Урало-Поволжья и монгольских языков лексем для обозначения цвета являются родственными на генетическом уровне, происхождение которых восходит к праалтайским формам; во-вторых, в монгольских языках встречаются тюркские, в тюркских языках монгольские заимствованные названия цвета. Установлено, что в тюркских языках Урало-Поволжья монгольские заимствованные цветообозначения являются главным образом названиями мастей лошади, в то время как в монгольских языках тюркские заимствования могут обозначать как масть животных, так и цвет в целом.

203-218
Аннотация
Статья посвящена сравнительному анализу лексики материальной культуры ижемского диалекта коми языка. Исследование проведено на основе данных словаря М.А. Кастрена 1844 года (в переработанном издании 2022 года) и аудиословаря 2012 года говора с. Белоярск Приуральского района ЯНАО, обработанного и загруженного на платформу LingvoDoc Е.В. Кашкиным. Цель работы — выявить ключевые тенденции лексической динамики ижемского диалекта, изучая взаимодействие исконной лексики с заимствованиями, инновациями и архаизмами на протяжении более чем 160 лет. Особое внимание уделено ижемскому диалекту как уникальному случаю, сформировавшемуся под влиянием интенсивных исторических контактов с русским и ненецким языками в полиэтнической среде, что важно для понимания жизнеспособности языка и языковых сдвигов. Были проанализированы 127 лексем из словаря М. А. Кастрена и 167 лексем из современного аудиословаря говора с. Белоярск. Лексические единицы были категоризированы по пяти тематическим группам: жилище, утварь и предметы быта, одежда и обувь, орудия труда и промыслов, а также транспорт. Каждая лексема сравнивалась по наличию в источниках, фонологической форме, значению и этимологии. В результате анализа были выявлены прямые соответствия, случаи архаизации, инновации, лексической замены и фонетико-морфологических изменений. Полученные результаты демонстрируют различные закономерности в исследуемых тематических группах. Наибольшая доля архаизмов (50%) зафиксирована в категории "Орудия труда и промыслов", что коррелирует с исчезновением обозначаемых реалий в связи с утратой традиционных промыслов. В то же время максимальное количество инноваций (73,9%) обнаружено в группе "Транспорт", что объясняется активным развитием новой арктической терминологии и заимствованиями. Отмечается, что не все различия между источниками являются исключительно результатом лексических изменений; некоторые могут быть связаны с неполнотой фиксации. Таким образом, лексика материальной культуры ижемского диалекта демонстрирует как зоны устойчивости, так и активной лексической перестройки. Полученные данные могут быть использованы для реконструкции лексических подсистем, изучения контактных влияний и описания языковой эволюции на периферии коми языкового ареала.
219-232
Аннотация

В работе представлен метод анализа макета PDF документов на основе графовых нейронных сетей (GNN), использующий слова в качестве узлов графа для преодоления ограничений современных подходов, опирающихся на строки или локальные области. Предложенная модель WordGLAM, основанная на модифицированных графовых сверточных слоях, демонстрирует возможность построения иерархических структур через агрегацию слов, что обеспечивает баланс между точностью детекции элементов и их семантической связностью. Несмотря на отставание от лидирующих моделей в данной области (например, от модели Vision Grid Transformer) по метрикам точности, исследование выявляет системные проблемы области: дисбаланс данных, неоднозначность кластеризации слов («цепные связи», «мосты» между несвязанными регионами), а также спорные критерии выбора классов при разметке. Ключевым вкладом работы является формулировка новых исследовательских задач, включая оптимизацию векторных представлений слов, учет признаков ребер и разработку методов оценки для сложных иерархий. Результаты подтверждают перспективность подхода для создания адаптируемых моделей, способных обрабатывать разноформатные документы (научные статьи, юридические тексты). Работа фокусирует внимание на необходимости дальнейших исследований в области регуляризации и расширения обучающих данных, открывая пути для улучшения переносимости методов анализа макета на новые домены. Код и модели были опубликованы на GitHub (https://github.com/YRL-AIDA/wordGLAM).

233-242
Аннотация

В работе проведено исследование интерпретируемости двух популярных архитектур глубокого обучения ResNet50 и Vision Transformer (ViT-224) в рамках решения задачи классификации патогенных микроорганизмов на изображениях, полученных посредством сканирующего электронного микроскопа и предварительной пробоподготовкой с использованием лантаноидного контрастирования. Помимо стандартных показателей качества, таких как: точность, полнота и F1‑мера, ключевым аспектом стало исследование встроенных карт внимания Vision Transformer и пост-интерпретации работы обученной модели ResNet50 с помощью метода Grad-CAM. Эксперименты выполнялись на исходном наборе данных, а также трёх его модификациях: с обнулённым фоном (threshold), с модифицированными участками изображения методом inpainting, и с полностью очищенным фоном с помощью обнуления фоновых участков. Для оценки универсальности механизма внимания в Vision Transformer дополнительно проведён тест на классической задаче распознавания рукописных цифр MNIST. Результаты показали, что архитектура Vision Transformer демонстрирует более локализованные и биологически обоснованные тепловые карты внимания, а также большую устойчивость к изменению фонового шума.



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


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