high level what?

January 8th, 2008
[ Software Development ]

It’s a sad fact that I spent most of my “holidays” rewriting the blueTurbine client in python which is my first real experience with the language. Python is described as a “high-level language“:

“In a high-level language, complex elements can be broken up into simpler, though still fairly complex, elements for which the language provides abstractions, keeping programmers from having to ‘reinvent the wheel.’ For this reason, code which needs to run particularly quickly and efficiently may be written in a lower-level language, even if a higher-level language would make the coding easier.”

snake.jpgI have to agree with the above in that I find it significantly simpler to develop complex concepts into python code as compared to any other language I’ve used. The catch, however, is the “though still fairly complex” part. Being able to translate complex concepts into simpler code does NOT mean it’s simpler to work with complex concepts.

If you happen to be struggling with complex software concepts, or have yet to be exposed to them, then don’t expect python to teach them to you. If anything it’s the exact opposite in that it puts the burden squarely on the developer to completely understand those complex concepts in the first place. Python allows you to code them with less code which means they’re more subtle and less explicit.

That’s amazing for developers who already grasp those concepts. They can be more productive both in reading and writing code. If you’re trying to learn them, however, then I’m not sure how that helps. If anything you may want to spend more time wading through more verbose (less simple) code first? Wow that sounds backwards…

Having said that Bruce Eckel makes a great point about using python as a learning language so what do I know? He doesn’t, however, speak to the idea of learning complex concepts by working on codebases where they exist which is more what I’m speaking to.

“Python would make an even better first language to teach programming. It’s such a gentle learning curve. You can start with scripts, and of course some people dismiss Python as a scripting language, because you can script with it. You start teaching scripts. You can teach functions. Then later you can add classes. Then you can go onto things like metaclasses. Python has many more of these powerful constructs that you can learn when you’re ready. And I think that’s very impressive, because it doesn’t say you should only be an object-oriented programmer.”