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, ...

Get C# 5.0 Programmer's Reference now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.