5 ms·
A long time ago, in a developer's paradise called the 1970's there was an automated build tool called "make". It had this and only this syntax: If a line begi
by bsenftner 9y ago
A long time ago, in a developer's paradise called the 1970's there was an automated build tool called "make".
It had this and only this syntax:
If a line begins at character 0, that is a list of files whose timestamps should be checked, if any are 'old', then execute the series of command lines beneath, identifying them as starting with a tab character.
That was it, the entire syntax of "make", and it was complete. Then some smart people fucked it up and we have that piece of shit we call "make" now.
- Sir_Cmpwn 9y agoI did not use Make at this time (I wasn't alive!), but it seems that you'd have to declare dependencies too. How did you determine if it was "old"?
- brilee 9y ago"If a line begins at character 0, that is a list of files whose timestamps should be checked" The list of files would be the declared dependencies.
- Sir_Cmpwn 9y agoAh I see.
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- bsenftner 9y agothe first file in the list is the one whose timestamp is compared against all the other files in the list after it. If the timestamp of any file is newer than that first file, the following lines starting with a tab are executed.
- cat199 9y ago> Then some smart people ... not sure which make you are criticizing here.. BSD Make (aka PMake) is imho light years beyond GnuMake in terms of coherence of the extensions to the base language and usability.. unfortunately most people in linux land think make==gnumake, and so it is hardly used outside of the base build system of BSD systems..
- tonyedgecombe 9y ago>some smart people fucked it up This does seem to happen in our industry over and over, another example is the way we turn every small, well designed language into Java.
- mikro2nd 9y agoYou clearly were not there at the start. Java was a perfectly nice, well designed language. Then some other people fucked it up...
- Tade0 9y agoThat's true, but I guess only after Java people started to notice this effect. I still remember how Java was hailed as a perfect replacement for C++ as the language of choice when writing applications - it truly was. Today though I was faced with a class name that was 46 characters long. There's a reason why "Fizz Buzz Enterprise Edition" is written in Java.
- mikro2nd 9y agoI once (back in the mid-1980's) spent several weeks hunting down a makefile bug. In the end it turned out to be a SPACE character that preceded a TAB character. It's some weeks of my life I will never get back. I hate make and it's 'entire syntax'.
- bsenftner 9y agoBack in that 1970's developer's paradise, it was not possible to lose a space next to a tab, because we did not have WYSIWYG editors, we had "vi" which has an easy toggle to show white space characters. "Back in the day" everything had a command line interface, and non-developers were afraid of computers. Ah, the good old daze...
- mikro2nd 9y agoHaving been a (moderately power) vi user since the early-80's, Today I Learned about this "show white space" toggle. Thanks!
- amelius 9y agoNowadays there are build tools that can determine dependencies automatically, by running the compilers inside a sandbox (e.g. linux strace).
- biztos 9y agoThat almost describes how I still use "make" -- and smart people pretty much always fuck up my makefiles sooner or later.