24 ms·
I think one of the problems of those "configuration languages" is that you can extract semantic information without knowing the target, e.g., with has a specifi
by kokada 1y ago
I think one of the problems of those "configuration languages" is that you can extract semantic information without knowing the target, e.g., with has a specific meaning in GitHub Actions but it is otherwise an unremarkable word in the YAML specification.
But when working with real programming languages it is completely different, you can take semantic information from the current code, and you can have things like types to give you safety.
- JohnMakin 1y agoThe problem is most configuration languages are declarative vs imperative like most “real” languages are. You could probably levy the same complaint against declarative languages in general - it’s just a different way of thinking
- kokada 1y agoNix as used in NixOS is a declarative language and there is none of the issues I cited by being a "real" programming language (or as the article talks about, having "abstractions" like builtin.map). You can pretty easily setup a LSP to get code-completion (even between different projects, like NixOS vs Home-Manager). There is no proper type system in Nix but the module system does supplement it well.