DroidScript
DroidScript
учимся и разрабатываем

Qt Quick - перспективная, но непопулярная технология?

14.02.2018

Ниже приводятся фразы с комментариями, касающиеся слабых сторон Qt Quick.

Код qml-документов воспринимается сложно. В нём не используется CSS, а внешнее оформление, разметка, данные и программный код идут вперемешку

Если посмотреть на примеры QML-кода, то он действительно напоминает html-вёрстку тех лет, когда при помощи тегов создавали и разметку, и внешнее оформление, которое соседствовало с данными и кодом на JavaScript. Потребовалось немало времени для того, чтобы более или менее вразумительно отделить эти составляющие друг от друга, а QML, получается, вновь возвращает нас в прошлое?

Web-технологии настолько широко обосновались в программировании, что нередко возникает вопрос, а почему в мобильной и настольной разработке это работает не так как в браузере? Потому что в них используются разные подходы. В HTML мы взаимодействуем с полиморфными элементами, представление и поведение которых можно изменять при помощи атрибутов тегов и стилей, а в QML реализован компонентный подход, при котором приложение состоит из компонентов, состоящих из других компонентов или блоков определённых типов. Время от времени в web-технологиях происходят попытки реализации также и компонентного подхода. Широкой поддержки они не находят, так как в его основе лежит объектно-ориентированное программирование, что для большинства пользователей ощутимо усложнило бы разработку и без чего они хотели бы (и могут) обойтись при создании своих страниц и ресурсов в глобальной сети.

QML позволяет произвести разделение указанных выше составляющих, но в случае демонстрации простых примеров это приведёт к усложнению восприятия кода по сравнению с показом его в одном листинге. Проще говоря, сложность восприятия qml-документа зависит от того, кто его написал.

Qt Quick ориентирована на определённую область использования и программистов

С этим трудно поспорить. QML-выглядит просто, когда есть необходимые знания и есть с чем сравнивать. Если же этого нет, то всё выглядит не проще кода на Basic, Pascal, Java или С++. А для перехода тех же верстальщиков с CSS на компоненты должны быть веские причины, которых пока нет.

Отсутствие сторонних редакторов с поддержкой QML и баги в работе Qt Creator IDE

В среде разработки Qt Creator есть весьма неприятные баги (в моём случае связанные с использованием QML), осложняющие разработку. Например, в проекте может зависнуть ресурсный qml-файл так, что ни его удаление, не переименование, ни очистка проекта с последующей пересборкой не позволят избавиться от него. Помогает только правка файла проекта.

Другой момент - необходимоcть в некоторых случаях производить пересборку проекта перед его запуском иначе скомпилируется старый вариант и придётся поразмыслить над тем, почему в окне запущенного qml-приложении нет кнопки, код которой был только что добавлен в файл.

Ещё один момент связан с отсутствием предупреждения компилятора об отсутствии необходимой для работы с объектом библиотеки. Например, строка создания объекта отлично компилируется, но обратиться к его свойствам нельзя - не работает контекстная подсказка. Если вручную прописать свойство - ошибка! Импортируем библиотеку - всё работает!

Есть одна странность - отсутствие вывода данных в консоль методом console.log в некоторых редких случаях. Создаётся впечатление, что либо блок кода или функция не вызывается, либо получена пустая строка, либо передано что-то, что не может быть выведено в консоль. Если что-то похожее происходит, то лучше всего продублировать вывод в текстовое свойство какого-нибудь объекта.

Что на это можно сказать? Работа с Qt Creator имеет определённую специфику

Большой вес создаваемых приложений

Размер пакета для распространения приложения зависит от используемых ресурсов (библиотек dll) и даже в случае простого приложения может быть 15-20 мегабайт.

Если необходима функциональность, отсутствующая в QML, то придётся обращаться к JavaScript и C++

JavaScript является одним из самых простых языков программирования, которым может нравится или не нравится, но напугать необходимостью его изучения сложно. Программирование на С++ - это настораживает, но применительно к QML программирование происходит не на С++, а на Qt C++, что ощутимо проще.

Отсутствие литературы

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

Небольшое сообщество

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

Много устаревшей информации

На дворе Qt 5.9, а в сети чаще попадается устаревшая информация по предыдущим версиям, из чего легко можно сделать вывод о том, что многое в Qt ещё сыро и непонятно на перспективу.

Крайне мало вакансий

Это понятно

Технология требовательна к аппаратным ресурсам

Современная действительность такова, что “офисные компьютеры” покупаются и используются не только широкой аудиторией менеджеров, бухгалтеров, кладовщиков и секретарей, но и теми, кому по характеру работы требуются более серьёзные конфигурации – программистам, инженерам и др. Проходят годы, а понятие ”офисный компьютер” осталось неизменно – что-то с цифрой 2.2 ГГц, встроенной видеокартой и 17-дюймовым монитором. Офисную конфигурацию заказывают тогда, когда непонятно то, для чего на самом деле будет использоваться компьютер. Если играть в компьютерные игры не планируется, то выбирается вторая из понятных конфигураций – офисная (домашняя) – Word, Excel, почта и остальное по мелочи. На такой конфигурации и офисные программы "летать" не будут, не говоря уже о воспроизведении графики, что является не роскошью, а необходимостью.

Надёжнее использовать QtWidgets, но для настольных приложений пишется мало, а мобильные пишут на родных или Web-технологиях

Если посмотреть популярные категории мобильных приложений, то станет понятно, что существует масса программных решений, которые имеют значительные преимущества при решении конкретного круга задач по сравнению с родной разработкой и QML,  изначально ориентированным на создание интерфейсов и прототипов. Пользователей чаще интересуют не элементы и конструкторы, а готовые компоненты, которых пока в QML недостаточно, а создавать их на Qt C++ нет никакого желания и необходимости в условиях наличия более подходящих и простых вариантов.

Динамическая сборка бесплатной версии Qt

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

© 2016-2024 
actech