首页 > 最新文献

Dynamic Languages Symposium最新文献

英文 中文
Report on the probabilistic language scheme 关于概率语言方案的报告
Pub Date : 2007-10-22 DOI: 10.1145/1297081.1297085
Alexey Radul
Reasoning with probabilistic models is a widespread and successful technique in areas ranging from computer vision, to natural language processing, to bioinformatics. Currently, these reasoning systems are either coded from scratch in general-purpose languages or use formalisms such as Bayesian networks that have limited expressive power. In both cases, the resulting systems are difficult to modify, maintain, compose, and interoperate with. This work presents Probabilistic Scheme, an embedding of probabilistic computation into Scheme. This gives programmers an expressive language for implementing modular probabilistic models that integrate naturally with the rest of Scheme.
概率模型推理是一种广泛而成功的技术,在计算机视觉、自然语言处理和生物信息学等领域都有应用。目前,这些推理系统要么用通用语言从零开始编码,要么使用表达能力有限的贝叶斯网络等形式。在这两种情况下,生成的系统都难以修改、维护、组合和互操作。这项工作提出了概率方案,一个嵌入概率计算到方案。这为程序员提供了一种表达性语言,用于实现与Scheme其余部分自然集成的模块化概率模型。
{"title":"Report on the probabilistic language scheme","authors":"Alexey Radul","doi":"10.1145/1297081.1297085","DOIUrl":"https://doi.org/10.1145/1297081.1297085","url":null,"abstract":"Reasoning with probabilistic models is a widespread and successful technique in areas ranging from computer vision, to natural language processing, to bioinformatics. Currently, these reasoning systems are either coded from scratch in general-purpose languages or use formalisms such as Bayesian networks that have limited expressive power. In both cases, the resulting systems are difficult to modify, maintain, compose, and interoperate with. This work presents Probabilistic Scheme, an embedding of probabilistic computation into Scheme. This gives programmers an expressive language for implementing modular probabilistic models that integrate naturally with the rest of Scheme.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"48 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130537110","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
Dynamic ownership in a dynamic language 动态语言中的动态所有权
Pub Date : 2007-10-22 DOI: 10.1145/1297081.1297090
Donald Gordon, J. Noble
Object aliasing causes as many problems in dynamic languages as it does in static languages. Most existing work on aliasing, such as ownership types, relies on static checking based on annotations and type declarations. We introduce ConstraintedJava, a scripting language based on BeanShell that provides dynamic ownership checking. Dynamic ownership provides the encapsulation benefits of static ownership types but preserves the flexibility of dynamic languages.
对象混叠在动态语言中引起的问题和在静态语言中一样多。大多数现有的混叠工作,比如所有权类型,都依赖于基于注释和类型声明的静态检查。我们介绍ConstraintedJava,这是一种基于BeanShell的脚本语言,提供动态所有权检查。动态所有权提供了静态所有权类型的封装优势,但保留了动态语言的灵活性。
{"title":"Dynamic ownership in a dynamic language","authors":"Donald Gordon, J. Noble","doi":"10.1145/1297081.1297090","DOIUrl":"https://doi.org/10.1145/1297081.1297090","url":null,"abstract":"Object aliasing causes as many problems in dynamic languages as it does in static languages. Most existing work on aliasing, such as ownership types, relies on static checking based on annotations and type declarations. We introduce ConstraintedJava, a scripting language based on BeanShell that provides dynamic ownership checking. Dynamic ownership provides the encapsulation benefits of static ownership types but preserves the flexibility of dynamic languages.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"37 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127569962","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}
引用次数: 30
Arrays of objects 对象数组
Pub Date : 2007-10-22 DOI: 10.1145/1297081.1297087
Morten Kromberg
This paper discusses key design decisions faced by a language design team while adding Object Oriented language features to Dyalog, a modern dialect of APL. Although classes and interfaces are first-class language elements in the new language, and arrays can both contain and be contained by objects, arrays are not objects. The use of object oriented features is optional, and users can elect to remain entirely in the functional and array paradigms of traditional APL. The choice of arrays as a "higher" level of organization allows APL's elegant notation for array manipulation to extend smoothly to arrays of objects.
本文讨论了语言设计团队在向Dyalog(一种现代APL方言)添加面向对象语言特性时所面临的关键设计决策。尽管在新语言中,类和接口是一等语言元素,数组既可以包含对象,也可以被对象所包含,但数组不是对象。面向对象特性的使用是可选的,用户可以选择完全保留传统APL的函数和数组范例。选择数组作为“更高”层次的组织,允许APL用于数组操作的优雅表示法平滑地扩展到对象数组。
{"title":"Arrays of objects","authors":"Morten Kromberg","doi":"10.1145/1297081.1297087","DOIUrl":"https://doi.org/10.1145/1297081.1297087","url":null,"abstract":"This paper discusses key design decisions faced by a language design team while adding Object Oriented language features to Dyalog, a modern dialect of APL. Although classes and interfaces are first-class language elements in the new language, and arrays can both contain and be contained by objects, arrays are not objects. The use of object oriented features is optional, and users can elect to remain entirely in the functional and array paradigms of traditional APL. The choice of arrays as a \"higher\" level of organization allows APL's elegant notation for array manipulation to extend smoothly to arrays of objects.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"38 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117226725","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}
引用次数: 2
Bringing dynamic languages to .NET with the DLR 通过DLR将动态语言引入。net
Pub Date : 2007-10-22 DOI: 10.1145/1297081.1297083
Jim Hugunin
From the beginning, Microsoft's .NET framework was designed to support a broad range of different programming languages on a Common Language Runtime (CLR). The CLR provides shared services to these languages ranging from a world-class GC and JIT to a sandboxed security model to tools integration for debugging and profiling. Sharing these features has two huge benefits for languages on the CLR. First, it's easier to implement a language because lots of difficult engineering work is already done for you. Second, and more importantly, these languages can seamlessly work together and share libraries and frameworks so that each language can build on the work of the others. The CLR has good support for dynamic languages today. IronPython-1.0 demonstrates this. The new Dynamic Language Runtime (DLR) adds a small set of key features to the CLR to make it dramatically better. It adds to the platform a set of services designed explicitly for the needs of dynamic languages. These include a shared dynamic type system, standard hosting model and support to make it easy to generate fast dynamic code. With these additional features it becomes dramatically easier to build high-quality dynamic language implementations on .NET. More importantly, these features enable all of the dynamic languages which use the DLR to freely share code with other dynamic languages as well as with the existing powerful static languages on the platform such as VB.NET and C#.
从一开始,微软的。net框架就被设计成在公共语言运行时(CLR)上支持各种不同的编程语言。CLR为这些语言提供共享服务,从世界级的GC和JIT到沙盒安全模型,再到用于调试和分析的工具集成。共享这些特性对CLR上的语言有两个巨大的好处。首先,实现一门语言更容易,因为许多困难的工程工作已经为您完成了。其次,更重要的是,这些语言可以无缝地协同工作,共享库和框架,这样每种语言都可以建立在其他语言的基础上。目前,CLR对动态语言有很好的支持。IronPython-1.0演示了这一点。新的动态语言运行时(Dynamic Language Runtime, DLR)向CLR添加了一组关键特性,使其性能显著提高。它向平台添加了一组明确设计用于满足动态语言需求的服务。这些特性包括共享的动态类型系统、标准的托管模型以及对生成快速动态代码的支持。有了这些额外的特性,在。net上构建高质量的动态语言实现变得非常容易。更重要的是,这些特性使所有使用DLR的动态语言能够自由地与其他动态语言以及平台上现有的强大静态语言(如VB)共享代码。。NET和c#。
{"title":"Bringing dynamic languages to .NET with the DLR","authors":"Jim Hugunin","doi":"10.1145/1297081.1297083","DOIUrl":"https://doi.org/10.1145/1297081.1297083","url":null,"abstract":"From the beginning, Microsoft's .NET framework was designed to support a broad range of different programming languages on a Common Language Runtime (CLR). The CLR provides shared services to these languages ranging from a world-class GC and JIT to a sandboxed security model to tools integration for debugging and profiling. Sharing these features has two huge benefits for languages on the CLR. First, it's easier to implement a language because lots of difficult engineering work is already done for you. Second, and more importantly, these languages can seamlessly work together and share libraries and frameworks so that each language can build on the work of the others. The CLR has good support for dynamic languages today. IronPython-1.0 demonstrates this. The new Dynamic Language Runtime (DLR) adds a small set of key features to the CLR to make it dramatically better. It adds to the platform a set of services designed explicitly for the needs of dynamic languages. These include a shared dynamic type system, standard hosting model and support to make it easy to generate fast dynamic code. With these additional features it becomes dramatically easier to build high-quality dynamic language implementations on .NET. More importantly, these features enable all of the dynamic languages which use the DLR to freely share code with other dynamic languages as well as with the existing powerful static languages on the platform such as VB.NET and C#.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"13 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115351950","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}
引用次数: 5
RPython: a step towards reconciling dynamically and statically typed OO languages RPython:朝着协调动态和静态类型OO语言迈出的一步
Pub Date : 2007-10-22 DOI: 10.1145/1297081.1297091
D. Ancona, M. Ancona, Antonio Cuni, Nicholas D. Matsakis
Although the C-based interpreter of Python is reasonably fast, implementations on the CLI or the JVM platforms offers some advantages in terms of robustness and interoperability. Unfortunately, because the CLI and JVM are primarily designed to execute statically typed, object-oriented languages, most dynamic language implementations cannot use the native bytecodes for common operations like method calls and exception handling; as a result, they are not able to take full advantage of the power offered by the CLI and JVM. We describe a different approach that attempts to preserve the flexibility of Python, while still allowing for efficient execution. This is achieved by limiting the use of the more dynamic features of Python to an initial, bootstrapping phase. This phase is used to construct a final RPython (Restricted Python) program that is actually executed. RPython is a proper subset of Python, is statically typed, and does not allow dynamic modification of class or method definitions; however, it can still take advantage of Python features such as mixins and first-class methods and classes. This paper presents an overview of RPython, including its design and its translation to both CLI and JVM bytecode. We show how the bootstrapping phase can be used to implement advanced features, like extensible classes and generative programming. We also discuss what work remains before RPython is truly ready for general use, and compare the performance of RPython with that of other approaches.
尽管基于c语言的Python解释器相当快,但CLI或JVM平台上的实现在健壮性和互操作性方面提供了一些优势。不幸的是,由于CLI和JVM主要设计用于执行静态类型的、面向对象的语言,大多数动态语言实现不能使用本地字节码来进行方法调用和异常处理等常见操作;因此,它们不能充分利用CLI和JVM提供的强大功能。我们描述了一种不同的方法,它试图保持Python的灵活性,同时仍然允许有效的执行。这是通过将Python更多动态特性的使用限制在初始的引导阶段来实现的。此阶段用于构造实际执行的最终RPython(受限Python)程序。RPython是Python的一个适当子集,是静态类型的,不允许动态修改类或方法定义;然而,它仍然可以利用Python的特性,如mixins和一等方法和类。本文概述了RPython,包括它的设计和它到CLI和JVM字节码的转换。我们将展示如何使用引导阶段来实现高级功能,如可扩展类和生成式编程。我们还讨论了在RPython真正为一般使用做好准备之前还有哪些工作要做,并将RPython的性能与其他方法进行了比较。
{"title":"RPython: a step towards reconciling dynamically and statically typed OO languages","authors":"D. Ancona, M. Ancona, Antonio Cuni, Nicholas D. Matsakis","doi":"10.1145/1297081.1297091","DOIUrl":"https://doi.org/10.1145/1297081.1297091","url":null,"abstract":"Although the C-based interpreter of Python is reasonably fast, implementations on the CLI or the JVM platforms offers some advantages in terms of robustness and interoperability. Unfortunately, because the CLI and JVM are primarily designed to execute statically typed, object-oriented languages, most dynamic language implementations cannot use the native bytecodes for common operations like method calls and exception handling; as a result, they are not able to take full advantage of the power offered by the CLI and JVM.\u0000 We describe a different approach that attempts to preserve the flexibility of Python, while still allowing for efficient execution. This is achieved by limiting the use of the more dynamic features of Python to an initial, bootstrapping phase. This phase is used to construct a final RPython (Restricted Python) program that is actually executed. RPython is a proper subset of Python, is statically typed, and does not allow dynamic modification of class or method definitions; however, it can still take advantage of Python features such as mixins and first-class methods and classes.\u0000 This paper presents an overview of RPython, including its design and its translation to both CLI and JVM bytecode. We show how the bootstrapping phase can be used to implement advanced features, like extensible classes and generative programming. We also discuss what work remains before RPython is truly ready for general use, and compare the performance of RPython with that of other approaches.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121253821","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}
引用次数: 149
Relationally-parametric polymorphic contracts 关系参数多态契约
Pub Date : 2007-10-22 DOI: 10.1145/1297081.1297089
Arjun Guha, Jacob Matthews, R. Findler, S. Krishnamurthi
The analogy between types and contracts raises the question of how many features of static type systems can be expressed as dynamic contracts. An important feature missing in prior work on contracts is parametricity, as represented by the polymorphic types in languages like Standard ML. We present a contract counterpart to parametricity. We explore multiple designs for such a system and present one that is simple and incurs minimal execution overhead. We show how to extend the notion of contract blame to our definition. We present a form of inference that can often save programmers from having to explicitly instantiate many parametric contracts. Finally, we present several examples that illustrate how this system mimics the feel and properties of parametric polymorphism in typed languages.
类型和契约之间的类比提出了一个问题,即静态类型系统有多少特性可以表示为动态契约。先前关于契约的工作中缺少的一个重要特性是参数性,这是由像标准ML这样的语言中的多态类型所表示的。我们提出了一个与参数性对应的契约。我们探索了这样一个系统的多种设计,并提出了一个简单且执行开销最小的设计。我们展示了如何将契约责任的概念扩展到我们的定义中。我们提出了一种推理形式,通常可以使程序员不必显式地实例化许多参数契约。最后,我们给出了几个例子来说明这个系统如何模仿类型化语言中参数多态性的感觉和特性。
{"title":"Relationally-parametric polymorphic contracts","authors":"Arjun Guha, Jacob Matthews, R. Findler, S. Krishnamurthi","doi":"10.1145/1297081.1297089","DOIUrl":"https://doi.org/10.1145/1297081.1297089","url":null,"abstract":"The analogy between types and contracts raises the question of how many features of static type systems can be expressed as dynamic contracts. An important feature missing in prior work on contracts is parametricity, as represented by the polymorphic types in languages like Standard ML.\u0000 We present a contract counterpart to parametricity. We explore multiple designs for such a system and present one that is simple and incurs minimal execution overhead. We show how to extend the notion of contract blame to our definition. We present a form of inference that can often save programmers from having to explicitly instantiate many parametric contracts. Finally, we present several examples that illustrate how this system mimics the feel and properties of parametric polymorphism in typed languages.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"02 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2007-10-22","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127452919","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}
引用次数: 50
Dynamic data polyvariance using source-tagged classes 使用源标记类的动态数据多方差
Pub Date : 2005-10-18 DOI: 10.1145/1146841.1146845
S. Spoon, O. Shivers
The DDP (Demand-driven/Pruning) analysis algorithm allows us to perform data-flow analyses of programming languages that are dynamically typed and have higher-order control flow, such as Smalltalk or Scheme. Because it is demand-driven and employs search pruning, it scales to large code bases. However, versions of the algorithm previously described [19] do not handle data polymorphism well, conservatively merging separate data flows that go through distinct instantiations of a collection type. In this paper, we describe a new extension to DDP that helps to disentangle these flows, permitting more precise results. The extension is based on source-tagging classes so that each reference to a class in the source code yields a subdivision of the type associated with that class. An initial implementation of this polyvariant analysis has been added to the DDP-based tool Chuck, a part of the integrated Squeak program-development environment; we show examples of the tool in action.
DDP(需求驱动/修剪)分析算法允许我们对具有动态类型和高阶控制流的编程语言(如Smalltalk或Scheme)执行数据流分析。因为它是需求驱动的,并且使用搜索修剪,所以它可以扩展到大型代码库。然而,先前描述的算法版本[19]不能很好地处理数据多态性,保守地合并经过集合类型不同实例化的独立数据流。在本文中,我们描述了DDP的一个新的扩展,它有助于解开这些流,允许更精确的结果。扩展基于源标记类,因此对源代码中类的每次引用都会产生与该类关联的类型的细分。这种多变量分析的初始实现已经添加到基于ddp的工具Chuck中,Chuck是集成Squeak程序开发环境的一部分;我们将展示该工具的实际示例。
{"title":"Dynamic data polyvariance using source-tagged classes","authors":"S. Spoon, O. Shivers","doi":"10.1145/1146841.1146845","DOIUrl":"https://doi.org/10.1145/1146841.1146845","url":null,"abstract":"The DDP (Demand-driven/Pruning) analysis algorithm allows us to perform data-flow analyses of programming languages that are dynamically typed and have higher-order control flow, such as Smalltalk or Scheme. Because it is demand-driven and employs search pruning, it scales to large code bases. However, versions of the algorithm previously described [19] do not handle data polymorphism well, conservatively merging separate data flows that go through distinct instantiations of a collection type. In this paper, we describe a new extension to DDP that helps to disentangle these flows, permitting more precise results. The extension is based on source-tagging classes so that each reference to a class in the source code yields a subdivision of the type associated with that class. An initial implementation of this polyvariant analysis has been added to the DDP-based tool Chuck, a part of the integrated Squeak program-development environment; we show examples of the tool in action.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132366984","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}
引用次数: 10
Flexible object encapsulation for ambient-oriented programming 面向环境编程的灵活对象封装
Pub Date : 2005-10-18 DOI: 10.1145/1146841.1146843
W. Meuter, É. Tanter, S. Mostinckx, T. V. Cutsem, J. Dedecker
In the emerging field of Ambient Intelligence (AmI), software is deployed in wireless open networks of mobile devices. Such open networks require stringent security measures as unknown and untrusted hosts may join the network. In an object-oriented language, where objects are distributed and moved across the network, it thus becomes important to be able to enforce object encapsulation. In contemporary object-oriented programming languages, powerful operations such as object extension (inheritance), cloning and reflection, are typically provided via omnipotent language operators that fail to uphold object encapsulation, because they can be applied without the explicit consent of the concerned object. This paper formulates a language design principle --extreme encapsulation-- that precludes the use of such harmful operators, and proposes a corresponding language feature --method attributes-- that makes it possible to provide the flexibility of object extension, cloning and reflection without compromising on object encapsulation. Although some existing object-based languages can be said to support extreme encapsulation, our contribution is to support it in a delegation-based, prototype-based language named ChitChat.
在新兴的环境智能(AmI)领域,软件被部署在移动设备的无线开放网络中。这种开放网络需要严格的安全措施,因为未知和不受信任的主机可能会加入网络。在面向对象的语言中,对象是分布的并在网络中移动,因此能够强制对象封装就变得非常重要。在当代面向对象的编程语言中,诸如对象扩展(继承)、克隆和反射之类的强大操作通常是通过不能支持对象封装的全能语言操作符提供的,因为它们可以在没有相关对象的显式同意的情况下应用。本文提出了一种语言设计原则——极端封装——以防止使用这种有害的操作符,并提出了一种相应的语言特性——方法属性——使得在不影响对象封装的情况下提供对象扩展、克隆和反射的灵活性成为可能。尽管一些现有的基于对象的语言可以说支持极端封装,但我们的贡献是在一种名为ChitChat的基于委托、基于原型的语言中支持它。
{"title":"Flexible object encapsulation for ambient-oriented programming","authors":"W. Meuter, É. Tanter, S. Mostinckx, T. V. Cutsem, J. Dedecker","doi":"10.1145/1146841.1146843","DOIUrl":"https://doi.org/10.1145/1146841.1146843","url":null,"abstract":"In the emerging field of Ambient Intelligence (AmI), software is deployed in wireless open networks of mobile devices. Such open networks require stringent security measures as unknown and untrusted hosts may join the network. In an object-oriented language, where objects are distributed and moved across the network, it thus becomes important to be able to enforce object encapsulation. In contemporary object-oriented programming languages, powerful operations such as object extension (inheritance), cloning and reflection, are typically provided via omnipotent language operators that fail to uphold object encapsulation, because they can be applied without the explicit consent of the concerned object. This paper formulates a language design principle --extreme encapsulation-- that precludes the use of such harmful operators, and proposes a corresponding language feature --method attributes-- that makes it possible to provide the flexibility of object extension, cloning and reflection without compromising on object encapsulation. Although some existing object-based languages can be said to support extreme encapsulation, our contribution is to support it in a delegation-based, prototype-based language named ChitChat.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125684769","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}
引用次数: 7
Compile-time meta-programming in a dynamically typed OO language 动态类型OO语言中的编译时元编程
Pub Date : 2005-10-18 DOI: 10.1145/1146841.1146846
L. Tratt
Compile-time meta-programming allows programs to be constructed by the user at compile-time. Although LISP derived languages have long had such facilities, few modern languages are capable of compile-time meta-programming, and of those that do many of the most powerful are statically typed functional languages. In this paper I present the dynamically typed object orientated language Converge which allows compile-time meta-programming in the spirit of Template Haskell. Converge demonstrates that integrating powerful, safe compile-time meta-programming features into a dynamic language requires few restrictions to the flexible development style facilitated by the paradigm. In this paper I detail Converge's compile-time meta-programming facilities, much of which is adapted from Template Haskell, contain several features new to the paradigm. Finally I explain how such a facility might be integrated into similar languages.
编译时元编程允许用户在编译时构造程序。尽管LISP派生语言很早就有这样的功能,但是很少有现代语言能够进行编译时元编程,而在那些能够进行元编程的语言中,最强大的是静态类型函数式语言。在本文中,我介绍了一种动态类型的面向对象语言Converge,它允许按照Template Haskell的精神进行编译时元编程。Converge表明,将强大、安全的编译时元编程特性集成到动态语言中,对范式所促进的灵活开发风格几乎没有限制。在本文中,我详细介绍了Converge的编译时元编程工具,其中大部分是改编自Template Haskell的,包含了范式的几个新特性。最后,我将解释如何将这种功能集成到类似的语言中。
{"title":"Compile-time meta-programming in a dynamically typed OO language","authors":"L. Tratt","doi":"10.1145/1146841.1146846","DOIUrl":"https://doi.org/10.1145/1146841.1146846","url":null,"abstract":"Compile-time meta-programming allows programs to be constructed by the user at compile-time. Although LISP derived languages have long had such facilities, few modern languages are capable of compile-time meta-programming, and of those that do many of the most powerful are statically typed functional languages. In this paper I present the dynamically typed object orientated language Converge which allows compile-time meta-programming in the spirit of Template Haskell. Converge demonstrates that integrating powerful, safe compile-time meta-programming features into a dynamic language requires few restrictions to the flexible development style facilitated by the paradigm. In this paper I detail Converge's compile-time meta-programming facilities, much of which is adapted from Template Haskell, contain several features new to the paradigm. Finally I explain how such a facility might be integrated into similar languages.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130219344","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}
引用次数: 37
Higher order messaging 高阶消息传递
Pub Date : 2005-10-18 DOI: 10.1145/1146841.1146844
Marcel Weiher, Stéphane Ducasse
We introduce Higher Order Messaging, a higher order programming mechanism for dynamic object-oriented languages. Higher Order Messages allow user-defined message dispatch mechanism to be expressed using an optimally compact syntax that is a natural extension of plain messaging and also have a simple conceptual model. They can be implemented without extending the base language and operate through language bridges.
我们介绍了高阶消息传递,这是一种用于动态面向对象语言的高阶编程机制。高阶消息允许使用最紧凑的语法来表示用户定义的消息分派机制,该语法是普通消息传递的自然扩展,并且具有简单的概念模型。它们可以在不扩展基本语言的情况下实现,并通过语言桥进行操作。
{"title":"Higher order messaging","authors":"Marcel Weiher, Stéphane Ducasse","doi":"10.1145/1146841.1146844","DOIUrl":"https://doi.org/10.1145/1146841.1146844","url":null,"abstract":"We introduce Higher Order Messaging, a higher order programming mechanism for dynamic object-oriented languages. Higher Order Messages allow user-defined message dispatch mechanism to be expressed using an optimally compact syntax that is a natural extension of plain messaging and also have a simple conceptual model. They can be implemented without extending the base language and operate through language bridges.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"47 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2005-10-18","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115028480","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
期刊
Dynamic Languages Symposium
全部 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