Dustin on 16 Nov 2011 08:24:46 -0800


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

is lisp the answer? /linkbait


Did anyone see the recent HN discussion[1] on John D Cook's "the
plumbing programmer" ? Cook writes:

"The plumber is often the most experienced programmer on a team. ...
software plumbing connects things together. It deals with things other
people don’t want to see or think about. And it’s crucial." and he
implies that systems integration is one of the hardest parts of
software (systems?) engineering.

A HN commenter `nadam` wrote: "Most of the enterprise developers' job
is connecting components together. I hate it. I hate modifying
existing systems and hate connecting them together. It is usually
hard, but the kind of hard which is not really fulfilling for me. It
is about fighting with accidental complexity created by other people."

`fleitz` (5800 karma) responded (summarizing): "It's not that
difficult when you work with the right tools. Most of these problems
boil down to a couple operations: map, reduce, filter ... [to and from
webservices] ... [only need four types to do this] ... Using the usual
sequence operators pretty much anything is possible with those inputs,
outputs, and transforms (pipes) and you avoid a lot of overhead making
data pipelines." [2] worth a click imo.

I responded, questioning his assertion that "most problems can be
solved with sequence operators". I would love if this was true, but i
see no evidence of "big" software systems being successfully
constructed in this fashion. "People build BIG BALLS OF MUD because
they work. In many domains, they are the only things that have been
shown to work. Indeed, they work where loftier approaches have yet to
demonstrate that they can compete." (quoting an old essay, this
actually might not be true anymore! facebook/twitter/google/amazon)
[3] I elaborate a bit in the HN thread.

Anyway, I can't help but wonder if the lisp paper we discuss tonight,
and the underlying lambda calculus, forms a proof that yes, all
computable problems may be decomposed into sequence operations, and i
wonder if that proof can be extended to convincingly conclude that
sequence-oriented decomposition of systems-integration problems is a
better* approach than big balls of mud. I recognize that many
intuitively feel this is true, but I have yet to find and understand
an argument that concludes this beyond all doubt.

[1] "the plumbing programmer" HN discussion -- http://news.ycombinator.com/item?id=3238284
[2] fleitz on data pipelines -- http://news.ycombinator.com/item?id=3240168
[3] BIG BALLS OF MUD -- http://www.laputan.org/mud/
*better -- this includes out-of-band factors like hiring, but perhaps
we can ignore out-of-band factors like perverse incentives to not care
about quality due to bill-per-hour economics.