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.
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
程序设计语言参数化的统一系统
当前的编程语言往往有几种不同的机制来提供参数化。例如,大多数语言都有变量(主要在例程内传递参数值)和过程调用(主要在例程之间传递参数值)。根据具体情况,必须使用其中一种机制。这些机制也往往不仅仅涉及参数化;例如,过程调用也意味着控制权的转移。编程语言的正交设计原则表明,最好有一种单一的参数化机制,它可以在所有情况下使用,而且除了参数化之外不会影响任何东西。我们考虑这种机制必须具有哪些属性,并得出结论,例如,参数必须是可命名的,更重要的是,语言表达式中可用的所有参数化工具也必须在数据对象中可用。这些属性反过来又对编程语言的底层语义结构提出了要求。我们开发了一个具有这些性质的形式化参数化系统。该系统的理论功率相当于λ演算,并且大小大致相同。它可以作为函数式编程语言中所有参数化的基础,能够表达过程调用、变量绑定、相互递归和模块链接等结构。除了能够表达通用的参数化结构之外,系统的一致性和通用性还提供了改进的模块化、可扩展性和简单性。它对于需要在运行时创建新代码的应用程序特别有用。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
Objects as closures: abstract semantics of object-oriented languages Continuations may be unreasonable Exact real computer arithmetic with continued fractions A unified system of parameterization for programming languages Syntactic closures
×
引用
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