You got many rational reasons for starting learning Python with Python 2:
- It is easier syntax and string-handling for beginners. Else, look for someone who started learning Python with Python 3 and ask them about their experience. You probably won't find many here.
- There are more resources online for learning Python 2. Many MOOCs happily teach Python 2.
- ~5% of very popular libraries are not ported yet. Many unpopular libraries will never see a port. Some use this as an argument for switching to Python 3, but that is like being blind and being told to be happy that the number of inaccessible websites went from 10% to 5%, telling you there is no reason to look at those inaccessible websites.
- Many companies still use Python 2.
- Many distributions come with Python 2 installed.
- Switching from Python 2 to Python 3 is but a minor annoyance, mostly in paying the print-tax. Switching from Python 3-exclusive code to Python 2 is downright hell.
The reasons not to learn Python 2 and start with Python 3 are:
- Python 2 is deemed legacy and will see no security patches after 2020.
- Python 2/3 is painful for some developers and maintainers. They'll cloud this is in a "move Python forward" that is reminiscent of the "move the web forward"-movement (by deliberately breaking designs for older browsers, or forcing the user to download a font to make their layout work properly).
- Python 3 proponents don't care about you learning a new language, they care about adding 1 to the dwindling adoption count of Python 3. They see Python 2 as competition, a ghost from the past. Here the reasons they give you have nothing to do with you wanting the easiest path to mastering Python. These are either political or selfish reasons.
You'll be in the minority on HN if you go Python 2. But realize that HN's stance on Python is not a beginners stance. They use features of the language that you won't use for another 2 years. They have very strong opinions on 2 vs. 3, alternating between calling it a completely different language, and the same (but improved) language, whenever it suits their argument.
> Maintaining a Python 2 and 3 compatible codebase in a PITA.
I maintain multiple Py 2-3 compatible codebases, both academically and commercially. It's not hard, because I develop in Python 2, while writing Python 3 compatible code.
Python 2 is a beautiful language as powerful as:
import antigravity
print "Hello, world!"
There is nothing a beginner can't do in Python 2 that he/she can do in Python 3.
If Python is a different language and should be treated like so, then I don't want to switch to this other language, or have a project support two different languages (I'd switch to Go if having to switch languages). For all intents and purposes: Python 2 works just fine. Google did not need Python 3 when they first released TensorFlow a year back.
> If you start a project today and make it Python 2 + 3
Then you are compatible will the largest amount of users. That's what matters to me: Somebody on a fresh install being able to pip install my library, no matter if it is Python 2.7+ or 3.4+. All other reasons are politics.
> this isn't about corporate employees or banking apps from the 90's.
No, it's about banking apps from the 00's and 10's.
As someone who asked the same question a few years back (and gladly received the answer: Python 2), I'd suggest you learn both.
Does not matter which language you start in, as long as you can write Python 2/3 compatible code. Perhaps starting with Python 2 (and the fantastic "LearnPythonTheHardWay") helps with this. You'll just have to unlearn a few Py2 warts like xrange and using print statements with ellipses.
You are not being progressive, nor doing your users a favor, if you go exclusively Python 3. Even if the language owners decided not to be backwards compatible, your code still can be (and, IMO, proudly should).
As you arrive to a point where you want to use Python 3 exclusive language features, you'll be at least advanced in Python enough, to form your own well-informed opinion on the matter. I myself don't feel like library support for Python 3 should be the deciding factor for a switch. That's like switching to exclusively designing for a certain browser version, because most websites render just fine, leaving users stuck on IE6 without accessible content.
And, to an extend, I sympathize with the viewpoints of the singularity adherents.
Collective intelligence is a version of Conway's Game of Life, with more complicated rules. It is possible to manipulate the canvas and the rules each cells makes, resulting in the canvas dying (information explosion/implosion). It is possible to make a program that transforms the canvas into a single glider (singularity). Both would obviously be very bad for humans.
When earth faces a physical meteor, we have the science to detect it, track it and predict its future path. But what to do when we face an information meteor? The article states that Shannon's paper was the biggest contribution to information theory, but it seems to me we still have a long way to go on information theory. And we haven't seen the Einsteins and Manhattan projects yet, that physics has seen.
Super Intelligence is the information theoretical variant of the perpetuum mobile.
Like the article made so aptly clear: No matter the performance of the machine, if its input is not varied, information-rich, complete enough, it will not learn. Mahoney formalized this by looking at the estimated number of bits a human brain processes during its lifetime. The internet currently does not hold enough information to equal the collective intelligence of the world's brains. A lot of this information can not be created freely nor deduced/infered from logical facts: it requires a bodily housing and sensory experience, and an investment of energy (and right now GPU farms take up way more calories than the brain).
Compare AGI with programmable digital money. A super intelligent AI, by a series of superior decisons, could eventually control all the money. But then there is no economy anymore, just one actor. That's like being the cool kid on the block owning the latest console, but nobody around left to make games for it. There is a hard non-computable limit on intelligence (shortest program to an output leading to a reward), because there is a limit on the amount of computing energy in our universe. But intelligence is also limited by human communication. How useful is an AGI-made proof if humans need aeons and travel to other universes to parse it? If intelligence were centralized by an AGI then there would be no need to explain anything to us: we'd be happily living in the matrix.
Some investment firms are just reading "software" whenever they read "AI". This allows them to apply their decade-old priors to what, today, is essentially the same. Yes, both the human intellect and human manual labour will see continued automation with software and hardware. I think many abuse rationality to justify their singularity concerns based on a very ape-like fear of competition. They learn how to do addition in their heads, and then see electronic calculators as existential threats. "What if they could do addition by themselves?".
The real threat is in "semi-autonomous software and hardware". Self-controlling "mindless" agents that perform to the whims of its masters. We face the repercussions of that way before we find out how to -- and have the courage to -- encode free will AGI into machines, a perpetuum mobile of ever-improving intent and intelligence.
The author makes mention of being able to flick through hundreds of patients to find "the saddest case". (I think this is really only telling of how the author views the world).
This used to be possible, but now there is just a "meet a patient" button, showing a single random patient at a time, which works more like StumbleUpon than Amazon product listings.
Now I need to actually invest way more time to find the "saddest case" (in more polite terms: A case that resonates with me, usually a child with a life threatening disease, but a perfectly viable treatment option). Also, skipping patients was mentally easier for me when they were collections on a page, than when there is a single patient on the page, and skipping to the next may mean you never see the patient again.
I used to donate regularly to Watsi, but recently I have churned, as they have de-emphasized the p2p aspect over universal healthcare. They now seem to be in an awkward split between two projects, where I'd like to see them stand firmly in either side of the camp.
I really enjoyed being able to see the patients, hear their story, get updates on their progress, and receive a "thank you" from their loved ones. Is that voyeuristic, bad, playing God? Perhaps. Should you be able to give blindly, with just an abstract generic result in your mind's eye? I'd agree that is better.
But it worked for me. It worked for Watsi. It worked for multiple patients receiving around 1000$. It just does not work for the hate and outrage brigade who want to signal that: doing good is not good enough if doing good makes you feel good.
I don't care that the SV elite commercializes/optimizes foreign aid to the point of a one-click-checkout meat market at Amazon. I don't care that it is probably predominantly white people giving to black people in a weird reverse kind-of cultural appropriation (black guilt: why can't we solve our own problems?). I don't care that people suffer after Christmas donations dry up a few months later. Keep hammering these points though and I may quit charity all together: I don't want to think about things such as race when donating. That is just no fun, not easy on the mind, not comfortable.
Exploit it. All commercial companies are doing so (Watsi is competing for my attention). Why not manipulate people into giving instead of clicking on advertisements? That only hurts my oversized wallet (and the refined taste of the outrage brigade).
- It is easier syntax and string-handling for beginners. Else, look for someone who started learning Python with Python 3 and ask them about their experience. You probably won't find many here.
- There are more resources online for learning Python 2. Many MOOCs happily teach Python 2.
- ~5% of very popular libraries are not ported yet. Many unpopular libraries will never see a port. Some use this as an argument for switching to Python 3, but that is like being blind and being told to be happy that the number of inaccessible websites went from 10% to 5%, telling you there is no reason to look at those inaccessible websites.
- Many companies still use Python 2.
- Many distributions come with Python 2 installed.
- Switching from Python 2 to Python 3 is but a minor annoyance, mostly in paying the print-tax. Switching from Python 3-exclusive code to Python 2 is downright hell.
The reasons not to learn Python 2 and start with Python 3 are:
- Python 2 is deemed legacy and will see no security patches after 2020.
- Python 2/3 is painful for some developers and maintainers. They'll cloud this is in a "move Python forward" that is reminiscent of the "move the web forward"-movement (by deliberately breaking designs for older browsers, or forcing the user to download a font to make their layout work properly).
- Python 3 proponents don't care about you learning a new language, they care about adding 1 to the dwindling adoption count of Python 3. They see Python 2 as competition, a ghost from the past. Here the reasons they give you have nothing to do with you wanting the easiest path to mastering Python. These are either political or selfish reasons.
You'll be in the minority on HN if you go Python 2. But realize that HN's stance on Python is not a beginners stance. They use features of the language that you won't use for another 2 years. They have very strong opinions on 2 vs. 3, alternating between calling it a completely different language, and the same (but improved) language, whenever it suits their argument.
Pick wisely.