

Is it a bad time to learn Python? - Ryel
https://medium.com/p/1852949d147e

======
memracom
Python is so big and diverse that you won't get any clear answers to this
question. In fact I don't believe that anyone could possibly give a definitive
answer.

The fact is that Python is not a single language (PyPy, IronPython). Like
Linux, there are many competing Python distros to choose from. Many of these
distros target scientific users on the surface, but they include components
that are more generally useful such as NumPy for scaling systems to huge
amounts of data.

In my opinion it is not a bad time to learn Python because, at minimum, if the
Python core team stops everything tomorrow, there are thousands of packages
that you can use with Python, and there are some 20 years of development work
built into the latest 2.x version. You can leverage all of that by learning
Python.

Sure you could use Clojure instead, and again be leveraging a huge ecosystem
of packages and some 20 years of development effort (JVM mainly). Your choice.

Or you could go for cool and pick a new language with few users and few
packages available. That is not necessarily bad. It makes for a more exciting
life and those new languages will likely evolve to have ecosystems as big and
complex as Python or the JVM.

Python is one of the first non-functional languages (i.e. not LISP, not
Haskell, not Erlang) to include functional features such as lambda, iterators,
generators. At this point these features are generally considered the correct
way to write code rather than writing "for" loops. Read the docs for the
itertools library to see what you can do with this style of programming. You
can write monads in Python if you wish.

I suggest that you try to implement a minimum viable product (MVP) using
Python 3.4. Yes it is beta now, but it will be in a release version before you
finish your final product. More importantly, spend a week or two doing this
and at the same time, look around at available packages that you MIGHT need,
and see if they are available in a 3.x version. If you run into issues with
this, then after your first week or two, you will need to decide whether to
continue working with Python in the 2.7.6 version ( and fix your code to
conform) or whether to leave Python altogether.

If you don't actually try to build something in Python for a week or two, then
you won't have enough info to decide. Part of the decision is the hunt for
packages that have already implemented some function and the hunt for answers
to questions on StackOverflow. To really judge this you need to use the
language. And the same thing goes for any other language that you might be
considering.

The experts cannot help you. They know too much about their favourite language
and they are highly skilled in using that language. You need to make this
decision for yourself, and not just blindly copy the expert's decision.

And finally, consider what happens when a person who knows virtually nothing,
asks for an expert opinion. They will get a huge number of possible answers
and something like 90% of those answers come from a person with average skill
or lower in the tool that they recommend. They seem like an expert to you
because you don't know any better. The end result of this, repeated a few
dozen times, is what gave the world PHP.

Do you want to risk falling into this trap?
[http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-
de...](http://me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design/)

------
hardwaresofton
No.

While it might be a shame that Python 3 is getting adopted so slowly, Python
itself is in no way under fire. They're not the first language to have
molasses-like adoption of new versions, and they won't be the last.

People most likely stick with Python 2.x because it works, and it's one of the
best programming languages for quick prototyping (scripty stuff) ranging to
highly optimized stuff (numpy, cython, pypy,etc).

R is new and R is cool, but what about D? or what about Go? What about Rust?
Whenever I start new projects, I struggle with this, then ultimately go with
python because for most things, it's truly "Fast Enough", and many of the
higher level concepts that it gently leads you into (generators, lazy
evaluation) don't bash you over the head (as much as I like Haskell, it is not
an easy thing to learn).

------
ardz
Yes and no. Yes because of Python 2.x. and yes because it is an imperative
language which got stuck in the 1990's.

No if you want to write quick and dirty scripts or just learn OO-ish (OO -
object oriented) programming language. OO-ish fashion is coming to an end. Im
writing OO-ish because Python is not fully OO language.

Yes because of new languages like Rust, Clojure, Go. A lot of programmers
moved to Clojure because of it's simple syntax and a lot of libraries which
can extend language without waiting (sometimes years long) for a committee.
Just look at
[http://www.reddit.com/r/cpp/comments/1tyawn/what_are_feature...](http://www.reddit.com/r/cpp/comments/1tyawn/what_are_features_that_other_languages_have_that/)
\- this shouldn't be happening. Python version:
[http://stackoverflow.com/questions/1017621/why-isnt-
python-v...](http://stackoverflow.com/questions/1017621/why-isnt-python-very-
good-for-functional-programming)

In my opinion Python has stalled as a language and there is no future for it
maybe except for some quick dirty scripts.

Lisp was and still is a safe bet. Languages come and go, fashions change, but
in case of Lisp it is a matter of a few macros and a library to catch up.
Other ex-fad languages need a committee and long years to evolve.

