A 15 Year Perspective on Automatic Programming
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Domain-Specific Automatic Programming
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Efficiently computing static single assignment form and the control dependence graph
ACM Transactions on Programming Languages and Systems (TOPLAS)
ACM Computing Surveys (CSUR)
Fundamentals of Deductive Program Synthesis
IEEE Transactions on Software Engineering
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
Software—Practice & Experience
Exploiting specifications to improve program performance
Exploiting specifications to improve program performance
The program understanding problem: analysis and a heuristic approach
Proceedings of the 18th international conference on Software engineering
PYTHIA: a knowledge-based system to select scientific algorithms
ACM Transactions on Mathematical Software (TOMS)
Specification matching of software components
ACM Transactions on Software Engineering and Methodology (TOSEM)
High-level semantic optimization of numerical codes
ICS '99 Proceedings of the 13th international conference on Supercomputing
A case for source-level transformations in MATLAB
Proceedings of the 2nd conference on Domain-specific languages
A replicated assessment and comparison of common software cost modeling techniques
Proceedings of the 22nd international conference on Software engineering
Translation validation for an optimizing compiler
PLDI '00 Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation
ACM Transactions on Mathematical Software (TOMS) - Special issue in honor of John Rice's 65th birthday
Automatic predicate abstraction of C programs
Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation
Predicate abstraction for software verification
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On the Frame Problem in Procedure Specifications
IEEE Transactions on Software Engineering
Inferring Program Specifications in Polynomial-Time
SAS '96 Proceedings of the Third International Symposium on Static Analysis
Deductive Composition of Astronomical Software from Subroutine Libraries
CADE-12 Proceedings of the 12th International Conference on Automated Deduction
Automatic program specialization for Java
ACM Transactions on Programming Languages and Systems (TOPLAS)
Automatically proving the correctness of compiler optimizations
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
An Automated Algorithmic Recgnition Ttechnique to Support Parallel Software Development
PDSE '97 Proceedings of the 2nd International Workshop on Software Engineering for Parallel and Distributed Systems
The Art of UNIX Programming
On automating the construction of programs.
On automating the construction of programs.
Ontological Engineering
An intelligent assistant for interactive workflow composition
Proceedings of the 9th international conference on Intelligent user interfaces
Automated Planning: Theory & Practice
Automated Planning: Theory & Practice
An Adaptive Algorithm Selection Framework
Proceedings of the 13th International Conference on Parallel Architectures and Compilation Techniques
Defining and Measuring the Productivity of Programming Languages
International Journal of High Performance Computing Applications
Jungloid mining: helping to navigate the API jungle
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
A framework for adaptive algorithm selection in STAPL
Proceedings of the tenth ACM SIGPLAN symposium on Principles and practice of parallel programming
Formal languages and their relation to automata
Formal languages and their relation to automata
Oracle-guided component-based program synthesis
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 1
Synthesis of loop-free programs
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Construction of messaging-based enterprise integration solutions using AI planning
CEE-SET'09 Proceedings of the 4th IFIP TC 2 Central and East European conference on Advances in Software Engineering Techniques
Hi-index | 0.01 |
Progressing beyond the productivity of present-day languages appears to require using domain-specific knowledge. Domain-specific languages and libraries (DSLs) proliferate, but most optimizations and language features have limited portability because each language's semantics are related closely to its domain. We explain how any DSL compiler can use a domain-independent AI planner to implement algorithm composition as a language feature. Our notion of composition addresses a common DSL problem: good library designers tend to minimize redundancy by including only fundamental procedures that users must chain together into call sequences. Novice users are confounded by not knowing an appropriate sequence to achieve their goal. Composition allows the programmer to define and call an abstract algorithm (AA) like a procedure. The compiler replaces an AA call with a sequence of library calls, while considering the calling context. Because AI planners compute a sequence of operations to reach a goal state, the compiler can implement composition by analyzing the calling context to provide the planner's initial state. Nevertheless, mapping composition onto planning is not straightforward because applying planning to software requires extensions to classical planning, and procedure specifications may be incomplete when expressed in a planning language. Compositions may not be provably correct, so our approach mitigates semantic incompleteness with unobtrusive programmer-compiler interaction. This tradeoff is key to making composition a practical and natural feature of otherwise imperative languages, whose users eschew complex logical specifications. Compositions satisfying an AA may not be equal in performance, memory usage, or precision and require selection of a preferred solution. We examine language design and implementation issues, and we perform a case study on the BioPerl bioinformatics library.