Programming decentralised computers
Programming, for the past thirty years, has been based on the sequential von Neumann computer model. However, there is a growing need to program decentralised computer systems ranging from mainframe comput- ers that are geographically distributed, to miniature microcomputers on a single VLS I chip. Various pairings of programming languages and decentralised computers are being investigated: procedural languages with control flow, single-assignment languages with data flow, applica- tive languages with reduction, object-oriented languages with actor, and finally predicate logic languages with logic architectures. This thesis investigates the programming of decentralised computers and consists of five major parts. Part 1 looks at four images of "future" computer systems: Fifth Generation Computers, Supercomputers, VLSI Processor Architectures and Integrated Communications & Computers. The former two images are "parallel machines", supporting logic and data flow programming, respectively. The latter two images are "decentral- ised computers" supporting control flow programming. Part 1 concludes that a "decentralised computer" image is most appropriate for future computers. Part 2 classifies and analyses the major categories of pro- gramming styles (i.e. procedural, object-oriented, functional, and logic). The analysis uses a Quicksort algorithm to contrast representa- tive languages (i.e. PASCAL, MODULA-2, OCCAM, SMALLTALK, ID, FP, SASL, PROLOG and VISICALC) and relate their strength and weaknesses to their underlying computational mechanisms. It concludes that control flow (and procedural programming) is the most primitive and fundamental pro- gramming model. Part 3 proposes the decentralised control flow programming model for future decentralised computers, which embodies the concepts underly- ing modern operating systems such as UNIX, and is a generalisation of the traditional sequential von Neumann control flow model. Part 4 presen ts two programming languages based on this model, called BAS IX_l and BASIX 2, which have been designed and implemented. The language BASIX 2 is-analysed and assessed using two example applications, namely a banking system and an expert system. Part 5 presents the BASAL pro- gramming language, supporting a primitive form of decentralised control flow. For the assessment of the BASAL language two parallel sorts were chosen, using shared memory and message passing respectively. BASIX and BASAL are vehicles for exploring the decentralised control flow program- ming style, rather than new languages being proposed.