In this chapter we present the OMG Interface Definition Language (IDL). We start by discussing the role and purpose of IDL, explaining how language-independent specifications are compiled for particular implementation languages to create actual implementations. Sections 4.4 through 4.7 present the low-level (and sometimes boring) details you must eventually confront with any programming language. You may wish to skim this material and return to it later. Sections 4.8 through 4.20 cover the core IDL concepts of interfaces, operations, exceptions, and inheritance. These concepts have profound influence on the behavior of a distributed system and should be read in detail.