4 ms·
> Like Unix, C was a success born of failure. In both instances, programmers took the best parts of projects that were doomed because they sought to do too much
by musicale 4y ago
> Like Unix, C was a success born of failure. In both instances, programmers took the best parts of projects that were doomed because they sought to do too much. Multics, which spawned Unix, was—at its peak—only used on about 80 computers worldwide, and CPL, which ultimately led to C, was abandoned by Cambridge researchers in 1967 without being completed.
Unfortunately for C and Unix, it turned out that features like memory safety (PL/I) and ring security/ACLs/MAC (Multics) were actually good ideas.
Of course memory-safe C/C++ compilers/ABIs/runtimes are possible and seem like a very good idea - certainly if you have the hardware (CHERI) or are willing to take a performance hit (probably acceptable considering that computers are fast enough to run apps in JavaScript/Python/Java/etc..)
Unfortunately Linux inherited Unix's security architecture and we've ended up with a hodgepodge of stuff like SELinux, AppArmor, hypervisors, containers, gVisor, etc. to try to fix it. And of course it usually runs on vulnerable hardware which has prioritized speed over security.
- cryptonector 4y ago> Unfortunately for C and Unix, it turned out that features like memory safety (PL/I) and ring security/ACLs/MAC (Multics) were actually good ideas. Yeah, but perhaps the real misfortune was how small the obsolete PDP-10s that DMR, BWK, Ken Thompson, et. al. were working with.