We describe extensions to the Excel spreadsheet that integrate user-defined functions into the spreadsheet grid, rather than treating them as a "bolt-on". Our first objective was to bring the benefits of add...
详细信息
ISBN:
(纸本)9781581137569
We describe extensions to the Excel spreadsheet that integrate user-defined functions into the spreadsheet grid, rather than treating them as a "bolt-on". Our first objective was to bring the benefits of additional programminglanguage features to a system that is often not recognised as a programminglanguage. Second, in a project involving the evolution of a well-established language, compatibility with previous versions is a major issue, and maintaining this compatibility was our second objective. Third and most important, the commercial success of spreadsheets is largely due to the fact that many people find them more usable than programminglanguages for programming-like tasks. Thus, our third objective (with resulting constraints) was to maintain this usability advantage. Simply making Excel more like a conventional programminglanguage would not meet these objectives and constraints. We have therefore taken an approach to our design work that emphasises the cognitive requirements of the user as a primary design criterion. The analytic approach that we demonstrate in this project is based on recent developments in the study of programming usability, including the Cognitive Dimensions of Notations and the Attention Investment model of abstraction use. We believe that this approach is also applicable to the design and extension of other programminglanguages and environments.
language for Structured design (LSD) is a high level, visual, logic programminglanguage for design of structured objects. LSD combines the design and programming activities in a homogeneous programming/design environ...
详细信息
ISBN:
(纸本)1581137052
language for Structured design (LSD) is a high level, visual, logic programminglanguage for design of structured objects. LSD combines the design and programming activities in a homogeneous programming/design environment by extending Lograph, a visual logic programminglanguage, with the notion of solids and operations on them. At the back-end, however, a solid modeling kernel for maintaining low level description of solids and operations is required. In this paper, we report on our progress towards employing PLaSM, a functional programminglanguage for solid modeling, as the solid modeling kernel of LSD. This is achieved through the use of a translator engine which transforms the high level object description produced by LSD programs to PLaSM programs.
Compiler writers have crafted many heuristics over the years to approximately solve NP-hard problems efficiently. Finding a heuristic that performs well on a broad range of applications is a tedious and difficult proc...
详细信息
ISBN:
(纸本)9781581136623
Compiler writers have crafted many heuristics over the years to approximately solve NP-hard problems efficiently. Finding a heuristic that performs well on a broad range of applications is a tedious and difficult process. This paper introduces Meta Optimization, a methodology for automatically fine-tuning compiler heuristics. Meta Optimization uses machine-learning techniques to automatically search the space of compiler heuristics. Our techniques reduce compiler design complexity by relieving compiler writers of the tedium of heuristic tuning. Our machine-learning system uses an evolutionary algorithm to automatically find effective compiler heuristics. We present promising experimental results. In one mode of operation Meta Optimization creates application-specific heuristics which often result in impressive speedups. For hyperblock formation, one optimization we present in this paper, we obtain an average speedup of 23% (up to 73%) for the applications in our suite. Furthermore, by evolving a compiler's heuristic over several benchmarks, we can create effective, general-purpose heuristics. The best general-purpose heuristic our system found for hyperblock formation improved performance by an average of 25% on our training set, and 9% on a completely unrelated test set. We demonstrate the efficacy of our techniques - on three different optimizations in this paper: hyperblock formation, register allocation, and data prefetching.
This work presents an Object-Oriented framework for the implementation of language interpreters in an educational context. We use this framework to implement different programminglanguage paradigms, including interpr...
详细信息
ISBN:
(纸本)1581137516
This work presents an Object-Oriented framework for the implementation of language interpreters in an educational context. We use this framework to implement different programminglanguage paradigms, including interpreters for the Functional, Object-Oriented and Logic paradigms. This framework focuses its structure on aiding the comprehension of the similarities and differences between the implementation of different paradigms.
Proof checkers for proof-carrying code (and similar systems) can suffer from two problems: huge proof witnesses and untrustworthy proof rules. No previous design has addressed both of these problems simultaneously. We...
详细信息
ISBN:
(纸本)1581137052
Proof checkers for proof-carrying code (and similar systems) can suffer from two problems: huge proof witnesses and untrustworthy proof rules. No previous design has addressed both of these problems simultaneously. We show the theory, design, and implementation of a proof-checker that permits small proof witnesses and machine-checkable proofs of the soundness of the system.
Method inlining and data flow analysis are two major optimization components for effective program transformations, however they often suffer from the existence of rarely or never executed code contained in the target...
详细信息
ISBN:
(纸本)9781581136623
Method inlining and data flow analysis are two major optimization components for effective program transformations, however they often suffer from the existence of rarely or never executed code contained in the target method. One major problem lies in the assumption that the compilation unit is partitioned at method boundaries. This paper describes the design and implementation of a region-based compilation technique in our dynamic compilation system, in which the compiled regions are selected as code portions without rarely executed code. The key part of this technique is the region selection, partial inlining, and region exit handling. For region selection, we employ both static heuristics and dynamic profiles to identify rare sections of code. The region selection process and method inlining decision are interwoven, so that method inlining exposes other targets for region selection, while the region selection in the inline target conserves the inlining budget, leading to more method inlining. Thus the inlining process can be performed for parts of a method, not for the entire body of the method. When the program attempts to exit from a region boundary, we trigger recompilation and then rely on on-stack replacement to continue the execution from the corresponding entry point in the recompiled code. We have implemented these techniques in our Java JIT compiler, and conducted a comprehensive evaluation. The experimental results show that the approach of region-based compilation achieves approximately 5% performance improvement on average, while reducing the compilation overhead by 20 to 30%, in comparison to the traditional function-based compilation techniques.
Generic Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a number of limitatio...
详细信息
ISBN:
(纸本)9781581137569
Generic Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a number of limitations with the existing (Classic) Generic Haskell language, as implemented by the current Generic Haskell compiler. Specifically, generic definitions become disproportionately more difficult to write as their complexity increases, such as when one generic function uses another, because recursion is implicit in generic definitions. In the current implementation, writing such functions suffers the burden of a large administrative overhead and is at times counter- intuitive. Furthermore, the absence of type checking in the current implementation can make Generic Haskell hard to use. In this paper we develop the foundations of Dependency-style Generic Haskell which addresses the above problems, shifting the burden from the programmer to the compiler. These foundations consist of a full type system for Dependency-style Generic Haskell's core language and appropriate reduction rules. The type system enables the programmer to write generic functions in a more natural style, taking care of dependency details which were previously the programmer's responsibility.
This Volume 38 Number 11 of the conferenceproceedings contains 26 papers. Topics discussed include refactoring and reflection, smalltalkiana, error repair, generics, Java performance, languagedesign, object-oriented...
详细信息
This Volume 38 Number 11 of the conferenceproceedings contains 26 papers. Topics discussed include refactoring and reflection, smalltalkiana, error repair, generics, Java performance, languagedesign, object-oriented programming, garbage collection and transactions and persistence.
We present the functional language Duce, discuss some design issues, and show its adequacy for working with XML documents. Distinctive features of Duce are a powerful pattern matching, first class functions, overloade...
详细信息
We present the functional language Duce, discuss some design issues, and show its adequacy for working with XML documents. Distinctive features of Duce are a powerful pattern matching, first class functions, overloaded functions, a very rich type system (arrows, sequences, pairs, records, intersections, unions, differences), precise type inference for patterns and error localization, and a natural interpretation of types as sets of values. We also outline some important implementation issues;in particular, a dispatch algorithm that demonstrates how static type information can be used to obtain very efficient compilation schemas.
Speculative execution, such as control speculation and data speculation, is an effective way to improve program performance. Using edge/path profile information or simple heuristic rules, existing compiler frameworks ...
详细信息
ISBN:
(纸本)9781581136623
Speculative execution, such as control speculation and data speculation, is an effective way to improve program performance. Using edge/path profile information or simple heuristic rules, existing compiler frameworks can adequately incorporate and exploit control speculation. However, very little has been done so far to allow existing compiler frameworks to incorporate and exploit data speculation effectively in various program transformations beyond instruction scheduling. This paper proposes a speculative SSA form to incorporate information from alias profiling and/or heuristic rules for data speculation, thus allowing existing program analysis frameworks to be easily extended to support both control and data speculation. Such a general framework is very useful for EPIC architectures that provide checking (such as advanced load address table (ALAT) [10]) on data speculation to guarantee the correctness of program execution. We use SSAPRE [2 1] as one example to illustrate how to incorporate data speculation in those important compiler optimizations such as partial redundancy elimination (PRE), register promotion, strength reduction and linear function test replacement. Our extended framework allows both control and data speculation to be performed on top of SSAPRE and, thus, enables more aggressive speculative optimizations. The proposed framework has been implemented on Intel's Open Research Compiler (ORC). We present experimental data on some SPEC2000 benchmark programs to demonstrate the usefulness of this framework and how data speculation benefits partial redundancy elimination.
暂无评论