2 ms·
I would argue with almost anyone else, that this is a poor design, but... Thank you for your perspective, work, and contributions.
by rollcat 2y ago
I would argue with almost anyone else, that this is a poor design, but...
Thank you for your perspective, work, and contributions.
- hnlmorg 2y agoThe other thing to bear in mind is that it’s undergone literally decades of evolution while still being backwards compatible. The shells weren’t originally intended to be Turing complete. They were just a job launcher. What you use today would have been unimaginable when these shells were first designed. Whereas all other programming languages have had a drastically smaller evolution in comparison and yet still had a worse compatibility story. It’s very easy to be critical of the Bourne shell (and compatible shells too) because they are archaic by modern standards. But they weren’t written to solve modern problems. So it’s like looking at a bicycle and complaining how the designers didn’t design a sports car while ignoring the fact that technology didn’t exist and still push bikes are good enough for millions to use daily.
- pwg 2y agoYou are likely looking at this design from a modern system perspective. But the PDP-11 system that many of these designs were made upon had a minimum memory size of 4K bytes and with varying models that had different maximum memory sizes that are smaller than a single JPEG photo in today's world: PDP 11/45 max memory 256kbyte - PDP 11/70 max memory 4Mbyte. And this was the total memory for everything, the OS, and the users, and the system supported multiple users sharing the same machine at the same time. With those resource constraints, the design rules that determine good from poor are radically different than with one of today's systems with multiple Gb of RAM.
- JdeBP 2y agoAlso remember that in the early days Unix did segment swapping, with demand paging only coming in with BSD and the VAX. So there was no paging in just a tiny part of a big executable.