So, after a long (more than 10-year) hiatus in IT, I am thinking about what I will continue to program in. Not that I plan to make a significant living with it (although one never knows in advance), but somehow I’m addicted to it – if I don’t write hello world at least once a week, I’m abstinent :).
It must be said in advance that I approach this with certain prejudices. I started on Atari with BASIC, I wrote quite a bit in C under Linux and probably most in PHP. I used to make HTML pages too, but that was before CSS came along. Then I already had people for it :). I don’t know much about today’s version of HTML, and I don’t particularly want to. I’ve had enough of him in my life. I’m a little familiar with C++, too, but I don’t consider this behemoth a suitable tool for modern high-level programming. I also don’t really need Java and similar languages. On the other hand, I would like it if, with (more or less) one code, it could be translated for Windows, Linux, macOS, Android, iOS, and preferably also used as a web app. And, although I’m probably a little too rambling, I’d like a visual GUI design, preferably with a link to event handlers in the executive code. I’m a little lazy :).
I was pretty clear with my own programming language. Python. It’s simple, clear, cross-platform, high-level, and perhaps the only one that dared to do away with parentheses for defining blocks that otherwise take up a third of your screen unnecessarily in C-like languages - well, to sum it up, it just looks like it was designed just for me :). It is also well supported by other libraries and there are quality courses for it on the Internet (even in Czech, see for example: Learn Python or Online Python programming courses – The largest Czech e-learning (itnetwork.cz)). It is absolutely excellent for data analysis and machine learning or AI. And, last but not least, Python programmers are very well paid :).
However, what am I going to do with the windows for the frontend? So I started researching what was available where. Of course, I didn’t have time to go through everything and even dive deeper into individual solutions, but I will share what I have come up with so far. I figure if others who see deeper into this add their comments, it might help others decide what to do next.
• Python over Qt linked via PyQt or PySide in the Qt Creator IDE was logically my first choice when I wanted to use Python. Qt and Qt Creator are natively in/for C++, but they also support Python. Well, in principle it is possible to connect it – but manually. Most of the intuitive IDE support for building apps is gone unless you use C++.
• So I went to try MS Visual Studio. I remember that at that time, people created an app with a GUI in Visual Basic, for example, even if they didn’t know much about it. I was hoping for something similar, but more modern and portable between platforms. MS Visual Studio is also known for its support for Python (or support for almost everything). And almost everything really goes there – for console apps. But if you want a visual GUI app design and cross-platform portability at the same time, you’re in a similar situation to the previous solution. It works when using C++. Maybe even in JS, but I didn’t understand that very well. Or if the app will only be for Windows (I think it was called the UPW platform). It seemed most reasonable to me to use .NET core in C# (definitely better C# than C++; of course you have to drag the .NET runtime with you – for example on Linux I think it’s called Mono – but it seems to work quite decently), however, even in that the visual support of the connection of the design there is nothing groundbreaking about powerful code (for comparison, remember Delphi, for example?). However, I slowly began to come to terms with the fact that I will need a different language for the frontend, and that connecting the powerful code with the GUI cannot be done with just a click.
• Then, while researching the BitWarden password manager, I came across the Electron + JS/HTML/CSS platform (my specialty is cyber security, programming is more for fun). Basically, these are HTML5 pages, animated by JS, with access to other system functions using the nodeJS library. And Electron then turns it into a desktop application – by creating a window with a browser container and mediating the communication. This makes it perfectly portable anywhere a browser works. It’s a bit lazy (although for speed-critical functions there is perhaps an option to precompile the JS), but usable. And from JS, there is already an interface for just about anything. If you’re already good at JS, HTML5 and CSS (or if you’re at least eager to learn it), it seems like a great option to easily extend your work to desktop applications. Unfortunately, I don’t really want it again 🙁
• Whereupon (while researching another password manager, this time AuthPass 🙂 ) I came across the Flutter platform in the Dart programming language. I used Android Studio as my IDE. Unlike the previous one, this can be translated for all platforms into native code (for web applications it is transpiled into JS). There are also web apps for visual GUI design (https://flutterflow.io/, https://flutterstudio.app/), but I haven’t had time to explore them yet. Not that I’m as excited about Dart as I am about Python, but better than Java, C++ or pure JS. Maybe in the future it could be my go-to for GUI / frontend development. So now I play with it every now and then :).
Comments