| FWIW this wiki page I started may help frame discussions like this: Survey of Config Languages - https://github.com/oilshell/oil/wiki/Survey-of-Config-Langua... It puts a bunch of languages in 5 cateogires. Terraform is at least not a YAML DSL, a very common pattern which I don't understand the appeal of. I guess the main appeal is that you can copy and paste, and pretend it's data in simple cases. But even Terraform suffers from the problem of "external" DSLs -- you end up needing a general purpose language. And yes this pattern has repeated itself so many times. Awk and Make both grew into general purpose languages, and in Make's case it's particularly bad. Most SQL dialects have also grown a pretty bad stored procedure language. So I do think making internal DSLs in general purpose languages is more promising. But they have to be designed for it. There have been many attempts to use Python as a DSL/config language, but it's missing a few things for that, and gets awkward pretty quickly. Ruby does a bit better, but it's not perfect either. It's fairly big and heavy if you just want a config file. |
It's easy to write an interpreter for - everything maps to either a scalar, list or a hashmap in any language.
It also looks pretty familiar to most people.
It gets abused an awful lot but so does every language that gets popular.