I've always been confused that in ${current_year} people are still directly writing huge + complex shell scripts.<p>Compare/contrast Javascript, another language we're "stuck with": while you <i>can</i> still directly write it, many people don't, instead using transpilers to <i>target</i> Javascript as an "object code" from some other, stricter language (e.g. TypeScript, ClojureScript, arbitrary native languages via Emscripten / WASM compiler targets, etc.) Via these languages/compilers, everybody who wants compile-time strictness can have it. And you can even get <i>runtime</i> strictness that Javascript itself doesn't have, as the checked semantics of these languages will often be "lowered" into the resulting Javascript by generating explicit assertions (usually this is on by default, unless you ask for an optimized build.) But the output is still just "Javascript", that any browser can run.<p>Why hasn't a similar thing happened for POSIX-standard Bourne shell? Why are we seemingly "satisfied" with writing + maintaining 5000-line install.sh scripts in our codebases, with a bunch of extra mental overhead / tooling required to keep the code sane and clean; when we could just be writing in a sane and clean language to begin with?<p>Is it just that nobody's bothered to create such a language/compiler? Do I need to be the one to step up, here?