Given time, a Turing Complete Language will eat every domain specific language adjecent to it.

Even on the web, where declerative, domain-specific languages had a 20 year head-start, JavaScript is eating HTML and CSS.

Why? Turing Complete Languages are universal-machines:

  • They can replace any domain specific language
  • They transfer optionality from the platform implementation to 3rd party developers

Advantages of declarative, domain specific languages (DSLs):

  • USLICE
  • Sidesteps security, privacy, and performance problems
  • Implementation is decoupled from intent. The platform/OS has the option to optimise the performance of the implementation over time
  • Accessibility and other features can be baked into the Language, rather than bolted on as a feature

Problems with general purpose languages (GPLs):

  • Security, privacy, and performance problems. They can be mitigated with difficulty, but are at some fundamental level, unresolvable
  • A Turing Complete Language is a black box. There could be anything in there. The platform cannot optimise, reimplement or recontextualise scripted applications for other contexts without the risk of breaking things.