What's being big for code completion is short models that can generate snippets of code. It wouldn't be that hard to use these models in some way where software still has large structure, but no longer has a particular defined language. Software developers would write text in whatever form they feel like, to describe each component of the software. A compiler then processes the text into code on whatever runtime is of interest. You could do this today with a translation stage. What's interesting is that it could also generate debugging symbols and line numbers. You could open up the binary in gdb, and step through your human text, compare it to disassembly, watching variables change and functions get spawned. You could follow the instruction pointer through different sets of human text. You could establish a coding norm where your text is clear and logical, and diagnose bugs by looking for logical conditions, like normal. But most people wouldn't do that and debugging would then be a nightmare unless an interim form was used.