This is already planned and a prototype exists.
The end-goal is for flows to be able to seamlessly be changed from “block mode” to “text mode” and back, without any loss in data (except formatting). This would have all the benefits you described, with the primary one being the ability to move code between flows.
There’s a some problems with this sort of conversion but it’s definitely possible. For example, variables are currently referenced by block ID, so we need to either procedurally generate variable names for blocks without tags or force all blocks to have tags/names. Block tags also currently allow spaces which can be difficult for parsers.
The language/syntax will be custom (probably JS-like) but since you’ll be able to see what blocks generate, it shouldn’t be too tricky to learn. Before release, we’ll have proper autocomplete hints for filling in block names, etc.