c
Thoughts?
k
Totally agreed. To quote myself from a couple of months ago:
The authors' "ideal world" is one where computation has no cost, but social structures remain unchanged, with "users" having "requirements". But the users are all mathematical enough to want formal requirements. They don't seem to notice that the arrow in "Informal requirements -> Formal requirements" may indicate that formal requirements are themselves accidental complexity.
https://futureofcoding.slack.com/archives/C5T9GPWFL/p1580790725492100?thread_ts=1580751504.462400&cid=C5T9GPWFL
☝️ 3
w
I think your critique as valid insofar as the “Out of the Tar Pit” authors oversimplify the nature of software development and sources of complexity. But I don’t think the big ideas in the paper require having a complete problem specification. A more charitable interpretation might be: they start with a basic model of software development and its problems. Like all models, it’s wrong, but it still usefully describes a subset of realistic situations. In those situations, the techniques the authors promote could help reduce complexity.
A really great example of this is high performance image processing. For a long time, writing gnarly C++ and vector intrinsics was the only way to go. And this meant a lot of mistakes, challenging optimization, so on. Then someone came up with a clean way of separating the algorithm from the hardware implementation, and now every Android phone in the world runs Halide (https://halide-lang.org/).
There’s a great paper in sociology called “Fuck Nuance”, which is about how researchers often point out how others’ models have one small flaw or another. But the author argues that these critiques often miss the broader value of the models. https://journals.sagepub.com/doi/pdf/10.1177/0735275117709046
k
It's certainly true that when reasonable people arrive at different conclusions after starting from the same inputs, it's because they weight factors differently. I don't think these are minor points at all. If Halide is to be experimental evidence for this paper, you have to motivate why this particular paper over previous papers by Brooks (essential complexity) or Codd (relational state) or Parnas (decoupled design) or Knuth (stepwise refinement).
I love that paper, and I find its introduction to this thread.. lacking in nuance. Only the headline applies, none of the 3 nuance traps it describes. On the contrary, I find the criticism of this thread to be about the central question, "is this theory any good?"
❤️ 1
w
Sure, I don’t mean to include the paper to mean criticisms of sociological models will directly map to questions of programming, moreso as an analogy for the kind of criticism I’m offering. I think several of the core concepts of the paper are totally reasonable, like how state and control make a system complex, and how functional/relational programming can help alleviate these issues. I see the most useful parts of the paper as an elaboration of the paper “Why Functional Programming Matters”. In that context, OP’s critique seems off base because it doesn’t address what I see as the substance of the theory.
👍 1
d
I don't know how you can talk about the turing tar-pit without mentioning C++ template metaprogramming 😛... actually that's the whole problem with the article, a lack of examples to focus the discussion.