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

RE: feature incompatibilities

I am not sure if I agree with all of these. For example many people
(including myself) consider Haskell the ultimate imperative language
because the elegant way it incorporates imperative programming into pure
functional programming using monads.


-----Original Message-----
From: Michael Vanier [mailto:mvanier@cs.caltech.edu] 
Sent: Monday, March 31, 2003 4:23 PM
To: ll1-discuss@ai.mit.edu

It occurs to me that a lot of the current landscape of programming
languages is determined by which language features don't play well
together.  I can think of several of these incompatibilities:

-- explicit pointer arithmetic and garbage collection

-- strong static typing and reflection

-- static typing and dynamic typing

-- imperative programming and implicit lazy evaluation

None of these is absolute.  For instance, there are (conservative) GCs
C/C++, java has strong(ish) static typing but also has reflection,
Curl and Common Lisp combine (to some extent) static and dynamic typing
(and reflection), Haskell uses monads to get the effect of imperative
programming, etc.  However, it seems like it's very hard if not
to have such feature pairs together in one language without compromising
one or the other of the pair.  For instance, conservative GC is not
guaranteed to be reliable.

I think a lot of us dream of creating one language that could do
well, but I think the incompatibilities I listed above suggest that such
dream is misguided.  Can anyone think of other incompatibilities of this
kind?  Any other opinions?