That is the prompt the Commodore 64 gives once it has been turned on, immediately it is there to be programmed. Almost always, the simple instruction to LOAD something was typed, bypassing this environment to play games or load other software, yet there was that moment of exposure, triggering that moment of curiosity that myself and many others found drew us into programming. We could tell the computer to do stuff.
Computing environments are very different now, and if we were to look at it from a usability perspective this could be considered a good thing. No longer does anyone need to type in the seemingly archaic instruction to load a program or file off a disk, it’s all delivered through intuitive mouse pointer and windows. This has been further abstracted with iPhone, iPad and other touch screen mobile computers, no longer do we need to be aware of the technical underpinnings of how our computers are working when we’re using them. Touch the icon and the app we want launches with the data (that is, photos, status updates, movies) we want to work with.
But I wonder if something has been lost, that initial magical exposure to its underpinnings. Computers no longer boot up into a programming language, coding tools aren't typically installed. David Brin talks about the simple ‘type it in’ programs in maths books (and magazines as I remember) that can’t be typed in anymore, a frustration in teaching his son the fundamentals of programming languages. While Apple has taken care to curate a developer eco system, this is unexposed to non-developers. (while you can get the SDK, you can’t develop on your own iOS device without payment to Apple or Jailbreaking). Even Android is not immune to this lock down. The largest mobile computing (device based) platform will be made largely of free software, but we won’t be able to modify it due to locked down hardware. How do we expose the possibility that their app can be there too?
The web has always had a much stronger emphasis on freedom than on device platforms. The barrier to entry is low, providing you're willing to learn the knowledge, crack open a text editor, write your content and upload to a web server, from where it's available on a multitude of devices. There definitely seem to be stronger online communities around web programming technologies. Mash ups and other services still expose some of the underpinnings letting you add custom code or showing you how it works, even text forms on the web will often allow and expose underlying html, Facebook has a custom code application, Twitter accepts colour codes for custom profiles. These little elements chip away at the looking glass one little bit at a time.
So how will the next generation learn about programming in the future? How sad will it be when learning to code is something that is only started in a college lab to learn a career, and not born out of the artistic nature of hacking. I think the web provides part of the answer, as a free (as in freedom) runtime environment and distribution space, but what about development? David Brin gave his son a Commodore 64, and I think that there is room in the market for a simple development computer. This would be a sort of my first hacking toolkit, that could boot up into a programming language such as Python and alongside this could be simple web development and deployment tools to share any developed programs with the world.
Exposing the ability to apply code, and bringing about this inquisitiveness is key. It is essential that these underpinnings are still available and accessible, and that we have the means to expose them ourselves. This means fighting to keep developer tools free and more importantly accessible. It means making sure ‘view source’ still exists on a web browser, and simple code hacks can be published to show how to make a computer do something, and that anyone has the means to apply it. This is to ensure that the magical spirit of enquiry, that the computer can be made to do something, will continue to provide a creative spark to the next generation of programmers.
Since writing this in 2010, two very interesting developments have occurred. First is the soon to be launched Raspberry PI computer, a cheap ($25) computer that runs Linux and boots into a programming environment, aimed at the education market. The second is the campaign in the UK to teach programming in schools. Both these projects are deserving of support. I do worry though about the possibility of them being co-opted, I often hear that the reason to teach programming is to serve the needs of business. I wonder if the ethical side of coding will be taught, will it touch on the Free Software movement for example? Its important not to forget that an important reason for coding is to understand how these machines of ours work, and so that we can change them to work the way we want them to.
- David Brin, Why Johnny can’t Code, http://web.archive.org/web/20110914144909/http://www.salon.com:80/technology/feature/2006/09/14/basic/
- Tony Mobily, 10 years on: free software wins, but you have nowhere to install it, http://www.freesoftwaremagazine.com/columns/10_years_free_software_wins_you_have_nowhere_install_it