What is Task-Oriented Programming?

Task-Oriented Programming (TOP) is a programming paradigm for developing interactive multi-user systems. It is really nothing more than its name says: programming using "Task" as central concept. The idea is that a computer program supports a person or a group of people in accomplishing a certain task, or can autonomously perform some task. If we can precisely define the task that needs to be accomplished, or can decompose a complex task into smaller simpler tasks, we should have enough information to generate executable systems that support it. This means that technical infrastructure of an interactive system (handling events, storing data, encoding/decoding etc.) can be factored out and solved generically.

Why should I care?

In order to design and program any useful tool, it is simply unavoidable to understand what task the tool you are making is intended to support. If you fail to do so, it is all to easy to get lost in the technicalities of the development tools you are using and end up making something that does something but is not necesarily useful. TOP reduces the design and development of interactive applications to the specification of task decompositions and the data types and information sources used in those task. All the necessary technical details needed to turn such specifications into executable systems are automatically taken care of by a generic framework.

What do I need for Task-Oriented Programming?

You need either a dedicated TOP programming language, or a general purpose programming language with a TOP framework. A TOP framework provides the following components:

iTasks provides all of these components for the Clean programming language.

Can I get started with iTasks today?

Yes you can. iTasks is free and open source software that you may download here. The daily-built bundled Clean + iTasks packages (clean-bundle-itasks) give you everything you need to start programming task-oriented itasks applications. There are some however some things to keep in mind. iTasks is first and foremost a research tool, not (yet) a polished product. You can use it to make applications, but don't expect the framework to be bug-free, feature complete or robust. The API is constantly evolving based on ongoing research, so please don't expect that upgrading to newer framework versions will work without having to change your task definitions. Naturally we believe it changes for the better.

iTasks in its current form is best suited for research and for building throw-away prototypes.

Where can I find out more about Task-Oriented Programming and iTasks?

There are some pages dedicated to iTasks on the Clean Wiki. You can find most information on TOP and iTasks however, in research papers from the group working on Clean and iTasks.