In the beginning there was the computer and it was useless. At some point someone had tried to do something with it but they were faced with an endlessly blank screen. Ah, that’s right, no-one had written anything for it to run yet.
15 years ago it cost money to get into programming; as recently as 2002 a student edition of Borland C++ could easily cost £90 and you couldn’t even sell what you made. Now even Microsoft are giving away everything you need to make commercial software, QT Creator is free on the desktop (all of them) and Google are working with JetBrains to make a better free toolkit for Android App development. There’s never been a freer time to develop, you lucky people.
What’s missing is the knowledge.
I’m aware of the huge number of often expensive tomes that say they teach programming but fall painfully short of the mark. Written in Jargonese with the expectation that you already know quite a bit a lot of these books are impenetrable for the first-time reader.
I hope to address this in as painless a manner as possible. That’s for you of course. I, for one, am already bricking it. Set yourself a challenge Duffy, what you do that for? It’ll end in tears. No good will come of this I tell you.
I’ll be using Qt Creator exclusively for all of the basic tutorials, other development environments may be used for more advanced tutorials but the basics operate on a level that’s the same for all environments regardless.
Qt Creator can be downloaded from http://www.qt.io/ide/ and is free for writing GPL programs. You can either get the MinGW32 version which compiles 32 Bit Windows programs or if you have an appropriate version (2012/2013) of Microsoft Visual C++ installed you can compile 32 or 64 Bit Windows programs. The basic tutorials will work on other Qt supported platforms. One quick thing to note: when it asks for your email address to crate an account you can skip it. It’s absolutely not required and your choice.
C is a language often referred to as “portable assembly”, a language so well defined that it’s difficult to improve on its efficiency. While C++ may not be able to claim such efficiency, it’s efficient enough and the inherent advantage of code manageability means that software with a ‘good enough’ level of efficiency can be produced quick enough that it’s cost and level of usefulness are also ‘good enough’. Getting caught up in efficiency to too strong a degree can result in never releasing anything, get the program working first and worry about efficiency when it does the job at all. As has often been written, premature optimisation is the root of all evil.
The reason I focus on C++ is precisely because it’s one of the older and more difficult languages with the requirement to manage your own memory and is very picky about its data types. Consequently, if you can get the hang of C++ you can get the hang of any of the more modern languages including C#, Java, Objective-C or even the new kid on the block, Swift which looks set to replace Obj-C on Mac and Google is giving serious consideration for future Android use.
C++ as a more bare-bones language is also more useful for understanding what’s happening behind the scenes which continues to be a useful skill even with PHP.
So yes, that’s my reasoning; whether you agree with it is an altogether different matter.