Show Navigation
Conversation
Notices
-
shell + awk + make, three separate domains, three languages that have swollen to largely subsume each other, which means for many operations, There Is More Than One Horrible Way To Do It using this language trifecta.
And of course:
> You can write a Lisp in each one
Here is how people use them:
> When you see awk in a Makefile, you're seeing three intertwined languages, because make is a macro language that passes command strings literally to /bin/sh.
> Eighty percent of lines in a typical Makefile are literally shell, or variable assignments that are easily expressed in shell.
> bash and zsh add associative arrays and regex support to shell, which makes them semantically close to awk.
> Awk only has floating point arithmetic, and bash only has integer arithmetic.
So what #oil #oilshell aims to do, is to own the capabilities and domains of all three -- "composition of processes", "streaming computation" and "data-driven, incremental, and parallel computation" -- combined in a not-horrible way.
https://www.oilshell.org/blog/2016/11/13.html
-
@clacke Isn't that why perl was invented tho?
-
@hattiecat Partly. But perl isn't awesome at shell stuff and it doesn't do make stuff. It's a grown-up (or doped-up, depending on your perspective) awk.
-
@clacke I guess awk is a 'do one thing and do it well' kind of tool. Awesome domain-specific language for what it was designed for. perl is the Pathologically Eclectic Rubbish Lister - what it says on the tin.