I recently read the book 10 PRINT CHR$(205.5+RND(1)); : GOTO 10 (called 10 PRINT for short and pronouncability), which is a unique piece of work written by a host of authors including Mark Sample and Ian Bogost, that talks about a simple one-line program in BASIC that loops infinitely, drawing a maze of forward and back slashes on the screen until interrupted by a user. This book talks about the program, how the program was shared, and how it looks when it’s ported to different platforms and languages. It looks at programs as texts, and observes how the program conveys information in different ways across different machines.
I recently attended the Qualifying Examination of a fellow Ph.D. student on the topic of Microsoft TouchDevelop, a language that allows smartphone owners to write their own applications using a language and IDE optimized for writing applications on the smartphone itself. I could talk at length about the technical aspects of this language, but I’d rather focus on the cultural future that it seems to want to be a part of.
Often, when we think of programming, we think of people who make a career out of writing large, grandoise applications that they then sell to millions of people for millions of dollars. But the sci-fi movies told us the future would look differently. They told us that we would be able to say “Computer - play me a song I haven’t heard before”, and that it would do it.
We were told that we, the end-users, would write the programs.
When we think of the Commodore 64 and Apple ], nothing is more iconic than the BASIC interpreters that came with the device. We didn’t just expect programmers to write code, we expected that writing code would be part of the standard way that computers would be used. Computer enthusiast magazines often included one-liners and variants like 10 PRINT to encourage people to try out clever things and write useful programs for themselves to get basic jobs done. After all, when I write a program like
f = file("text.txt") count = 0 for l in f: if "word" in l: count += 1 print count
all I’m doing is telling the computer, in its own language, “tell me how many lines in the file ‘text.txt’ contain the word ‘word’“. It might not be marketable, but it’s useful, and it’s easy enough for me to write it myself that I don’t need to find another tool to do it for me. In many ways, scripting languages like Python fill the role of these programming languages designed for end-users.
The problem is that they never took off. After all, when the GUI came into being, the text-based UNIX machines became the nostalgic memories of crusty old nerds who couldn’t get with the times. Instead of people telling the computer exactly what they need, they learn how to use monolithic applications that were designed with all of the possible situations it would be needed for that the developers could conceive. If there’s any end-user programming that we actually see these days, it’s the formulas in spreadsheets… why is that comfortable while using a Python interpreter is scary?
I don’t think TouchDevelop will make that future into a reality, but its creation shows that the idea of such a future is still in the minds of our technologists.