> it's Rube Goldberg machines all the way down
On another context, you have some processed data on the backend, and an infinitely customizable software system on the frontend... How do you keep them both in sync?
And yeah, it is by converting your data into a programing language; parsing it again; resolving incompatibilities; turning it into the presentation language; letting the user interact with the presentation representation; converting it back into the programing language; sending it back into the backend... But then you don't want a round trip on every single interaction, so you convert your backend code into the frontend language, so it deals directly with the presentation code... and it goes on.
Oh, on the backend side you have an application and a data layer, both using different languages and data representation; so you do all that dance again there... Oh, and now we want several independent layers between those too, so be prepared to do all of that again and again.
At some point we decided on the wrong abstractions for our mainstream architectures.