FWIW Googling “qefs bash” shows a bunch of references. I thought it was funny the first time I saw it … If I think back to 15 years ago when I first wrote bash, I think a code reviewer told me the same thing, haha.
Thanks for posting this. I was initially disappointed when I learned that Oil would be a superset rather than a translation target for OSH, but after reading these notes it makes a lot more sense. I’m really looking forward to seeing where this goes, and wish I had time to contribute.
Minor usage nitpick: when you say “reign in complexity”, you really mean “rein”. It’s a horse rather than a kingship metaphor. Funny how languages evolve!
OK, I’m glad it makes sense! I’m surprised more people haven’t pushed back on this, but I guess I explained it in many different ways.
I welcome constructive feedback if you don’t have time to contribute. Feedback from experienced shell programmers is most immediately useful, but also from programmers who don’t know shell. Oil is also aimed at people who know say Python or JavaScript, but purposely avoid shell (which appears to be a pretty large group of people).
I could also use feedback on these array rewrites from Python/JavaScript programmers. I think you will find the Oil version more readable than bash for sure.
It may be less familiar than Python or JS, but on the other hand you will gain a lot of shell idioms that you can’t do in Python or JS. (This may or may not matter depending on the problem)
The main difference is that Oil retains the bare words syntax for typability. And it has pipelines, && for sequencing, etc. Otherwise, it has Python-like data structures (still in progress), which is natural because it’s implemented in Python!
I don’t have an account on Zulip nor on IRC. What is “!qefs” problem, as no search engine reveals it?
"$Quote" "$Every" "$Fucking" "$Substitution"
FWIW Googling “qefs bash” shows a bunch of references. I thought it was funny the first time I saw it … If I think back to 15 years ago when I first wrote bash, I think a code reviewer told me the same thing, haha.
Thanks for posting this. I was initially disappointed when I learned that Oil would be a superset rather than a translation target for OSH, but after reading these notes it makes a lot more sense. I’m really looking forward to seeing where this goes, and wish I had time to contribute.
Minor usage nitpick: when you say “reign in complexity”, you really mean “rein”. It’s a horse rather than a kingship metaphor. Funny how languages evolve!
OK, I’m glad it makes sense! I’m surprised more people haven’t pushed back on this, but I guess I explained it in many different ways.
I welcome constructive feedback if you don’t have time to contribute. Feedback from experienced shell programmers is most immediately useful, but also from programmers who don’t know shell. Oil is also aimed at people who know say Python or JavaScript, but purposely avoid shell (which appears to be a pretty large group of people).
Thanks for noticing the typo! Fixed :)
I’m one of those people! I didn’t realize I was in the target group for Oil until now :)
Yes I just changed the definition of Oil to make this more clear:
http://www.oilshell.org/cross-ref.html#toc_0
The
shopt -s simple-word-eval
algorithm gets rid of “word expansion” and makes it a much simpler “word evaluation”:http://www.oilshell.org/blog/2019/08/22.html#toc_4
I could also use feedback on these array rewrites from Python/JavaScript programmers. I think you will find the Oil version more readable than bash for sure.
http://www.oilshell.org/blog/2019/08/22.html#toc_5
It may be less familiar than Python or JS, but on the other hand you will gain a lot of shell idioms that you can’t do in Python or JS. (This may or may not matter depending on the problem)
The main difference is that Oil retains the
bare words
syntax for typability. And it has pipelines,&&
for sequencing, etc. Otherwise, it has Python-like data structures (still in progress), which is natural because it’s implemented in Python!More background: How to Parse Shell Like a Programming Language