I want to learn how to code desktop apps but only find web development tutorials.
As many of you here I’m looking to learn to code on my freetime. In the future I can see a possible career transition or at the least an added value to my current career path, I’m a Creative Director doing motion design and animation.
My areas of interest are mostly desktop apps (most likely graphics or video apps), plugin development for said apps, development of workflow and automation tools and possibly game development.
From what I’ve read a lot of those areas use C/C++ or frameworks like OpenGL, CUDA, DirectX, GLSL, etc… The problem is most of the training I find online is web development related and does not seem very useful for what I want to do.
I know a lot of programming workflow and code logic transfers across languages, so all knowledge is useful. But how can I direct my learning path to my areas of interest? Not only how to learn the languages, but also how to learn the design paradigms and structuring of programs like these.
Do you know of any good resources for learning these languages/frameworks? Do you have any advice on how to structure my learning?
Thank you in advance.
It depends on what type of program you are planning to write. You can actually write desktop applications using web programming languages by using NodeJS and Electron (my current project at work is recreating a bloated old C++ tool with an Electron app).
If that’s not what you’re looking for though, and you don’t know exactly what languages you will need for your end goal, I suggest learning either C++, C#, or Java. It doesn’t really matter which one you learn first. C# and Java are nearly identical. C++ has some significant differences but the knowledge is highly transferable. These are the traditional languages for writing desktop applications. When you are studying them, a large part of the lessons will be CLI based because you want a good foundation in programming before you try to connect a UI to it.
Yeah, it really depends upon what you want to do. What you want to do drives the language choices, which then drives recommendations.
If you are interested in things that require CUDA, then you’ll want to start with C/C++ and build up from there.
Thank you @ArielLeslie and @JeremyLT
I’m aware of Electron and not opposed to it at all for smaller stand-alone applications. I’ve actually looked at it for building a simple workflow tool I’ve needed in the past.
That said, if I’m looking to at some point work in plugins and/or on the codebase of an existing app, then Electron won’t do it.
Since you both mentioned it will depend on what I want to do… some examples could be, plugins for Adobe After Effects, working on Blender 3D codebase, creating interactive media applications museums or events, working on video compositing applications, etc…
Of course these are just some things that come to mind right now, because they’re related to what I do now. I’m open to many other things.
If I am to start learning C/C++ do you have any recommendations on resources and also how to structure my learning path?
I don’t have a ton of experience with C or C++ resources. For C I used “C How to Program” by Deitel and Deitel (and old, cheap edition because it’s not like the language is changing) and for C++ I have “C++ For Programmers” by the same authors (again, one that’s a couple of years old because I’m cheap).
Almost everyone will suggest reading Stroustrup’s book for C++ because he originated the language, but I like the Deitel heavy emphasis on writing working code better for a new student.
Old books really struggle. For C, you want to make sure you use resources for C99 or later. For C++, you want resources designed for C++11 or later, in my opinion. “C++ For Programmers” is a good choice.