Dylan alternative (was Dylan complexity) 
Author Message
 Dylan alternative (was Dylan complexity)

Geoff Wyant

Sun Microsystems Laboratories, Inc.

2 Elizabeth Drive
Chelmsford, Ma.

For those that find Dylan overly complex and are looking for a simpler,
yet reasonably powerful alternative, we'd like to point out that
such a language exists today, and implementations of it is readily
available (and no it is not C++!)

The Modula-3 langauge and the associated implementation from Digital's
Systems Research Center (DEC SRC). The Modula-3 langauge provides:

  o Seperation of interface and implementation
  o Seperation of unsafe from safe modules
  o Garbage Collection
  o Exception Handling
  o Dynamic Typing
  o A simple object system
  o Threads and language support for concurrency
  o Generic interfaces/modules

The language definition runs approximately 50-60 pages (contrasting
with the 180 pages of the Dylan manual and the how many hundreds
of badly written pages in the C++ spec.  One of the overriding goals
of the M3 langauge design was to be both reasonably powerful for
building large systems, yet stay fairly simple. There should be no
hidden surpises in the language. Looking at a source line, it is
often easy to tell exactly what it does; the language does not include
language-level hacks or trickery. Other goals of the design were
to have the type system support distributed and persistent programming
up front; experiences with the implementation of Modula-3 shows that
Modula-3 has been successful with these goals.

DEC SRC provides a portable implementation of the language along
with a large set of libraries and tools. This implementation is freely
available in source form via anonymous FTP. Highlights of the implementation

  1) A native code compiler: uses the GCC backend; on machines/operating
     systems that have self-describing stacks, an optimized exception
     handling mechanism is provided, on other architectures,
     setjmp/longjmp is used.

     The compilation system provides for minimal recompilation.
     Only those units that depend on the modified interface item
     will be recompiled.

  2) A multithread, incremental, generational, conservative garbage

  3) A large standard library (libm3)  providing

      o Generic Containers: Lists, Sequences, Tables
                            SortedLists, SortedTables
      o S-expressions
      o Atoms
      o An extensible stream IO system
      o Typesafe binary object transcription
      o Fingerprints (probabalistically unique hash values)
      o Operating system interfaces
      o Portable interfaces to the langauge runtime

      All standard libraries are thread-friendly.

  4) A multithreaded/concurrent window system interface and user
     interface framework providing postscript-like graphics

  5) A framework for parsing and analyzing Modula-3 programs. This
     is a complete AST toolkit for Modula-3. This can parse arbitrary
     Modula-3 sources (input isn't required to be a complete unit)
     and produce detailed ASTs representing the input. The ASTs can be
     used to do a variety of semantic analysis tasks, or program
     generation tasks similar to Lisp environments. (m3tk).

  6) A user-interface toolkit providing a Motif-like look and feel

  7) A UIMS that uses a lisp-like description syntax

  8) Distributed Objects with distributed garbage collection and
     without much hastle
     (Network Objects)

  9) A distributed, object-oriented scripting language

     Obliq is an interpreted, statically-scoped object-oriented language
     with distributed scope.  Obliq objects can be freely passed
     around the network. Obliq features an object model based on
     prototypes and delegation. Obliq can easily call into M3 code
     (or even C code described with M3 interfaces). Obliq is similiar
     in intent to Telescript.

 10) An interactive UI/distributed application builder.
     (Visual Obliq)

     This is a rather new component and is undergoing a fair amount
     of evolution; however, it is still very useful and exciting.
     Visual Obliq provides an application builder similiar in nature
     to Visual Basic. However, it uses Obliq as its scripting language.
     This makes it easy to build and prototype interesting distributed
     and groupware applications. It can be used for building non-distributed
     applications as well.

 11) Performance and coverage analysis tools

 12) tools for generating documentation in TeX or HTML formats.

 13) Modula-3 can readily link with existing C libraries; many libraries
     including X11R4 and various UNIX libraries are available as
     part of libm3.

 14) An algorithm animation system

      The implementation includes a framework and set of tools for
      animating algorithms. This is useful visualing the runtime
      characteristics of different algorithms. It has been used to
      visualize such things as  network routing algorithms and type-checking
      algorithms for object-oriented languages.

Here are some places to go if you want more information on Modula-3:

 -  Modula-3 Home: http://www.*-*-*.com/
 -  comp.lang.modula3 newsgroup

Geoff Wyant

Farshad Nayeri

Sun, 24 Nov 1996 04:09:56 GMT  
 Dylan alternative (was Dylan complexity)
And, if Modula 3 is too complex for you, I recommend looking at some of the
Oberon work at ETH.  The Oberon system has a number of limitations but it
is by no means a toy and the total system and compiler (as documented in
Project Oberon by Wirth and Gutknecht -- whose name I have probably just
mangled) totals on the order of 13,000 lines of code.  If nothing else,
Oberon is a jarring reminder of how much can be done in a small system by
careful engineering.

Tue, 26 Nov 1996 10:16:59 GMT  
 [ 2 post ] 

 Relevant Pages 

1. Dylan Complexity

2. archives of info-dylan/comp.lang.dylan available

3. Dylan vs DyLan

4. (fwd) harlequin's dylan-corba mailing list switching to MIT's info-dylan

5. lazy.dylan 0.1 -- add ML/Scheme-style lazy evaluation to Dylan

6. Dylan and Java [was: Harlequin Dylan - Update]

7. Dylan Programming Book and Apple Dylan

8. Dylan, guys, Dylan.

9. Dylan is the Name was(Re: Dylan (Bob) eats rotten Apple (Computer))

10. Sudden interest in Dylan/Dylan should be open.

11. c.l.dylan overlap with Dylan mailing lists?

12. Dylan, guys, Dylan.


Powered by phpBB® Forum Software