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 с.
