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;