@Konrad Hinsen I agree, but I don't see the challenge as being very daunting. The answers lie in plain sight. I think we saw the early glimmers of solutions in the 1970s/1980s, e.g. with things like UNIX processes.
The original point of programming languages was to cause hardware to act in certain ways. The idea of "a programming language" was a caveman approach to programming hardware, necessitated by the limitations of early hardware, storage devices, etc. There was a pre-Cambrian explosion of various ways to build small programming paradigms, e.g. Forth, Lisp, Icon, Prolog, Smalltalk, etc., etc. Even FP was invented early on, but was sneered at for being too bloatful (today, it's still bloatful, but monetarily cheaper). One of the best ideas for programming hardware - UNIX and other O/Ss - were kinda side-stepped as fundamental programming paradigms in the rush to push FP forward.
The word "programming" has been repurposed to mean using only one of the possible options - FP, PVRsubroutine-based ("functions") - to program hardware. In fact, FP's sweet spot is that of converting hardware into calculators, but our "we've always done it this way" mentality has pushed non-FP concepts into FP and into CPU chips. CompSci has become the study of how to further push FP forward as THE single chosen notation for programming.
It appears that the basics of UNIX-y processes have been overlooked. CompSci relies on the existence of processes as scaffolding for FP, but overlooks the option to use these very principles as the substrate for program development, i.e. pure dataflow disentangled from accompanying control flow, total isolation, multi-language (actually multi-paradigm) and instead concentrates on pushing forward the outdated concepts of "programming languages".
The 0D / PBP stuff I've been tinkering with shows that processes can be liberated from heavy-weight concepts using more modern, but very common techniques (closures, queues, GC). OhmJS shows that we can rapidly build less-pathetic syntaxes than what we had in early paradigm-specific languages. T2T shows that we don't have to build compilers any more (we just need to build transpilers that map new languages onto already-existing compilers). The 0D / PBP stuff also shows that we can treat off-the-shelf drawing editors like program editors without being enslaved by 600 year old Gutenberg type-setting ideas. The current 0D / PBP stuff shows that we can use multiple languages in creating a single program (e.g. in one case, I built an SCN that used Prolog + Javascript + bash)