Hacker News new | ask | show | jobs
by d33 3704 days ago
I would say that this is a good argument against using such a complicated spec. This kind of constructs should be explicit - if in a build system at all. I hate Make because of all the crazy "build systems" that should have been written in a more readable language, but ended up as a Make kludge.
3 comments

The point is that, as mentioned in the article, the POSIX make spec is positively barren! Indeed, this is another example of very simple substitution systems turning out to be emergently Turing complete.
So you'd say that it's a good thing? How is hidden complexity good?
It's not necessarily a good thing. It's definitely interesting, though. It's difficult to come up with systems that are simultaneously useful and don't have emergent complexity - and it's not clear to me if it's worth the effort to even try in the general case!

For what it's worth, in my opinion build systems should definitely be intentionally, not accidentally, Turing complete.

Eh, you pretty much have to specifically design systems to avoid turing completeness. It's a hilariously low bar to clear.
Welcome to the Turing tar-pit in which everything is possible but nothing of interest is easy.
Junkyard full of random Python, Ruby, or Scala is not any better.

Build rules are code, and thus should be treated like one. Not treating them like code is the main reason many non-trivial makefiles (or rakefiles, or SCons rules, or whatever) look like sh&t.