SEARCH
NEW RPMS
DIRECTORIES
ABOUT
FAQ
VARIOUS
BLOG

BotDetect - Real-Time Bot Detection API
 
 

MAN page from RedHat Other gwydion-dylan-2.3.3-2.i386.rpm

DYLAN

Section: Gwydion Dylan (7)
Updated: 17 May 2000
Index 

NAME

Dylan - An object-oriented, dynamic language. 

DESCRIPTION

Dylan is an object-oriented, dynamic, infix, garbage-collected programminglanguage with support for multiple inheritence, multiple dispatch (anadvanced form of polymorphism), typed and untyped variables, closures andexceptions. Dylan also supports pattern-based hygenic macros. These allowyou to define new control constructs and fully integrate them with thelanguage.

Dylan (theoretically) combines the performance of C or C++ with the rapiddevelopment of Perl and the expressiveness of LISP. It looks similar to Cor Pascal, so experienced programmers can learn to write simple programsquickly. 

HISTORY

Dylan was originally designed by Apple Computer's Advanced DevelopmentLabs. They were using several languages at the time: SmallTalk and LISP forresearch prototypes, and C and C++ for end-user applications. They wantedone language which could be used for everything.

With help from Harlequin and the Gwydion Group at CMU, Apple revised andimproved Dylan. Each agreed to implement Dylan for a specific platform:Apple would handle the MacOS, Harlequin would handle Windows, and theGwydion Group would develop for Unix.

Things didn't go so well for Apple. The company was loosing money anddecided to cancel most of their non-MacOS development work. Harlequinfared better--they just released Harlequin Dylan 1.1, which generatesefficient code and includes a powerful GUI toolkit. The Gwydion Group madeexcellent progress before moving on to other research areas.

For more information about the Gwydion Dylan (and its ongoing development),seegwydion(7). 

DESIGN

Dylan, like Java, is heavily redesigned form of LISP with many featuresstripped out and a special focus on performance. Java chose a somewhateasier route: it replaced almost all of the object system, eliminateddynamic typing and removed any powerful but hard-to-optimize features.

The Dylan designers chose to take a somewhat more radical approach. Theyleft in the powerful object model, dynamic typing, and many advancedfeatures such as closures and integrated macros. In most cases, the Dylanversion of a feature was simplified, but not removed. For example, theDylan object model includes generic functions (with multimethods), butomits the meta-object protocol and method combination rules.

Dylan did include, however, many new features to help the compiler generateefficient code. Programmers can specify type declarations to help thecompiler infer types, or they can omit the type declarations if they don'tcare about peformance. Special classes allow the efficient representationof vectors and arrays of primitive types. Libraries can forbid theirclients to subclass certain types, allowing method dispatch to be performedat compile time.

Because of these decisions, Dylan needs a powerful optimizer to produceefficient code. Fortunately, the techniques for implementing suchoptimizers are well-understood, even if a lot of work is involved. 

PERFORMANCE

A good Dylan compiler can match a C or C++ compiler in most ways, providingthe programmer is willing to use type declarations and avoid the moreexpensive features.

Harlequin's Dylan compiler can generate code which matches the performaceof C on many benchmarks, even those involving complex numeric calculations.Gwydion Dylan generates code about half as good as the underlying Ccompiler. Limited collection types must be used when processing largeamounts of data, of course.

Memory usage for a Dylan program is about twice that of an equivalent Cprogram, thanks to the garbage collector. However, the amortitizedallocation and collection speed of a good modern garbage collector iseffectively the same as that of malloc and free.

Using recent research, generic function dispatch can be performed at theprice of three or four instructions per polymorphic argument. Membership ina class can be determined in constant time. Graph-coloring algorithms canbe used to optimize slot access in the presence of multiple inheritence.

In light of these facts, Dylan appears to be a good choice for applicationdevelopment and an entirely reasonable choice for certain kinds of systemsprogramming. Due to its LISP heritage, however, it is still useful forcomplex symbolic processing, fancy data structure manipulation and rapidprototyping. 

SEE ALSO

gwydion(7), d2c(1).

Much more extensive documentation in various formats is available throughthe Gwydion Dylan web site athttp://www.gwydiondylan.org/,including a brief Dylan tutorial.


 

Index

NAME
DESCRIPTION
HISTORY
DESIGN
PERFORMANCE
SEE ALSO

This document was created byman2html,using the manual pages.
 
ICM Bot detect detector