GGrantIndex
← Search

CAREER: Generative Programming and DSLs for Safe Performance Critical Systems

$517,193FY2016CSENSF

Purdue University, West Lafayette IN

Investigators

Abstract

Most performance critical software is developed using very low-level techniques, close to the underlying hardware. But low-level code in unsafe languages attracts security vulnerabilities, developer productivity suffers without the software engineering benefits of higher-level languages, and in the age of heterogeneous hardware and big data workloads, a single hand-optimized codebase may no longer provide good performance across different target platforms. Generative programming is a radical rethinking of the role of high-level languages and low-level languages. Instead of running whole systems in a high-level managed language runtime, the idea is to focus the abstraction power of high-level languages on composing pieces of low-level code, making runtime code generation and domain-specific optimization a fundamental part of the program logic. This project will conduct a fundamental study of generative design patterns, which will be extracted from existing and emerging program generators and domain-specific languages. The intellectual merits are a deeper understanding of how to develop software in a generative style. The project's broader significance and importance are to establish generative programming as a part of every performance-minded programmer?s toolbox, enabling the use of high-level programming in more situations than currently possible. Generative programming, and the shift in perspective that goes along with it, has been shown to be extremely effective in areas like databases (query compilation), protocol and data format parsers, hardware circuit generation, signal processing kernels, machine learning, and big data processing on heterogeneous computing devices?traditional strongholds of low-level languages. But while the general idea of program generation is well understood, the technique has remained esoteric?a black art, accessible only to the most skilled and daring of programmers. What is missing is a discipline of practical generative programming, including design patterns, best practices and so on. To achieve these broader goals, the project includes an education program, which, driven by the project?s research, will teach generative programming to a wide audience of students and developers in industry. This education effort will also serve as a large-scale usability study, closing the feedback loop into the research on generative programming techniques.

View original record on NSF Award Search →