Wednesday, 09 February 2011
My daughter recently asked me for some help with her A Level computing homework. She'd been given 15 exercises to do each of which involved the creation of an algorithm to perform one specific job. For instance one algorithm required her to draw a rectangle on the screen, that sounds easy when you consider that Windows is a graphical environment so drawing a rectangle should be straightforward, but this was complicated by the stipulation that it should be a console application (DOS type application) which limited her to using characters only.
For an experienced programmer that problem along with the 14 others she was given should be simple enough to achieve, but for someone new to programming it proved to be more of a struggle.
In spite of a lot of clever technology a computer is ultimately a dumb lump of silicon and plastic with a few metals thrown in for good measure, it is the software that it runs that makes the computer useful. That software required someone to write a program, and that someone would have started by learning that you have to tell a computer about every single step of an operation no matter how simple.
For instance to pick up a ball we move our arm to position our hand over the ball, we then manipulate our fingers to grab the ball and then move our arm again to a new position. That is something that we think nothing of, we learned it when we were young and our brains are able to visualise the action and perform it without conscious thought. But a computer can't do that and so to acheive the same result would require breaking down the problem of moving the arm, positioning the hand just so, clenching the fingers and so on and so forth.
So to help my daughter I didn't do her homework for her (that would of course be cheating) but instead helped her to visualise the problem as a series of small steps. To come up with a possible solution for each step and to then test that solution before moving onto the next step.
Watching and helping my daughter made me realise once again how difficult programming a computer is. The skill of programming isn't really about knowing one particular programming language over another, many have a similar structure and the differences are merely in the syntax and keywords used. But in the visualisation of the problem and translating that vision into logical steps that a computer can understand, once you've mastered that skill the programming language you use is largely irrelevant.