Abstract

A problem which confronts the developers of concurrent logic programming (CLP) systems concerns the design of the programming environment, particularly the provision of debugging tools. Debugging tools are useful for many activities besides identifying bugs: they can help in program testing and demonstration, in software experiments, and in teaching the language semantics. For CLP languages the questions of what debugging tools should be provided, and of how they should be used, are still open. Although the languages are closely related to other logic programming and concurrent programming languages, they are sufficiently different that new debugging techniques are required. This paper describes a primarily channel-oriented debugging methodology and a set of debugging tools that we have developed in the light of our experience in using and teaching the CLP language Parlog. With these tools a programmer can test a program by observing communication on channels, opening up a process to examine the activity on internal channels and, if necessary, to check in detail the execution steps of a process. Almost all of the ideas, which are equally applicable to other CLP languages, have been implemented in two commercial Parlog systems. As well as fulfilling the needs of existing users of CLP languages, we believe that the tools emphasise the attractions of CLP as a concurrent programming paradigm, since they are made possible by the unique attributes of CLP. Concurrent programming and logic programming have both been the focus of considerable research during the past decade. The reasons are clear: concurrent programming is necessary to support a growing number of advanced applications and to exploit the emerging multiprocessor hardware architectures; logic programming attempts to root the activity of software development in formal logic, and hence to make software development more reliable, productive, and better matched to the increasing number of artificial intelligence-oriented projects. Particularly interesting and, we think, fruitful has been research into the intersection between these subjects. From this research has emerged a new family of languages: the concurrent logic programming (CLP) languages, exemplified by Parlog, Concurrent Prolog, GHC, and Strand. The CLP languages attempt to combine the benefits of both parent disciplines into a coherent whole. Some of them are now available commercially and it seems likely that they will become more widely used in the near future. One of the problems which confronts the developers of CLP systems concerns the design of the programming environment, including (the subject of this paper) the provision of debugging tools. Although debugging tools represent only a part of the programming environment, there are several reasons why they are of special interest: 1. Existing CLP systems have poor debugging tools. Yet experience of other programming systems suggests that programmers are more likely to be receptive to, and productive in, a new system if

Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call