Task Oriented Programming (or shortly TOP) is a new programming paradigm. It is used for developing applications where human beings closely collaborate on the internet to accomplish a common goal. The tasks that need to be done to achieve this goal are described on a very high level of abstraction. This means that one does need to worry about the technical realization to make the collaboration possible. The technical realization is generated fully automatically from the abstract description. TOP can therefore be seen as a model driven approach. The tasks described form a model from which the technical realization is generated. This paper describes the iTask system which supports TOP as an Embedded Domain Specific Language (EDSL). The host language is the pure and lazy functional language Clean.
Based on the high level description of the tasks to do, the iTask system generates a web-service. This web-service offers a web interface to the end-users for doing their work, it coordinates the tasks being described, and it provides the end-users with up-to-date information about the status of the tasks being performed by others.
Tasks are typed, every task processes a value of a particular type. Tasks can be calculated dynamically. Tasks can be higher order: the result of a task may be a newly generated task which can be passed around and be assigned to some other worker later on. Tasks can be anything. Also the management of tasks can be expressed as a task. For example, commonly there will be many tasks assigned to someone. A task, predefined in the library for convenience, offers the tasks to do to the end-user much like an email application offers an interface to handle emails. This enables the end-user to freely choose which tasks to work on. However, one can define other ways for managing tasks. A new aspect of the system is that tasks have become reactive: a task does not deliver one value when the task is done, but, while the work takes place, it constantly produces updated versions of the task value reflecting the progress of the work taken place. This current task value can be observed by others and may influence the things others can see or do.
~
ACHTEN, Peter, KOOPMAN, Pieter and PLASMEIJER, Rinus, 2015. An Introduction to Task Oriented Programming. In: ZSÓK, Viktória, HORVÁTH, Zoltán and CSATÓ, Lehel (eds.), Central European Functional Programming School. Online. Cham: Springer International Publishing. p. 187–245. Lecture Notes in Computer Science. ISBN 978-3-319-15939-3. [Accessed 9 August 2024].