Creating an expert system for choosing a programming language

UDC 04
Publication date: 22.12.2025
International Journal of Professional Science №12(1)-25

Creating an expert system for choosing a programming language

Создание экспертной системы для выбора языка программирования

Starko Evgenia Sergeevna,
Macheeva Marina Andreevna,
Starko Vladislav Sergeevich,


Pedagogical Institute of SSU named after. N.G. Chernyshevsky,
SSTU named after. Gagarina Yu.A.


Старко Евгения Сергеевна,
Мачеева Марина Андреевна,
Старко Владислав Сергеевич,
Педагогический институт СГУ им. Н.Г. Чернышевского,
СГТУ им. Гагарина Ю.А
Аннотация: Создание экспертной системы для выбора языка программирования представляет собой актуальную научно-практическую проблему. Внедрение подобного решения позволит не только структурировать сведения о современных языках программирования, но и предложит удобный инструмент для поддержки принятия решений, что будет способствовать повышению результативности образовательного процесса и профессиональной деятельности в IT-сфере.

Abstract: Developing an expert system for programming language selection is a pressing scientific and practical problem. Implementing such a solution will not only structure information about modern programming languages but also offer a convenient decision support tool, thereby enhancing the effectiveness of educational processes and professional activities in the IT field.
Ключевые слова: база знаний, языки программирования, экспертная система, поддержка принятия решений.

Keywords: knowledge base, programming languages, expert system, decision support.


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

В этом контексте экспертные системы являются эффективным инструментом, позволяющим формализовать и применить знания опытных профессионалов для консультации пользователей. Актуальность данного исследования продиктована необходимостью автоматизации процедуры выбора языка программирования на основе объективных критериев (тип проекта, требования к производительности, целевая платформа) и субъективных предпочтений (сложность освоения, активность сообщества), что позволяет минимизировать временные затраты на начальной стадии разработки и повысить обоснованность принимаемого решения.

Построение репрезентативной и достоверной базы знаний является фундаментальным этапом разработки экспертной системы. Для обеспечения полноты и объективности информации был использован комплексный подход, основанный на интеграции данных из взаимодополняющих источников.

Фактологическую основу о языках программирования составила официальная документация от правообладателей и организаций-разработчиков. Эти материалы предоставили актуальные и верифицированные данные о синтаксисе, парадигмах, системах типов и ключевых функциях каждого языка. Дополнительным источником выступили международные стандарты (ISO/IEC, ECMA), закрепляющие формальные спецификации.

Теоретической основой для построения модели знаний послужила научная и учебно-методическая литература. Классические труды, такие как «Основные концепции языков программирования» Р. Себесты [1], легли в основу сравнительного анализа, а работа Дж. Джарратано и Г. Райли «Экспертные системы: принципы разработки и программирование» [2] обеспечила методологическую базу для проектирования системы.

Таким образом, синтез информации из официальных, аналитических, научных и экспертных источников позволил создать многомерную базу знаний, гарантирующую комплексный и взвешенный подход к выбору языка программирования.

Для создания прототипа экспертной системы был выбран язык программирования Python с библиотекой tkinter для разработки графического интерфейса пользователя (GUI). Этот выбор обусловлен рядом причин: бесплатность и доступность инструментов, интуитивно понятный синтаксис Python, наличие мощных средств для обработки текста и работы со структурами данных, а также возможность оперативной разработки прототипа с современным интерфейсом. Указанные характеристики делают Python оптимальным решением как для создания прототипов диалоговых систем, так и для образовательных целей.

Фактовая база экспертной системы представляет собой совокупность структур данных, описывающих текущее состояние предметной области и характеристики пользовательских требований. В разработанной системе данные организованы с использованием словарей Python (dict), что обеспечивает типизацию данных и структурированное представление информации.

База знаний о языках программирования организована в виде словаря, где ключом является название языка, а значением — словарь с характеристиками: self.languages_db = {

    «Python»: {

        «description»: «Python — высокоуровневый язык с простым синтаксисом»,

        «best_for»: [«веб-разработка», «наука о данных», «машинное обучение», «автоматизация»],

        «difficulty»: «легкий»,

        «speed»: «средняя»,

        «community»: «очень большая»

    },

    «JavaScript»: {

        «description»: «JavaScript — язык для веб-разработки и создания интерактивных сайтов»,

        «best_for»: [«веб-разработка», «фронтенд», «бэкенд», «мобильные приложения»],

        «difficulty»: «средний»,

        «speed»: «высокая»,

        «community»: «очень большая»

    },

    …

}

Каждая запись о языке программирования содержит следующие атрибуты:

  • description (строка) — краткое описание языка
  • best_for (список строк) — области применения языка
  • difficulty (строка) — уровень сложности изучения: «легкий», «средний», «сложный»
  • speed (строка) — производительность: «низкая», «средняя», «высокая», «очень высокая»
  • community (строка) — размер сообщества: «малая», «растущая», «большая», «очень большая»

Информация о требованиях пользователя хранится в словаре:

self.user_info = {

    «experience»: None,

    «purpose»: None,

    «platform»: None,

    «complexity»: None,

    «speed»: None,

    «community»: None

}

Управление ходом диалога осуществляется через переменные состояния:

self.current_topic = «greeting»

self.conversation_count = 0

self.recommended_languages = []

Для верификации корректности работы разработанной экспертной системы был проведен комплекс тестовых запусков с различными входными параметрами. Демонстрация работы системы представлена на примере трех характерных сценариев использования.

Система продемонстрировала способность анализировать комплексные требования к веб-проектам (рис.1). На основе введенных параметров система корректно применяет продукционные правила и формирует обоснованные рекомендации, предлагая Python как оптимальный вариант для начинающих благодаря простому синтаксису, JavaScript для веб-разработки и Java как универсальное решение, что в совокупности подтверждает адекватность работы механизма логического вывода и способность системы адаптироваться к минимальным требованиям пользователя, предоставляя релевантные варианты выбора.

Рисунок 1 – Тестовый сценарий №1

Экспертная система успешно проанализировала требования проекта (рис. 2) и сформировала обоснованные рекомендации на основе введенных пользователем параметров: гибридной парадигмы программирования, коротких сроков реализации и средней численности команды разработчиков. Приоритетная рекомендация JavaScript обусловлена его универсальностью для веб-разработки и создания интерактивных приложений, что оптимально соответствует требованиям сжатых сроков и средних команд. Альтернативные рекомендации Python и Go демонстрируют способность системы адаптироваться к различным сценариям разработки: Python предлагается для быстрого прототипирования благодаря простому синтаксису и богатой экосистеме, а Go — для построения масштабируемых приложений в условиях средних команд, что подтверждает гибкость механизма логического вывода системы.

Рисунок 2 – Тестовый сценарий №2

Система корректно идентифицировала специфические требования научных вычислений и машинного обучения (рис.3). Рекомендация Python полностью соответствует критериям быстрого прототипирования благодаря обширной коллекции специализированных библиотек.

Рисунок 3 – Тестовый сценарий №3

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

Перспективы дальнейшего развития проекта включают расширение и детализацию базы знаний (учет популярных фреймворков и библиотек, более тонкая градация типов проектов), усложнение логики вывода (введение нечёткой логики для работы с неточными критериями), а также разработку более удобного графического пользовательского интерфейса, интегрированного в среду разработки.

References

1. Роберт У. Себеста. Основные концепции языков программирования / Пер. с англ. - 5-е изд. - М. : Вильямс, 2001. - 672 с.
2. Джарратано, Дж. Экспертные системы: принципы разработки и программирование / Дж. Джарратано, Г. Райли. - 4-е изд. - М. : Вильямс, 2007. - 1152 с.