2004 · 11 citations · 7 references
ComputingComputer ScienceCompilersComputer ArchitectureProgramming LanguagesCompiler Back EndsCompiler ConstructionData-flow AnalysisInterpreter DesignType CheckingType SystemsCompiler Front EndsCompiler Front-end SupportDispatchingDynamic Type CheckingMathematical NotationSpecialized Code GenerationStatic Type CheckingType Analysis
Array processing languages such as APL, Matlab and Octave rely on dynamic typechecking by the interpreter rather than static typechecking and are designed for user convenience with a syntax close to mathematical notation. Functions and operators are highly overloaded. The price to be paid for this flexibility is computational performance, since the run-time system is responsible for type checking, array shape determination, function call dispatching, and handling possible run-time errors. In order to produce efficient code, an Octave compiler should address those issues at compile-time as much as possible. In particular, static type and shape inferencing can improve the quality of the generated code. We discuss how overloading in dynamically typed Octave programs can be resolved by program specialization. We discuss the typing issues in compilation of Octave programs and give an overview of the implementation of the specializer in the transformation language Stratego.
7
Building program optimizers with rewriting strategies
Eelco Visser, Zine-el-Abidine Benaissa, Andrew Tolmach · 1998 · 251 citations · Full text
Mark van den Brand, H. A. de Jong, Paul Klint et al. · Software Practice and Experience · 2000 · 196 citations · Full text
George Almási, David Padua · 2002 · 78 citations
Compiler techniques for MATLAB programs
David Padua, Luiz Antonio De Rose · 1996 · 45 citations
Eelco Visser · Electronic Notes in Theoretical Computer Science · 2001 · 36 citations · Full text