Pub Date : 1996-12-01DOI: 10.1016/S0096-0551(96)00014-8
Steven J. Drew
Fail-safety is a system attribute which ensures that a program either completes its execution satisfying its post-conditions in the normal manner or signals its failure to do so to its operating environment. Such an attribute is desirable of any system as it ensures the correctness of results which are produced. A very few modern sequential programming languages offer program fail-safety through the judicious use of a well designed exception handling mechanism. In this paper the exception handling techniques used in those sequential systems are developed to provide the guidelines for fail-safe concurrent system design.
{"title":"Fail-safety techniques and their extensions to concurrent systems","authors":"Steven J. Drew","doi":"10.1016/S0096-0551(96)00014-8","DOIUrl":"10.1016/S0096-0551(96)00014-8","url":null,"abstract":"<div><p>Fail-safety is a system attribute which ensures that a program either completes its execution satisfying its post-conditions in the normal manner or signals its failure to do so to its operating environment. Such an attribute is desirable of any system as it ensures the correctness of results which are produced. A very few modern sequential programming languages offer program fail-safety through the judicious use of a well designed exception handling mechanism. In this paper the exception handling techniques used in those sequential systems are developed to provide the guidelines for fail-safe concurrent system design.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 4","pages":"Pages 193-203"},"PeriodicalIF":0.0,"publicationDate":"1996-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00014-8","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"79308941","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-12-01DOI: 10.1016/S0096-0551(97)00003-9
Carole M. McNamee, William A. Crow
Inter-process communication is achieved in many concurrent programming languages through message entries. Many of these languages contain inter-entry selection constructs allowing a process to selectively choose one of a group of message entries to service. Generally, this selection process is handled non-deterministically. To enable a degree of control over this selection, limited inter-entry selection control mechanisms are available in several of these languages. This paper reviews the need for more expressive inter-entry selection control mechanisms and details the design and implementation of two such control mechanisms—static and dynamic preferences. These implementations of static and dynamic preferences, SRps and SRpd respectively, are extensions of the SR concurrent programming language. In both implementations, the use of preferences is optional, and thus, the overhead associated with their use is incurred only when their use is necessary. Finally, this paper describes the performance of these implementations on several classical synchronization problems. For tests run in a shared memory environment the results show that there is substantial cost associated with the preference implementations. However, the results of the distributed environment tests illustrate that the incremental cost of adding preferences is small and often not discernable when the overhead costs associated with communications across a network are considered.
{"title":"Inter-entry selection control mechanisms: Implementation and evaluation","authors":"Carole M. McNamee, William A. Crow","doi":"10.1016/S0096-0551(97)00003-9","DOIUrl":"10.1016/S0096-0551(97)00003-9","url":null,"abstract":"<div><p>Inter-process communication is achieved in many concurrent programming languages through message entries. Many of these languages contain inter-entry selection constructs allowing a process to selectively choose one of a group of message entries to service. Generally, this selection process is handled non-deterministically. To enable a degree of control over this selection, limited inter-entry selection control mechanisms are available in several of these languages. This paper reviews the need for more expressive inter-entry selection control mechanisms and details the design and implementation of two such control mechanisms—static and dynamic preferences. These implementations of static and dynamic preferences, SRps and SRpd respectively, are extensions of the SR concurrent programming language. In both implementations, the use of preferences is optional, and thus, the overhead associated with their use is incurred only when their use is necessary. Finally, this paper describes the performance of these implementations on several classical synchronization problems. For tests run in a shared memory environment the results show that there is substantial cost associated with the preference implementations. However, the results of the distributed environment tests illustrate that the incremental cost of adding preferences is small and often not discernable when the overhead costs associated with communications across a network are considered.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 4","pages":"Pages 259-278"},"PeriodicalIF":0.0,"publicationDate":"1996-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(97)00003-9","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"78911446","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-12-01DOI: 10.1016/S0096-0551(96)00015-X
Warren X. Li
Incremental parsing is widely used in language-based editors and incremental compiling and interpreting environments. Re-parsing of modified input strings is the most frequently performed operation in these environments. Its efficiency can greatly affect the success of these environments. This paper describes the introduction of a threaded link in parse trees and an additional distance entry in LL parse tables to support minimal LL(1) re-parsing. These enhancements are then used to produce an efficient incremental LL parser.
{"title":"Building efficient incremental LL parsers by augmenting LL tables and threading parse trees","authors":"Warren X. Li","doi":"10.1016/S0096-0551(96)00015-X","DOIUrl":"10.1016/S0096-0551(96)00015-X","url":null,"abstract":"<div><p>Incremental parsing is widely used in language-based editors and incremental compiling and interpreting environments. Re-parsing of modified input strings is the most frequently performed operation in these environments. Its efficiency can greatly affect the success of these environments. This paper describes the introduction of a threaded link in parse trees and an additional <em>distance</em> entry in LL parse tables to support minimal LL(1) re-parsing. These enhancements are then used to produce an efficient incremental LL parser.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 4","pages":"Pages 225-235"},"PeriodicalIF":0.0,"publicationDate":"1996-12-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00015-X","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84055193","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-07-01DOI: 10.1016/S0096-0551(96)00013-6
Hamish Taylor
An effective resolution multiprocessor can be built from distributed processing, logic programming, and interface elements. Widely used, portable, components can be modularly composed into a portable parallel system that displays good resistance to premature obsolescence by software evolution. A virtual multiprocessor offering common message passing and configuration services integrates a distributed mesh of sequential resolution engines. Users configure and control the resolution engines and virtual multiprocessor through a GUI using an embedded command language to drive its facilities. Prolog programs either explicitly control parallel execution through message passing or would have to rely on program transformation techniques to extract parallelism implicitly.
{"title":"Assembling a resolution multiprocessor from interface, programming and distributed processing components","authors":"Hamish Taylor","doi":"10.1016/S0096-0551(96)00013-6","DOIUrl":"10.1016/S0096-0551(96)00013-6","url":null,"abstract":"<div><p>An effective resolution multiprocessor can be built from distributed processing, logic programming, and interface elements. Widely used, portable, components can be modularly composed into a portable parallel system that displays good resistance to premature obsolescence by software evolution. A virtual multiprocessor offering common message passing and configuration services integrates a distributed mesh of sequential resolution engines. Users configure and control the resolution engines and virtual multiprocessor through a GUI using an embedded command language to drive its facilities. Prolog programs either explicitly control parallel execution through message passing or would have to rely on program transformation techniques to extract parallelism implicitly.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 2","pages":"Pages 181-192"},"PeriodicalIF":0.0,"publicationDate":"1996-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00013-6","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"81251585","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-07-01DOI: 10.1016/S0096-0551(96)00007-0
Jean-Marie Jacquet , Luís Monteiro
The PPL framework is proposed as a simple extension to logic programming aiming at handling resources. It is argued that the separation between logical treatments and resource handling is desirable and, to that end, resources are proposed to be manipulated by means of pre- and post-conditions associated with usual Horn clauses. The expressiveness of the resulting framework is evidenced through the coding of several applications. Operational and declarative semantics are also presented as extensions of the classical ones accounting for the evaluation of pre- and post-conditions, in particular the non-monotonic behavior of the world of resources they induce in general.
{"title":"Towards resource handling in logic programming: The PPL framework and fits semantics","authors":"Jean-Marie Jacquet , Luís Monteiro","doi":"10.1016/S0096-0551(96)00007-0","DOIUrl":"10.1016/S0096-0551(96)00007-0","url":null,"abstract":"<div><p>The PPL framework is proposed as a simple extension to logic programming aiming at handling resources. It is argued that the separation between logical treatments and resource handling is desirable and, to that end, resources are proposed to be manipulated by means of pre- and post-conditions associated with usual Horn clauses. The expressiveness of the resulting framework is evidenced through the coding of several applications. Operational and declarative semantics are also presented as extensions of the classical ones accounting for the evaluation of pre- and post-conditions, in particular the non-monotonic behavior of the world of resources they induce in general.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 2","pages":"Pages 51-77"},"PeriodicalIF":0.0,"publicationDate":"1996-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00007-0","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"74968612","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-07-01DOI: 10.1016/S0096-0551(96)00010-0
Enrico Pontelli , Gopal Gupta , Dongxing Tang , Manuel Carro , Manuel V. Hermenegildo
We present the design and implementation of the and-parallel component of ACE. ACE is a computational model for the full Prolog language that simultaneously exploits both or-parallelism and independent and-parallelism. A high-performance implementation of the ACE model has been realized and its performance reported in this paper. We discuss how some of the standard problems which appear when implementing and-parallel systems are solved in ACE. We then propose a number of optimizations aimed at reducing the overheads and the increased memory consumption which occur in such systems when using previously proposed solutions. Finally, we present results from an implementation of ACE which includes the optimizations proposed. The results show that ACE exploits and-parallelism with high efficiency and high speedups. Furthermore, they also show that the proposed optimizations, which are applicable to many other and-parallel systems, significantly decrease memory consumption and increase speedups and absolute performance both in forward execution and during backtracking.
{"title":"Improving the efficiency of nondeterministic independent and-parallel systems","authors":"Enrico Pontelli , Gopal Gupta , Dongxing Tang , Manuel Carro , Manuel V. Hermenegildo","doi":"10.1016/S0096-0551(96)00010-0","DOIUrl":"10.1016/S0096-0551(96)00010-0","url":null,"abstract":"<div><p>We present the design and implementation of the and-parallel component of ACE. ACE is a computational model for the full Prolog language that simultaneously exploits both <em>or-parallelism</em> and <em>independent and-parallelism</em>. A high-performance implementation of the ACE model has been realized and its performance reported in this paper. We discuss how some of the standard problems which appear when implementing and-parallel systems are solved in ACE. We then propose a number of optimizations aimed at reducing the overheads and the increased memory consumption which occur in such systems when using previously proposed solutions. Finally, we present results from an implementation of ACE which includes the optimizations proposed. The results show that ACE exploits and-parallelism with high efficiency and high speedups. Furthermore, they also show that the proposed optimizations, which are applicable to many other and-parallel systems, significantly decrease memory consumption and increase speedups and absolute performance both in forward execution and during backtracking.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 2","pages":"Pages 115-142"},"PeriodicalIF":0.0,"publicationDate":"1996-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00010-0","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73875885","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-07-01DOI: 10.1016/S0096-0551(96)00008-2
Vincenzo Ambriola, Giovanni A. Cignoni, Laura Semini
We define a new language that naturally satisfies the requirements of concurrency support, modularity, and declarativity. Although some classes of existing languages already cover a subset of these requirements, there is no example of a programming language entirely fulfilling them. We propose to merge three programming paradigms, Multiple Tuple Spaces, Object Orientation, and Logic Programming, as a solution to our requirement list. Each paradigm is well characterized and satisfies one of the given requirements. Moreover, we claim that the merging will reveal new directions in the inception and development of future programming languages.
{"title":"A proposal to merge Multiple Tuple Spaces, Object Orientation, and Logic Programming","authors":"Vincenzo Ambriola, Giovanni A. Cignoni, Laura Semini","doi":"10.1016/S0096-0551(96)00008-2","DOIUrl":"10.1016/S0096-0551(96)00008-2","url":null,"abstract":"<div><p>We define a new language that naturally satisfies the requirements of concurrency support, modularity, and declarativity. Although some classes of existing languages already cover a subset of these requirements, there is no example of a programming language entirely fulfilling them. We propose to merge three programming paradigms, Multiple Tuple Spaces, Object Orientation, and Logic Programming, as a solution to our requirement list. Each paradigm is well characterized and satisfies one of the given requirements. Moreover, we claim that the merging will reveal new directions in the inception and development of future programming languages.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 2","pages":"Pages 79-93"},"PeriodicalIF":0.0,"publicationDate":"1996-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00008-2","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"82748743","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-07-01DOI: 10.1016/S0096-0551(96)00009-4
Paolo Ciancarini, Mauro Gaspari
Shared Prolog (SP) is a parallel symbolic language in which coordination issues are clearly separated from computation issues. SP combines concurrency and communication based on a shared dataspace coordination model with sequential symbolic computation based on logic programming. We demonstrate how a rule-based coordination language can be used for expressing a number of different parallel computing schemata, reusing and reorganizing existing sequential programs.
{"title":"Rule-based coordination of logic programs","authors":"Paolo Ciancarini, Mauro Gaspari","doi":"10.1016/S0096-0551(96)00009-4","DOIUrl":"10.1016/S0096-0551(96)00009-4","url":null,"abstract":"<div><p>Shared Prolog (SP) is a parallel symbolic language in which coordination issues are clearly separated from computation issues. SP combines concurrency and communication based on a shared dataspace coordination model with sequential symbolic computation based on logic programming. We demonstrate how a rule-based coordination language can be used for expressing a number of different parallel computing schemata, reusing and reorganizing existing sequential programs.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 2","pages":"Pages 95-113"},"PeriodicalIF":0.0,"publicationDate":"1996-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00009-4","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"89359500","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-07-01DOI: 10.1016/S0096-0551(96)00012-4
Olivier Michel
In this article we advocate a declarative approach to data-parallelism to provide both parallelism expressiveness and efficient execution of data intensive applications. 8, an experimental language combining features of collection and stream oriented languages in a declarative framework, is presented. A new structure, the web, allows the programmer to write programmes as mathematical expressions and to implicitly express data and control parallelism. The first part of this paper proposes a classification of the various expressions of parallelism in programming languages. We show that hybrid execution models combining both data and control parallelism are possible and necessary to get an effective speedup. We sketch the advantage of the declarative style with respect to parallelism expression (application side) and exploitation (compiler side). In the second part we describe the 8 language and the concepts of collection, stream and web. A web is a multi-dimensional object that represents the successive values of a structured set of variables. Some 8 programmes are given to show the relevance of the web data structure for simulation applications (a resolution of O.D.P.E. and a simulation in artificial life). Examples of 8 programmes, involving the dynamic creation and destruction of webs, are also given. Such programmes are necessary for simulations of growing systems. In the third part, the implementation of a compiler restricted to the static part of the language is described. We focus on the process of web equations compilation towards a virtual SIMD machine. We also present the clock calculus, the scheduling inference and the distribution of the computations among the processing elements of a parallel computer.
{"title":"Design and implementation of 812: A declarative data-parallel language","authors":"Olivier Michel","doi":"10.1016/S0096-0551(96)00012-4","DOIUrl":"10.1016/S0096-0551(96)00012-4","url":null,"abstract":"<div><p>In this article we advocate a declarative approach to data-parallelism to provide both parallelism expressiveness and efficient execution of data intensive applications. 8<sub><span><math><mtext>1</mtext><mtext>2</mtext></math></span></sub>, an experimental language combining features of collection and stream oriented languages in a declarative framework, is presented. A new structure, the web, allows the programmer to write programmes as mathematical expressions and to implicitly express data and control parallelism. The first part of this paper proposes a classification of the various expressions of parallelism in programming languages. We show that hybrid execution models combining both data and control parallelism are possible and necessary to get an effective speedup. We sketch the advantage of the declarative style with respect to parallelism expression (application side) and exploitation (compiler side). In the second part we describe the 8<sub><span><math><mtext>1</mtext><mtext>2</mtext></math></span></sub> language and the concepts of collection, stream and web. A web is a multi-dimensional object that represents the successive values of a structured set of variables. Some 8<sub><span><math><mtext>1</mtext><mtext>2</mtext></math></span></sub> programmes are given to show the relevance of the web data structure for simulation applications (a resolution of O.D.P.E. and a simulation in artificial life). Examples of 8<sub><span><math><mtext>1</mtext><mtext>2</mtext></math></span></sub> programmes, involving the dynamic creation and destruction of webs, are also given. Such programmes are necessary for simulations of growing systems. In the third part, the implementation of a compiler restricted to the static part of the language is described. We focus on the process of web equations compilation towards a virtual SIMD machine. We also present the clock calculus, the scheduling inference and the distribution of the computations among the processing elements of a parallel computer.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 2","pages":"Pages 165-179"},"PeriodicalIF":0.0,"publicationDate":"1996-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00012-4","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"73280511","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Pub Date : 1996-07-01DOI: 10.1016/S0096-0551(96)00011-2
Manuel V. Hermenegildo, Manuel Carro
Much work has been done in the areas of and-parallelism and data-parallelism in Logic Programs. Such work has proceeded to a certain extent in an independent fashion. Both types of parallelism offer advantages and disadvantages. Traditional (and-) parallel models offer generality, being able to exploit parallelism in a large class of programs (including that exploited by data-parallelism techniques). Data-parallelism techniques on the other hand offer increased performance for a restricted class of programs. The thesis of this paper is that these two forms of parallelism are not fundamentally different and that relating them opens the possibility of obtaining the advantages of both within the same system. Some relevant issues are discussed and solutions proposed. The discussion is illustrated through visualizations of actual parallel executions implementing the ideas proposed.
{"title":"Relating data-parallelism and (and-) parallelism in logic programs","authors":"Manuel V. Hermenegildo, Manuel Carro","doi":"10.1016/S0096-0551(96)00011-2","DOIUrl":"10.1016/S0096-0551(96)00011-2","url":null,"abstract":"<div><p>Much work has been done in the areas of and-parallelism and data-parallelism in Logic Programs. Such work has proceeded to a certain extent in an independent fashion. Both types of parallelism offer advantages and disadvantages. Traditional (and-) parallel models offer generality, being able to exploit parallelism in a large class of programs (including that exploited by data-parallelism techniques). Data-parallelism techniques on the other hand offer increased performance for a restricted class of programs. The thesis of this paper is that these two forms of parallelism are not fundamentally different and that relating them opens the possibility of obtaining the advantages of both within the same system. Some relevant issues are discussed and solutions proposed. The discussion is illustrated through visualizations of actual parallel executions implementing the ideas proposed.</p></div>","PeriodicalId":100315,"journal":{"name":"Computer Languages","volume":"22 2","pages":"Pages 143-163"},"PeriodicalIF":0.0,"publicationDate":"1996-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://sci-hub-pdf.com/10.1016/S0096-0551(96)00011-2","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"84487158","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}