Task-Specific Programming
- janalumi
- Apr 19, 2024
- 3 min read
"The spreadsheet formula language is an example of the kind of task-specific end user programming language we are advocating. It is expressive and easy to learn and use. We examine the formula language here as an exemplar for other task-specific programming languages that can be developed for users in other domains, with other tasks. To start, let's look briefly at the expressivity of spreadsheets." - Bonnie A. Nardi, A Small Matter of Programming, 1993
In Bonnie's book, A Small Matter of Programming, she explores the task-specific programming, in contrast to the text-base programming. Spreadsheets provide a customisable landscape to produce templates, models and applications for a wide variety of purposes. Additionally, it has a structured visual language, accompanied by numerous functions. This provides enough scope to build most tools people have needed in office work thus far, albeit grudgingly.
The levels of abstraction required by traditional text-based programming is by far more demanding than the structured visual programming of spreadsheets. And in the ever increasing fast paced trajectory of working life, we need something adaptive, quick to adopt, and requires a fewer levels of abstraction. Here I introduce Coda.io.
Coda provides the stepping stones to a task-specific programming language. It is also very visual, and has a comprehensive structure. Better yet, Coda has a strong community of practitioners, enthusiasts and learners, to help you answer most of your questions and troubleshoot most issues. It has all this, but with a lot less tedium of spreadsheets. But like spreadsheets, you can build powerful models, calculators, tools and templates for almost any daily office task. Better yet, it is also reader friendly on mobile devices. That is, once you build your Coda doc you can easily navigate the content and tables, more so than spreadsheets. However, building coda docs on your mobile is still like pulling teeth, so only for the stubborn, brave and persistent (just remember to use Desktop View!).
But why do we need task-specific programming when we now have AI?
"The human assistant is valued because he can, on his own, break a task down into its constituent parts, correctly anticipate next steps, and fill in missing details. The hope is that the computer will be able to do the same." - Bonnie A. Nardi, 1993
Anybody who has been using AI to program anything will know how much work it is to define the problem, outline the scope and express in specific detail what you want so you actually get something remotely close to what you are looking for. And even between people, communication is challenging, so many misunderstandings or alternate interpretations can arise.
While some IDEs are starting to integrate AI, not everybody is comfortable building apps in these environments (don't get me started with Android Studio). Task-specific programming tools like spreadsheets or Coda, have a familiar working environment, much like a sheet of paper or a canvas. This is useful for those who are more comfortable with having all the information they need laid out in front of them.
Programming is essentially about how we communicate with a computer. Historically it has been about issuing commands. Instead, it can be visual and collaborative. We can explore alternative approaches to express our needs, wants and wishes through illustrations, descriptions, examples, experiences, models and all the other ways we communicate as human beings.
Text-based programming is such a narrow lense from which to communicate. And to develop technologies of the future it is essential that we expand the modes of human-computer communication.
Feature image generated by Stable Diffusion in Dreamstudio.ai