So what I wonder is this: is there a migration path instead? If the goal is to ultimately work on ASTs instead of treating software as a giant string, is there a way we can make incremental transformations to languages to move in that direction.
So far what I've considered is this:
1 - Automated formatting such as gofmt which eliminates any decisions around whitespace to culture people towards treating code as data rather than prose
2 - Language-aware editors that constrain user input to valid states based on 1
3 - Plugins for version control systems to optionally do diffs on ASTs rather than plain files
4 - Compilers that can operate on ASTs instead of strings
5 - Checking in ASTs rather than strings based on 3 and 4
6 - Updating editors 2 to operate on ASTs since 5 makes it reasonable to always work on ASTs rather than text
7 - Creating new styles of code editors that visualize and manipulate ASTs in ways that are independent of their text representations
There's probably steps I'm missing. I'm only just getting in to this space so I'm ignorant of most research that has been done in this area.