Introduction
When it comes to programming, a little learning can indeed be a dangerous thing. If you read a book like C# 5.0 All-in-One for Dummies (Bill Sempf et al., 2013, For Dummies) or my book Stephens’ C# Programming with Visual Studio 2010 24-Hour Trainer (Rod Stephens, 2010, Wrox), after only a few weeks you can easily think you know everything there is to know about programming.
I clearly remember when I finished my first programming class. The language we used was UCSD Pascal, and after only one class, I knew it quite well. I knew how to use the language, how to draw simple graphics, and how to read and write files. I was quite sure that with enough work I could write just about any program imaginable.
Since then I’ve had plenty of opportunities to realize just how wrong I was. I’ve worked on projects in about a dozen different programming languages, each with its own strengths and idiosyncrasies. I’ve worked on elegantly architected systems where adding new features was a breeze, and I’ve worked on badly designed 50,000 plus line monstrosities where you might need to study the code for a week before changing a single line for fear of breaking everything else. Since then I’ve also studied complexity theory and learned that there are literally thousands of provably hard (NP-complete) programs that you cannot solve in a reasonable amount of time. (I talk about some of them in my book Essential Algorithms: A Practical Approach to Computer Algorithms, Rod Stephens, 2013, ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access