Главная страница
Навигация по странице:

  • Аннотация

  • Intellectual Technologies on Transport. 2022. No 2

  • Критерий оценивания Нативные приложения Кросс-платформенные приложения Стоимость разработки

  • Возможности использования кода Работает для одной платформы Работает на нескольких платформах Доступность интерфейсов устройств

  • Согласованность пользовательского интерфейса

  • Abstract.

  • 53 Разработка кроссплатформенных приложений


    Скачать 392.28 Kb.
    Название53 Разработка кроссплатформенных приложений
    Дата22.03.2023
    Размер392.28 Kb.
    Формат файлаpdf
    Имя файлаelibrary_49489460_68722970.pdf
    ТипДокументы
    #1009014

    Intellectual Technologies on Transport. 2022. No 2
    DOI: 10.24412/2413-2527-2022-230-53-58
    Интеллектуальные технологии на транспорте. 2022. № 2
    53
    Разработка кросс-платформенных приложений
    на языке Python и фреймворке Kivy
    А. И. Федотова, к.воен.н. Р. Г. Гильванов
    Петербургский государственный университет путей сообщения Императора Александра I
    Санкт-Петербург, Россия sasha.fedotova.01@mail.ru, gilvanov1950@mail.ru
    Аннотация
    . В статье рассматриваются варианты разра-
    ботки приложений, такие как Web-приложения, нативные и
    кросс-платформенные приложения. Рассматриваются досто-
    инства и недостатки каждого варианта. Сравнивается натив-
    ная и кросс-платформенная разработка. Подробнее рассмат-
    ривается вариант кросс-платформенной разработки прило-
    жений, популярные фреймворки. В статье дается обзор языка
    программирования Python, приведены его достоинства и не-
    достатки. Рассмотрена возможность кросс-платформенной
    разработки на языке программирования Python с помощью
    фреймворка Kivy.
    Ключевые слова:
    разработка приложений, web-
    приложения, нативные приложения, кросс-платформенные
    приложения, фреймворки кросс-платформенной разработки,
    язык программирования Python, фреймворк Kivy.
    В
    ВЕДЕНИЕ
    В современном мире существует большое многообразие техники, с которой взаимодействует человек, и соответ- ственно которой нужен графический интерфейс. Эти устрой- ства могут работать под множеством разнообразных операци- онных систем: Windows, Linux, MacOS, Android, iOS.
    Существует множество различных приложений (как на мобильные устройства, так и на компьютеры, ноутбуки), которые решают большое количество разнообразных за- дач. Например, это приложения для заметок, планирова- ния, разнообразные игры, приложения для обучения, про- слушивания музыки, просмотра видео, приложения для до- ступа к различным социальным сетям, банкам и т.п. Эти приложения постоянно обновляются, а также разрабатыва- ются новые приложения.
    Пользователи этих приложений могут использовать устройства с разными операционными системами. Также, часто пользователю хочется иметь доступ к предоставляе- мым услугам в приложении с нескольких своих устройств.
    Например, на ноутбуке (с операционной системой Win- dows), на планшете (с Android) и на телефоне (с iOS), на всех устройствах желателен доступ к приложению.
    Таким образом, перед разработчиком стоит вопрос вы- бора реализации приложения. Обычно рассматриваются такие варианты как, web-приложение, нативные приложе- ния и кросс-платформенные приложения.
    W
    EB
    -
    ПРИЛОЖЕНИЕ
    Web-приложение – это прикладное программное обес- печение, которое работает на web-сервере, в отличие от
    «стационарных» программ, которые запускаются локально в операционной системе устройства. Для доступа к web- приложению пользователю необходимо активное подклю- чение к Интернету.
    Любое web-приложение представляет собой набор ста- тических и динамических web-страниц. Статическая web- страница — это страница, которая всегда отображается пе- ред пользователем в неизменном виде. Web-сервер отправ- ляет страницу по запросу web-браузера без каких-либо из- менений. В противоположность этому, сервер вносит изме- нения в динамическую web-страницу перед отправкой ее браузеру. По причине того, что страница меняется, она называется динамической [1].
    Несомненным достоинством web-приложений является их доступность с любого устройства с доступом в Интер- нет.
    Однако это же означает что без доступа в сеть пользо- ватель не может воспользоваться приложением, что явля- ется недостатком.
    Также отметим, что зачастую на мобильных устрой- ствах гораздо удобнее пользоваться «стационарными» при- ложениями.
    Н
    АТИВНАЯ РАЗРАБОТКА
    Под «нативной разработкой» (англ. native — родной, естественный) подразумевается использование оригиналь- ных инструментов, предлагаемых каждой платформой —
    Swift и Cocoa для iOS и Java или Kotlin с набором инстру- ментов для разработки программного обеспече- ния (Software Development Kit, SDK) от Android Open
    Source Project (AOSP) для Android [2].
    У нативной разработки есть неоспоримые преимуще- ства, как например [3]:
    1. Скорость работы приложения. Код получаемый в ре- зультате нативной разработки является оптимальным для своей операционной системы.
    2. Полная поддержка со стороны магазинов приложе- ния (App Store и Google Play). Магазины приложений могут просто не пропустить приложение, если качество картинки слишком низкое, скорость выполнения слишком медлен- ная и т.п. Всего этого (качества изображения, скорости вы- полнения) легче достичь с помощью нативной разработки.
    3. Использование последних технологий. Так как сред- ства нативной разработки поддерживаются компаниями- производителями устройств и операционных систем, то весь функционал (аппаратный и программный), даже кото- рые только был добавлен, становится доступен для натив- ных приложений.
    Однако имеется и недостаток — сложность (или высо- кая стоимость). Для разработки уникального, качествен- ного приложения требуется немало времени и высокая ква- лификация разработчика.

    Intellectual Technologies on Transport. 2022. No 2
    Интеллектуальные технологии на транспорте. 2022. № 2
    54
    К
    РОСС
    -
    ПЛАТФОРМЕННАЯ РАЗРАБОТКА
    Кросс-платформенная разработка — это способ созда- ния приложения с возможностью адаптации под несколько операционных систем. Чаще всего кросс-платформенная разработка рассматривается для мобильных приложений
    (операционные системы Android и iOS). Однако суще- ствует также кросс-платформенная разработка и для деск- топных (англ. Desktop – рабочий стол) приложений (опера- ционные системы Windows, Linux и MacOS).
    Достоинства кросс-платформенной разработки [3]:
    1. Требуется меньше ресурсов для реализации приложе- ния сразу под несколько платформ. Программистов, зани- мающихся проектом, нужно ровно в два раза меньше. Ди- зайнер делает только один набор графики. Все это снижает количество рабочих часов и бюджет проекта.
    2. Меньшее время на разработку. За счет отсутствия уникальных элементов интерфейса и более простых техно- логий разработки кросс-платформенных приложений, время на создание простых продуктов, как правило, меньше.
    3. Упрощенный цикл обновления продукта. Если в про- ект нужно что-то добавить или исправить какую-то ошибку, это делается сразу для всех платформ, на которые распространяется проект.
    4. Возможность использования мобильной версии сайта. В большинстве случаев языки для кросс-платфор- менной технологии разработки мобильных приложений входят в семейство языков JavaScript. Поэтому если у про- екта уже есть мобильная версия сайта, значительная часть кода и материалов может быть использована в приложении без изменений.
    5. Использование единой логики приложения. Логика, заложенная в работу приложения, будет работать гаранти- рованно одинаково для всех платформ. Довольно часто это может являться и минусом из-за разной архитектуры опе- рационных систем. Яркий пример — кнопка «Назад» в навигации между экранами. В Android предусмотрена ап- паратная кнопка Back для этих целей, в iOS — движение пальцем от левой части экрана или же наличие кнопки в левой части навигационной панели. Если кнопку не делать вовсе, пользователи iOS не смогут вернуться назад. Если сделать, но не на том месте и выглядящую нестандартно, пользователям iOS будет непривычно и неудобно; а если сделать как в iOS, будет непривычно пользователям
    Android. Однако написанная и отлаженная один раз логика содержит потенциально меньшее количество ошибок и расхождений в своей работе. Поэтому вам не придется про- делывать двойную и тройную работу по поиску проблем на каждой платформе.
    Недостатки кросс-платформенных приложений:
    1. Устаревание. С каждым обновлением операционной системы появляется возможность (необходимость) улуч- шить приложение, добавить в него новый, доступный функционал. Для нативной разработки это практически не составляет труда, потому средства нативной разработки почти сразу же предоставляют такую возможность. Однако при кросс-платформенной разработке необходимо до- ждаться обновления фреймворка, на котором написано кросс-платформенное приложение. А это может занять куда больший срок, по сравнению с нативными приложе- ниями.
    2. Низкая скорость. Зачастую кросс-платформенные приложения представляют собой веб-страницы, которые не особо расторопны, например, в скроллинге тяжелого кон- тента: картинок, анимаций и т. д.
    3. Трудности дизайна
    . Если вы хотите, чтобы вид ва- шего приложения соответствовал профессиональному и хорошо-проработанному системному дизайну каждой из платформ, будь то iOS или Android, вам придется разраба- тывать дизайн для обеих операционных систем по отдель- ности. iOS и Android приложения имеют свои собственные, уникальные стандарты дизайна, а так как кросс-платфор- менное приложение не отвечает им, его вид придется «под- гонять» под соответствующие рамки. Получается, по окон- чании работы вы получите только одно приложение, а вре- мени и денег вы потратили как на два.
    4. Незащищенность исходного кода
    . Одним из серьезных минусов кросс-платформенных приложений является их не- безопасность. В то время как нативное приложение может быть зашифровано перед выходом в официальный магазин, кросс-платформенное приложение остается «голым». По- скольку в основе многих кросс-платформенных приложений лежит HTML-страница, то ничего не стоит посмотреть ее ис- ходный код и понять, как работает само приложение.
    Подводя итоги, можно сказать, что обычно кросс-плат- форменные фреймворки абстрагируют разработчиков от особенностей написания кода под отдельную платформу.
    Однако, как только вопрос касается производительности или реализации специфического функционала под плат- форму, так сэкономленное при разработке время съедается на решении этих проблем.
    Также стоит отметить, что подходы при разработке при- ложения можно комбинировать. Например, отрабатывать критичные к производительности экраны (лента новостей в социальной сети) на нативных технологиях, а второсте- пенные (экран профиля, экран настроек) — на кросс-плат- форменных.
    С
    РАВНЕНИЕ НАТИВНЫХ
    И КРОСС
    -
    ПЛАТФОРМЕННЫХ ПРИЛОЖЕНИЙ
    Как правило, выход любого бизнеса в Интернет проте- кает по следующему сценарию: сначала компания запус- кает сайт, затем его адаптируют под мобильные устрой- ства, и если наблюдается прирост трафика, появляется смысл закрепиться среди владельцев мобильных гаджетов, и компания выпускает приложение.
    Сравнивать мобильный сайт и приложение нет смысла: второе однозначно выигрывает за счет широты своих воз- можностей и отзывчивого интерфейса, взаимодействовать с которым через телефон или планшет гораздо комфортнее.
    Кроме того, приложение может работать без постоянного подключения к Интернету.
    В таблице 1 приведено сравнение нативной и кросс- платформенной разработки по основным пунктам [5]. Из нее следует, что по возможности работать с конкретной операционной системой, качеству интерфейса и произво- дительности нативная разработка абсолютно точно лучше кросс-платформенной. Однако для стартапов, маленьких проектов важнее скорость и стоимость разработки, а также возможность выпустить приложение сразу на несколько платформ, для привлечения большей аудитории. Рассмот- рим кросс-платформенную разработку подробнее.

    Intellectual Technologies on Transport. 2022. No 2
    Интеллектуальные технологии на транспорте. 2022. № 2
    55
    Таблица 1
    Сравнение нативных и кросс-платформенных приложений
    Критерий оценивания
    Нативные приложения
    Кросс-платформенные приложения
    Стоимость разработки
    Высокая стоимость разработки
    Относительно низкая стоимость разработки
    Возможности
    использования кода
    Работает для одной платформы
    Работает на нескольких платформах
    Доступность интерфейсов
    устройств
    SDK платформы обеспечивает беспрепятственный доступ ко всем интерфейсам устройства
    Нет гарантированного доступа ко всем интерфейсам устройства
    Согласованность
    пользовательского
    интерфейса
    Согласованность с компонентами пользо- вательского интерфейса устройства
    Ограниченная согласованность с компонентами пользовательского интерфейса устройства
    Производительность
    Безупречная производительность, по- скольку приложение разработано для ОС устройства.
    Высокая производительность, но нередки задержки и проблемы с совместимостью оборудования.
    П
    ОПУЛЯРНЫЕ ФРЕЙМВОРКИ ДЛЯ КРОСС
    -
    ПЛАТФОРМЕННОЙ
    РАЗРАБОТКИ
    Существует множество решений для кросс-платфор- менной разработки. Наиболее популярные из них [6]:

    PhoneGap (JavaScript, HTML5 и CSS3);

    Ionic (HTML, CSS, JavaScript и Angular);

    React Native (JavaScript, Java, C++, Objective-C и Python);

    Flutter (Dart);

    Xamarin (C#).
    Выбор конкретного фреймворка зависит во многом и от языка программирования, на котором хочет работать раз- работчик.
    Одним из наиболее популярных языков программиро- вания на данный момент является язык программирования
    Python. По рейтингу GitHub [7] последние 5 лет язык про- граммирования Python не опускался ниже 2 места. По рей- тингу TIOBE же Python занимает 1 место по состоянию на март 2022 [8]. Python — стабильный и распространенный язык. Он используется во многих проектах и в различных качествах: как основной язык программирования или для создания расширений и интеграции приложений. На Python реализовано большое количество проектов, также он ак- тивно используется для создания прототипов будущих про- грамм. В данной статье будет рассмотрена возможность кросс-платформенной разработке на языке программиро- вания Python.
    Я
    ЗЫК ПРОГРАММИРОВАНИЯ
    P
    YTHON
    Python это высокоуровневый язык программирования общего назначения с динамической строкой типизацией и автоматический управлением памятью, ориентированный на повышение производительности разработчика, читаемо- сти кода и его качества, а также на обеспечение переноси- мости написанных на нем программ.
    Примеры использования Python крупными компаниями [9]:

    Google. C момента появления языка компания взяла на вооружение лозунг «Python везде, где можем, а C ++ — где должны». Python не только является компонентом по- искового движка, но и считается (наряду с C ++, Java и Go) одним из официальных серверных языков Google, прило- жения на которых разрешено развертывать в производ- ственной среде.

    Facebook. Python занимает третье место (после C++ и
    Hack) среди самых популярных языков разработки, кото- рыми пользуются инженеры технологического гиганта. На нем сделано более 5 000 коммитов для утилит и инфра- структурных приложений Facebook.

    Instagram. Платформа социальных сетей целиком со- здана на базе Python-фреймворка Django. Она ежедневно дает возможность 4 миллионам активных пользователей фотографировать, редактировать, делиться и сохранять свои творения в личном цифровом альбоме.

    Spotify. Крупный игрок на рынке и приложение для потоковой передачи музыки использует Python для анали- тики данных. На ее основе работают алгоритмы рекомен- даций в популярнейших функциях «Радио» и «Открытия недели».

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

    Dropbox. Популярное онлайн-хранилище применяет
    Python для оптимизации кода как серверной части, так и внешнего интерфейса. Для этой задачи они привлекали са- мого создателя «змеиного языка» Гвидо ван Розума. А в
    2016 году Dropbox выпустили Pyston — свою собственную реализацию Python, совместимую с CPython и библиотекой
    NumPy.
    Достоинства Python:
    1. Удобство и простота.
    Python легко читается и понимается. Синтаксис ядра языка минималистичен, за счет чего на практике редко воз- никает необходимость обращаться к документации.

    Intellectual Technologies on Transport. 2022. No 2
    Интеллектуальные технологии на транспорте. 2022. № 2
    56
    2. Открытый исходный код.
    Лицензия Python с открытым исходным кодом делает его легкодоступным, облегчает распространение и созда- ние модификаций. Разработчики со всего мира могут бес- платно использовать язык и вносить свой вклад в его улуч- шение. К тому же, в случае с Python сами пользователи, а не крупные компании решают, как будет развиваться тех- нология.
    3. Встраиваемость и платформонезависимость.
    Благодаря своей интерактивности и переносимости
    Python обладает хорошими возможностями для динамиче- ской семантики и быстрого прототипирования. Его можно легко встроить в широкий спектр приложений, даже в те, которые используют разные языки программирования. По- этому с Python можно легко исправлять новые модули и расширять базовый словарный запас языка.
    Python, как C++, Java и другие высокоуровневые языки программирования, может работать с разными типами ком- пьютеров, ОС и баз данных практически без модификаций.
    Он хорошо интегрирован не только с популярными плат- формами Windows, Mac и Linux/UNIX, но и со встроен- ными системами, такими как Raspberry Pi и Gumstix. Про- граммы на Python также позволяют реализовывать перено- симые графические интерфейсы.
    4. Большое количество фреймворков.
    Одним из главных преимуществ языка Python является наличие у него большого числа фреймворков, упрощаю- щих процесс разработки. Большинство фреймворков
    Python имеют четкую специализацию, в зависимости от типа и масштаба выполняемых с их помощью задач.
    5. Динамическая типизация.
    Python не знает тип переменной, пока код не запустится.
    Он автоматически назначает тип данных во время выпол- нения. Программисту не нужно заранее беспокоиться об объявлении переменных и их типов данных.
    Недостатки Python:
    1. Слабая поддержка многопроцессорности.
    Многопроцессорность — важная часть написания при- ложения. Python поддерживает многопроцессорность, но из-за отсутствия прямой поддержки многопоточности (за- дачи выполняются параллельно в один поток), он может быть не таким гибким или удобным, как другие языки.
    Это может создать определенные трудности при парал- лельном выполнении кода. Хотя подобные ограничения во многом снимается за счет многочисленных дополнитель- ных библиотек Python, умеющих полноценно работать с многопоточностью.
    2. Ограничение скорости.
    Python часто критикуют за его скорость. Это интерпре- тируемый скриптовый язык, поэтому он работает относи- тельно медленнее своих скомпилированных аналогов
    (например, C/C++ или Java), которым не нужно тратить время на перевод текста программы. Тем не менее, некото- рые тесты на Python работают быстрее, чем на C и C++.
    При этом, Python — не единственный, у кого есть по- тенциальные проблемы со скоростью. Ruby, Perl и даже
    JavaScript также находятся на более медленном конце «ско- ростной» шкалы.
    3. Большая нагрузка на память.
    Python — это язык, известный гибкостью подходов к ти- пизации данных. Эта же динамическая типизация приводит к повышенному потреблению памяти. Поэтому Python бу- дет неидеальным выбором для задач, интенсивно исполь- зующих память.
    Исторически Python не был лучшим инструментом для написания GUI (Graphic User Interface) приложений. При разработке мобильных приложений стандартными язы- ками считались Java (Android) и Swift (iOS).
    Однако мобильная разработка на Python постепенно прогрессирует. Результатом этого прогресса являются не- сколько современных инструментов, один из них — фреймворк Kivy [10].
    Ф
    РЕЙМВОРК
    K
    IVY
    Фреймворк Kivy был создан в 2011 году, это кросс-плат- форменный фреймворк, работающий на Windows, Mac,
    Linux и Raspberry Pi. В дополнение к стандартному вводу че- рез клавиатуру и мышь он поддерживает мультитач, таким образом его можно использовать и для мобильной разра- ботки Android и iOS. Kivy также поддерживает ускорение
    GPU своей графики, что во многом является следствием ис- пользования OpenGL ES2. У проекта есть лицензия MIT, по- этому библиотеку можно использовать бесплатно и вкупе с коммерческим программным обеспечением.
    В настоящее время возможности фреймворка Kivy зна- чительно расширена за счет библиотеки KivyMD. Аббре- виатура MD означает Material Design (стандарт, созданный
    Google, которого нужно придерживаться при разработке приложений для Android и iOS) [11].
    Во время разработки приложения через Kivy создается интуитивно понятный интерфейс — Natural User Interface, или NUI
    . Его главная идея в том, чтобы пользователь мог легко и быстро приспособиться к программному обеспече- нию без чтения инструкций.
    Kivy не задействует нативные элементы управления, или виджеты. Все его виджеты настраиваются. Виджеты — это отображаемые на экране элементы управления, которыми пользователь может оперировать, например, кнопки, выпа- дающие списки и т. п. Это значит, что приложения Kivy бу- дут выглядеть одинаково на всех платформах. Тем не менее, это также предполагает, что внешний вид приложения будет отличаться от нативных приложений пользователя. Это мо- жет стать как преимуществом, так и недостатком.
    Для создания приложения Kivy необходимо создать подкласс App и переопределить метод build(). Данный ме- тод можно считать главным для приложения, в него поме- щаются код интерфейса, или же в нем вызываются другие методы, определяющие интерфейс. from kivy.app import App from kivy.uix.label import Label class MainApp(App): def build(self):
    // your App code if __name__ == '__main__': app = MainApp() app.run()
    Во фреймворке Kivy предусмотрено большое количе- ство разнообразных виджетов, комбинируя которые можно создать нужный интерфейс приложения.

    Intellectual Technologies on Transport. 2022. No 2
    Интеллектуальные технологии на транспорте. 2022. № 2
    57
    Для работы с дизайном приложения Kivy предоставляет свой собственный язык дизайна (разметки). В таком случае дизайн приложения должен быть описан в файле с расши- рением .kv. Это позволяет отделить логику приложения от его дизайна, то есть поддерживает принцип разделения от- ветственности, или модель Model-View-Controller (Мо- дель-Представление-Контроллер).
    Язык разметки Kivy очень прост и похож на язык раз- метки HTML.

    Intellectual Technologies on Transport. 2022. No 2
    DOI: 10.24412/2413-2527-2022-230-53-58
    Интеллектуальные технологии на транспорте. 2022. № 2
    58
    Development of Cross-Platform Applications
    with Python and Kivy Framework
    A. I. Fedotova, PhD R. G. Gilvanov
    Emperor Alexander I St. Petersburg State Transport University
    Saint Petersburg, Russia sasha.fedotova.01@mail.ru, gilvanov1950@mail.ru
    Abstract.
    This article discusses application development op-
    tions such as Web applications, native applications, and cross-plat-
    form applications. The advantages and disadvantages of each op-
    tion are considered. Native and cross-platform development is
    compared. The option of cross-platform application development,
    popular frameworks is considered in more detail. The article pro-
    vides an overview of the Python programming language, its ad-
    vantages and disadvantages. The possibility of cross-platform de-
    velopment in the Python programming language using the Kivy
    framework is considered.
    Keywords:
    application development, web applications, native
    applications, cross-platform applications, cross-platform develop-
    ment frameworks, Python programming language, Kivy frame-
    work.
    R
    EFERENCES
    1. General Information About Web Applications [Obshchie svedeniya o veb-prilozheniyakh], Adobe. Last update May 21,
    2021. Available at: http://helpx.adobe.com/en/dream- weaver/using/web-applications.html (accessed 25 Mar 2022).
    2. Lewis S., Dunn M. Native Mobile Development:
    A Cross-Reference for iOS and Android [Nativnaya razrabotka mobilnykh prilozheniy: Perekrestnyy spravochnik dlya iOS i Android]. Moscow, DMK Press, 2020, 376 p.
    3. Murzanaev A. Technologies for Creating Mobile Appli- cations: Native or Cross-Platform Development [Tekhnologiya sozdaniya mobilnykh prilozheniy: nativnaya ili krossplat- formennaya razrabotka], AppCraft. Published online at March
    18, 2021. Available at: http://appcraft.pro/blog/nativnaja_raz- rabotka (accessed 25 Mar 2022).
    4. Native vs Hybrid Apps [Nativnye vs gibridnye prilozheniya]. UmbrellaIT. Published online at August 03,
    2017. Available at: http://umbrellait.com/ru/blog/native-vs-hy- brid-app (accessed 25 Mar 2022).
    5. Manchanda A. The Ultimate Guide to Cross Platform
    App Development Frameworks in 2022, Net Solutions. Last up- date September 04, 2021. URL: http://www.netsolutions.com/ insights/cross-platform-app-frameworks-in-2019 (accessed
    25 Mar 2022).
    6. Patel A. Top 5 Cross-Platform App Development Frame- works You Need to Know in 2021, Medium. Published online at August 17, 2021. Available at: http://medium.com/nerd-for- tech/top-5-cross-platform-app-development-frameworks-you-need- to-know-in-2021-405404cf12fd (accessed 20 Mar 2022).
    7. GitHut 2.0. GitHub Languages Stats, GitHub. Available at: http://madnight.github.io/githut/#/issues/2020/1 (accessed
    20 Mar 2022).
    8. TIOBE Index for March 2022, TIOBE. Available at: http://tiobe.com/tiobe-index (accessed 20 Mar 2022).
    9. Python Development — Pros and Cons [Razrabotka na
    Python — plyusy i minusy], Eternalhost. Published online at January 11, 2022. Available at: http://eternalhost.net/blog/raz- rabotka/nedostatki-i-preimushhestva-python (accessed 13 Feb 2022).
    10. Bader D. Mobile Development with Python: An Overview of Two Frameworks [Mobilnaya razrabotka na Python: obzor dvukh freymvorkov], Proglib. Programmer's Library [Proglib.
    Biblioteka programmista]. Published online at February 16, 2018.
    Available at: http://proglib.io/p/mobile-python (accessed
    13 Feb 2022).
    11. Postolit A. Developing Cross-Platform Mobile and Desk- top Applications with Python: A Practical Guide [Razrabotka krossplatformennykh mobilnykh i nastolnykh prilozheniy na Py- thon: Prakticheskoe posobie]. Ridero, 2022, 676 p.


    написать администратору сайта