First mentioned on the excellent Lambda The Ultimate weblog, Peter Norvig has created a Lisp To Dylan Translator. Actually, while the posting is brand new, the code seems to be already 8 years old and Peter “found it in the Attic”. This piece of software demonstrates the relatedness of these two programming languages. For those who have no clue what Dylan is, let me explain a bit more.
Dylan was once invented by Apple and was also brought forward by Carnegie Mellon University and Harlequin. While Harlequins commercial Dylan compiler for Windows has been taken over by Functional Objects, CMU‘s code was later the base of the Gwydion Dylan GNU project.
While GD lacks some of the sophisticated features of Fun-O‘s compiler (it is a Dylan-To-C-Compiler and is not yet feature complete), it is already a a lot more than just an interesting piece of software as Dylan is a wonderful programming language and beats every other language in it‘s unique combination of speed, flexibility and beauty.
Dylan is fully buzzword compliant. To cite the GD home page:
Dylan is an advanced, object-oriented, dynamic language which supports the rapid development of programs. When needed, the programmer can later optimize [his or her] programs for more efficient execution by supplying type information to the compiler. Nearly all entities in Dylan (including functions, classes, and basic data types such as integers) are first class objects. Additionally Dylan supports multiple inheritance, polymorphism, multiple dispatch, keyword arguments, object introspection, and many other advanced features.
Dylan unites the good stuff of many other successful programming languages: the legibility of Pascal, the everything-is-an-object-paradigm of Smalltalk, the performance of C, the reusability of Lisp. Technically, it is more related to the Common Lisp Object System. It‘s inventor, Andrew Shalit, said he “invented Dylan to free the world from C++” and I think he has done a wonderful job in this respect.
In addition to just combine the best of other worlds, Dylan adds some significant features, most notably the multi-methods which helps getting rid of the stupid notion of considering methods being a part of classes. Dylan also has a very clean handling of namespaces, supporting modular development which can be especially useful when many developers work on the same code base. Dylan‘s macro system is prepared to let you easily produce your own simplified scripting languages on the foundation of the full Dylan feature set.
I could rave on for hours about Dylan which I consider the most excellent piece of of programming language design I have ever seen. I think it beats the shit out everything out there but unfortunately Dylan hasn‘t yet gained enough momentum to attract enough developers to bring it forward in a way to show its strengths to a broader public.
If you are interested to know more about Dylan you might want to get more insight in the Dylan WikiWikiWeb or just go ahead and give you a great time with the Dylan Reference Manual. The Dylan Programming book not only introduces Dylan step-by-step but also compares its features with C, C++ and Java as you go along. Also very interesting is the Literate Programming code of the Monday project of Peter Housel. And, of course, there is comp.lang.dylan.[via Notes From My Terminal]