Nothing to do with Scheme (was: Re: [plt-scheme] No More Boring Code)
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
trivial.
- 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
them.
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.
-mike
On Thu, Apr 9, 2009 at 3:44 AM, Stephen De Gabrielle <
stephen at degabrielle.name> 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 topoi.pooq.com <hendrik at topoi.pooq.com> 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:
> > http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> >
>
> --
> Sent from my mobile device
>
> Cheers,
>
> Stephen
>
> --
> Stephen De Gabrielle
> s.degabrielle at cs.ucl.ac.uk
> Telephone +44 (0)20 7679 0693 (x30693)
> Mobile 079 851 890 45
> Project: Making Sense of Information (MaSI)
> Work:http://www.uclic.ucl.ac.uk/annb/MaSI.html
> Home:http://www.degabrielle.name/stephen
>
>
> UCL Interaction Centre
> MPEB 8th floor
> University College London
> Gower Street
> London WC1E 6BT
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20090410/23538770/attachment.html>