Academia.edu no longer supports Internet Explorer.
To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to upgrade your browser.
2012, Proceedings of the 14th symposium on Principles and practice of declarative programming - PPDP '12
Task-Oriented Programming (TOP) is a novel programming paradigm for the construction of distributed systems where users work together on the internet. When multiple users collaborate, they need to interact with each other frequently. TOP supports the definition of tasks that react to the progress made by others. With TOP, complex multiuser interactions can be programmed in a declarative style just by defining the tasks that have to be accomplished, thus eliminating the need to worry about the implementation detail that commonly frustrates the development of applications for this domain. TOP builds on four core concepts: tasks that represent computations or work to do which have an observable value that may change over time, data sharing enabling tasks to observe each other while the work is in progress, generic type driven generation of user interaction, and special combinators for sequential and parallel task composition. The semantics of these core concepts is defined in this paper. As an example we present the iTask3 framework, which embeds TOP in the functional programming language Clean.
Proceedings of the 29th Symposium on the Implementation and Application of Functional Programming Languages
Task Oriented Programming (TOP) is a special flavor of functional programming for real-world application domains in which people and automated systems collaborate to achieve a common goal. The original iTasks framework, which implements TOP, uses a single server multi-client architecture. This is not suited for truly distributed application domains, such as deployed by the Dutch coast guard. In this paper we show how to turn this architecture into a distributed, dynamic, architecture. This is done in an elegant way, by building on the core concepts of TOP and iTasks. CCS CONCEPTS • Software and its engineering → Functional languages; • Computer systems organization → Distributed architectures; • Human-centered computing → Computer supported cooperative work;
In this paper we compare the expressiveness of the Task Oriented Programming iTask approach of specifying interactive GUI applications with ObjectIO and Racket big-bang. ObjectIO is representative for the large class of traditional desktop widget based toolkits aiming to provide the programmer with full access the underlying GUI toolkit in a functional style. In contrast, the Racket big-bang approach offers the much more restricted setting of a single window and canvas to which the programmer adds callback and image rendering functions in a pure functional style. We demonstrate that both the Racket big-bang and iTask approaches result in significantly smaller GUI specifications by means of a small case study of the game of tic-tac-toe.
In this paper we present an operational semantics for concurrent interactive process es in the purely functional programming language Clean. An interactive process is in essence a state transition system which apart from its logical state can also access the state of the file system, do highlevel Graphical User I/O, and do inter-process communication via synchronous and asynchronous message passing and data sharing. Inter-process communication is type-safe and polymorphic. The semantics of the system is based on earlier work on the Interleaved Event I/O system. In this paper we identify limitations of the interleaved model in the context of concurrent processes and propose a new process semantics that does allow a concurrent implementation. The method basically intro duces a Remote Procedure Call communication scheme and demonstrates how to apply this scheme to obtain a concurrent process semantics. The resulting system is the Concur rent Event I/O system . The operational semantics is given in Clean itself. As a result the concurrency system is completely func tional because the construction is done within the pure functional framework.
Proceedings of the 26nd 2014 International Symposium on Implementation and Application of Functional Languages, 2014
Task Oriented Programming [24, 29] (TOP) is a paradigm that is designed to construct multiuser , distributed, web-applications. The iTask system [28] (iTasks) is a TOP framework that offers three core concepts for software developers. • Tasks which are abstractions of the work that needs to be performed by (teams of) human(s) and software components. A task is a value of parameterized type (Task a). The type parameter a models the task value the task is currently processing. This value can be inspected by other tasks. • Shared data sources (SDS) which are abstractions of information that is shared between tasks. A SDS is a value of parameterized type (ReadWriteShared r w). The type parameters r and w model the read and write values. • Combinator functions that compose tasks and SDSs into more complex tasks and SDSs and combinations of them.
2003
ABSTRACT: In the context of Internet-based applications where heterogeneous, legacy entities should integrate and cooperate, the efficiency of the software production process is a key problem: yet, the classical development cycle and methodologies fall short, calling for ad hoc abstractions, methodologies and tools. In this work, we claim that a task-oriented approach can effectively support the design of highly-interactive applications, enabling even small development teams to afford complex software projects.
Lecture Notes in Computer Science, 1996
Lecture Notes in Computer Science, 2008
In these lecture notes we present the iTask system: a set of combinators to specify work flows in a pure functional language at a very high level of abstraction. Work flow systems are automated systems in which tasks are coordinated that have to be executed by either humans or computers. The combinators that we propose support work flow patterns commonly found in commercial work flow systems. In addition, we introduce novel work flow patterns that capture real world requirements, but that can not be dealt with by current systems. Compared with most of these commercial systems, the iTask system offers several further advantages: tasks are statically typed, tasks can be higher order, the combinators are fully compositional, dynamic and recursive work flows can be specified, and last but not least, the specification is used to generate an executable web-based multi-user work flow application. With the iTask system, useful work flows can be defined which cannot be expressed in other systems: a work can be interrupted and subsequently directed to other workers for further processing. The iTask system has been constructed in the programming language Clean, making use of its generic programming facilities, and its iData toolkit with which interactive, thin-client, form-based web applications can be created. In all, iTasks are an excellent case of the expressive power of functional and generic programming.
2018
Article 25fa End User Agreement This publication is distributed under the terms of Article 25fa of the Dutch Copyright Act. This article entitles the maker of a short scientific work funded either wholly or partially by Dutch public funds to make that work publicly available for no consideration following a reasonable period of time after the work was first published, provided that clear reference is made to the source of the first publication of the work. Research outputs of researchers employed by Dutch Universities that comply with the legal requirements of Article 25fa of the Dutch Copyright Act, are distributed online and free of cost or other barriers in institutional repositories. Research outputs are distributed six months after their first online publication in the original published version and with proper attribution to the source of the original publication.
Proceedings of IEEE International Symposium on Parallel Algorithms Architecture Synthesis, 1997
Programming massively-parallel machine is a daunting task for any human programmer and parallelization may even be impossible for any compiler. Instead, the functional programming paradigm may prove to be an ideal solution by providing an implicitly parallel interface to the programmer. We describe here the Sisal project (Stream and Iteration in a Single Assignment Language) and its goal to provide a general-purpose user interface for a wide range of parallel processing platforms.
Lecture Notes in Computer Science, 1989
FACILE is a language which symmetrically integrates concurrent and functional programming. It is a typed and statically scoped language. The language supports both function and process abstractions.
2011
Workflow languages are a form of high-level programming language designed for coordinating tasks implemented by different pieces of software, often executed across multiple computers using technologies such as web services. Advantages of workflow languages include automatic parallelisation, built-in support for accessing services, and simple programming models that abstract away many of the complexities associated with distributed and parallel programming. In this thesis, we focus on data-oriented workflow languages, in which all computation is free of side effects. Despite their advantages, existing workflow languages sacrifice support for internal computation and data manipulation, in an attempt to provide programming models that are simple to understand and contain implicit parallelism. These limitations inconvenience users, who are forced to define additional components in separate scripting languages whenever they need to implement programming logic that cannot be expressed in the workflow language itself. In this thesis, we propose the use of functional programming as a model for data-oriented workflow languages. Functional programming languages are both highly expressive and amenable to automatic parallelisation. Our approach combines the coordination facilities of workflow languages with the computation facilities of functional programming languages, allowing both aspects of a workflow to be expressed in the one language. We have designed and implemented a small functional language called ELC, which extends lambda calculus with a minimal set of features necessary for practical implementation of workflows. ELC can either be used directly, or as a compilation target for other workflow languages. Using this approach, we developed a compiler for XQuery, extended with support for web services. XQuery's native support for XML processing makes it well-suited for manipulating the XML data produced and consumed by web services. Both languages make it easy to develop complex workflows involving arbitrary computation and data manipulation. Our workflow engine, NReduce, uses parallel graph reduction to execute workflows. It supports both orchestration, where a central node coordinates all service invocation, and choreography, where coordination, scheduling, and data transfer are carried out in a decentralised manner across multiple nodes. The details of orchestration and choreography are abstracted away from the programmer by the workflow engine. In both cases, parallel invocation of services is managed in a completely automatic manner, without any explicit direction from the programmer. Our study includes an in-depth analysis of performance issues of relevance to our approach. This includes a discussion of performance problems encountered during our implementation work, and an explanation of the solutions we have devised to these. Such issues are likely to be of relevance to others developing workflow engines based on a similar model. We also benchmark our system using a range of workflows, demonstrating high levels of performance and scalability.
arXiv (Cornell University), 2022
The Internet of Things (IoT) is growing fast. In 2018, there was approximately one connected device per person on earth and the number has been growing ever since. The devices interact with the environment via different modalities at the same time using sensors and actuators making the programs parallel. Yet, writing this type of programs is difficult because the devices have little computation power and memory, the platforms are heterogeneous and the languages are low level. Task Oriented Programming (TOP) is a declarative programming language paradigm that is used to express coordination of work, collaboration of users and systems, the distribution of shared data and the human-computer interaction. The mTask language is a specialized, yet full-fledged, multi-backend TOP language for IoT devices. With the bytecode interpretation backend and the integration with iTask, tasks can be executed on the device dynamically. This means that-according to the current state of affairs-tasks can be tailor-made at run time, compiled to device-agnostic bytecode and shipped to the device for interpretation. Tasks sent to the device are fully integrated in iTask to allow every form of interaction with the tasks such as observation of the task value and interaction with Shared Data Sources (SDSs). The entire IoT application-both server and devices-are programmed in a single language, albeit using two embedded Domain Specific Languages (EDSLs).
1996
Introduction This PhD Thesis is the result of a four-year research project conducted at the Department of Functional Programming, the Faculty of Mathematics and Informatics, at the University of Nijmegen as 'Assistent-in-Opleiding' under supervision of Professor M.J. Plasmeijer. In this chapter we give a survey of the research project and its theses. 1.1 Functional programming and the Clean project 3 we will encounter some of these cases which show up because of the complexity of the I/O system. The functional programming language we consider in this PhD.Thesis is pure and lazy. Due to strong normalisation lazy functional languages are preferable over their eager relatives. However, lazyness complicates their implementation. In general lazy languages are less time and space efficient than eager languages, or imperative languages. A lot of research has been conducted in this area in the last decades, and is still continuing. One specific approach to investigate and provide solutions to the problems of efficient implementations of functional languages is the (Concurrent) Clean project. Clean is a sequential lazy, purely functional programming language (
In these lecture notes we present the iTask system: a set of combinators to specify workflows in a pure functional language at a very high level of abstraction. Workflow systems are automated systems in which tasks are coordinated that have to be executed by either humans or computers. The combinators that we propose support workflow patterns commonly found in commercial workflow systems. In addition, we introduce novel workflow patterns that capture real world requirements, but that can not be dealt with by current systems. Compared with most of these commercial systems, the iTask system offers several further advantages: tasks are statically typed, tasks can be higher order, the combinators are fully compositional, dynamic and recursive workflows can be specified, and last but not least, the specification is used to generate an executable web-based multi-user workflow application. With the iTask system, useful workflows can be defined which cannot be expressed in other systems: a work can be interrupted and subsequently directed to other workers for further processing. The iTask system has been constructed in the programming language Clean, making use of its generic programming facilities, and its iData toolkit with which interactive, thin-client, form-based web applications can be created. In all, iTasks are an excellent case of the expressive power of functional and generic programming.
This paper gives an overview of the concurrent functional programming language and its development, dissemination, and use. Erlang was developed at Ericsson and is used for several large and important telecom systems. It is also available externally, both supported and through open source. Erlang provides a highly relevant case-study of technology diffusion since its development touches upon many relevant topics such as applied research in the industrial environment and spread of technology through open source.
2003
Abstract: We describe a programming language for distributed computations that supports mobile resources and is based on a process calculus. The syntax, semantics and implementation of the language are presented with a focus on the novel model of computation. Key Words: Process-Calculus, Distributed Computing, Mobile Resources Category: D. 1.3, D. 3.2
Nederlands Tijdschrift Voor Geneeskunde, 2007
In this paper we introduce the iTask system: a set of combinators to specify work flows in a pure functional language at a very high level of abstraction. Work flow systems are automated systems in which tasks are coordinated that have to be executed by humans and computers. The combinators that we propose support work flow patterns commonly found in commercial work flow systems. Compared with most of these commercial systems, the iTask system offers several advantages: tasks are statically typed, tasks can be higher order, the combinators are fully compositional, dynamic and recursive work flows can be specified, and last but not least, the specification is used to generate an executable web-based multi-user work flow application. With the iTask system, useful work flows can be defined which cannot be expressed in other systems: work can be interrupted and subsequently directed to other workers for further processing.
2007
Our aim is to define the kernel of a simple and uniform programming model—the reactor model—suitable for building and evolving internet-scale programs. A reactor consists of two principal components: mutable state, in the form of a fixed collection of relations, and code, in the form of a fixed collection of rules in the style of datalog. A reactor’s code is executed in response to an external stimulus, which takes the form of an attempted update to the reactor’s state. As in classical process calculi, the reactor model accommodates collections of distributed, concurrently executing processes. However, unlike classical process calculi, our observable behaviors are sequences of states, rather than sequences of messages. Similarly, the interface to a reactor is simply its state, rather than a collection of message channels, ports, or methods. One novel feature of our model is the ability to compose behaviors both synchronously and asynchronously. Also, our use of datalog-style rules allows aspect-like composition of separately-specified functional concerns in a natural way
Proceedings of the Tenth Workshop on Language Descriptions, Tools and Applications - LDTA '10, 2010
Workflow management systems guide and monitor tasks performed by humans and computers. The workflow specifications are usually expressed in special purpose (graphical) formalisms. These formalisms impose severe restrictions on what can be expressed. Modern workflow management systems should handle intricate data dependencies, offer a web-based interface, and should adapt to dynamically changing situations, all based on a sound formalism. To address these challenges, we have developed the iTask system, which is a novel workflow management system. We entirely embed the iTask specification language in a modern general purpose functional language, and generate a complete workflow application. In this paper we report our experiences in developing the iTask system. It not only inherits state-of-the-art programming language concepts such as generic programming and a hybrid static/dynamic type system from the host language Clean, but also offers a number of novel concepts to generate complex, real-world, multi-user, web based workflow applications.
Proceedings of the 31st Symposium on Implementation and Application of Functional Languages
Small Microcontroller Units (MCUs) drive the omnipresent Internet of Things (IoT). These devices are small, cheap, and energy efficient. However, they are not very powerful and lack an Operating System. Hence it is difficult to apply high level abstractions and write software that stays close to the design. Task Oriented Programming (TOP) is a paradigm for creating multiuser collaborative systems. A program consists of tasksdescriptions of what needs to be done. The tasks represent the actual work and a task value is observable during execution. Furthermore, tasks can be combined and transformed using combinators. mTask is an embedded Domain Specific Language (eDSL) to program MCUs following the TOP paradigm. Previous work has described the mTask language, a static C code generator, and how to integrate mTask with TOP servers. This paper shows that for dynamic IOT applications, tasks must be sent at runtime to the devices for interpretation. It describes in detail how to compile specialized IOT TOP tasks to bytecode and how to interpret them on devices with very little memory. These additions allow the creation of complete, dynamic IOT applications arising from a single source using a mix of iTasks and mTask tasks. Details such as serialization and communication are captured in simple abstractions. CCS CONCEPTS • Computer systems organization → Distributed architectures; • Software and its engineering → Client-server architectures; Functional languages; Domain specific languages.
Loading Preview
Sorry, preview is currently unavailable. You can download the paper by clicking the button above.