I think that the future of programming consists of transpiling source code text from some "higher level language" to source code text in some "lower level language", then letting the "lower level language" compiler do the rest of the work. E.g. transpile Python2 source to Python3 source, then run the result using the Python 3 compiler. Going from Python 2 to Python 3 is the other way around, but should be do-able (on the assumption that Python 2 is "lower level" than Python 3). We no longer need to build "general purpose" languages. We only need to find ways to make building custom languages easier (goal: hours instead of years). Kinda like as simple as using a REGEX in any modern language. REGEX is a DSL for rewriting text, albeit with a lousy syntax and a line-oriented meme. We have better tools now. My favourite is OhmJS (
ohmjs.org). OhmJS can pattern-match things that REGEX can't. Like nested squiggly braces. OhmJS can let you say "and collect up all this other stuff inside of squiggly braces" without needing to write a full-blown spec for how to parse the stuff within the squiggly braces. Only several lines of code instead of a zillion lines of code involving painstaking detail. OhmJS lets you pick off and handle special cases, one by one (a great strategy, as espoused in Fraser/Davidson's Register Transfer Language (used in gcc) and further embellished by Cordy's Orthogonal Code Generator). I've been fooling around with these ideas - text to text (t2t) - and have built some simple tools that allow me to not write any Javascript code. [I'm trying to keep this short, but I'm willing to share repositories, ideas, etc. with anyone who is interested].
In fact, maybe an LLM could be used for this conversion? "Rewrite this Python2 code to Python3 code" - something like that.