A glue language is a high-level language whose main job is to connect existing pieces of software rather than implement algorithms and data structures from the ground up. The components, often written in a fast system language like C, do the heavy lifting; the glue language arranges them, passes data between them, and orchestrates the overall flow. John Ousterhout made this distinction the heart of his paper “Scripting: Higher Level Programming for the 21st Century.”
Ousterhout’s paper draws a line between two kinds of languages. System programming languages such as C are typed, compiled, and designed for building components from primitive parts; they are good at creating data structures and squeezing out performance. Scripting languages are typeless, interpreted, and designed for gluing components together. He argued that a scripting language can be several times more productive for connection tasks precisely because it gives up the low-level control that a systems language needs.
The classic example predates the term. A Unix shell pipeline that feeds one tool’s output into another is gluing programs together with a thin scripting layer, and none of the connected tools needs to know about the others. The same pattern appears in languages built explicitly as glue, including Tcl, which Ousterhout designed, along with Perl and Python, all of which excel at stitching together programs, libraries, and system services.
The economic argument is that most software is assembled, not invented. Once a base of reusable components exists, the bottleneck shifts from writing new algorithms to wiring components into a working whole, and a high-level glue language is the right tool for that wiring. Ousterhout predicted that this division of labor, components in a system language and glue in a scripting language, would only grow more important as the supply of reusable components expanded.
The glue-language idea is closely tied to embedded scripting, where the glue interpreter lives inside the very application it configures and extends. Together they describe a layered way of building software: a fast, carefully engineered core, wrapped in a flexible scripting skin that users and integrators can bend to new purposes without recompiling anything.