A unified system of parameterization for programming languages

J. Lamping
{"title":"A unified system of parameterization for programming languages","authors":"J. Lamping","doi":"10.1145/62678.62724","DOIUrl":null,"url":null,"abstract":"Current programming languages tend to have several different mechanisms that provide parameterization. For example, most languages have both variables, which communicate parameter values primarily within routines, and procedure invocations, which communicate parameter values primarily between routines. Depending on the situation, one mechanism or the other must be used. The mechanisms also tend to involve more than just parameterization; a procedure call, for example, also implies a transfer of control. \nThe principle of orthogonal design for programming languages suggests that it would be desirable to have a single parameterization mechanism that can be used in all situations and that doesn't affect anything but parameterization. \nWe consider what properties such a mechanism would have to have, concluding, for example, that parameters must be nameable, and, more importantly, that all the parameterization facilities that are available in language expressions must also be available in data objects. These properties, in turn, put requirements on the underlying semantic structure of a programming language. \nWe develop a formal system of parameterization with those properties. The system has theoretical power equivalent to the lambda calculus, and is about the same size. It can serve as the basis of all parameterization in a functional programming language, being able to express constructions like procedure call, variable binding, mutual recursion, and module linkage. In addition to being able to express the common parameterization constructions, the uniformity and universality of the system offer improved modularity, extensibility, and simplicity. It is especially useful for applications that need to create new code at runtime.","PeriodicalId":119710,"journal":{"name":"Proceedings of the 1988 ACM conference on LISP and functional programming","volume":"194 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1988-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"29","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 1988 ACM conference on LISP and functional programming","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/62678.62724","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 29

Abstract

Current programming languages tend to have several different mechanisms that provide parameterization. For example, most languages have both variables, which communicate parameter values primarily within routines, and procedure invocations, which communicate parameter values primarily between routines. Depending on the situation, one mechanism or the other must be used. The mechanisms also tend to involve more than just parameterization; a procedure call, for example, also implies a transfer of control. The principle of orthogonal design for programming languages suggests that it would be desirable to have a single parameterization mechanism that can be used in all situations and that doesn't affect anything but parameterization. We consider what properties such a mechanism would have to have, concluding, for example, that parameters must be nameable, and, more importantly, that all the parameterization facilities that are available in language expressions must also be available in data objects. These properties, in turn, put requirements on the underlying semantic structure of a programming language. We develop a formal system of parameterization with those properties. The system has theoretical power equivalent to the lambda calculus, and is about the same size. It can serve as the basis of all parameterization in a functional programming language, being able to express constructions like procedure call, variable binding, mutual recursion, and module linkage. In addition to being able to express the common parameterization constructions, the uniformity and universality of the system offer improved modularity, extensibility, and simplicity. It is especially useful for applications that need to create new code at runtime.
程序设计语言参数化的统一系统
当前的编程语言往往有几种不同的机制来提供参数化。例如,大多数语言都有变量(主要在例程内传递参数值)和过程调用(主要在例程之间传递参数值)。根据具体情况,必须使用其中一种机制。这些机制也往往不仅仅涉及参数化;例如,过程调用也意味着控制权的转移。编程语言的正交设计原则表明,最好有一种单一的参数化机制,它可以在所有情况下使用,而且除了参数化之外不会影响任何东西。我们考虑这种机制必须具有哪些属性,并得出结论,例如,参数必须是可命名的,更重要的是,语言表达式中可用的所有参数化工具也必须在数据对象中可用。这些属性反过来又对编程语言的底层语义结构提出了要求。我们开发了一个具有这些性质的形式化参数化系统。该系统的理论功率相当于λ演算,并且大小大致相同。它可以作为函数式编程语言中所有参数化的基础,能够表达过程调用、变量绑定、相互递归和模块链接等结构。除了能够表达通用的参数化结构之外,系统的一致性和通用性还提供了改进的模块化、可扩展性和简单性。它对于需要在运行时创建新代码的应用程序特别有用。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 求助全文
来源期刊
自引率
0.00%
发文量
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
copy
已复制链接
快去分享给好友吧!
我知道了
右上角分享
点击右上角分享
0
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信