Dynamic Languages Symposium最新文献

筛选
英文 中文
Of scripts and programs: tall tales, urban legends, and future prospects 关于剧本和节目:荒诞故事、都市传说和未来前景
Dynamic Languages Symposium Pub Date : 2009-10-26 DOI: 10.1145/1640134.1640136
J. Vitek
{"title":"Of scripts and programs: tall tales, urban legends, and future prospects","authors":"J. Vitek","doi":"10.1145/1640134.1640136","DOIUrl":"https://doi.org/10.1145/1640134.1640136","url":null,"abstract":"Scripting languages are playing an increasing role in today's software landscape due to their support for rapid and exploratory development. They typically have lightweight syntax, weak data privacy, dynamic typing, powerful aggregate data types, and allow execution of the completed parts of incomplete programs. While many of their uses are web-centric, scripting languages also show up in non-traditional domains such as space exploration and administration of the pension benefits entire countries. Considering their importance to the practice of computing, it is surprising to see that, in academic circles, scripting is still often viewed as an undisciplined and unprincipled attempt at programming. In this talk, I will summarize work carried in collaboration with IBM Research on bridging the divide between scripting and programming. I will motivate our investigations with some success stories of scripting languages used in unusual places. Then I will dispel some misconceptions about the nature of scripts with preliminary results from a large corpus analysis of programs written in a popular scripting language. Finally, I will talk about the design of a new language, called Thorn, that aims to ease the journey from scripts to programs (and back).","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-10-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115292535","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}
引用次数: 1
Groovy package templates: supporting reuse and runtime adaption of class hierarchies Groovy包模板:支持类层次结构的重用和运行时适应
Dynamic Languages Symposium Pub Date : 2009-10-26 DOI: 10.1145/1640134.1640139
Eyvind W. Axelsen, Stein Krogdahl
{"title":"Groovy package templates: supporting reuse and runtime adaption of class hierarchies","authors":"Eyvind W. Axelsen, Stein Krogdahl","doi":"10.1145/1640134.1640139","DOIUrl":"https://doi.org/10.1145/1640134.1640139","url":null,"abstract":"We show how package templates, a modularization mechanism originally developed for statically typed languages like Java and C#, can be applied to and implemented in a dynamic language like Groovy, by using the language's capabilities for meta-programming. We then consider a set of examples and discuss dynamic PT from the viewpoints of code modularization and reuse, and dynamic adaption of classes at runtime.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-10-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121833639","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}
引用次数: 16
Language embedding and optimization in mython 语言嵌入和优化在神话
Dynamic Languages Symposium Pub Date : 2009-10-26 DOI: 10.1145/1640134.1640141
J. Riehl
{"title":"Language embedding and optimization in mython","authors":"J. Riehl","doi":"10.1145/1640134.1640141","DOIUrl":"https://doi.org/10.1145/1640134.1640141","url":null,"abstract":"Mython is an extensible variant of the Python programming language. Mython achieves extensibility by adding a quotation mechanism that accepts an additional parameter as well as the code being quoted. The additional quotation parameter takes the form of a Mython expression. Unlike other user code, Mython evaluates the quotation parameter at compile-time. The result of the compile-time expression is a function that is used to both parse the quoted code, and extend the compile-time environment. By explicitly passing the compilation environment to compile-time quotation functions, Mython's parameterized quotation allows users to inject code into the language compiler. Injected code can extend the language by modifying the compilation phases, which are visible to the compilation environment. The Mython language is realized by the MyFront compiler, a tool for translating Mython into Python byte-code modules. This paper introduces the Mython language, describes the implementation and usage of the MyFront tool, and shows how MyFront can be used to implement domain-specific optimizations using a little rewrite language.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-10-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134200821","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}
引用次数: 11
Optimization of dynamic languages using hierarchical layering of virtual machines 使用虚拟机分层的动态语言优化
Dynamic Languages Symposium Pub Date : 2009-10-26 DOI: 10.1145/1640134.1640147
Alexander Yermolovich, Christian Wimmer, M. Franz
{"title":"Optimization of dynamic languages using hierarchical layering of virtual machines","authors":"Alexander Yermolovich, Christian Wimmer, M. Franz","doi":"10.1145/1640134.1640147","DOIUrl":"https://doi.org/10.1145/1640134.1640147","url":null,"abstract":"Creating an interpreter is a simple and fast way to implement a dynamic programming language. With this ease also come major drawbacks. Interpreters are significantly slower than compiled machine code because they have a high dispatch overhead and cannot perform optimizations. To overcome these limitations, interpreters are commonly combined with just-in-time compilers to improve the overall performance. However, this means that a just-in-time compiler has to be implemented for each language.\u0000 We explore the approach of taking an interpreter of a dynamic language and running it on top of an optimizing trace-based virtual machine, i.e., we run a guest VM on top of a host VM. The host VM uses trace recording to observe the guest VM executing the application program. Each recorded trace represents a sequence of guest VM bytecodes corresponding to a given execution path through the application program. The host VM optimizes and compiles these traces to machine code, thus eliminating the need for a custom just-in-time compiler for the guest VM. The guest VM only needs to provide basic information about its interpreter loop to the host VM.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-10-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129996734","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}
引用次数: 33
Fast type reconstruction for dynamically typed programming languages 动态类型编程语言的快速类型重构
Dynamic Languages Symposium Pub Date : 2009-10-26 DOI: 10.1145/1640134.1640145
F. Pluquet, Antoine Marot, Roel Wuyts
{"title":"Fast type reconstruction for dynamically typed programming languages","authors":"F. Pluquet, Antoine Marot, Roel Wuyts","doi":"10.1145/1640134.1640145","DOIUrl":"https://doi.org/10.1145/1640134.1640145","url":null,"abstract":"Type inference and type reconstruction derive static types for program elements that have no static type associated with them. They have a wide range of usage, such as helping to eliminate the burden of manually specifying types, verifying whether a program is type-safe, helping to produce more optimized code or helping to understand programs. While type inference and type reconstruction is an active field of research, most existing techniques are interested foremost in the precision of their approaches, at the expense of execution speed. As a result, existing approaches are not suited to give direct feedback in development environments, where interactivity dictates very fast approaches. This paper presents a type reconstruction algorithm for variables that is extremely fast (in the order of milliseconds) and reasonably precise (75 percent). The system is implemented as a byte-code evaluator in several Smalltalk environments, and its execution speed and precision are validated on a number of concrete case studies.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"55 1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-10-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116567459","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}
引用次数: 27
Hosting an object heap on manycore hardware: an exploration 在多核硬件上托管对象堆:一种探索
Dynamic Languages Symposium Pub Date : 2009-10-26 DOI: 10.1145/1640134.1640149
D. Ungar, Sam S. Adams
{"title":"Hosting an object heap on manycore hardware: an exploration","authors":"D. Ungar, Sam S. Adams","doi":"10.1145/1640134.1640149","DOIUrl":"https://doi.org/10.1145/1640134.1640149","url":null,"abstract":"In order to construct a test-bed for investigating new programming paradigms for future \"manycore\" systems (i.e. those with at least a thousand cores), we are building a Smalltalk virtual machine that attempts to efficiently use a collection of 56-on-chip caches of 64KB each to host a multi-megabyte object heap. In addition to the cost of inter-core communication, two hardware characteristics influenced our design: the absence of hardware-provided cache-coherence, and the inability to move a single object from one core's cache to another's without changing its address. Our design relies on an object table, and the exploitation of a user-managed caching regime for read-mostly objects. At almost every stage of our process, we obtained measurements in order to guide the evolution of our system.\u0000 The architecture and performance characteristics of a manycore platform confound old intuitions by deviating from both traditional multicore systems and from distributed systems. The implementor confronts a wide variety of design choices, such as when to share address space, when to share memory as opposed to sending a message, and how to eke out the most performance from a memory system that is far more tightly integrated than a distributed system yet far less centralized than in a several-core system. Our system is far from complete, let alone optimal, but our experiences have helped us develop new intuitions needed to rise to the manycore software challenge.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"71 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2009-10-26","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126358281","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}
引用次数: 16
Contextual values 上下文值
Dynamic Languages Symposium Pub Date : 2008-07-08 DOI: 10.1145/1408681.1408684
É. Tanter
{"title":"Contextual values","authors":"É. Tanter","doi":"10.1145/1408681.1408684","DOIUrl":"https://doi.org/10.1145/1408681.1408684","url":null,"abstract":"Context-oriented programming proposes to treat execution context explicitly and to provide means for context-dependent adaptation at runtime. There are many mechanisms that can be used to make either variable bindings or application code adapt dynamically, like dynamically-scoped variables, dynamic layer activation, and contextual dispatch. There are no means however, to make actual values be context-dependent. This means that side effects engendered by dynamically-activated adaptations are potentially global. We propose contextual values: values that actually depend on the context in which they are looked at and modified. We explore how contextual values can be provided, either as a simple library or directly into the language through different designs, for which we provide the operational semantics in the form of Scheme interpreters. Being able to scope side effects to certain contexts is a step forward for context-oriented programming, and can have interesting applications in other areas like security and dynamic software evolution.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"108 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115650301","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}
引用次数: 24
The Clojure programming language Clojure编程语言
Dynamic Languages Symposium Pub Date : 2008-07-08 DOI: 10.1145/1408681.1408682
R. Hickey
{"title":"The Clojure programming language","authors":"R. Hickey","doi":"10.1145/1408681.1408682","DOIUrl":"https://doi.org/10.1145/1408681.1408682","url":null,"abstract":"Customers and stakeholders have substantial investments in, and are comfortable with the performance, security and stability of, industry-standard platforms like the JVM and CLR. While Java and C# developers on those platforms may envy the succinctness, flexibility and productivity of dynamic languages, they have concerns about running on customer-approved infrastructure, access to their existing code base and libraries, and performance. In addition, they face ongoing problems dealing with concurrency using native threads and locking. Clojure is an effort in pragmatic dynamic language design in this context. It endeavors to be a general-purpose language suitable in those areas where Java is suitable. It reflects the reality that, for the concurrent programming future, pervasive, unmoderated mutation simply has to go. Clojure meets its goals by: embracing an industry-standard, open platform - the JVM; modernizing a venerable language - Lisp; fostering functional programming with immutable persistent data structures; and providing built-in concurrency support via software transactional memory and asynchronous agents. The result is robust, practical, and fast. This talk will focus on the motivations, mechanisms and experiences of the implementation of Clojure.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"17 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115363417","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}
引用次数: 191
Language design: back to the future? 语言设计:回到未来?
Dynamic Languages Symposium Pub Date : 2008-07-08 DOI: 10.1145/1408681.1408686
L. Tratt
{"title":"Language design: back to the future?","authors":"L. Tratt","doi":"10.1145/1408681.1408686","DOIUrl":"https://doi.org/10.1145/1408681.1408686","url":null,"abstract":"Programming languages are the medium used to express our wishes to a computer. Unlike human languages, we can alter, destroy, and create them at will. Despite this, mainstream programming languages are surprisingly homogeneous with the differences between them often amounting to little more than surface syntax issues. New ideas rarely get a toe-hold in the marketplace and those that do have typically been used for decades by a sizeable minority (e.g. dynamic typing). In this talk the speaker will suggest reasons for the inherent conservativeness of programming languages, their designers, and their users. He will look back at some largely forgotten languages - some older than others - that introduced distinctive language features, and offer thoughts on their successes and failures. He will show how a series of seemingly outlandish ideas scavenged from such languages can be blended together to form part of a coherent modern language - one that also aims to try and inject a few new memes of its own into the languages pool.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"239 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116123278","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}
引用次数: 0
Efficient floating-point number handling for dynamically typed scripting languages 动态类型脚本语言的高效浮点数处理
Dynamic Languages Symposium Pub Date : 2008-07-08 DOI: 10.1145/1408681.1408687
Shiro Kawai
{"title":"Efficient floating-point number handling for dynamically typed scripting languages","authors":"Shiro Kawai","doi":"10.1145/1408681.1408687","DOIUrl":"https://doi.org/10.1145/1408681.1408687","url":null,"abstract":"Typical implementations of dynamically typed languages treat floating-point numbers, or flonums, in a \"boxed\" form, since those numbers don't fit in a natural machine word if a few bits in the word are reserved for type tags. The naïve implementations allocate every instance of flonums in the heap, thus incur large overhead on numerically intensive computations. Compile-time type inference could eliminate boxing of some flonums, but it would be costly for highly dynamic scripting languages, in which a compiler runs every time a script is executed.\u0000 We suggest two modified stack machine architectures that avoid heap allocations for most intermediate flonums, and can be relatively easily retrofitted to existing stack-based VMs. The basic idea is to have an arena for intermediate flonums that works as a part of extended stack or as a nursery. Like typical VMs, flonums are tagged pointers that point to native floating-point numbers, but when a new flonum is pushed onto the VM's stack, it actually points to a native floating-point number placed in the arena. Heap allocation only occurs when the flonum pointer needs to be moved to the heap. The two architectures differ in the strategies to manage the arena.\u0000 We implemented and evaluated those strategies in a Scheme implementation\"Gauche.\" Both strategies showed 30%-140% speed up in numerical computation intensive benchmarks, eliminating 99.8% of heap-allocation of intermediate flonums, with little penalty in non-numerical benchmarks. Profiling showed the speed improvement came from the elimination of flonum allocation and garbage collection.","PeriodicalId":344101,"journal":{"name":"Dynamic Languages Symposium","volume":"66 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2008-07-08","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131634441","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
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信