Continuing ideas in the same vein as the pipes stuff, I have a vision of the future of computing and it’s an odd one, and at odds with the goal of many people in many CS communities.
Lots of people remain wedded to the “think very hard about a problem, and then write down the answer” method of coding, but I don’t think it’s a win in the long term, and probably not the short term either. Failure is relatively painless in CS land, so taking huge steps to avoid tiny false starts doesn’t seem like a good trade. I envision future programs as sort of an organic synthesis of what has come before. In particular, programs will be made of semi-reliable subcomponents (similar to how shell scripts work) but they will muddle on as best they can in all circumstances unless proceeding is genuinely dangerous or impossible.
Right now the cleanest and safest boundaries for programs is the “program”. When one program executes (on a modern operating system) then no other program can muck around with its memory. I propose that we need to exploit the boundaries that the OS will enforce for us, and then use this enforcement to create large organic systems that are the composition of many many subprograms. These large organic systems will be almost as unreliable as the components that they are made out of, but I don’t think that they will be horribly unreliable. The errors in the subprograms and their flaws are not random. This layering of programs should help cover up at least as many faults as it exposes, so I think that the situation is far less dire than many people who hear the idea immediately make it out to be.
Basically, I’d like to extend the Unix way of doing things to all our large software systems and then see what comes of it. I think that it would allow people to generate new systems of startling complexity and ingenuity. These new systems would only work ~98% of the time, but most large software currently works about that well, and people aren’t complaining too loud. And if things were done this way, then it would be much much easier for people to engage their own creativity and do their own programming without getting a degree in computer science first.
The democratization of computing holds much potential, and I think this might be a way of trying to tap it.









