The on-going multicore revolution in computer architecture incurs a similar paradigm shift in programming technology. Parallel computing is moving from the niche of supercomputing applications into the mainstream of software engineering. This paradigm shift requires new programming concepts that allow non-expert programmers to express concurrent activities and their orderly interaction in a natural way, free of low-level concerns such as message passing, locking, etc.
S-Net is a novel declarative coordination language that combines the concept of asynchronous interacting components with that of stream processing. A total of four network combinators and a small number of additional concepts allow non-experts in parallelization to turn functions implemented in legacy sequential programming languages into asynchronous components that communicate over a streaming network. These components are automatically mapped to multiple cores of a single machine and to semi-automatically to large networked systems of them.
This approach naturally leads to a two-level software engineering process where application engineers continue to implement components in legacy languages with minimal exposure to concurrency-related problems while specialized concurrency engineers orchestrate these components into a parallel application, but require only limited insight into the algorithmic details of components.
We show the essential language design of S-Net and demonstrate its use through a number of program examples that showcase different aspects of the language.
Clemens Grelck received his PhD in Informatics (Dr. rer. nat.) from the University of Kiel (Germany) in 2001. Following academic positions at the Universities of Kiel, Lubeck (Germany) and Hertfordshire (United Kingdom) he is now a tenured University Lecturer at the University of Amsterdam (Netherlands). He works on the design and implementation of high-level programming languages for parallel systems. Among others he is a key contributor to the functional array language SAC and the coordination language S-Net.