2. Brain M. et al. An automatable formal semantics for IEEE-754 floating-point arithmetic // 2015 IEEE 22nd Symposium on Computer Arithmetic. IEEE, 2015. С. 160-167.
3. Грошев А., Закляков П. Информатика. Litres, 2022.
4. Зыков А.Г., Поляков В.И. Арифметические основы ЭВМ. СПб: Университет ИТМО. 2016.
5. Kahan W. IEEE standard 754 for binary floating-point arithmetic // Lecture Notes on the Status of IEEE. 1996. Т. 754. №. 94720-1776. С. 11.
6. Холодилов С. Плавающая запятая // RSDN Magazine. 2007. №4. С. 12-14.
7. Бурдинский И.Н. Системы счисления и арифметика ЭВМ. 2014.
8. IEEE 754-2008 [Электронный ресурс1 URL: https://web.archive.org/web/20200428043913/https://ru.wikipedia.org/wiki/IEEE 754-2008 (дата обращения: 06.11.2024).
Никкель Кирилл Евгеньевич, магистрант, [email protected], Россия, Москва, Российский технологический университет МИРЭА,
Сосунов Андрей Алексеевич, магистрант, [email protected]. Россия, Москва, Российский технологический университет МИРЭА
Петросян Лусинэ Эдуардовна, канд. экон. наук, доцент, Petrosyan@mirea. ru. Россия, Москва, Российский технологический университет МИРЭА
FEATURES OF USING AND STORING IN COMPUTER MEMORY VALUES CORRESPONDING TO THE FORM OF REPRESENTATION OF FLOATING-POINT NUMBERS ACCORDING TO IEEE 754 STANDARD
K.E. Nikkei, A.A. Sosunov, L.E. Petrosyan
The article considers the main issues related to the features of storing and using floating-point numbers in the memory of computers (electronic computers), mathematical models and algorithms of some operations that are characteristic of the above-mentioned numbers that correspond to the subject of such numbers. The essence offloating-point numbers, their mathematical and hardware structure are described. The issues of normalization and transformation of numbers to bring them to a form that meets the requirements of the main regulatory standard describing the issues of storing such numbers in the memory of a computer are considered. Examples of performing basic arithmetic operations on numbers in the IEEE 754 standard are given. Many theses and statements are illustrated and confirmed by software.
Key words: floating-point number, mantissa, order, IEEE 754, representation form, accuracy, bit grid.
Nikkel Kirill Evgenievich, master's, [email protected]. Russia, Moscow, Russia, Moscow, Russian University of Technology MIREA,
Sosunov Andrey Alekseevich, master's, [email protected]. ru, Russia, Moscow, Russia, Moscow, Russian University of Technology MIREA,
Petrosyan Lusine Eduardovna, candidate of economic sciences, docent, [email protected], Russia, Moscow, Russian University of Technology MIREA
УДК 004.43
DOI: 10.24412/2071-6168-2024-10-701 -702
СРАВНИТЕЛЬНЫЙ АНАЛИЗ БИБЛИОТЕК РЕАЛИЗАЦИИ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА
НА ЯЗЫКЕ C++
А.А. Шмаков, М.А. Одиноков, Л.Э. Петросян
В статье содержится краткий обзор библиотек реализации пользовательского интерфейса на языке C++. Рассматриваются наиболее популярные библиотеки: QT, wxWidgets, GTK+, FLTK (Fast, Light Toolkit) и MFC (Microsoft Foundation Classes).
Ключевые слова: сравнительный анализ, анализ, библиотеки, библиотека пользовательского интерфейса, GUI, C++, QT, wxWidgets, GTK+, FLTK, MFC.
Современные приложения требуют интуитивного, отзывчивого и удобного пользовательского интерфейса (GUI). Для создания интерфейсов на языке C++ существует несколько популярных библиотек, среди которых выделяются QT, wxWidgets, GTK+, FLTK (Fast, Light Toolkit) и MFC (Microsoft Foundation Classes).
Эти библиотеки позволяют разрабатывать кроссплатформенные приложения для Windows, macOS и Linux. В данной статье представлен сравнительный анализ библиотек QT и wxWidgets с точки зрения их архитектуры, возможностей и эффективности.
Материал исследования. QT. QT - это библиотека для разработки кроссплатформенных приложений с графическим интерфейсом, а также консольных приложений [1]. Она поддерживает широкий спектр функций, включая работу с сетью, базами данных, мультимедиа и многими другими аспектами разработки. QT использует
701
сигнально-слотовую систему для обработки событий, что обеспечивает простоту в управлении сложными взаимодействиями между объектами. Кроме того, QT предлагает интегрированные инструменты для дизайна интерфейсов, такие как Qt Designer, который упрощает процесс разработки GUI.
Библиотека может использоваться не только при разработке на языке C++, но и в других языках программирования, таких как: Python, C#, Java, PHP и т.д.
Основные характеристики QT:
Сигнально-слотовая система, облегчающая связь между объектами.
Наличие встроенных инструментов для разработки интерфейсов.
Поддержка современных подходов, таких как QML (Qt Meta Language или Qt Modeling Language) и Qt Quick для создания современных пользовательских интерфейсов.
Богатая экосистема библиотек и модулей.
wxWidgets. wxWidgets - это библиотека с открытым исходным кодом, предоставляющая возможность разрабатывать кроссплатформенные приложения с использованием нативных элементов интерфейса операционных систем [2]. Она приближена к традиционному объектно-ориентированному программированию без использования дополнительных механизмов, таких как сигнально-слотовая система.
В отличие от других мультиплатформенных библиотек, wxWidgets использует API платформы вместо эмуляции графического интерфейса пользователя, что позволяет приложениям выглядеть «родными» на каждой платформе.
Основные характеристики wxWidgets:
Использование нативных компонентов операционной системы для отрисовки интерфейса.
Высокая степень кроссплатформенной совместимости.
Простая структура, которая позволяет быстро освоиться разработчикам, знакомым с объектно-ориентированным программированием.
Широкий набор инструментов для создания GUI, работы с файлами, сетью и базами данных.
GTK+. GTK+ (GIMP Toolkit) — это библиотека с открытым исходным кодом, предназначенная для разработки графических пользовательских интерфейсов, в первую очередь для приложений на платформе Linux, но также поддерживающая другие операционные системы [3]. Первоначально разработанная для обеспечения интерфейса редактора изображений GIMP, она быстро завоевала признание среди разработчиков благодаря своей гибкости и универсальности. GTK+ предоставляет богатый набор виджетов, таких как кнопки, текстовые поля, списки и меню, а также поддерживает сложные макеты с помощью контейнеров.
Одной из ключевых причин популярности GTK+ является его активное сообщество, поддерживающее развитие библиотеки и предлагающее множество ресурсов для программистов. Сообщество активно работает над улучшением производительности и удобства использования, а также над расширением функциональности библиотек через различные плагины и дополнения. Возможность интеграции с другими системами и библиотеками, такими как GStreamer для мультимедийного контента, позволяет разработчикам создавать более сложные и многофункциональные приложения.
Основные характеристики GTK+:
GTK+ не использует нативные элементы интерфейса, а рисует собственные виджеты, что позволяет добиться единого внешнего вида на всех платформах.
Хотя GTK+ написан на C, существуют биндинги для других языков программирования, таких как C++, Python и Ruby.
Библиотека предлагает богатый набор элементов управления, что позволяет легко создавать сложные интерфейсы.
GTK+ поддерживает темизацию с использованием CSS, что позволяет разработчикам легко изменять внешний вид приложений.
FLTK. FLTK (Fast, Light Toolkit) — это легковесная кроссплатформенная библиотека для создания графических пользовательских интерфейсов [4]. Она предоставляет разработчикам простые и быстрые инструменты для создания приложений с минимальными затратами на ресурсы. FLTK в первую очередь нацелен на разработчиков, которым важна высокая производительность и быстрота разработки.
Несмотря на свою легковесность, библиотека предоставляет достаточный набор инструментов для создания полноценных графических интерфейсов. Благодаря своей архитектуре, FLTK предлагает быстрый отклик и минимальную загрузку процессора, что особенно важно при разработке программ для устройств с ограниченными вычислительными возможностями. Разработчики ценят FLTK за его прозрачность, гибкость и широкие возможности настройки, что делает его удобным выбором как для коммерческих, так и для открытых проектов.
Основные характеристики FLTK:
FLTK разрабатывался с целью минимизации размера библиотеки и оптимизации производительности, что делает его идеальным для встроенных систем и приложений с ограниченными ресурсами.
Библиотека поддерживает различные платформы, включая Windows, macOS и Linux.
FLTK предлагает интуитивно понятный интерфейс и простые в использовании виджеты, что позволяет разработчикам быстро создавать прототипы приложений.
FLTK имеет встроенную поддержку OpenGL, что делает его подходящим для графических приложений и
игр.
MFC. MFC (Microsoft Foundation Classes) - это набор классических библиотек, разработанных Microsoft, который предоставляет объектно-ориентированные обертки для Windows API [5]. MFC используется в основном для разработки приложений, работающих на платформе Windows, и имеет глубинную интеграцию с ОС.
Библиотека ориентирована на разработчиков, которые нуждаются в высокой производительности и на-тивном взаимодействии с системой, а также в доступе к низкоуровневым ресурсам Windows. Несмотря на свою зрелость, MFC продолжает использоваться в корпоративных проектах и является надежным решением для тех, кто работает с приложениями для Windows.
Основные характеристики MFC:
MFC предлагает богатый набор инструментов и классов для работы с .NET и Windows API, что позволяет разрабатывать приложения с нативным поведением и внешним видом.
В MFC имеются мощные инструменты для создания пользовательских диалоговых окон и интерфейсов, что делает использование данной библиотеки удобным для разработчиков, работающих с Windows.
MFC идеальным образом интегрируется с Visual Studio, что позволяет разработчикам использовать мощный инструментальный набор для проектирования и отладки приложений.
Результаты исследования. В приложении А представлено сравнение библиотек реализации пользовательского интерфейса. На основе анализа таблицы можно выделить основные преимущества каждой из библиотек: Qt - обладает высокой производительностью и гибкостью, поддерживает широкую платформенную совместимость, wxWidgets - использует нативные виджеты операционных систем, что позволяет достичь производительности, близкой к нативным приложениям, GTK+ - благодаря своей собственной системе управления GUI и мощному инструменту Glade, подходит для создания гибких приложений, FLTK - обеспечивает высокую производительность при минимальном использовании ресурсов, что делает её отличным выбором для легковесных приложений, MFC - показывает высокую производительность на платформах Windows и интеграцию с Visual Studio.
Каждый инструмент имеет свои особенности и преимущества, которые делают его предпочтительным для определённых задач и условий разработки. Однако выбор библиотеки зависит от требований проекта и личных предпочтений разработчика.
Помимо сравнения функциональных возможностей библиотек возможна приблизительная оценка популярности библиотек среди пользователей.
Критериями сравнения популярности библиотек были выбраны:
Количество звезд на Github для репозиториев библиотеки;
Количество упоминаний на Stack Overflow.
Чтобы рассчитать совокупную популярность следует нормализовать данные, высчитать сумму нормализованных показателей и получить коэффициент популярности библиотеки. Собранные данные представлены в таблице 1.
Собранные данные о библиотеках
№ Библиотека Количество звезд на Github Количество упоминаний на Stack Overflow
1 Qt 2500 [61 86334 [101
2 wxWidgets 6100 [71 4244 [111
3 GTK+ 1400 [81 8543 [121
4 FLTK 1700 [91 503 [131
5 MFC - 13182 [141
Формула коэффициента популярности:
где P - коэффициент популярности библиотеки; Ni - количество звезд на Github для одной библиотеки; Nmax - максимальное количество звезд на Github среди всех библиотек; Ki - количество упоминаний на Stack Overflow для одной библиотеки; Kmax - максимальное количество упоминаний на Stack Overflow среди всех библиотек.
В результате расчетов были получены следующие коэффициенты популярности:
Qt: 1,41;
wxWidgets: 1,049;
GTK+: 0,329;
FLTK: 0,2858;
MFC: 0,153.
На основе расчетов можно сделать вывод, что наиболее популярной среди пользователей является библиотека Qt.
Выводы. Результаты анализа показывают, что Qt обладает наиболее широкими возможностями и популярностью благодаря высокой гибкости и кроссплатформенности, в то время как wxWidgets обеспечивает работу с нативными компонентами ОС. GTK+ привлекает своей гибкостью и богатым набором виджетов, а FLTK выгодно отличается минимальными ресурсными затратами. MFC остаётся востребованной для приложений, работающих исключительно на платформе Windows. Итоговые расчеты показывают, что среди рассмотренных библиотек наиболее популярной является Qt.
Список литературы
1. QT Documentation [Электронный ресурс] URL: https://doc.qt.io (дата обращения: 20.09.2024).
2. wxWidgets: Cross-Platform GUI Library [Электронный ресурс] URL: https://wxwidgets.org (дата обращения: 20.09.2024).
3. The GTK Project [Электронный ресурс] URL: https://www.gtk.org (дата обращения: 20.10.2024).
4. FLTK Fast Light Toolkit [Электронный ресурс] URL: https://www.fltk.org (дата обращения: 20.10.2024).
5. MFC Desktop Applications [Электронный ресурс] URL: https://learn.microsoft.com/en-us/cpp/mfc/mfc-desktop-applications?view=msvc-170 (дата обращения: 20.10.2024).
6. Qt GitHub [Электронный ресурс] URL: https://github.com/qt/qtbase (дата обращения: 20.10.2024).
7. wxWidgets GitHub [Электронный ресурс] URL: https://github.com/wxWidgets/wxWidgets (дата обращения: 20.10.2024).
8. GTK+ GitHub [Электронный ресурс] URL: https://github.com/GNOME/gtk (дата обращения: 20.10.2024).
9. FLTK GitHub [Электронный ресурс] URL: https://github.com/fltk/fltk (дата обращения: 20.10.2024).
10. Qt questions stackoverflow [Электронный ресурс] URL: https://stackoverflow.com/questions/tagged/qt (дата обращения: 20.10.2024).
11. wxWidgets questions stackoverflow [Электронный ресурс] URL: https://stackoverflow.com/questions/tagged/wxwidgets (дата обращения: 20.10.2024).
12. GTK+ questions stackoverflow [Электронный ресурс] URL: https://stackoverflow.com/questions/tagged/gtk (дата обращения: 20.10.2024).
13. FLTK questions stackoverflow [Электронный ресурс] URL: https://stackoverflow.com/questions/tagged/fltk (дата обращения: 20.10.2024).
14. MFC questions stackoverflow [Электронный ресурс] URL: https://stackoverflow.com/questions/tagged/mfc (дата обращения: 20.10.2024).
15. GNU General Public License (GPL) [Электронный ресурс] URL: https://www. gnu.org/licenses/gpl-3.0.html (дата обращения: 20.10.2024).
16. GNU Lesser General Public License (LGPL) [Электронный ресурс] URL: https://www.gnu.org/licenses/lgpl-3.0.html (дата обращения: 20.10.2024).
17. wxWindows Library Licence [Электронный ресурс] URL: https://wxwidgets.org/about/licence (дата обращения: 20.09.2024).
Шмаков Александр Александрович, магистрант, [email protected], Россия, Москва, Российский технологический университет МИРЭА,
Одиноков Максим Александрович, магистрант, [email protected]. Россия, Москва, Российский технологический университет МИРЭА,
Петросян Лусинэ Эдуардовна, канд. эконом. наук, доцент, mail@mfmgutu. ru, Россия, Москва, Российский технологический университет МИРЭА
COMPARATIVE ANALYSIS OF USER INTERFACE IMPLEMENTATION LIBRARIES IN C++ A.A. Shmakov. M.A. Odinokov. L.E. Petrosyan
The article provides a brief overview of the libraries for implementing the user interface in the C++ language. The most popular libraries are considered: QT. wxWidgets. GTK+. FLTK (Fast. Light Toolkit) and MFC (Microsoft Foundation Classes).
Key words: comparative analysis. analysis. libraries. user interface library. GUI. C+ +. QT. wxWidgets. GTK+. FLTK. MFC.
Shmakov Alexander Alexandrovich. undergraduate. [email protected]. Russia. Moscow. Russian Technological University MIREA.
Odinokov Maxim Alexandrovich. undergraduate. odi. max2002@gmail. com. Russia. Moscow. Russian Technological University MIREA.
Petrosyan Lusine Eduardovna. candidate of economics. sciences. docent. mail@m fmgutu. ru. Russia. Moscow. Russian University of Technology MIREA
УДК 004.45
DOI: 10.24412/2071-6168-2024-10-704-705
АНАЛИЗ РОССИЙСКИХ ПЛАТФОРМ ДЛЯ ХРАНЕНИЯ И УПРАВЛЕНИЯ DOCKER-ОБРАЗАМИ
А.С. Потемкин, К.А. Узоров, Л.Э. Петросян
В данной статье представлен обзор российских систем-аналогов DockerHub, для хранения и обработки Docker-образов. Показаны популярные современные разработки в данной области. Произведен сравнительный анализ Российских платформ для хранения и работы с Docker-образами и составлен прогноз роста или уменьшения количества пользователей каждой из них, в случае прекращения работы Docker Hub.
Ключевые слова: Docker-образы, системы контейнеризации, программное обеспечение, российские аналоги, кластеры.
Технологии контейнеризации за последние годы стали ключевым инструментом в разработке, тестировании и развертывании приложений. Одной из важнейших составляющих контейнерной экосистемы является система хранения и работы с Docker-образами. Docker-образы — это легковесные, автономные и исполняемые пакеты, содержащие всё необходимое для запуска приложения: код, библиотеки и зависимости. Разработчики могут создавать программное обеспечение на локальной системе, точно зная, что оно будет работать одинаково в любой операционной среде - в программном комплексе ИТ отдела, на ноутбуке пользователя или в облачном кластере [18]. Для эффективного управления и распространения этих образов существует множество платформ, среди которых, запущенный в 2014 году, Docker Hub — одна из первых и наиболее популярных платформ [18]. Однако исходя из текущего положения мировой политики, очень велик шанс того, что пользователи в России будут вынуждены переходить на локальные платформы для хранения и работы с Docker-образами [24].
704