Технологии, Архитектура, алгоритмы программы, Стек технологий - Разработка программы для реализации редактора временных графов синхронизации

Стек технологий

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

    § Кроссплатформенность; § Поддержка взаимодействия с нативными библиотеками (C/C++); § Современные средства для создания графических интерфейсов пользователя с поддержкой аппаратного ускорения отрисовки; § Хорошая известность в сообществе разработчиков, то есть наличие хорошей документации и решений к часто встречающимся проблемам (не всегда тривиальным).

Qt Framework и QtQuick.

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

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

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

В-третьих, не смотря на возможность интеграции системных компонент, разрабатываемое с применением технологии QtQuick приложения является полностью независимым от платформы и может быть запущено под Windows, OSX, Linux, iOS, Android и так далее. К сожалению, QtQuick и JS не подходят для написания сложных вычислительных процессов, которые должны работать максимально быстро и эффективно расходовать память. Поэтому в части QtQuick реализовано лишь "лицо" программы.

Go lang.

Основная же часть кода написана на статически типизированном, компилируемом, высокопроизводительном языке программирования Go от компании Google, который стал доступен общественности совсем недавно, в 2011 году. Причиной этому послужили несколько факторов, например разработка с использованием Qt Framework идет на C++, когда дело доходит до внутренних механизмов прикладного приложения. C++, несомненно, имеет множество преимуществ с технической точки зрения, но на практике все перекрывается чрезмерной низкоуровневостью языка, медленной скоростью компилятора, запутанным стандартом и взамен C++ не дает ничего, что могло бы дать прикладному приложению с графическим интерфейсом какое-либо преимущество.

С языком Go ситуация другая. Сам язык разрабатывался с учетом опыта других языков программирования, вбирая в себя только то, что прошло проверку временем и доказало свою эффективность. Отличительными чертами Go являются прагматичность, малый размер стандарта, заморозка API стандартной библиотеки, быстрая скорость компиляции, runtime-производительность на уровне Java или C++, возможность низкоуровневых вызовов и компоновки с объектными файлами, полученными в результате компиляции C/C++.

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

Go-qml.

В компании Canonical с 2012 года планомерно идет перевод нескольких крупных проектов с Python на Go, и одновременно c этим Qt Framework является базой для многих клиентских разработок Canonical, начиная от библиотек интеграции с обачными сервисами, заканчивая прикладными приложениями рабочего стола. Важность и возможность взаимодействия Go и Qt сыграли свою роль и усилиями сотрудника компании появился инструмент go-qml, позволяющий производитеь операции с Qt-объектами и реализующий необходимые "мосты" для запуска QtQuick с логикой на стороне Go. Таким образом, выбранный стек технологий позволяет создать пользовательское приложение, одинаково работающее на трех основных OS, использующее самый продвинутый инструментарий разработки GUI и один из современных и перспективных языков для внутренней логики.

Похожие статьи




Технологии, Архитектура, алгоритмы программы, Стек технологий - Разработка программы для реализации редактора временных графов синхронизации

Предыдущая | Следующая