Search
Write a publication
Pull to refresh

Comments 9

Я некоторые пробовал использовать, но не было поддержки, кроме X(например, Wayland и т. п.). Для экспериментов делал Qt+QML сервер для рендинга под целевую платформу без логики на базе родного тулчейна, а логика была на Go. Но дальше экспериментов не ушло, так как проще, наверное(могу ошибаться), такие вещи делать на системных языках типа C, Rust, Zig.
P. S.: Мне вместо Си удобнее утилиты быстро написать на Go.

Вот "быстро написать утилиту (или прототип)" это тут как раз основная идея. Это однозначно не универсальное решение для индустрии но часть кейсов думаю может упростить

Кто-то это использует в реальном проде? Примеры есть?

В коммерческом полновесном проде насколько я знаю - нет. В основном это утилиты для личного или не очень широкого пользования (например учет хромбуков в колледже), т.е. кейсы когда прям полноценный фронт вроде как оверкилл но что-то удобное пользователю нужно.
Вот каталог fyne например
https://apps.fyne.io/

Совсем недавно писал приложения для удаленного обновления прошивки устройства, через веб-амдинку не справлялось из-за нестабильной связи.
Использовал Fyne, оказалось вполне рабочим решением, всех устроило.
ЗЫ: Fyne мне в итоге не очень нравится, есть там глюки при отображении виджетов. Пока изучаю Gioui, выглядит так, что таких артефактов при прорисовки вроде бы нет. И кросскомпиляция сильно проще, обычный билдинг, в отличие от Fyne - там приходится использовать утилиту, которая собирает приложение в докере, для CICD неудобно.

Многовато воды. Не мешало бы написать, что почти все из списка фреймворков - говно, сделанное для галочки. Да, все эти биндинги qt и gtk - полная дичь. Vcpkg конечно сможет выручить со сборкой, но какой смысл от go приложения, к которому нужно 100 костылей для сборки, и при этом на выходе нельзя получить один бинарь?

За gioui лайк . Он более легковесный, в отличие от fyne. Работает даже на win7 (qt6 завидует по черному)

Но в целом писать гуи на го - идея плохая в 2024 году. Если надо что-то легковесное, то c++/wxwidgets подойдёт лучше. Если нужен богатый функционал, то qml или просто виджеты qt тут гораздо интереснее. И прикрутить сборку го модуля к cmake гораздо проще. Ну а если надо что-то прям по быстрому набросать, то шарп выручить всегда)

зачем C++, C#, если есть Go ?
У меня лично есть пример, когда "прям по быстрому" наклепал человек на C# (.Net Framewrok + WinForm), а потом уволился.... А приложение прижилось внутри компании, только никто не пишет на C#, некому поддерживать, и чем дольше, тем этому приложению все хуже и хуже (оно в Win 10/11 работает уже с глюками).

Соглашусь, если бы сразу написал на C++ - возможно было бы проще, плюсовики есть. Но возникает проблема кросскомпиляции под линуксом, такой пример тоже есть (и рады бы использовать линукс, да приложение работает только под виндой, а переписывать некому и некогда).

В этом плане Go очень интересно выглядит, так как проблем с кросскомпиляцией сильно меньше. И гоферов хватает в компании и на рынке, которые смогут такое приложение поддерживать фоном, без необходимости нанимать человека чисто под доработку этого проложения.

Интереснее только Rust (чисто взгляд со стороны, без опыта разработки), но там тоже все так однозначно (растовиков тоже нет)

Основная проблема этой библиотеки (gioui) - в переписывании логики с сильно отстающей документацией. Банально - теперь нет app.NewWindow, вместо w.NextEvent() будет window.Events() и т.д. Причем проблема в том, что много примеров (и в этом туториале) - описывающих одно, а на самом деле это не работает на свежих версиях.

С одной стороны - это нормально, переписать что-то с целью улучшения. Но в чем лучше отсутствие NewWindow, я пока не понял. Причем в документации (если так это вообще можно назвать) об этом они ничего не пишут, просто в коммите написано, мол, сделали хорошо.
Документация у этой библиотеки явно.... даже не хромает, она отсутствует. В том же Fyne на порядок лучше (хотя тоже вопросов много).

С другой стороны - как то я привык к тому, что писать приложения надо, не ломая старую логику. То есть либо поддерживая старый и новый способы прозрачно, либо указывая что этот метод станет Deprecated и убрать его через пару релизов.

А тут просто удалили, вставляешь код с примеров (свежих!) а он тебе в редакторе подсвечивается красным, потому что реализации метода уже нет. А что вместо него - непонятно.

Кстати - эту функцию NewWindow они убрали еще в марте 2024... А вы описываете туториал в декабре, с нерабочим кодом... Хорошо бы привести в порядок и актуализировать.

Согласен насчет неухоженности GioUI, но я вроде отметил это в сравнении альтернатив.
У Fyne другие недостатки, прям хорошего варианта я не нашел (надеюсь он есть).
Сверхзадача была показать что в принципе это возможно (и почему именно, что под капотом)
Насчет неработающего кода: Вы правы, пример был собран на 0.5.0 https://github.com/habuvo/gio-simple-app/blob/main/go.mod (потому что показывал я его год назад) и на этой версии все билдится и работает, тут задача была показать как это в принципе устроено а не сделать production ready.
Но спасибо за пожелание, может и заморочусь переписать пример на 0,8.0.

Sign up to leave a comment.