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).
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.
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.
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.
3 comments
[ 1.8 ms ] story [ 15.9 ms ] threadWhile 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).
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... - this shouldn't be happening. Python version: http://stackoverflow.com/questions/1017621/why-isnt-python-v...
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.
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...