The Future of Programming

READY.

That is the prompt the Com­modore 64 gives once it has been turned on, imme­di­ate­ly it is there to be pro­grammed. Almost always, the sim­ple instruc­tion to LOAD some­thing was typed, bypass­ing this envi­ron­ment to play games or load oth­er soft­ware, yet there was that moment of expo­sure, trig­ger­ing that moment of curios­i­ty that myself and many oth­ers found drew us into pro­gram­ming. We could tell the com­put­er to do stuff.

Com­put­ing envi­ron­ments are very dif­fer­ent now, and if we were to look at it from a usabil­i­ty per­spec­tive this could be con­sid­ered a good thing. No longer does any­one need to type in the seem­ing­ly archa­ic instruc­tion to load a pro­gram or file off a disk, it’s all deliv­ered through intu­itive mouse point­er and win­dows. This has been fur­ther abstract­ed with iPhone, iPad and oth­er touch screen mobile com­put­ers, no longer do we need to be aware of the tech­ni­cal under­pin­nings of how our com­put­ers are work­ing when we’re using them. Touch the icon and the app we want launch­es with the data (that is, pho­tos, sta­tus updates, movies) we want to work with.

But I won­der if some­thing has been lost, that ini­tial mag­i­cal expo­sure to its under­pin­nings. Com­put­ers no longer boot up into a pro­gram­ming lan­guage, cod­ing tools aren’t typ­i­cal­ly installed. David Brin talks about the sim­ple ‘type it in’ pro­grams in maths books (and mag­a­zines as I remem­ber) that can’t be typed in any­more, a frus­tra­tion in teach­ing his son the fun­da­men­tals of pro­gram­ming lan­guages. While Apple has tak­en care to curate a devel­op­er eco sys­tem, this is unex­posed to non-devel­op­ers. (while you can get the SDK, you can’t devel­op on your own iOS device with­out pay­ment to Apple or Jail­break­ing). Even Android is not immune to this lock down. The largest mobile com­put­ing (device based) plat­form will be made large­ly of free soft­ware, but we won’t be able to mod­i­fy it due to locked down hard­ware. How do we expose the pos­si­bil­i­ty that their app can be there too?

The web has always had a much stronger empha­sis on free­dom than on device plat­forms. The bar­ri­er to entry is low, pro­vid­ing you’re will­ing to learn the knowl­edge, crack open a text edi­tor, write your con­tent and upload to a web serv­er, from where it’s avail­able on a mul­ti­tude of devices. There def­i­nite­ly seem to be stronger online com­mu­ni­ties around web pro­gram­ming tech­nolo­gies. Mash ups and oth­er ser­vices still expose some of the under­pin­nings let­ting you add cus­tom code or show­ing you how it works, even text forms on the web will often allow and expose under­ly­ing html, Face­book has a cus­tom code appli­ca­tion, Twit­ter accepts colour codes for cus­tom pro­files. These lit­tle ele­ments chip away at the look­ing glass one lit­tle bit at a time.

So how will the next gen­er­a­tion learn about pro­gram­ming in the future? How sad will it be when learn­ing to code is some­thing that is only start­ed in a col­lege lab to learn a career, and not born out of the artis­tic nature of hack­ing. I think the web pro­vides part of the answer, as a free (as in free­dom) run­time envi­ron­ment and dis­tri­b­u­tion space, but what about devel­op­ment? David Brin gave his son a Com­modore 64, and I think that there is room in the mar­ket for a sim­ple devel­op­ment com­put­er. This would be a sort of my first hack­ing toolk­it, that could boot up into a pro­gram­ming lan­guage such as Python and along­side this could be sim­ple web devel­op­ment and deploy­ment tools to share any devel­oped pro­grams with the world.

Expos­ing the abil­i­ty to apply code, and bring­ing about this inquis­i­tive­ness is key. It is essen­tial that these under­pin­nings are still avail­able and acces­si­ble, and that we have the means to expose them our­selves. This means fight­ing to keep devel­op­er tools free and more impor­tant­ly acces­si­ble. It means mak­ing sure ‘view source’ still exists on a web brows­er, and sim­ple code hacks can be pub­lished to show how to make a com­put­er do some­thing, and that any­one has the means to apply it. This is to ensure that the mag­i­cal spir­it of enquiry, that the com­put­er can be made to do some­thing, will con­tin­ue to pro­vide a cre­ative spark to the next gen­er­a­tion of pro­gram­mers.

Adden­dum.

Since writ­ing this in 2010, two very inter­est­ing devel­op­ments have occurred. First is the soon to be launched Rasp­ber­ry PI com­put­er, a cheap ($25) com­put­er that runs Lin­ux and boots into a pro­gram­ming envi­ron­ment, aimed at the edu­ca­tion mar­ket. The sec­ond is the cam­paign in the UK to teach pro­gram­ming in schools. Both these projects are deserv­ing of sup­port. I do wor­ry though about the pos­si­bil­i­ty of them being co-opt­ed, I often hear that the rea­son to teach pro­gram­ming is to serve the needs of busi­ness. I won­der if the eth­i­cal side of cod­ing will be taught, will it touch on the Free Soft­ware move­ment for exam­ple? Its impor­tant not to for­get that an impor­tant rea­son for cod­ing is to under­stand how these machines of ours work, and so that we can change them to work the way we want them to.

Original Publication date : October 2010
Location : London, United Kingdom