[Prev][Next][Index][Thread]

Re: C# is not Dylan (was: Re: C# : The new language from M$)




Phil Stubblefield wrote in message <395D0225.4FFEE339@rpal.rockwell.com>...
>Erik Naggum <erik@naggum.no> wrote:
>>
>> * "Scott McKay" <swm@mediaone.net>
>> |
>> | Translation: I implemented Lisp and Lisp environments for 12 years.
>> | I worked on Dylan for 5 years.  I'm back to using Lisp again.  Guess
>> | what?  I like Dylan better, syntax and all.
>>
>>   Yeah, we need more personal testimonials.
>
>And the alternative is... impersonal ad brochures?
>
>Seriously, I'd love to hear Lisp vs. Dylan comparisons from someone
>with Scott's amount of Lisp experience.  I just browsed the subject
>tree at Amazon.com, and of the three books listed within "Dylan
>Programming," one was a tutorial, one a reference manual, and the
>third had the comment, "Incomplete and riddled with errors."  I'd
>rather trust the judgement of someone like Scott, who I know *gets*
>Lisp.
>
>Scott, I second David Bakhash's interest in more details from you.


OK, I'll tell you some of the things I like about Dylan, and some
of the things I like better in Lisp.  First the likes:

 - I like Dylan's type system.  I like that the "built-in" types fix into
   the type system in a clean and consistent way.  I like that you
   can use it "typeless" but can then clamp down the types to get
   better code, and more importantly, better compile-time error
   detection.  Going back to Lisp makes me fell butt-naked on the
   type safety front; as the static-type people have been saying
   for years, a lot of errors really are type errors, and Dylan does
   a good job catching these.
 - I am surprised to say that I have come to like the infix syntax.
   For one, using type decls in Dylan is a lot easier than in Lisp,
   and a lot more readable, too.  Don't delude yourself into thinking
   Lisp has "no syntax" (as many people claim); it does, but it's
   just harder to see.
 - I like Dylan's hygienic macro system.  If we adopted Keith
   Playford's work on procedural macros, Dylan's macros would
   be very nearly as powerful as Lisp's, and many of Lisp's
   pitfalls would fall away.
 - I like that Dylan has a library compilation model.  I like being
   able to ship reusable components.  I like Dylan's library and
   module system.
 - I like that Dylan is smaller than Common Lisp.  I don't miss most
   of the fat.
 - Believe it or not, I now prefer the simpler method combination
   in Dylan.  It forces you to get your class hierarchy correct, and
   not to patch it up with kludgy method combination.  If you think
   you haven't used kludgy method combination, I bet you're wrong.
   I prided myself on how little I resorted to such kludges, but my
   Dylan experiences truly showed that my pride wenteth before
   a fall.  (I confess that I miss the "namespace" provided by
   daemon method combination, but you get used to it.)
 - I like that all primitive operations are defined as generic functions,
   too, unlike in Lisp.
 - It's partly parental pride, but I like using HD/FD better than almost
   any other programming environment I've used.  Yeah, it's not as
   mature or solid, but it's really good.

Now some dislikes:

 - I don't like that Dylan doesn't have first-class interfaces like Java.
 - I wish Dylan hadn't thrown out so much of the CLOS MOP.  I would
   like some of the introspection reinstated (slot descriptors, e.g.),
   but could live with only compile-time MOP for doing extensions.

Obviously, I like that Dylan is truly a dialect of Lisp (closest to Eulisp,
I think) with all that Lisp gives you: dynamic types, keyword args,
higher order functions, etc.






Follow-Ups: References: