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.”
Scripting languages
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.
Perl is an example of a glue language used to weave together components of a larger application. JavaScript (or ECMAScript), another glue language, coordinates various activities inside a browser. While originally used to animate browser sessions, JavaScript is now driving a richer form of browser interaction, thanks to the rising popularity of AJAX.
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.
Andrew Binstock is senior contributing editor of the InfoWorld Test Center.
Talkback
E-mail
Printer Friendly
Reprints




