But has Javascript become so universally liked that it's the go-to tool for quick one-off scripts like this? Is it really much better or easier that you would choose it over, say Python or just a shell script?
Or is it that Javascript happens to be the best tool for this particular job?
I guess what I'm asking is, do most people reach for JS/Node over other languages for this type of thing? I suppose I still don't see it outside of the browser environment but maybe it's time to change that view.
I used to write scripts in python. I switched to node. Benefits for me.
1. Python by default requires tons of globally installed libraries. Node by default all libraries are installed local the the project. Nothing to learn. It just does it. That means I don't have to worry about trashing my system and I don't have to tell users a bunch of prerequisites to get it to work.
2. Node is ~8meg and installs instantly. Python is 18-30meg and the install has a long build process IIRC
I will still sometimes reach for python. I needed to parse an 8 gig geodata XML file. The libraries I tried in node were orders of magnitude slower than python for that particular task. I did try node first though since it's where I'm at.
I first tried my hand at Python in 2009. The problem of installing libraries globally was no longer a problem then and still isn’t today.
Installing node is faster until you have to install local libraries. I am currently working on a project whose dependencies consist primarily of Vue, Bootstrap, and a few very small libraries such as moment.js. Our node_modules/ is over 1000 individual libraries and growing. It takes 45-65 seconds just to do an npm install when I already have the libraries there. The build process takes 90 seconds on a brand new top of the line machine. Contrast with Python where that number is 0, and installing the dozen dependencies I actually have is a one time process that takes no time at all.
I used to fuck around with Gentoo Linux where I would always triple compile the latest gcc to make sure I had the latest and greatest and fastest. And even I think Node’s library ecosystem is a bloated unnecessary mess. I don’t have the words to write a more scathing review of it, but if I could I would. There is a night and day difference in usability and speed between Node and Python ecosystems and the latter wins by such a wide margin it is like they aren’t even in the same league.
And don’t get me started on how quickly the JS community likes to break shit. Remember when for a brief moment we were all supposed to switch to yarn? And then migrate back to npm? It’s insane.
> And don’t get me started on how quickly the JS community likes to break shit.
I totally agree with you on that one, but I would say the maturity of the JS ecosystem is really settling down, and now that MS owns most of it (Typescript, npm, github, vscode) I think it will only get more stable.
Also, Python community definitely shouldn't be throwing any stones when it comes to "breaking shit".
If you are talking about Python 2 vs 3, think of them as two separate languages where Python 3 can often use a lot of the libraries developed for Python 2. That makes it all make a lot more sense. Even with that, there was maybe a dozen times in the past 8 years, which is how long I’ve been writing Python code full time, where I felt a problem with the 2 vs 3 thing. They were all quickly resolved. This is unlike Node where things like file access change from version to version, and sometimes shit just doesn’t compile because gyp is of the incorrect version, etc. Node is very high maintenance.
It's basically equivalently easy to a python script. JavaScript and Python have almost identical semantics. I'd usuallty reach for node over python because I write JavaScript everyday at $dayjob, and I can I can do so almost without concious effort. Whereas I write python much less often, so it'd slow me down a little as I forget and have to look up details of the syntax, the names of functions, etc. I'm also much less familiar with the python library ecosystem, so I'd need to reaearch whichlibraries to use. Presumably a python developer would have this in reverse.
Bash is different. It's good for stringing toghether external commands, but rapidly becomes a mess if you need to do any complex data manipulation. Argument parsing in bash is also a pain.
There are many programmers working today who only know Javascript. I can’t speak to whether that’s the situation with OP or not, but it is common to see tools that I personally would write in Python being written today in JS, even sometimes by experienced polyglot programmers. I don’t know about “most”, but it is quite common. It surprised me a bit too, the first time I encountered it.
I don’t think it has much to do with “liked” or “best tool for the job” as much as it is simply “prevalent” or “popular”.
There are many quick one-off scripts that have no specifically best tool to implement them in, this totally seems like one of them.
I would reach for python if I needed some advanced text analysis - like nltk, spacy level - but otherwise I would reach for whatever language I was trying to improve my skills in or whatever language I was using the most in other projects so as to not have to context switch so much.
While I generally agree that you should use the best tool for the job, for small and simple scripts I see nothing wrong with picking a language your comfortable with.
I wonder, why do you think python is a better alternative? I would understand bash since it is dependency free, but I don't see any advantage for python vs. nodejs
How? Both Python and Node have some https client in their standard libraries, and both have headless Chrome drivers (what this script uses) in easily installed third-party libraries.
But has Javascript become so universally liked that it's the go-to tool for quick one-off scripts like this? Is it really much better or easier that you would choose it over, say Python or just a shell script?
Or is it that Javascript happens to be the best tool for this particular job?
I guess what I'm asking is, do most people reach for JS/Node over other languages for this type of thing? I suppose I still don't see it outside of the browser environment but maybe it's time to change that view.