4 ms·
All I can say about these critiques: I learned make a few years ago and it wasn't nearly as bad as it was made out to be. As someone who cares about the aesthe
by alwillis 3y ago
All I can say about these critiques: I learned make a few years ago and it wasn't nearly as bad as it was made out to be.
As someone who cares about the aesthetics of code, I thought I would hate using make but I ended up enjoying writing modern makefiles.
When make was created back in the day, I get why certain choices were made, like with virtually all Unix tools of that era. But we don't have to use them in the same way. In general, our tooling is so much better that the so-called warts of make are more like minor annoyances than show stoppers.
- Brian_K_White 3y agoThe beauties of make are: * It actually does the complicated job correctly, or can, it provides the means to. A lot of things that claim to be "new better make" are simpler by being simply incomplete and/or internally more magic and less correct and less deterministic. * Single simple binary. No freaking python or ruby of just a certain vintage and 500 modules but maybe not the system ones or maybe only the system ones... * Always available everywhere, not just in the middle of the bell curve of modern and popular systems, and will be tomorrow exactly the same as yesterday. Deviations like gmake vs bsdmake are essentially trivial and don't really break anything or present any real problem. IE: portable across both space and time in all directions of all dimensions. Make is sane for the job it does. It's a great example of a correct use and application of a DSL. And all those complaints are still true. I address them by: * Simply adopt a habit or discipline to voluntarily avoid the implicit features. Don't use globbing either. Just don't use those features that are unwise. They are still there, but you don't have to invoke them. * Just suck it up and deal with the tabs and whitespace and line-continuation and quirks like how each line of shell in a target is a new shell environment unless you build the annoying long single command, capturing exit values so they don't reach the parent make process and get treated as an error, etc. Whatever. To me that's all just normal shell scripting requirements in any context, make not especially different from cron or cgi or other. Rather that than passing around powershell objects or something. Could be better but ninja or whatever is not the answer to those minor annoyances.