This article is taken from the Spring 2012 issue of I, Science.
Programming is a skill that allows us to develop and personalise the functions of computers – and anyone can learn to harness it, argues Michael Cook
One of my favourite editions of historical webcomic Hark! A Vagrant! is about Ada Lovelace, daughter of renowned poet Lord Byron and a gifted mathematician. In the comic, Ada’s mother hides the young girl from a passing poet, for fear that she might be tempted into her father’s wild life. Purportedly, it was her mother’s fear that led to Ada’s rigorous mathematical education, something that caused her to achieve notoriety as the world’s first computer programmer. This achievement was even more impressive due to the simple fact that computers didn’t actually exist yet.
Spot the Difference
When mathematician and inventor Charles Babbage failed to construct his Difference Engine for computing logarithm tables in the 1800s, he drew up designs for an even more complex machine that could be programmed through punch cards – the Analytical Engine. Lovelace was one of the few people who understood Babbage’s idea, and wrote what amounts today to a computer program for calculating Bernoulli numbers for a machine that didn’t even exist.
As any computer scientist will attest, some days it is hard enough writing code for a machine that is right in front of you. It wasn’t until 1991 that Babbage’s Difference Machine was finally built, and although his Analytical Engine is yet to be fully built, Ada’s algorithm has been verified as correct.
The programming aspect of a computer is what makes it such an invaluable tool to human beings. Tools are a key part of our society and are crucial to our rise as a species, but most tools are developed for specific uses – from crude stone axes right through to Geiger counters and plasma cutters. Unlike these specific tools, computers are designed to understand very small instructions, allowing us to build up layers of complexity resulting in three-dimensional simulation, international communication and artificial intelligence. Without programming, modern technology is just a series of single-use items, no more remarkable than a clay bowl.
Despite this immense flexibility and power found in every computer, only a very small proportion of our society are able to make the most of it. The majority of us use our computers for a very limited range of purposes. We play games someone else made, we check our email using protocols and encryption algorithms someone else designed and we print our photos only after letting someone else’s application touch them up automatically. For all the wonder and potential inside the grey metal boxes we carry everywhere with us, we are quite happy to treat them as a Swiss Army knife – multipurpose, but limited to what its designer intended it for. It’s a curious situation, but one that might be changing.
Many governments are now announcing a greater emphasis on teaching schoolchildren to program and to understand computer science, which might lead to an upcoming generation that are not only users of code, but creators as well – people who can adjust and tweak and create software that solves problems unique to them, in a way they want them to be solved. This paints an optimistic picture of the future – where everyone has the knowledge to protect themselves from exploitation online and to create and share solutions to niche problems that might not be commercially viable to solve today.
What happens to the generation caught in the middle, though? We often laugh (or at least wryly smile) at the generations before us for being less tech-savvy, unable to send text messages or avoid viruses online. Yet we are about to be succeeded by a generation that will not only have their own gadgets that we won’t understand – they’ll be controlling them in a way we won’t understand either.
Fortunately, there are organisations online that don’t think it is too late to turn this around, the most passionate of which are Code Year and Codecademy, two websites running with the grand aim of teaching programming to everyone, regardless of skill or savviness. The former, Code Year, runs weekly tutorials teaching programming from the ground up, using pleasing machines interactive lessons that let you write real code, see it running and get immediate feedback. It is an incredible service, offered for free, that thousands of people around the world are now taking part in (and it is not too late to start either – you can catch up with their previous lessons too).
The message Code Year tries to get across is that programming can be much simpler than it is portrayed to be, that it is not some dark art as it was in the days of Ada Lovelace and the imaginary machines she wrote algorithms for. Today, programming isn’t all maths and imaginary machines – you are carrying all the tools you need around with you. Take advantage of it.
Image: flickr | Larry Johnson