首页 > 最新文献

SIGPLAN Conferences and Workshops最新文献

英文 中文
CCAL: an interpreted language for experimentation in concurrent control 一种用于并发控制实验的解释语言
Pub Date : 1987-07-01 DOI: 10.1145/29650.29680
P. Kearns, C. Cipriani, Mitzi Freeman
Concurrent Control Abstraction Language, CCAL, is an interpreted language which provides no particular control regime to the user. CCAL instead supports five primitive operations which manipulate an abstract model of inter-procedural control. This model is intrinsically concurrent, and the user is allowed to construct high-level concurrent control operations from the primitives (hence, control abstraction). The primary use of CCAL is as a vehicle by which rapid prototyping of application specific control forms may be done and as a tool for the construction and evaluation of novel control forms, especially control forms for highly concurrent and distributed systems. The CCAL interpreter is implemented as a distributed program on a network of Vaxen and Sun-3 workstations under 4.2bsd and 4.3bsd Unix1. CCAL programs appear as multi-process programs in a shared memory system. Both true and apparent concurrency are possible. This paper describes the control abstraction facilities offered by the CCAL interpreter, its use, and implementation strategies in the distributed environment.
并发控制抽象语言(CCAL)是一种解释语言,它不向用户提供特定的控制机制。相反,CCAL支持五种基本操作,这些操作操作过程间控制的抽象模型。该模型本质上是并发的,并且允许用户从原语构建高级并发控制操作(因此称为控制抽象)。CCAL的主要用途是作为一种工具,通过它可以完成特定于应用程序的控制表单的快速原型设计,并作为构建和评估新控制表单的工具,特别是用于高度并发和分布式系统的控制表单。CCAL解释器在4.2bsd和4.3bsd unix下作为分布式程序在Vaxen和Sun-3工作站网络上实现。CCAL程序在共享内存系统中表现为多进程程序。真实并发和表面并发都是可能的。本文介绍了CCAL解释器提供的控制抽象功能、在分布式环境中的使用和实现策略。
{"title":"CCAL: an interpreted language for experimentation in concurrent control","authors":"P. Kearns, C. Cipriani, Mitzi Freeman","doi":"10.1145/29650.29680","DOIUrl":"https://doi.org/10.1145/29650.29680","url":null,"abstract":"Concurrent Control Abstraction Language, CCAL, is an interpreted language which provides no particular control regime to the user. CCAL instead supports five primitive operations which manipulate an abstract model of inter-procedural control. This model is intrinsically concurrent, and the user is allowed to construct high-level concurrent control operations from the primitives (hence, control abstraction). The primary use of CCAL is as a vehicle by which rapid prototyping of application specific control forms may be done and as a tool for the construction and evaluation of novel control forms, especially control forms for highly concurrent and distributed systems. The CCAL interpreter is implemented as a distributed program on a network of Vaxen and Sun-3 workstations under 4.2bsd and 4.3bsd Unix1. CCAL programs appear as multi-process programs in a shared memory system. Both true and apparent concurrency are possible. This paper describes the control abstraction facilities offered by the CCAL interpreter, its use, and implementation strategies in the distributed environment.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"25 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123319318","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}
引用次数: 4
Enhancement through extension: the extension interpreter 通过扩展增强:扩展解释器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29655
D. Notkin, W. Griswold
The ability to extend programs dynamically has clear advantages. However, providing efficient yet sufficiently flexible support for such capabilities system-wide presents significant challenges. We describe a design and implementation of an extension mechanism that depends heavily on interpretive techniques, including call arbitration, dynamic linking, and multilanguage extensions. We discuss these mechanisms in the context of our Extension Interpreter, which embodies our ideas and provides a framework for discussing the efficiency and generality of the implementation. Our current implementation runs under BSD UNIX 4.2 and 4.3 on VAXes and SUN workstations. Extensions can be written in both C and in Icon, demonstrating our ability to address problems both of compiled and interpreted languages.
动态扩展程序的能力具有明显的优势。然而,在系统范围内为这样的能力提供有效而又足够灵活的支持提出了重大的挑战。我们描述了一种扩展机制的设计和实现,它在很大程度上依赖于解释技术,包括调用仲裁、动态链接和多语言扩展。我们在扩展解释器的上下文中讨论这些机制,扩展解释器体现了我们的思想,并为讨论实现的效率和通用性提供了一个框架。我们当前的实现在VAXes和SUN工作站上运行在BSD UNIX 4.2和4.3下。扩展既可以用C语言编写,也可以用Icon语言编写,这表明我们有能力解决编译和解释语言的问题。
{"title":"Enhancement through extension: the extension interpreter","authors":"D. Notkin, W. Griswold","doi":"10.1145/29650.29655","DOIUrl":"https://doi.org/10.1145/29650.29655","url":null,"abstract":"The ability to extend programs dynamically has clear advantages. However, providing efficient yet sufficiently flexible support for such capabilities system-wide presents significant challenges. We describe a design and implementation of an extension mechanism that depends heavily on interpretive techniques, including call arbitration, dynamic linking, and multilanguage extensions. We discuss these mechanisms in the context of our Extension Interpreter, which embodies our ideas and provides a framework for discussing the efficiency and generality of the implementation. Our current implementation runs under BSD UNIX 4.2 and 4.3 on VAXes and SUN workstations. Extensions can be written in both C and in Icon, demonstrating our ability to address problems both of compiled and interpreted languages.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"33 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134456250","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}
引用次数: 13
Distributed garbage collection 分布式垃圾收集
Pub Date : 1987-07-01 DOI: 10.1145/29650.29678
J. D. Eckart, R. LeBlanc
There are two basic approachs to the problem of storage reclamation, process- and processor-based, named for the view point used to recognize when a particular piece of storage can be reclaimed. Examples of the processor approach include mark/sweep and copying algorithms and their variants, while reference counting schemes use a process view of the collection. It is argued that the process approach is better suited for distributed computation where links between dynamically allocated objects may cross processor boundaries. In addition, the process approach allows the heap to be more conveniently shared with other processes in those cases when different processes might not have their own virtual address spaces. A new algorithm using the process approach is given. Its space requirement per object is better than that for reference counting. In addition, a restricted form of pointer replacement is supported which allows circular structures so constructed to be properly collected.
对于存储回收问题,有两种基本方法:基于进程和基于处理器的方法,其名称来源于用于识别何时可以回收特定存储块的视图。处理器方法的示例包括标记/清除和复制算法及其变体,而引用计数方案使用集合的进程视图。有人认为,进程方法更适合分布式计算,其中动态分配对象之间的链接可能跨越处理器边界。此外,在不同进程可能没有自己的虚拟地址空间的情况下,进程方法允许更方便地与其他进程共享堆。提出了一种基于过程方法的新算法。它对每个对象的空间需求优于引用计数。此外,还支持一种受限的指针替换形式,允许正确收集这样构造的圆形结构。
{"title":"Distributed garbage collection","authors":"J. D. Eckart, R. LeBlanc","doi":"10.1145/29650.29678","DOIUrl":"https://doi.org/10.1145/29650.29678","url":null,"abstract":"There are two basic approachs to the problem of storage reclamation, process- and processor-based, named for the view point used to recognize when a particular piece of storage can be reclaimed. Examples of the processor approach include mark/sweep and copying algorithms and their variants, while reference counting schemes use a process view of the collection. It is argued that the process approach is better suited for distributed computation where links between dynamically allocated objects may cross processor boundaries. In addition, the process approach allows the heap to be more conveniently shared with other processes in those cases when different processes might not have their own virtual address spaces. A new algorithm using the process approach is given. Its space requirement per object is better than that for reference counting. In addition, a restricted form of pointer replacement is supported which allows circular structures so constructed to be properly collected.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133381039","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}
引用次数: 20
Two-level hybrid interpreter/native code execution for combined space-time program efficiency 两级混合解释器/本机代码执行,用于组合时空程序效率
Pub Date : 1987-07-01 DOI: 10.1145/29650.29666
T. Pittman
A two-level programming model permits the applications programmer to write programs that benefit both from the code density of interpreted virtual machines and from the speed of native code execution. A well-defined boundary between the native code and the virtual machine facilitates the development of translators to be used at both levels.
两级编程模型允许应用程序程序员编写既受益于解释型虚拟机的代码密度又受益于本机代码执行速度的程序。本机代码和虚拟机之间定义良好的边界有助于在这两个级别上使用翻译器的开发。
{"title":"Two-level hybrid interpreter/native code execution for combined space-time program efficiency","authors":"T. Pittman","doi":"10.1145/29650.29666","DOIUrl":"https://doi.org/10.1145/29650.29666","url":null,"abstract":"A two-level programming model permits the applications programmer to write programs that benefit both from the code density of interpreted virtual machines and from the speed of native code execution. A well-defined boundary between the native code and the virtual machine facilitates the development of translators to be used at both levels.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"309 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124287427","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}
引用次数: 18
The Illinois functional programming interpreter 伊利诺伊函数式编程解释器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29657
A. Robison
The Illinois Functional Programming (IFP) language is a modified version of Backus' FP(1). IFP has the same side-effect free combinator style of Backus FP, while introducing an ALGOL-like syntax and structure. While IFP superficially appears to be an inefficient language to execute, its simplicity makes it quick to interpret. Functions are always monadic and there are no variable or parameter names. Furthermore, combinator-style languages allow common housekeeping operations to be condensed into efficient machine-language primitives.By reference-counting, the interpreter can often convert call-by-value to destructive call-by-reference while preserving referential transparency. The interpreter has an expression cache which can improve the asymptotic time of some combinatorial functions. IFP function definitions are stored as UNIX files, so much of UNIX's functionality is immediately borrowed into the IFP environment, e.g. ls, more, and grep.Benchmarks indicate that IFP is an order of magnitude faster than Berkeley FP[2], and is competitive with interpreted von-Neumann languages such as BASIC. The interpreter can parallel process on shared-memory multiprocessors, e.g. the Encore Multimax. IFP currently runs on machines as varied as the IBM PC, VAX, and CRAY-XMP.
伊利诺伊函数式编程(IFP)语言是Backus的FP(1)的修改版本。IFP具有与Backus FP相同的无副作用的组合子风格,同时引入了类似algol的语法和结构。虽然IFP表面上看起来是一种执行效率低下的语言,但它的简单性使其易于解释。函数总是一元的,没有变量名或参数名。此外,组合器风格的语言允许将常见的内务管理操作压缩成高效的机器语言原语。通过引用计数,解释器通常可以将按值调用转换为破坏性的按引用调用,同时保持引用透明性。解释器有一个表达式缓存,可以提高一些组合函数的渐近时间。IFP函数定义以UNIX文件的形式存储,因此UNIX的许多功能立即被借用到IFP环境中,例如ls、more和grep。基准测试表明,IFP比Berkeley FP快一个数量级[2],并且与解释型冯-诺伊曼语言(如BASIC)竞争。解释器可以在共享内存多处理器上并行处理,例如Encore Multimax。IFP目前在各种机器上运行,如IBM PC、VAX和CRAY-XMP。
{"title":"The Illinois functional programming interpreter","authors":"A. Robison","doi":"10.1145/29650.29657","DOIUrl":"https://doi.org/10.1145/29650.29657","url":null,"abstract":"The Illinois Functional Programming (IFP) language is a modified version of Backus' FP(1). IFP has the same side-effect free combinator style of Backus FP, while introducing an ALGOL-like syntax and structure. While IFP superficially appears to be an inefficient language to execute, its simplicity makes it quick to interpret. Functions are always monadic and there are no variable or parameter names. Furthermore, combinator-style languages allow common housekeeping operations to be condensed into efficient machine-language primitives.By reference-counting, the interpreter can often convert call-by-value to destructive call-by-reference while preserving referential transparency. The interpreter has an expression cache which can improve the asymptotic time of some combinatorial functions. IFP function definitions are stored as UNIX files, so much of UNIX's functionality is immediately borrowed into the IFP environment, e.g. ls, more, and grep.Benchmarks indicate that IFP is an order of magnitude faster than Berkeley FP[2], and is competitive with interpreted von-Neumann languages such as BASIC. The interpreter can parallel process on shared-memory multiprocessors, e.g. the Encore Multimax. IFP currently runs on machines as varied as the IBM PC, VAX, and CRAY-XMP.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"109 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116107248","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}
引用次数: 9
Mimic: a fast system/370 simulator Mimic:一个快速系统/370模拟器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29651
C. May
Software simulation of one computer on another tends to be slow. Traditional simulators typically execute about 100 instructions on the host machine per instruction simulated. Newer simulators reduce the expansion factor to about 10, by saving and reusing translations of individual instructions. This paper describes an experimental simulator which takes the progression one step further, translating groups of instructions as a unit. This approach, combined with flow analysis, reduces the expansion factor to about 4. The new simulator simulates System/370 on a RISC, namely the IBM RT PC.
一台计算机在另一台计算机上的软件模拟往往很慢。传统的模拟器通常在主机上执行每条模拟的指令约100条。较新的模拟器通过保存和重用单个指令的翻译,将扩展因子降低到10左右。本文介绍了一个实验模拟器,它将这一进程进一步推进,将一组指令作为一个单元进行翻译。这种方法与流动分析相结合,将膨胀系数降低到4左右。新的模拟器在RISC上模拟System/370,即IBM RT PC。
{"title":"Mimic: a fast system/370 simulator","authors":"C. May","doi":"10.1145/29650.29651","DOIUrl":"https://doi.org/10.1145/29650.29651","url":null,"abstract":"Software simulation of one computer on another tends to be slow. Traditional simulators typically execute about 100 instructions on the host machine per instruction simulated. Newer simulators reduce the expansion factor to about 10, by saving and reusing translations of individual instructions. This paper describes an experimental simulator which takes the progression one step further, translating groups of instructions as a unit. This approach, combined with flow analysis, reduces the expansion factor to about 4. The new simulator simulates System/370 on a RISC, namely the IBM RT PC.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122285250","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}
引用次数: 83
A generator for language-specific debugging systems 用于特定于语言的调试系统的生成器
Pub Date : 1987-07-01 DOI: 10.1145/29650.29660
Rolf Bahlke, B. Moritz, G. Snelting
We present a system which generates interactive high-level debugging systems from formal language definitions. The language definer has to specify a denotational semantics augmented with a formal description of the language specific debugging facilities. The generated debugger offers the traditional features such as tracing programs, setting breakpoints, displaying variables etc; interaction with the user is always on language level rather than on machine level. The concept has been implemented as part of the PSG-Programming System Generator, and has successfully been used to generate debuggers for Pascal and Modula-2. The core of the implementation consists of an interpreter for a functional language, which has been extended with the language-independent mechanisms needed in order to allow interaction with the user during program execution.
提出了一种基于形式语言定义生成交互式高级调试系统的系统。语言定义器必须指定带有特定于语言的调试工具的正式描述的指称语义。生成的调试器提供了传统的功能,如跟踪程序,设置断点,显示变量等;与用户的交互总是在语言层面,而不是在机器层面。该概念已作为psg编程系统生成器的一部分实现,并已成功用于生成Pascal和Modula-2的调试器。该实现的核心包括一个函数式语言的解释器,该解释器已经扩展为与语言无关的机制,以便在程序执行期间允许与用户交互。
{"title":"A generator for language-specific debugging systems","authors":"Rolf Bahlke, B. Moritz, G. Snelting","doi":"10.1145/29650.29660","DOIUrl":"https://doi.org/10.1145/29650.29660","url":null,"abstract":"We present a system which generates interactive high-level debugging systems from formal language definitions. The language definer has to specify a denotational semantics augmented with a formal description of the language specific debugging facilities. The generated debugger offers the traditional features such as tracing programs, setting breakpoints, displaying variables etc; interaction with the user is always on language level rather than on machine level. The concept has been implemented as part of the PSG-Programming System Generator, and has successfully been used to generate debuggers for Pascal and Modula-2. The core of the implementation consists of an interpreter for a functional language, which has been extended with the language-independent mechanisms needed in order to allow interaction with the user during program execution.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134278215","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}
引用次数: 9
Memory allocation and higher-order functions 内存分配和高阶函数
Pub Date : 1987-07-01 DOI: 10.1145/29650.29676
O. Danvy
This paper presents a constant-time marking-collecting algorithm to efficiently implement recursion with a general heap memory rather than with a vectorial stack, in a context of frequent captures of continuations. It has been seen to reduce the 80% garbage collection overhead to less than 5% on average.The algorithm has been built into a virtual machine to efficiently implement at the assembly level the Actor language PLASMA, an Actor-oriented version of PROLOG and a variant of SCHEME, currently in use on 8086, 68000 and Vax.The rationale to use the heap memory is that continuations are available via a single pointer in a unified memory and can be shared optimally when recurrently captured, which is simply impossible using a strategy based on stack recopy. Further, non-captured continuations can be incrementally garbage collected on the fly.Part I describes the elementary recursive instructions of the virtual machine. Part II presents and proves the marking-collecting strategy. Part III safely generalizes the transformation "call + return = branch" in a way compatible with the possible capture of the current continuation. An appendix relates its integration in the Virtual Scheme Machine supporting Scheme 84.
本文提出了一种恒时标记收集算法,在连续序列频繁捕获的情况下,利用一般堆内存而不是向量堆栈有效地实现递归。它可以将80%的垃圾收集开销平均减少到5%以下。该算法已被构建到一个虚拟机中,以便在汇编级有效地实现Actor语言PLASMA,一个面向Actor的PROLOG版本和SCHEME的变体,目前在8086、68000和Vax上使用。使用堆内存的基本原理是,可以通过统一内存中的单个指针获得延续,并且可以在反复捕获时以最佳方式共享,而使用基于堆栈重新复制的策略根本不可能实现这一点。此外,可以动态地对未捕获的延续进行增量垃圾收集。第一部分描述了虚拟机的基本递归指令。第二部分提出并论证了营销收集策略。第三部分以一种与当前延续的可能捕获兼容的方式安全地概括了“调用+返回=分支”转换。附录介绍了它在支持方案84的虚拟方案机中的集成。
{"title":"Memory allocation and higher-order functions","authors":"O. Danvy","doi":"10.1145/29650.29676","DOIUrl":"https://doi.org/10.1145/29650.29676","url":null,"abstract":"This paper presents a constant-time marking-collecting algorithm to efficiently implement recursion with a general heap memory rather than with a vectorial stack, in a context of frequent captures of continuations. It has been seen to reduce the 80% garbage collection overhead to less than 5% on average.The algorithm has been built into a virtual machine to efficiently implement at the assembly level the Actor language PLASMA, an Actor-oriented version of PROLOG and a variant of SCHEME, currently in use on 8086, 68000 and Vax.The rationale to use the heap memory is that continuations are available via a single pointer in a unified memory and can be shared optimally when recurrently captured, which is simply impossible using a strategy based on stack recopy. Further, non-captured continuations can be incrementally garbage collected on the fly.Part I describes the elementary recursive instructions of the virtual machine. Part II presents and proves the marking-collecting strategy. Part III safely generalizes the transformation \"call + return = branch\" in a way compatible with the possible capture of the current continuation. An appendix relates its integration in the Virtual Scheme Machine supporting Scheme 84.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"212 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122658758","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}
引用次数: 20
Implementation of a high-speed Prolog interpreter 一个高速Prolog解释器的实现
Pub Date : 1987-07-01 DOI: 10.1145/29650.29663
A. Krall
This paper describes the implementation of a high speed Prolog interpreter on a standard microprocessor (50 KLIPS on a 16 MHz MC68020). The interpreter is based on direct threaded code. By this method an interpreted program achieves the same speed as a compiled program, but uses only a tenth of memory. The first part of this paper describes the implementation of the interpreter. The second part compares the implementation, the runtime and the storage requirements with that of a compiler.
本文描述了在标准微处理器(16mhz MC68020上的50klips)上实现高速Prolog解释器。解释器基于直接线程代码。通过这种方法,解释程序可以获得与编译程序相同的速度,但只使用十分之一的内存。本文的第一部分介绍了解释器的实现。第二部分比较了编译器的实现、运行时和存储需求。
{"title":"Implementation of a high-speed Prolog interpreter","authors":"A. Krall","doi":"10.1145/29650.29663","DOIUrl":"https://doi.org/10.1145/29650.29663","url":null,"abstract":"This paper describes the implementation of a high speed Prolog interpreter on a standard microprocessor (50 KLIPS on a 16 MHz MC68020). The interpreter is based on direct threaded code. By this method an interpreted program achieves the same speed as a compiled program, but uses only a tenth of memory. The first part of this paper describes the implementation of the interpreter. The second part compares the implementation, the runtime and the storage requirements with that of a compiler.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"25 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125355388","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}
引用次数: 14
Efficient interpretation of synchronizable series expressions 对可同步序列表达式的有效解释
Pub Date : 1987-07-01 DOI: 10.1145/29650.29658
R. Waters
The benefits of programming in a functional style are well known. For example, algorithms which are expressed as compositions of functions operating on series/vectors/streams of data elements are much easier to understand and modify than equivalent algorithms expressed as loops. Unfortunately, many programmers hesitate to use series expressions because they are typically implemented very inefficiently-the prime source of inefficiency being the creation of intermediate series objects.A restricted class of series expressions, obviously synchronizable series expressions, is defined which can be evaluated very efficiently because they do not require the creation of any intermediate series objects. A Common Lisp macro package has been implemented which supports obviously synchronizable series expressions. Using this macro package, programmers can obtain the advantages of expressing computations as series expressions without incurring any runtime overhead. Obviously synchronizable series expressions could be straightforwardly supported in any programming language.
以函数式风格编程的好处是众所周知的。例如,表示为操作序列/向量/数据元素流的函数组合的算法比表示为循环的等效算法更容易理解和修改。不幸的是,许多程序员对使用序列表达式犹豫不决,因为它们的实现通常非常低效——低效的主要原因是中间序列对象的创建。定义了一类受限的序列表达式,显然是可同步的序列表达式,它可以非常有效地求值,因为它们不需要创建任何中间序列对象。一个Common Lisp宏包已经实现,它支持明显可同步的序列表达式。使用这个宏包,程序员可以获得将计算表示为序列表达式的优势,而不会产生任何运行时开销。显然,任何编程语言都可以直接支持可同步的序列表达式。
{"title":"Efficient interpretation of synchronizable series expressions","authors":"R. Waters","doi":"10.1145/29650.29658","DOIUrl":"https://doi.org/10.1145/29650.29658","url":null,"abstract":"The benefits of programming in a functional style are well known. For example, algorithms which are expressed as compositions of functions operating on series/vectors/streams of data elements are much easier to understand and modify than equivalent algorithms expressed as loops. Unfortunately, many programmers hesitate to use series expressions because they are typically implemented very inefficiently-the prime source of inefficiency being the creation of intermediate series objects.A restricted class of series expressions, obviously synchronizable series expressions, is defined which can be evaluated very efficiently because they do not require the creation of any intermediate series objects. A Common Lisp macro package has been implemented which supports obviously synchronizable series expressions. Using this macro package, programmers can obtain the advantages of expressing computations as series expressions without incurring any runtime overhead. Obviously synchronizable series expressions could be straightforwardly supported in any programming language.","PeriodicalId":414056,"journal":{"name":"SIGPLAN Conferences and Workshops","volume":"46 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1987-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116883388","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}
引用次数: 9
期刊
SIGPLAN Conferences and Workshops
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1