DocumentCode
1255893
Title
Interface compilation: steps toward compiling program interfaces as languages
Author
Engler, Dawson R.
Author_Institution
Stanford Univ., CA, USA
Volume
25
Issue
3
fYear
1999
Firstpage
387
Lastpage
400
Abstract
Interfaces-the collection of procedures and data structures that define a library, a subsystem, a module-are syntactically poor programming languages. They have state (defined both by the interface´s data structures and internally), operations on this state (defined by the interface´s procedures), and semantics associated with these operations. Given a way to incorporate interface semantics into compilation, interfaces can be compiled in the same manner as traditional languages such as ANSI C or FORTRAN. The article makes two contributions. First, it proposes and explores the metaphor of interface compilation, and provides the beginnings of a programming methodology for exploiting it. Second, it presents MAGIK, a system built to support interface compilation. Using MAGIK, software developers can build optimizers and checkers for their interface languages, and have these extensions incorporated into compilation, with a corresponding gain in efficiency and safety. This organization contrasts with traditional compilation, which relegates programmers to the role of passive consumers, rather than active exploiters of a compiler´s transformational abilities
Keywords
application program interfaces; data structures; program compilers; programming language semantics; MAGIK; data structures; interface compilation; interface semantics; language optimizers; program interface compilation; programming languages; programming methodology; software developers; transformational abilities; Computer languages; Control systems; Data structures; File systems; High level languages; Libraries; Optimizing compilers; Program processors; Programming profession; Software safety;
fLanguage
English
Journal_Title
Software Engineering, IEEE Transactions on
Publisher
ieee
ISSN
0098-5589
Type
jour
DOI
10.1109/32.798327
Filename
798327
Link To Document