They do appear to be badly written on purpose, like this "hotdog-aboutDrives.pl" one:
https://github.com/arthurchoung/HOTDOG/blob/master/hotdog-ab...
The entire script is this:
#!/usr/bin/perl
$str = `df`;
print $str;They do appear to be badly written on purpose, like this "hotdog-aboutDrives.pl" one:
https://github.com/arthurchoung/HOTDOG/blob/master/hotdog-ab...
The entire script is this:
#!/usr/bin/perl
$str = `df`;
print $str;" Most tutorials about Perl will tell you to always 'use strict' or something to that effect. However, the general rule for HOT DOG Linux is to not 'use strict'. The reasoning behind this is that each Perl script should be as simple as possible. It should be simple enough to not need 'use strict'. If it gets to the point where the script would be easier to deal with if it did 'use strict', then that is an indicator that the script is too complicated and should be broken up."
I tried to come up with a comparison for this but failed. It's sort of like saying, "If you need to wear a helmet to do some activity, you should probably ......... break up the activity into three shorter activities ........."
Unix was built using an extremely unsafe language. Yet it reached a decent level of reliability in just a few years, a lot of which was owed to the system applications being small programs isolated into separate processes.
Out of curiosity, what would the name of the metric for measuring this tradeoff be? Average lines of code per script/program? Average scripts/programs to accomplish a given task?
I feel like it'd be really good to talk more about this tradeoff, e.g. having smart programs that do a lot but are bloated (OpenVPN, OpenSSL, Docker all come to mind) versus smaller programs that do less, but chain together (most GNU tools with the piping mechanism) and the extreme ends of this scale.
Yet, i don't even know how much research has been done into this, what the status quo is and what terms to even look up. It's like talking about the difference between a monolith application or a microservices application, an abstraction that would be applied to tasks and the ways to do them, much like we have SLoC or cyclomatic complexity in regards to reasoning about code (though neither is exactly perfect either).
Composeability requires many different interfaces, but not every solution needs composeability.
Debugging complexity is reduced also because if something causes an abnormal termination, only the containing utility will die, not the entire composition.