1.1 Comparison of Dylan and other programming languages

Each language in wide use for applications has advantages and disadvantages. One way to compare languages is to imagine them arrayed along two axes. One axis ranges from procedural to object-oriented languages. The other axis ranges from static to dynamic languages. Figure 1.1 shows the comparison of several popular computer-programming languages on a graph.

In reality, few languages in commercial use are purely procedural or object oriented, purely static or dynamic. In fact, the trend has been to add missing elements from one pole to languages that are close to the opposite pole. C++ adds object-oriented features to C; dynamic linking is becoming more common; LISP and Smalltalk vendors have made applications smaller and more efficient. This work, however, is hampered by the need to maintain compatibility with features of the language that were not designed with objects, dynamism, or performance in mind.

Figure 1.1: Object-oriented and dynamic extents of programming languages.
Object-oriented and dynamic extents of programming languages

Dylan, in contrast, is a new language that integrates the best ideas from object-oriented, procedural, dynamic, and static languages, while avoiding many of the drawbacks. Figure 1.2 shows where Dylan fits on the graph.

Figure 1.2: Object-oriented and dynamic extents of Dylan and other languages.
Object-oriented and dynamic extents of Dylan and otherlanguages

Dylan's goals are simple:

Let's take a brief look at features of Dylan that support these goals.