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