Nothing to do with Scheme (was: Re: [plt-scheme] No More Boring Code)

From: Michael Coffin (mhcoffin at
Date: Fri Apr 10 16:11:06 EDT 2009

I used to be a huge fan of fancy abstraction tools. I still like them a lot
when I program for fun. However, after working for a few years on a huge
code base (Google's) written by thousands of programmers of varying skill,
I'm not so convinced anymore. A couple things to remember:

   - Code is read a lot more often than it's written, and while boilerplate
   is a pain in the ass to write, it's easy to read precisely because it's
   - Reading code that makes heavy use of powerful abstraction mechanisms (
   e.g., Haskel, and Python to a lesser extent) can be really hard to read
   because each abstraction layer essentially defines a problem-dependent
   language. That's nice when you have a program that uses a single such
   language, but it gets out of hand pretty quickly with a large code base,
   where you have dozens of subsystems, each written in its own idiosyncratic
   language. It's pretty wrenching to try to follow an execution path where
   each step requires you to learn a new language.
   - It often pretty easy to compensate for lack of powerful abstraction by
   using instead code generation tools to define new languages. This has the
   advantage that the languages are actually documented, and tend to get
   standardized pretty quickly, partly because it's not that easy to write

I know this is all anecdotal, and I don't think it's conclusive at all. But
I now suspect there are some practical issues with powerful abstraction
mechanisms, especially with large, shared code bases.


On Thu, Apr 9, 2009 at 3:44 AM, Stephen De Gabrielle <
stephen at> wrote:

> Is their any evidence that there are problems with providing these
> abstraction tools? It's not like the designers of java were unaware of
> lisps, haskel etc.
> On 4/9/09, hendrik at <hendrik at> wrote:
> > On Wed, Apr 08, 2009 at 11:01:41AM -0700, John Clements wrote:
> >>
> >> Honestly, this has nothing to do with Scheme.  There are *lots* of
> >> languages out there that have the abstraction tools available to get
> >> rid of the boring junk; Haskell, ML, Scheme, LISP, etc.  In a perfect
> >> world, I'd like to create a rallying cry for *all* proponents of
> >> functional programming.
> >
> > And the abstraction tools aren't even in conceptual conflict with
> > imperative programming.  Why *do* all those languages leave tnem out?
> >
> > -- hendrik
> > _________________________________________________
> >   For list-related administrative tasks:
> >
> >
> --
> Sent from my mobile device
> Cheers,
> Stephen
> --
> Stephen De Gabrielle
> s.degabrielle at
> Telephone +44 (0)20 7679 0693 (x30693)
> Mobile                  079 851 890 45
> Project: Making Sense of Information (MaSI)
> Work:
> Home:
> UCL Interaction Centre
> MPEB 8th floor
> University College London
> Gower Street
> London WC1E 6BT
> _________________________________________________
>  For list-related administrative tasks:
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

Posted on the users mailing list.