One of the repeating themes that came up in the comments in my post last week about a 12-year old programmer was that the student was not doing “real programming.” Some of that may have been snobbery. Some of it may have been jealousy. Some of it may have been a real belief that some things that look to non-programmers are not really sophisticated or complex enough to count as real programming.
One programmer I know said (and I’m still not sure if it was in jest or not) that programming in any high level language was not real programming. Real programming she insisted (yes she) was machine language programming. Not assembly language either. No she meant setting the ones and zeros that make up a machine language instruction. She talked about developing banking system programs for a device that allowed for fewer than 300 total instructions. BTW if you don’t know the difference between instructions and lines of code you probably are not a really programmer yet. (I’m about three quarters serious in that one.)
There are also a lot of people who say that Visual basic is not real programming. Or that using library routines or objects is not real programming. Or even that programming for Windows in not real programming. I think that a lot of this is just really silly.
To me programming is more about a way of thinking than about the specific programming language, compiler, development environment, or operating system. Programming is about developing an algorithm that solves a problem and then implements it so that a computer can work on it. That’s it. It’s as simple as that or as complicated as that.
I’ve done a lot of different programming in my career. Some operating systems development, some applications, some stuff in very high level and 4th generation languages, and a bunch of stuff in various assembly languages for various architectures. It’s all programming to me. The difficulty should never be in the tools/languages one uses. It should all be about the problem one is trying to get the computer to execute on. We all need to get past the idea that some languages or tools are intrinsically wrong/bad or “not real programming.” Pick the best tool for the specific task, the specific hardware or the specific problem. The algorithm is the programming not the implementation of the algorithm.