5 ms·
Literally any clear and well defined UI API in 'Go' would be 'modern' relative to the arcane, byzantine messes that are out there. Even QT, a C++ standard is q
by jollybean 4y ago
Literally any clear and well defined UI API in 'Go' would be 'modern' relative to the arcane, byzantine messes that are out there.
Even QT, a C++ standard is quite complicated. Android/Java is a bit bloated though workable. Flutter is 'modern' but quite opinionated and quite complex for what it needs to be.
- simion314 4y ago>Even QT, a C++ standard is quite complicated What is complicated about Qt ? You have widgets and events(called signals) , you have clear way to do layouts and powerful ways to extend things. My only complaint is not about the API but is abut C++, when I was working with Qt4 there were not good official or unofficial but stable bindings to memory managed languages. So personally for a quick side project I don't want to use c++, since is a side project some ugly and slow Electron app will be good enough and if I were on Windows I will probably do a C# Windows form app , or a Java Swing app.
- pjmlp 4y agoNowadays that isn't the way to use Qt. You would use QML, which is quite similar to JavaScript, alongside the quite nice designer tooling, while implementing in C++ the code that needs high performance. Additionally QML also gets compiled to native code anyway. Although on Windows only apps, I would also use C#. Java Swing is nice (yep I own the Filthy Rich Clients book), however it is basically stagnant since Java 8, minus bug fixes, HiDPI and Metal backend.
- simion314 4y agoThe UI part is not the issue, if you decide to use Qt you still need to do your "business" logic in c++ , then eventually you get some memory leak and have to setup tools to investigate what is the issue. What would be a great feature for Qt is to have a way to make the GUI with QML but implement your actual work in C#,python,Java. So you would need a way to connect the GUI with data types and functions from this languages. I remember Qt company tried at one point to offer Java,C#, Python official bindings but that effort failed, is probably hard. Maybe an alternative to electron would be a JVM based modern GUI framework, something maybe inspired from the best parts of WPF, MXML and QML. And I am thinking JVM because you have access to Java's big standard library to do desktop like things like file,network IO and also have access to the native OS if needed.
- pjmlp 4y agoYou can do the business logic in QML, that is the best practice nowadays. That is why it is a full blown language based on JavaScript. Or do little helper classes that you than use from QML, just like those Python libraries that are mostly native code. Qt also has official Python bindings nowadays, even though the others were dropped, due to lack of interest. Don't forget automatic memory management can also have other kinds of leaks, and use similar tooling, to track down where references are wrongly being kept alive, e.g. Forms/WPF event handlers.
- andydotxyz 4y agoOnce the project moves to push bindings I think you can see it’s admitting the language they picked is no longer fit for purpose :). Go comes to the rescue here and Fyne is idiomatic Go so learning it is trivial!
- pjmlp 4y agoPython and machine learning libraries....
- jokethrowaway 4y agoYou have bindings in rust or python or other languages
- simion314 4y agoThere were always been bindings, but at the time I was working with Qt the quality was bad, if I were to start a project I don't want to use some automatic generated binding or some one man side project binding, I don't have time to spend in debugging bugs outside my code. Except of Python are there other bindings you would bet your precious time on? Foe example I had a few hours side project, I needed a simple GUI to let the user slect soem folder and files, then the code logic would do the IO , do some transformetion and report to the user. Would I spend more time messing around with the bindings instead of writing the code ? I know my example would be a perfect use for CLI but the target user was a Windows person that just REFUSED to accept the concept that they are competent person and could use a CLI app and paste a folder path in.
- jokethrowaway 4y agoPlenty of people still use QWidgets. For 99% who want to ship something and are not hipsters, QWidgets is enough. Personally I don't even build QML
- pjmlp 4y agoYeah, when targeting desktop only workloads, given that they have hardly been updated for anything else, and it is actually one of the Qt 6 roadmap items to improve upon.
- rat9988 4y agoThe paradigm of qt is good, the code is cryptic when you are a beginner. It uses too much concepts that people wouldn't necessarily be used to. If you read the code there would be many lines where you just tell "what is this?".
- jollybean 4y agoEverything about QT is complicated. Everything in QT is non-trivia especially due to it's use of C++. Signals themselves are a bit tricky, and frankly a kind bloat, in that they are yet another abstraction that is not actually needed. Signals, which are related to the event loop and threading, create a bunch of potential issues that can't really raise their ugly heads in JS/Python, and even in a multi-threaded language like Java are a bit easier to deal with. QML is quite good for a narrow range of things, but if you start to go outside the bounds of what it was intended for it goes of the rails. You still need to know C++ for builds, and, C++ integration doesn't work particularly well. IDEs do not refactor well in C++, don't pick up as many errors, cmake is weird. QT has some amazing things (collections) that without, frankly, I don't think I would even use C++, but they all come with hints of weirdness. QT written today, for a narrow platform, in a single language, hopefully more modern - would be something different.
- je42 4y agoFlutter tries to be declarative - And also tries to not be opionated; See for example their approach to navigation. Further from a user perspective you can get very quickly complex UIs setup; faster than in any other cross platform framework that i have seen so far. flutter doesnt seem to be overly complex to what it needs to do. It provides quite some value.
- jollybean 4y agoFlutter 'everything is a widget' and especially their needless obsession with statelessness, almost ruin the platform for me. For making a specific range of mobile UI apps, actually it is pretty good. But I would not use it for anything outside that range.
- DeathArrow 4y ago>arcane, byzantine messes that are out there .NET MAUI is rather fresh. And it uses native controls on each platform.
- juki 4y agoToo fresh. While it looks nice, it's not yet usable for anything but very simple mobile apps. I'm not actually quite sure whether it will ever be suitable for complex desktop applications; at least for now everything is clearly designed only for mobile.