• 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