...or not. Just because you got your knickers in a twist over python versions and you don't understand the use cases for multiple references to a mutable variable, doesn't mean no one else can understand these things.
IMO Recommending R as a replacement for Python is like recommending a VW Beetle rigged to explode if it hits more than 2mph as a replacement for a beat-up old family car that is missing two tires.
Python might have it's pain points but R is straight up the most horrendous programming language I've ever used, including Malbolge and Brainfuck in that ranking. The only valid reason people ever present me for using this language is "a lot of other people wrote stuff that is relevant for statistics in R and why throw away all that work?".
Seems more like an attack on a straw-man Python ecosystem.
Section 1, on there being two versions of Python, is a bit daft. It's been settled: use 3.
Sections 2, 3 and 4 are attacking Python for not behaving in the way R does. For what it's worth, everyone struggles with objects being passed as references at some point or other -- for me it was not realising keyword function arguments' default values are evaluated at definition time, not call time. In any case, the alternatives would not work in Python.
Section 5 is attacking Python for not having RStudio. Personally, as a long term vim user, I've recently tried Spacemacs and found being able to paste to REPL a huge time-saving feature. I'm sure there are plugins for vim that can do this too, it's just it was enabled and discoverable in spacemacs.
I get that R is good for statistics. It's probably better than Python for stats. But Python is a general purpose language that really gets a lot right, which is probably one of the reasons for its growing popularity in Machine Learning.
I realize the default kwarg thing trips people up, but there’s always been this great pair of pages in the Python docs titled Data and Execution models. They take an hour or two to read, but make the language so crystal clear.
All four of these are positive points for the projects I manage
- 3 is nicer language to work in, transitions have been smooth
- I like different package managers for different purposes (pip for source or pure Python, conda for heavy precompiled binary packages, apt/yum for system packages)
- shallow copy makes memory management easier by default
- no built in stats structure: if there was, it would be the hammer looking for nails everywhere. Ever worked in MATLAB? Everything is a goddamn matrix (not true anymore but still).
A testament to the language and its extension APIs is that NumPy and Torch Tensors are very comfortable to work with yet aren’t built in data structures.
I agree that R has it's benefits, but zero of the points in that article appear solid when you actually spend time with Python. Have to choose Python 2 or 3 for a new project? Guess what, pick version 3, because you know - you could say the same thing about Ubuntu 16.04 or 18.04 ?
There's seem to be a pattern where some people consider simple languages an insult to their intelligence and will fight its adoption with whatever cheap shots that's available. This seems to be such a case.
Yeah, it's the problem with that article in general - the author doesn't appear to have decent experience in Python and if she/he really thinks PyCharm is not a decent IDE, then I don't really need to listen to the remaining story.