Abstract:
Abstract. For software engineering reasons, it is often best to provide domain-speci c programming environments in the context of a generalpurpose language. In our view general-purpose languages are not yet general-purpose enough, and progress needs to be made before we can provide domain-specic languages that are both fast and safe. We outline some goals in this regard, and describe a possible implementation technology: guaranteed optimization, a technique for building compilers that provide proven guarantees of what optimizations they perform. Such optimizers can provide capabilities similar to staged languages, and thus provide the relevant performance improvements. They can also function as decision procedures, suggesting an approach of 'optimizers as theorem provers, ' in which optimizing compilers can be used to check domainspeci c safety properties and check proofs embedded in programs. 1
Citations
|
549
|
High-Performance Compilers for Parallel Computing
– Wolfe
|
|
240
|
Metaobject Protocol for C
– Chiba, \A
- 1995
|
|
168
|
Multi-stage programming with explicit annotations
– Taha, Sheard
- 1997
|
|
168
|
Revised report on the algorithmic language Scheme
– Kelsey, Clinger, et al.
- 1998
|
|
106
|
Building Program Optimizers with Rewriting Strategies
– Visser, Benaissa, et al.
- 1998
|
|
66
|
An annotation language for optimizing software libraries
– Guyer, Lin
- 1999
|
|
49
|
Eiel: The Language
– Meyer
- 1992
|
|
48
|
An architecture for an open compiler
– Lamping, Kiczales, et al.
- 1992
|
|
44
|
Active libraries – Rethinking the roles of compilers and libraries
– Veldhuizen, Gannon
- 1998
|
|
40
|
Incorporating application semantics and control into compilation
– Engler
- 1997
|
|
36
|
Two-Level Functional Languages
– Nielson, Nielson
- 1992
|
|
21
|
Design and implementation of metalevel architecture in c++ - mpc++ approach
– Ishikawa, Hori, et al.
- 1996
|
|
21
|
Compiling embedded languages
– Elliott, Finne, et al.
- 2000
|
|
20
|
Abstract interpretation
– Jones, Nielson
- 1995
|
|
16
|
Ecient Parallel Programming with Algorithmic Skeletons
– Botorog, Kuchen
- 1996
|
|
10
|
Building domain-speci embedded languages
– Hudak
- 1996
|
|
10
|
The abstraction penalty for small objects in C
– Robison
- 1996
|
|
10
|
Impact of economics on compiler optimization
– Robison
- 2001
|
|
10
|
Generative programming and active libraries (extended abstract
– Czarnecki, Eisenecker, et al.
|
|
9
|
LCLint: A tool for using speci to check code
– Evans, Guttag, et al.
- 1994
|
|
6
|
Retrofitting the AutoBayes program synthesis system with concrete object syntax
– Fischer, Visser
- 2004
|
|
5
|
Abstraction benchmarks and performance of C++ applications
– Müller
- 2000
|
|
3
|
Abstraction penalty benchmark
– Stepanov
- 1994
|
|
3
|
Optimizing sequences of skeleton calls (2004
– Kuchen
|
|
2
|
Logic for computer science: The engineering challenge
– Thomas
- 2000
|
|
1
|
S.M.: User-extensible simpli type-based optimizer generators
– Schupp, Gregor, et al.
|