Unix’s celebrated functionality is due in large part to the numerous utilities and little languages that enable users to sequence operations via a shell script — itself a DSL or little language, depending on which shell language you use. The problem with little languages is that each is a world unto itself. As such, an advanced Unix user must learn syntax for sed, awk, pic, shell programming, and so on, in order to tap their collective potential. Because of this, Unix users have been turning increasingly to more-generalized scripting languages that provide supersets of the capabilities offered by individual little languages.
However, little languages still thrive in the commercial market space as proprietary methods employed by ISVs to give programmers a means to use, modify, or extend their products. The most famous is PostScript, the page-definition language designed and maintained by Adobe. Over the years, PostScript has grown in scope and complexity and now resembles a full programming language, but for the fact that most of its commands focus on page layout.
It’s also important to disambiguate the term from Microsoft’s usage when, in 2004, the company announced tools developers could use to write their own DSLs. What seemed like a fascinating tool turned out to be only tangentially related. As states Larry O’Brien, an analyst who maintains the well-known Knowing.Net blog, which specializes in Microsoft developer technologies: “Microsoft’s DSL has very little to do with writing languages. They borrowed the term for developer tools that enable individuals to visually diagram workflows and express business-domain logic; they can then generate code from those diagrams. This solution, while effective, is not what most people mean when they refer to DSLs.”
When it comes to realizing IT benefits from dynamic development, scripting languages are where the paradigm begins to really pay off. These high-level languages are commonly used in the enterprise to perform one of two functions: to serve as the glue between portions of an application or to provide a high level of abstraction for low-level languages.
The second type of scripting language provides high-level programming constructs in environments that lack expressive high-level means. The recently released Groovy language, for example, brings numerous high-level constructs to Java, greatly reducing the amount of coding Java requires to create and manage objects. It also simplifies the description of data structures and provides straightforward handling of XML data. Lua, which fits well with programs written in C, is another such language. It has enjoyed a renaissance of late, emerging from academia by way of game developers who need the speed of low-level C code but crave the higher-level constructs Lua provides.