Answer the question
In order to leave comments, you need to log in
What programming language should a beginner learn to write GUI applications?
Good day! I have a friend who is 16 years old. He wants to write GUI programs. Before that, I studied a little Pascal. This showed that he was interested in programming. I advised him to switch to a more up-to-date PL. Choosing between C++ and C#. After reading the differences between these PLs (I never found out a significant difference. C # is easier to learn (+), sharpened for msvs and microsoft (-), there are no pointers (+)). I myself started with C ++ and now learning Java is easy for me. Although C ++ is more difficult (as they say on the forums), can you still start with it?
Answer the question
In order to leave comments, you need to log in
Python is quite good for all kinds of GUIs, it works with many popular frameworks (Qt, GTK, Kivy), it's not a problem to google the necessary code. And the application can be easily dragged under Linux (even under android is possible).
After mastering Python, you can start learning C ++
Depends on the amount of time and effort. If a friend has the opportunity to study (already at the age of 16), then I would advise the pros. Yes, it’s hardcore enough, but still, this language as a development tool just won’t go anywhere, and after the pluses, he will learn C # without problems (when he understands C ++ well, he himself will want to have such a language as C # or Java). The main thing is that if he can discipline himself within C ++, and can write workable things, then he will know how modern software works in general, and for him any other language will be just a tool, not a paradigm.
It is important that the person ALREADY has experience in at least one language. If he taught Pascal, then let him remember everything well, maybe even study with him for the first couple of weeks. Let him remember what the main algorithmic constructions are, learn data structures, remember what pointers are. And at the same time, let him begin to move on to the pros. It is also worth looking for a good modern book for a beginner - C ++ is a very versatile language, different people write it in very different ways, so a kind of "guide" is needed. Then, when a person gets comfortable, he will choose the style and tools.
If the acquaintance was cunning, and still knows very little, then it is better to start with something else. It already depends on current interests: if the computer is interested as a "piece of iron", then it's better to take C - there will be a "continuation" of Pascal, if you really, really want to quickly sketch out a form - then let him take C #.
I don’t recommend dynamic languages like Python to a beginner, they are poorly disciplined.
In terms of tools, Qt is now so cool that it’s not easy to choose even under Windows: either it, or the advanced, but complex and underdeveloped WPF, or the controversial Windows Runtime.
By the way, one can still argue about what is more difficult - C++&Qt or C#&WPF. In the first case, the language is complicated, but the library is quite simple, in the second, the language is simpler, but you need to really understand WPF in order to fully use it.
At one time, when I started programming with QBasic and TurboPascal, there were no special options for where to develop further: C ++. Real language for solving real problems.
To work with the GUI in Win, the logical continuation was Delphi and C++Builder. The MFC from M$ was so clumsy (in my opinion) that I didn't even want to look in its direction.
Then I was carried away for a long time towards microcontrollers, and there C / C ++ helped me most fully in my work: fast programs, full control over memory - that's what I need.
Then, again, I needed a GUI. Just .NET and C# by this point overcame their childhood illnesses. C# seemed to me a very solid language and easy to learn. With C #, I most fully figured out OOP (in C ++ I somehow swam with OOP: the whole picture did not add up). Now C# continues to evolve. This is a modern language. There are many tasks for which it is the perfect tool. However, C++ does not lag behind, and modern specifications also include almost all new features. But all the same, C++ is more difficult: there are a lot of ways to stumble on an even (at least from the point of view of C#) place, dreary work with memory.
Now, when working with .NET with C#, sometimes it becomes necessary to work with old libraries written in C++. .NET has such a language as C++/CLR, which, on the one hand, can work with .NET, and on the other hand, it easily works with "pure" C++ and becomes a saving bridge in such cases. In addition, a couple of times I had to implement complex, from a computational point of view, tasks in C ++ / CLR. Now I really see that it was possible to do the same without going beyond C #, but in C ++ it turned out to be easier anyway.
In general, in my case it helped me a lot that I started with C ++. But I work mostly in C#. No matter how it happens that starting with C#, as with a simpler one, your friend will then find it difficult in rare tasks where C++ skills are needed.
The advice, probably, should be done like this: study C # for the GUI, try to tinker with microcontrollers for fun: where you really need to write in C ++ yourself. You can, for example, write for arduino in c ++: you don’t need to solder anything, and it’s inexpensive. Not sketches, but to figure out how to work with C++.
And also look at other languages: JavaScript, Python, functional anything. The main thing is that the brains do not ossify in any one paradigm, but can look at the task as broadly as possible.
Delphi
And so everything is simple:
- only Windows => С#
- something cross-platform => or wxWidgets or html / css / js in the browser
C++ is not a case where it makes sense to fight the language
when there is C# with excellent tools for writing GUIs under Windows.
If you want cross-platform with maximum performance, you can use C++, but if there are no special requirements, then this is a dead end path, very costly and currently of little use.
Qt if under C++. I switched from a builder to Qt in April, made my first CAD for an enterprise (for a competition for young professionals) in 2 months. By the way, even without using forms, it’s more convenient for me to place everything through the gridlayout)
Now I create games for myself in my free time, I start making client-server software, and other small applications.
In a word, the impression is super, super, super, I recommend it to everyone, Qt is very cool
quick Python + wxPython crutch, parallel digging towards the web approach: local http server on Python + JS and GUI in the browser.
Advantages of the second option
1) scalability for any number of simultaneous users: the logic is processed on one network node (we are not talking about a full-fledged version with a LAMPy server yet), while serving any number of clients / workstations.
2) platform-independence, and we automatically get (minimal) support for mobile clients through any browser on the phone, though only online.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question