As someone who came to it from Ruby, that is often my question about Python :)
As someone who came to it from Ruby, that is often my question about Python :)
After Java, CPP and Node, Python looks to me as the greatest of all. Syntax is just comes to you and usually does not produce problems. And Python even right now has so many areas of application, and does it without much compromises, that I wonder why would I want to change anything.
Anyway, long winded answer that i think i prefer node after a lifetime of python
I am currently in my third hour of getting a pipenv+pyenv python project running. I started the project this past summer, and have reinstalled it three times. Each time I have spent 3-6 hours getting pipenv working, and each time the errors/problems/workarounds are completely different!!!!!!
I'm not the one doing any dirty work though...
I find the exprience working with TypeScript and Python/Mypy very similiar. (in VSCode)
> Async in python has a history of being weird, from twisted, to yield from, and finally to async/await (which still has some issues, but is much better). I thought javascripts "callback hell" actually made sense, promises made it easier, and now async/await which works great.
Both ended up with async/await. I find async programming is similar annoying in both Python/JS.
> Pip has a long way to go to catch up to npm/yarn
I don't see a big difference working with pipenv/poetry compared to npm. Once your project structure is configured it boils down to `pipenv install`/`poetry add`/`npm install`.
> Virtualenvs are weird, even though node_modules can be bloated i think its a lot more intuitive.
Again, once configured I don't see a big difference (from a user's perspective). One system puts your packages into `npm-packages` the other puts them into `some-venv-dir`.
I think npm works better out of the box, but you can configure your python dev enviornment very similar, if you want, without much effort.
To me working in either TS/Python+Mypy feels pretty much the same.
An Apollo/yoga graphql setup with node and prismsa is just really, really productive.
There is also the advantage of sharing environment between front and backend, I mean, there are just so many hours, it’s hard to keep up with two major languages and their communities (two and a half if you’re using typescript).
I truly love that in Python I can look at my import statements and know what code is happening in a file!
But, man, it is tedious to so often have to use 5 clumsy lines for what Ruby could have said better in 2...
Sure, Ruby is not "consistent" in that there are several ways to do things. And with more tools at your disposal, you can get many things done easier!
I can understand why a lot of people start with Python. I can't work out why they stick with it once they become more advanced and understand its limitations though.
I believe that if you're walking the line between software-development and data-science Python does an excellent job of bridging the two.