Dylan

Dylan claims to be a Dynamic OO language which is object oriented throughout. Like Eiffel it does not carry excess baggage; reading the design goals of the language one sees that the designers had many aims in common - e.g the user has no concern for memory management and there are no pointers to get wrong.

It is worth looking at for a number of reasons:

The Dylan Interim Reference Manual of 3 June 1994 (180 KByte compressed postscript file) says:

... By letting programmers structure the text of their programs in terms of the problem at hand, object oriented programming narrows the gap between conception and realization. However, object oriented programming by itself is insufficient. ... The other half is provided by dynamism, yielding what Apple calls object oriented dynamic languages, or OODLs. In addition to supporting the object oriented methodology, OODLs must support a number of features which guarantee that programming takes place in terms defined by the programmer, rather than in the terms of the hardware.

OODLs must support rapid creation, delivery, and subsequent modification of ambitious, reliable, and efficient software...

Automatic Memory Management

The manual says:
Memory management bugs are among the most common and difficult errors in static programming languages. Bugs involving dangling pointers and twice-freed objects are notoriously hard to track down. The language run-time, and not the programmer, should be responsible for allocating storage for objects and reclaiming the storage of objects which are no longer used. There should be no explicit procedure calls for allocating or deallocating memory, or for deallocating objects... In a true OODL, there should be no machine-level pointers, only objects. Once freed from dealing with pointers, the programmer can begin to think of objects at a higher level and the primitives become comparably richer...
This requirement is also satisfied by Eiffel.

Dynamic Linking/ Incremental Development

The manual says:
Programmers should have the ability to build up their programs piece by piece, integrating preexisting pieces when possible and where available. The transition between rapid prototyping and mainstream development should be continuous rather than discrete. It should not require changing languages or tools...

Self Identifying Objects / Introspection

The manual says:
Operations should be checked for type safety before they are performed. If possible, this check should be performed at compile-time, otherwise it should be performed at run-time. This feature guarantees that type errors are noticed as soon as they occur, before they can propagate and cause system corruption. Because the integrity of the object model is maintained, error reporting can occur in terms of programmer objects and end-user objects, rather than in machine-level terms. In many cases, complete error recovery is possible. The language should contain features for introspection... For example, it should be possible at execution time to analyze the structure of an object, find the subclasses of a class, etc.

Object Oriented Programming Environment

The manual says:
The programming environment should present all debugging information at an object oriented level. Errors should be described in high-level terms similar to those used by the programmer in constructing the program. Inspection facilities should show a program as a collection of objects, not as a mass of undifferentiated bits. There should be tools for performance analysis and monitoring of single objects as well as collections of objects. There should be rich libraries of components, and the means to navigate within and between them and to organize and administer them...

It is not crazy

The manual says:
Many people in commercial industry and in the research community have recognized the problems with static languages, and some have started to build products that provide some of the features of OODLs... However, we believe that starting with a static language requires too many compromises... The common criticism of OODLs is that we cannot afford them. Most programmers view OODLs as slow and as memory hogs. The common wisdom is that OODLs do not make good use of machine resources. Fortunately, this view is out of date. The combination of improved OODL implementation technology and increasingly powerful hardware make OODLs eminently practical...

Some features of Dylan

Go to the original site of this page.