[r6rs-discuss] why some people don't like Lisp
kumoyuki at gmail.com
Sun Feb 22 16:41:02 EST 2009
2009/2/22 Brian Harvey <bh at eecs.berkeley.edu>:
> "Guillermo J. Rozas" <gjr6765 at gmail.com> says:
>> I wish I knew what it was that makes the Lisp family of languages so
>> repulsive to most engineers/programmers.
> But I remain convinced that the big hurdle is that function-as-data is
> foreign to how most people's minds work, all but a few natural-born
I respectfully disagree. Or maybe I don't. But I've worked with a lot
of people who find my code dense (one job that used the LOC metric
said that my code should have an automatic x3 multiplier applied) and
verging on the obfuscatory because it is highly factored and firmly
founded on it's invariants.
That habit came from a lot of sources, but the most prosaic (and the
oldest) was trying to program ASN.1 based network protocols using a
VT220 as my interface. At that job we had a rule that functions
basically had to fit on one screen so we could read and verify their
function. 24 lines of code is a pretty small programming unit. To this
day, I get uncomfortable if there's more than 4 paths through a single
function because the chance of understanding all the invariants seems
to decrease exponentially with that metric.
This kind of extreme functional breakdown is common in the Lisp/FP
world, and it confuses the peasants. It also made embracing
first-class functions a doddle.
> they feel more grounded in a language that looks like what's
> actually happening.
I have seen this often in less skilled programmers. They like to write
what I call "control-freak code" - everything ends up in large
convoluted control structures. I think this is because people find it
simpler to add a new conditional branch than it is to rework the logic
so it collapses to a few simpler cases with boundary invariants.
> OOP had a similarly cold reception among real-world programmers until it
> lost the metaphor of autonomous actors and learned to present itself as
> merely structs with weapons.
This may be more true than you know. I do tend to think of my code as
a large number of interacting systems rather than an automaton
stepping through a flow-chart. People tend to get really scared when
they have to let go and let other code just somehow do the right thing
because the conditions have been set up so that the wrong thing is
GPG Public key at http://cyber-rush.org/drr/gpg-public-key.txt
More information about the r6rs-discuss