For most of our big scripts at work, I've actually resorted to just running them inside a docker container, mounting my current folder. So tired of trying to get my env to match someone else's.
So true. You have to be very careful when writing python, because cool language idioms that you use (or function calls), may not have been introduced in say for example Python 3.5. So when someone runs it with a different interpreter it will not work.
Writing python scripts that not-python-knowing people could use, is an art.
Instead, I work for a company who's core was written in bash and perl, and those scripts still work today after 15 years.
That or I don’t have interesting enough dependencies :)
What is the dependency management solution for bash that it so much better than anything in Python?
Package management and a virtual env manager in one.
Python3 was a big stain because of those issues.
Python 4 could literally just be a platform shift to sort out paths, libraries, dependencies, documentation in order to try to solve all those problems.
It's just amazing how nutty things can be for tech we all depend on.
We would have never designed something that way on purpose.
Bash - as a non-expert I also feel is a bit wierd.
I almost what Computer Science God to come along and make a shell script, a clean light language like python/js, maybe something like Swift/Java, and then something like Rust but a bit easier - and they all feel a bit similar and integrate and the build tooling is fairly clean and the whole world can get along.
This is something I'd like to see addressed by programming languages. Wouldn't it be nice if you could say "pythonversion 2.7" at the top of your program, and it would use that version of the language for the remainder of the file?
> So the maintenance cost of scripts in Python or Go will be higher
For Go, yes. For Python it's very rare for an old codebase to break unless you are talking about Python2/3
Backward compatibility is king.
- I often encounter machines without Python or Go. I never encounter machines without Bash.
- Python and Go will probably change faster than Bash. So the maintenance cost of scripts in Python or Go will be higher.
- When you figured out something tricky on the command line, you can paste it into a Bash script verbatim.
- Bash is the perfect glue language. If the task at hand is to glue together some commands, nothing beats Bash.