low-level approach
Dan Webb
dwebb@dwebb.com
Tue Jan 15 07:56:02 2002
>This brings up the question of why do we even need
>a better language when we can (in theory) build whatever we want from
>any turing-complete language to begin with? Of course, all these
>features take a lot of work to build.
Perhaps I can shed some light on the meaning of "expressiveness". For
more than 20 years I've programmed almost exclusively in imperative
languages (assembly/Pascal/Fortran/C/C++), but I've been investigating
the realm of functional programming for the last couple of years.
Functional programming is an oasis in a sea of incomplete, redundant
semantics and confusing, ambiguous syntax (I'm speaking mainly of C++
here). I've never been so productive with so little code in so little
time than when I write in a functional language. It's vastly easier to
write concise, precise code and factor out common elements as necessary.
Try that with C++, inheritance, and virtual functions. The modularity of
a language that supports a hierarchical environment with higher order
functions is just amazing. It gives you the ability to factor out small,
ubiquitous patterns such as map/filter/partition and reuse them
everywhere, resulting in much smaller, easier to read, less buggy code.
Now, I wouldn't necessarily say that CL is the best for this. I'm
finding that I prefer a lazy functional language, where objects can be
modeled by functions. I've got a lazy, purely function Scheme evaluator
that I've been developing for a while. I'm finding that laziness is the
key to saying goodbye to object-orientation and explicit state management
for good.
Dan Webb
dwebb@dwebb.com