My First GUI
Yesterday, I was asked a question that I've been asked lots of times. The typical situation is a programmer, who's been taught C or C++ in order to solve maths problems or process text files, or else have taught themselves some basic or C as a past time. And what they want to know is how to create a GUI1. My answer varies depending on mood, what language I'm currently working with, what languages the person asking me knows, and how much I think they're going to ask for help.
None the less, I thought it might be useful to write my thoughts2 down
It should be noted that there's a few languages I've never used, so they might be better than what I suggest.
- std C/C++/(Objective C)3
Unless you can find some good libraries, you're going to be developing for a single platform, as the functions a all different. I've done GUI design for windows just using the exported APIs - it took me about 4 weeks to write noughts and crosses. There are libraries for making things easy out there, but C++ is rather hacked together in places.
- Visual Basic 6
The biggest problem here is that VB is DEAD! DEAD! Support was axed years ago. Apart from being pretty much win only, and rather slow, it was a actually a really nice language to work with, especially as it did most of the GUI work for you
- VB.NET/C#
Now, some slightly useful languages. VB.NET is still my language of choice when I need to build a one-off application which needs a GUI4. Boht languages have most of the standard class structures, but both are SLLOOOOOOOOOW. As I've said before, I'm not a fan of JIT compiled languages...
- Java
As it's had GUI support via Swing since v1.2, and the virtual machine is a lot faster now days, it seems like a good choice. However, unlike the .NET languages, the GUI layout tool and the event callback system seem a lot more complex. So strange and complex, I've never seen a graphic project through in Java. But it's big advantage is that you can then have a library, a GUI program, and (say) a webserver, all in the same cross platform language.
- Python
I've never used it. no-one has ever been able to sell it to me.
- That's Graphical Use interface (or pretty window thingy for the uninformed)
- Surprisingly, thinking is a use to which I occasionally put my brain. I got cake for it once
- I've never used objective C. I've been told by multiple sources that it's rather nice.
- For example, a program which allows users to enter names / emails, validate them, and add them to a list. Whilst looking pretty. Took me about 1 hour to write, including transparency on various things.