LINUX.ORG.RU

Qt приложение с ядром на другом языке

 , , ,


1

6

На плюсах писать боль - хочется что-то более человеческое. Но приложение будет GUI, а значит Qt. Тут обсуждать нечего.

Нужно, каким-то образом, наладить общение между двумя языками в пределах одного ПК. Допустим с Rust.

Пробовал FFI (при использовании языка с GC - отпадает) - боль. Ибо получается жирная(много boilerplate кода) прослойка вида: rust -> c-api -> mylib.h -> С++ враппер. Также теряются все гарантии языка.

Ну и конвертации типов тоже не бесплатны. Напоминаю, что QString - UTF-16.

RPC, любой, - тоже затратно. Ибо сериализация/десериализация может быть затратной. А данных довольно много.

Пример: есть база с кучей записей. Нужно отобразить их в проге. Ну пусть тысячу строк. Передавать их через RPC - бред. Слишком медленно. Намного быстрее из Qt подключится к базе и забрать нужные данные. Но тогда пропадает смысл в «ядре» на другом языке.

То есть Qt будет использоваться чисто как GUI. Вся логика будет «ядре». Проблема в передачи больших объемов данных.

Как решить данную задачу? Уверен, что кто-то с таким сталкивался.

★★★★★

Ответ на: комментарий от RazrFalcon

Лагать будет при запросе следующих данных.

Мне стало интересно, что это за данные такие, если даже 100 строк из них дадут лаги? И потом, неужели на крестах так трудно будет накидать что-то асинхронное?

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Я могу загрузить пару К строк из базы напрямую и работать с ними. Ничего лагать не будет.

Тема о том, что если я буду грузить эти К строк не напрямую через QtSql, а через RPC - то это будет, в теории, медленнее.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

если я буду грузить эти К строк не напрямую через QtSql, а через RPC - то это будет, в теории, медленнее

То есть ты даже не пробовал? База та хоть локальная или нет?

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Ваш css веб-разрабы пытаются осилить с самого его появления. И пока что во множество вышедшей у них годноты входят только сайты гугла да википедия.

next_time ★★★★★
()
Ответ на: комментарий от ult

То есть вы не видите преимуществ нативного GUI перед web-говном?

Даю подсказку: нативные контролы, фокус, хоткеи, системный ШГ и прочие прелести, производительность, отзывчивость.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от next_time

Единообразный look-and-feel забыл
нативные контролы

же

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от next_time

Ваш css веб-разрабы пытаются осилить с самого его появления. И пока что во множество вышедшей у них годноты входят только сайты гугла да википедия.

Тут нужен человек не просто знающий css, но и тот у кого есть чувство вкуса

NextGenenration ★★
()
Ответ на: комментарий от RazrFalcon

фокус

Эм? Всякие там табуляции вполне переключают

хоткеи

Не сложно сделать. Большинство хоткеев не перехватывается браузером

производительность, отзывчивость

и это тоже есть. проблемы если и есть, то либо с руками того кто это делал, либо с задержками на передачу данных

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Это вы про webui сейчас? Он не предназначен ни для чего, кроме форматированного текста со снежинками. Всё остальное - это попытка скрестить ужа с ежом.

RazrFalcon ★★★★★
() автор топика

На плюсах писать боль - хочется что-то более человеческое. Но приложение будет GUI, а значит Qt. Тут обсуждать нечего.

Лол :-) Действительно, что тут обсуждать? :-) Ценник коммерческой лицензии на хвалёный Qt начинается с $295 в месяц на одного разработчика :-) Подумаешь, какая мелочь :-) Зато Qt! :-) Зато цепепе! :-) Тормозов на 3 с половиной формах с десятком текстбоксов на локалхосте не наблюдается :-) Красота, в общем :-)

Открой для себя Electron уже :-) Лол :-)

anonymous
()
Ответ на: комментарий от NextGenenration

Ну вообще пропихнуть новый язык и правда непросто. Особенно, если «киллер фичей» языка будет только возможность «легко» GUI создавать.

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

DarkEld3r ★★★★★
()
Ответ на: комментарий от DarkEld3r

Apple, со Swift, удалось =)

Но это скорее исключение.

У Qt Project и сейчас нет ресурсов. Как и вектора развития. Начинали как desktop gui framework, потом скатились в мобилки, не не взлетело. Теперь вообще на встраиваемые системы ушли. В общем, за что платят - то и делают.

Тем временем QtWidgets совсем захворал.

RazrFalcon ★★★★★
() автор топика
Последнее исправление: RazrFalcon (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

Qt есть в LGPL редакции, болезненный ты наш.

А ты думаешь, что ты самый умный? :-) Увидел LGPL, GPLv2/v3 и уже дуешь щёки от радости? :-) Тебе ведь неведомо, что не весь Qt доступен под LGPL - например, нет тех же графиков и подсистем визуализации данных :-) Во-вторых, если программа подлежит распространению, нужно поставлять все исходники Qt вместе с ней :-) В третьих, не все App Store совместимы с LGPL :-) Поэтому и нужна коммерческая лицензия, которую и покупают все адепты, вынужденные зарабатывать и давать заработать разработчикам Qt :-) Не все же пишут для локалхоста и Qt не для этого существует :-)

Конечно, для твоих мегазадач на локалхосте можно втихомолку использовать весь Qt бесплатно, ссылаясь молча про себя на LGPL, который ты, судя по всему, даже не читал :-) Держи нас в курсе, в общем :-) Лол :-)

anonymous
()
Ответ на: комментарий от anonymous

нужно поставлять все исходники Qt вместе с ней

GOG Galaxy использует LGPL версию Qt и не поставляет исходники. Как же так?

В общем смайлодаун во всей красе, как обычно.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от AUX

Если нужно показать диалог с парой кнопок - сойдёт.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

GOG Galaxy использует LGPL версию Qt и не поставляет исходники. Как же так?

Мне не ведомо что там поставляет GOG Galaxy и что используют :-) Я говорю о лицензии, а не о чьих то проблемах :-)

В общем смайлодаун во всей красе, как обычно.

В общем ты, как и подобает ламерку, облажался и показал полную некомпетентность, начиная от rust+цепепе, заканчивая незнания условия LGPL :-) Лол :-)

anonymous
()
Ответ на: комментарий от DarkEld3r

Особенно, если «киллер фичей» языка будет только возможность «легко» GUI создавать.

Чуть ли не каждый новый язык типа go, rust, crystal, pony, ... будет гораздо безопаснее и удобнее крестов

NextGenenration ★★
()
Ответ на: комментарий от RazrFalcon

Первый точно нет, а второй я ещё сам толком не изучил.

Тем временем у некоторых библиотек, хоть они и вышли из альфы, но api ломают

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

типа go, rust, crystal, pony

go - GC crystal - GC, поделка pony - GC, поделка

Итого в списке только rust сколько-нибудь подходит. Но у него свои ньюансы.

anonymous
()
Ответ на: комментарий от RazrFalcon

Переписывать код. емнип для руби и некоторых явовских библиотек актуально.

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Ты пишешь риалтаймовый софт?

Нет, но требования к скорости работы довольно жесткие, как и объемы данных.

anonymous
()
Ответ на: комментарий от AUX

Пишу иногда на пистоне с PyQt или PySide, норм вроде или вам нужно гипер быстро?

Это точно мне адресовалось?

DarkEld3r ★★★★★
()
Ответ на: комментарий от NextGenenration

Чуть ли не каждый новый язык типа go, rust, crystal, pony, ... будет гораздо безопаснее и удобнее крестов

Допустим, это так. Но сможет ли каждый из этих языков заменить кресты во всех нишах?

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

DarkEld3r ★★★★★
()
Ответ на: комментарий от NextGenenration

Тут нужно уточнить, что единственный кроссплаформенный язык с GUI либой - это жаба. И IDE на них - это эталон тормозов.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от DarkEld3r

Но сможет ли каждый из этих языков заменить кресты во всех нишах?

А не надо заменять сразу во всех нишах. У каждого из этих языков свои преимущества. Лучше брать наиболее подходящий под эту задачу.

Если ты делаешь библиотеку для какого-то популярного языка, то получаешь готовых «пользователей». Если делаешь язык (вместе с библиотекой), то мало того, что работы в разы больше, так ещё и надо «уговаривать» людей на него переходить.

Взаимодействие языков достаточно просто https://github.com/alexcrichton/rust-ffi-examples Я не знаю, есть ли вспомогательные утилиты выполняющие рутинную работу, но их написать в случае чего проще простого

так ещё и надо «уговаривать» людей на него переходить.

Это не обязательно для того чтобы можно было собрать код. Но в общем нет ничего плохого в том что тебе предлагают язык лучше текущего.

NextGenenration ★★
()
Ответ на: комментарий от RazrFalcon

Тут нужно уточнить, что единственный кроссплаформенный язык с GUI либой - это жаба. И IDE на них - это эталон тормозов.

Не единственный. Есть ещё кресты и вроде как dlang. На подходе .net, в частности c#.

NextGenenration ★★
()
Ответ на: комментарий от NextGenenration

Доу. Имелось ввиду с GUI и с GC. У dlang ничего нету. «Ожидания» тоже мало что меняют. Вот выйдет - тогда будем говорить.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от RazrFalcon

Преимущества никому не нужны. Нужны либы.

У раста есть преимущества, но нет либ(гуёвых). Поздравляю, поймал себя на слове.

NextGenenration ★★
()
Ответ на: комментарий от anonymous

нужно поставлять все исходники Qt вместе с ней

и это отлично!

В третьих, не все App Store совместимы с LGPL

это которые?

например, нет тех же графиков и подсистем визуализации данных

проблемы тех, кому они нужны и кто не может зайти на гитхаб за ними

next_time ★★★★★
()

По-моему, ты хочешь чего-то извращённого. Как раз ядро проекта на плюсах вполне нормально пишется. Тем более, в QtCore есть много вкусных плюшек.

Если же ты хочешь использовать. Qt только для GUI и не пускать её в ядро... Ну не знаю, я бы в таком случае ядро сделал на чистом Си, а для GUI взял бы чего полегче, ту же GTK, например. Половина прелести Qt именно в том, что это фреймворк, где ничего не надо скручивать изолентой.

hobbit ★★★★★
()
Ответ на: комментарий от RazrFalcon

Зато web gui на любой платформе заработает и обновляется мгновенно у всех, не нужно никакие апдейты накатывать.

menangen ★★★★★
()
Ответ на: комментарий от menangen

Ага, кроме мобилок. И кроме старых версий браузеров. И кроме пользователей с плохим/отсутствующим инетом. И тд.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от hobbit

Как раз ядро проекта на плюсах вполне нормально пишется. Тем более, в QtCore есть много вкусных плюшек.

QtCore и рядом не стоял с rust std. Про другие языки вообще молчу.

чистом Си

Я что, наркоман? Я на оборот пытаюсь на уровень выше уйти.

а для GUI взял бы чего полегче, ту же GTK, например

Чем легче? Тем что не работает нигде кроме линя?

Половина прелести Qt именно в том, что это фреймворк, где ничего не надо скручивать изолентой.

В Qt нормальные только QtCore (из-за унылой c++ str), QtGui и QtWidgets. Всё остальное - мусор.

RazrFalcon ★★★★★
() автор топика
Ответ на: комментарий от next_time

и это отлично!

На кой хрен они нужны в тарболе или в зипе? :-)

это которые?

https://www1.qt.io/faq/#_Toc_3_12 :-) Цитата:

Distribution via Apple AppStore is more challenging as the terms and conditions of the store are more restrictive regarding the freedoms provided by LGPL and GPL open source licenses.

проблемы тех, кому они нужны и кто не может зайти на гитхаб за ними

Что ещё что за ахинея? :-) Заход на гитхаб отменит условия лицензирования Qt что-ли? :-) Лол :-)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.