
Ask HN: Is Python dying? - tanlermin
Go for systems and backend, JS for frontend, Julia for data science.<p>It seems python is assaulted on all fronts..would now be a bad time to invest in a python stack, or will efforts to future-proof python (numba, blaze, nuitka, pyjion, Django channels, pyparallel) bare fruit?
======
viraptor
That may be a view through the distorted HN lenses. Spend some time on Lambda
the Ultimate and you'll think imperative programming is dying.

Go is new and has lots of issues. It's annoying on many fronts and badly needs
improvements in packaging area. It's good for some things and worse for
others.

JS is for frontend, because it's the only supported language. (although there
are python-to-js compilers available if you really want to use it)

Julia for data science? Only if you started recently. R, numpy/scipy,
mathematica, matlab, etc. still rule data science.

The projects you listed for python are fairly new. I expect half of them will
be dead and forgotten in a year and other half will get more popular, but
they're not future-proofing anything. Python always had a lot of experiments
going on and will likely get more of them in the future.

Trying to predict language popularity is like trying to play on the
stockmarket. Unless you can research what's really happening inside the
biggest players (companies/organisations) you won't get realistic answers.
Just learn what you like and what's relatively popular. Expect you'll need to
learn something else in 5 years.

BTW: Go was created in 2009, julia in 2012, reasonable js (ecma5) in late
2009. Python's around since 1991 - do you really expect it's just going to
disappear?

~~~
2bitencryption
My prediction is that one day some alternative Python interpreter (Stackless,
or GIL-less, or which compiles ahead of time to machine code, or something
like that) will go from being merely an interesting concept to a dominant
runtime. Python is such an excellent language, and it only has a small handful
of elements holding it back from being even better. I feel like eventually
something has to give, and either there will be a radical new official Python
runtime, or an alternative one that becomes the de-facto standard (Pypy,
Jython, Cython, Stackless, etc).

Or maybe that's just wishful thinking. I just want it to be so.

~~~
pmarreck
Object-oriented languages are Dead Men Walking due to the problem of global
mutable state management in any medium- to large-sized codebase, coupled with
dependency/inheritance hell, leading to complexity hell, leading to geometric
progression of tech debt. Compounding this is the lack of good unit test
suites across the board, meaning that even if you write absolutely perfectly
tested and maintainable Python (or Ruby, or Java, etc.) code, you still are
stuck using libraries that have not been written with that in mind.

And yes, I'm talking broadly about the rise of FP.

~~~
pjmlp
You mean all those FP languages that happen to support OOP as well?

Lisp, Clojure - CLOS

OCaml - The O is for Objective, e.g. Objects

Scala, F# - Hybrid FP/OOP

Haskell - Type classes support polymorphism and extensibility.

Erlang - Message passing as envisioned by Smalltalk

So what are FP languages that have zero support for OOP concepts and are on
the rise?

~~~
aninhumer
>Haskell - Type classes support polymorphism and extensibility.

While most of your examples are valid, I don't think Haskell is remotely
object oriented. Type classes are not classes.

~~~
pjmlp
Any Haskell coder knows that.

Quoting myself

> ... support polymorphism and extensibility.

OOP isn't only the C# and Java view of the world.

~~~
aninhumer
Polymorphism and extensibility are _features_ of OOP, but Haskell implements
them in a rather different way to most OOP languages.

I realise people disagree about what exactly should be considered OOP, but
personally I think not including inheritance in the definition broadens the
term beyond usefulness.

~~~
bulutsuzku
There is no disagreement, Smalltalk is the object system. Object-orientation
was invented in Smalltalk. Other languages and systems are just poor
imitations.

------
Alex3917
Not only is Python not dying, but it's stronger than it's ever been. The
majority of top colleges are now teaching CS using Python. It's completely
dominant in academia, finance, and startups. It has the best libraries and
documentation of any language. And Django has arguably the strongest community
of any open source project period.

That's not to say there are zero problems, but Python is so much better than
all the other alternatives that this just seems like a ridiculous question.

~~~
switchbak
I wouldn't say Python is dominant in startups across the board. Though it is
strong in data-heavy environments (with all it's issues nonetheless).

I've been a Pythonista for over a decade, and the API scene isn't quite as
utopian as you describe. Date/time handling in particular is a really poorly
handled area, but there's quite a few out there.

That said, in general I agree the 'batteries included' approach is good, and
the libraries _tend_ to be easy to use for most tasks. Compared to most Java
libraries, it's a breath of fresh air.

~~~
ForHackernews
> Date/time handling in particular is a really poorly handled area

Just use Arrow [http://crsmithdev.com/arrow/](http://crsmithdev.com/arrow/)
everywhere, all the time(s). Now your date/time problems are solved.

~~~
kdeldycke
Couldn't agree more. Developing for the last couple of years code that is
highly sensitive to dates and time, and Arrow saved my life.

------
hoodoof
[http://www.simplyhired.com/search?q=python](http://www.simplyhired.com/search?q=python)
Showing 1-10 of 169,970 Python jobs

[http://www.simplyhired.com/search?q=ruby](http://www.simplyhired.com/search?q=ruby)
Showing 1-10 of 128,305 Ruby jobs

[http://www.simplyhired.com/search?q=java](http://www.simplyhired.com/search?q=java)
Showing 1-10 of 190,126 Java jobs

[http://www.simplyhired.com/search?q=golang](http://www.simplyhired.com/search?q=golang)
Showing 1-10 of 219 Golang jobs

[http://www.simplyhired.com/search?q=julia](http://www.simplyhired.com/search?q=julia)
Showing 1-10 of 206 Julia jobs

[http://www.simplyhired.com/search?q=%22python+3%22](http://www.simplyhired.com/search?q=%22python+3%22)
Showing 1-10 of 151 Python 3 jobs

[http://www.simplyhired.com/search?q=%22python+2%22](http://www.simplyhired.com/search?q=%22python+2%22)
Showing 1-10 of 141 Python 2 jobs

~~~
zzzcpan
[http://www.simplyhired.com/search?q=perl](http://www.simplyhired.com/search?q=perl)
Showing 1-10 of 220,528 Perl jobs

And you know, Perl is dead.

Basically, Python gave a choice to a lot of people to either invest time into
3.x without any important improvements or to keep using 2.7 and invest time
playing with other languages. Which in turn accelerated Python's decline and
raised questions about it dying, promoting the idea even more. But there is no
need to worry, it's not a bad thing.

~~~
make3
... python 3 is a really a fairly small effort to learn when you know python
2. You'll learn most of what you need to know in a few days, tops. This
comment feels extremely disingenuous

~~~
startling
You don't invest time to learn it, you invest time by writing or converting
code.

~~~
X-Istence
Writing code for Python 3 and 2 isn't that difficult.

I've been doing it for a while now while working on a variety of different
libraries for the Pyramid project, as well as hacking on WebOb which is Python
2 and 3.

Especially if you drop Python 3.2 and lower from the Py 3.x series you have
very little trouble writing code that runs on both (with a shim or two here
and there).

It's not nearly as difficult as it once was.

------
normac
Python occupies a niche that isn't going away any time soon: making it easy
and natural to write readable, straightforward, more-or-less imperative,
slightly boring code of the type you learned in CS 101.

This is still a very practical way to solve many problems and I'd wager for
most programmers it's still the easiest way to do things. Maybe it will always
be. It's hard to imagine there'll be a generation of programmers some day that
finds it easier to compose dozens of tiny modules, chain callbacks with a
variety of async abstractions, and implement as much as possible in tiny
idempotent functions.

I feel like the worst case scenario for Python is that it will fade into the
wallpaper of mature and unsexy languages like Java and C++ that nonetheless
run the world and will probably be around for another 100 years at least. I'm
guessing Guido would be cool with that.

~~~
tanlermin
Why can't Julia fill that role?

~~~
opensandwich
Try to do machine learning in Julia; it is difficult. If I want to say fit a
gradient boosted tree or SVM its not support in Julia, whilst appears in
Python/R libraries. Also, with Spark being more and more popular in the data
science landscape, the lack of Julia bindings is also a no for the data
scientists I work with (Spark has Python/R bindings).

~~~
aut_dan
You will have to reach a little deeper for machine learning methods not
supported by Julia. XGBoost has a Julia interface and you can google Julia SVM
for myriad of alternatives. Packages like Mocha and MXNet are a few deep
learning alternatives. PyCall is also an easy solution for interfacing with
Python for things such as pyspark. It also has some of the most convenient to
use parallel / distributed computing tools for numerical computing.

Point being that even if Julia is not there to replace Python, there is still
a strong case for using it as a way to augment Python workflow.

~~~
eva1984
If Julia just want to replace Python as the glue interface, it seems to have
no chance winning...What it can do, as a glue layer, that Python cannot do?

~~~
tavert
It's much easier and lower-overhead to call into C, Fortran, and soon even
C++, from Julia than it is from Python. If there's a library in Python but not
yet in Julia, it's really easy to call into Python from Julia.

What you can do in Julia that you can't do in Python is write high-performance
library code in the high level language. If you need to write custom code that
isn't just using stock numpy or scipy algorithms right out of the box, and
needs to use custom data structures and user-defined types, Julia is a
fantastic choice. You can try with Cython or Numba or PyPy, but you're either
working with a limited subset of the language, or forgoing compatibility with
most of the libraries that people use Python for.

Julia feels like writing Python but does not allow some of the semantically
impossible-to-optimize behaviors that you can find in Python, and has a type
system that you can use to your advantage in designing optimized data
structures for the problem at hand.

~~~
eva1984
Thanks for explaining this.

As to my own experience dealing with data, the degree of freedom, as basically
a programmer, is small. Specifically, I have to think and bear tools in my
mind from the start. Which might not be ideal, but cant avoid anyway.

------
21
Interesting stats regarding version 2/3 usage from a moderator of /r/python
today:

Here's the breakdown by which Pythons were used to download from PyPI in the
last two weeks:

    
    
      2.7     85.90%
      2.6      6.66%
      3.4      4.64%
      3.5      2.09%
      3.3      0.56%
      3.2      0.12%
    

(Two weeks was ~133 million downloads)

[https://www.reddit.com/r/Python/comments/45sm94/what_are_the...](https://www.reddit.com/r/Python/comments/45sm94/what_are_the_most_recent_python_3_vs_python_2/czzy5wa)

~~~
jsmeaton
Be aware that PyPI isn't a great way to get accurate statistics. One of the
reasons is when tox tests via a matrix, Python 2.7 is usually the first python
listed, and if it fails then Python > 3 will not be tested. Also, it'll reuse
libraries from the pip download cache.

I don't doubt that python 2.7 accounts for the majority of the downloads, but
I sincerely doubt 2.7 usage is at ~85%.

2.6 usage is probably almost exclusively RHEL/CentOS 5/6 system pythons and
not representative of actual projects.

~~~
shadowmint

        Be aware that PyPI isn't a great way to get accurate statistics. 
    

You can't just ignore a bunch of statistics because they aren't convenient to
you; that's not how maths works.

Statistical sampling is based on the premise that your sample is randomized
from the total population; I would argue that the stats from pypi represent a
reasonable random sample of python users around the world.

Certainly, you can argue otherwise... if you care to provide some meaningful
alternative statistics?

~~~
scrollaway
GP has argued otherwise. PyPI sampling is not random. It is heavily influenced
by automatic downloads and such and completely ignores that most simple 2.x
libs / non-3.3-tagged libs will work just fine on python 3.

In other words, it is neither random nor representative of python 3 usage,
failing the premise you yourself mentioned.

There's no easy way to determine Python 3 usage overall. Your best bet is to
go around polling companies of all sizes as well as indie devs. What you will
find is that:

1\. Some amount of people still use Python 2.x because they don't know any
better

2\. Some amount of people want to use 3.x, but still use Python 2.x because of
incompatible dependencies.

3\. Some amount of people (companies mostly) still use Python 2.x because a
migration to 3.x is currently too costly.

1 -> This is partly caused by FUD. Hating on Python 3 has become a popular
past time of people who don't know how to be productive otherwise. It's also
caused by the very high amount of tutorials etc around the web that "require"
2.x because, for example, they have an unparenthesized print call (relevant
XKCD: 353). Arguably this is one of the big failures of the 3.x push.

2 -> That number is constantly diminishing as more dependencies become
available on 3.x. The most recent big win is Scrapy, a massively popular
scraping framework, which just finished its 3.x port a couple weeks ago. It's
an ongoing process - we are in a much better state than we used to be, the
Py3WOS is looking almost entirely green.

3 -> This number is mostly irrelevant as it tends to be in closed ecosystems.
So maybe CloudShareBuzzr Inc. is using Python 2.7 internally, but they don't
produce anything open source so it doesn't affect the rest of the ecosystem.
As new, major features are constantly added to Python 3.x (venv in 3.3, pip in
3.4, async def in 3.5), eventually the cost of switching will be worth it.

~~~
BuckRogers
>So maybe CloudShareBuzzr Inc. is using Python 2.7 internally, but they don't
produce anything open source so it doesn't affect the rest of the ecosystem.

It does matter because that means if you ever want to do it as a job, you HAVE
to learn Python2 for that gig at CloudShareBuzzr. Paying your bills is always
going to top using "the latest version" of anything. I'm not sure why people
ignore or miss that point.

Python3 is the optional language, 2 is mandatory if you want to get paid.

~~~
Veratyr
I don't believe 2 and 3 are different enough that this theoretical company
would turn someone away for being experienced in 3 rather than 2.

Learn that print doesn't need parens anymore, a few renamed modules, that
Python 2 str is mostly equivalent to Python 3 bytes and Python 2 unicode is
mostly equivalent to Python 3 str and you're most of the way there.

~~~
BuckRogers
It does make you more immediately employable. In sum I agree, but why is the
inverse never true? You can learn and use 2, since that is the advantage for
employment, then use 3 when you need to just as easily.

Let the tech live or die based on its actual merits (employment, technical
etc), not trying to get more people onboard with propaganda. Considering the
money is with 2, I think what you said backs it up even more. 3 will be easy
to pickup when needed.

------
windlep
Yes, Python is dying, that's why it just moved up in the Tiobe rankings to #5,
displacing PHP (which obviously no one ever uses):
[http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

It's dominance of science is why Python has 25% science talks this year at
PyCon, and why we see articles like:
[http://www.infoworld.com/article/3012442/application-
develop...](http://www.infoworld.com/article/3012442/application-
development/python-scales-new-heights-in-language-popularity.html)

But yes, if you didn't know any languages, then of course you should invest in
an immature language with no mature libraries for the tasks you need to
complete, because you were given a few months of extra runway time by your
boss to fill-in the library ecosystem instead of getting your job done. We'll
ignore that PyPy places you damn close to Go in terms of performance (except
with mature proven libs), and that usually your task won't be CPU-bound
anyways (the GIL release on I/O tasks)....

Why do troll questions like this even hit the front page of HN?

~~~
karangoeluw
> displacing PHP (which obviously no one ever uses

21% of the _Internet_ uses Wordpress, which is built with PHP.

~~~
scriptproof
In this case (Wordpress), PHP is used by end users, not by programmers.

------
jerf
The word for Python is _mature_. If fireworks aren't going off with every
release, it's because it's past that phase of life.

The only concern I have for Python is exactly the temptation to keep adding
features and chasing other language's tail lights. I've recently gotten the
chance to see a fairly novice programmer dip toes into some Python-based
testing code, and it's definitely gotten pretty easy to make awfully magical
and complicated Python code after all the decades of accumulated features.
They get a very different experience with Python getting the whole thing
dumped on them at once than I did riding with the language from roughly 2.0
and watching the features come in one by one.

Python has many advantages over, say, Go right now, but the advantages that Go
has over Python, Python is not in a position to reasonably add to itself. Is
it "future-proofing" Python, or is it taking something already pretty
complicated and crusting on one-too-many layers of "features"?

~~~
noobermin
>The word for Python is _mature_

Exactly, one could use the same criteria of the OP and conclude C is "dying",
and how wrong they'd be.

Just because it seems like there isn't new and hot stuff for Python doesn't
mean it is actively used and sought after today. Perhaps it's strange because
Python always seemed like the hot new scripting language thing until it now
where it has become the well known scripting language thing it is today

~~~
bulutsuzku
Python is dying because is the freeloader language of choice.

And you realize it when you explore the QUALITY of python libraries out there.
You know what I mean. Quality in Python code sucks.

------
jedberg
Reading HN, you'd think Java was dying (dead?) too. But it's not. It's an
established language with a lot of very senior people still using it. It has
it's issues for sure, but it also has a ton of libraries and support.

Python I'd say is in a similar boat. Strong and established with tons of
libraries, not popular amongst the kids.

Edit: Apparently my use of "kids" as a sarcastic way of referring to those who
won't use "old" languages was missed. :)

~~~
aerovistae
What? The kids? I see young people using python more than any other language
by FAR. What region are you? I've seen this through the northeast and midwest
United States.

~~~
eva1984
Second this. Python is just the perfect language for concept proving or
prototyping.

~~~
pmoriarty
You haven't tried Scheme.

~~~
eva1984
I don't know it, yet. But I don't know whether it provide the range of
libraries Python can provide me with.

~~~
Per_Bothner
If you use Kawa Scheme
([http://www.gnu.org/software/kawa](http://www.gnu.org/software/kawa)) then
you get a number of extensions (beyond standards-compliant R7RS), high
performance, and access to all the libraries that run on the Java platform.

------
Animats
I like Python, but it's gone downhill.

Python was doing just fine until Python's little tin god came up with Python 3
and tried to drive a stake through the heart of Python 2. That backfired,
badly; six years on, Python 2 still has far more production use than Python 3.
(No, it's not about Unicode. Python 2.6 and later do Unicode just fine. I've
written sizeable all-Unicode systems in Python 2.6. It's just that in 3.x,
it's the default.)

Coming up next, Python 4, with typing syntax that isn't checked. Ugly typing
syntax - some in comments, some as annotations. There's an argument for
optional type declarations that are checked, but unchecked declarations are
trouble waiting to happen.

The PyPy crowd has brought off a miracle - an optimizing compiler for Python
that supports almost all the dynamism of CPython. It took a long time, but
they did it. CPython should be retired now, or made to conform to PyPy. But
no; the little tin god insists that his CPython defines the language. The PyPy
developers struggle to keep up.

The language isn't the worst problem. It's the wildly variable quality of the
libraries. The great thing about Go is that it has libraries which are used
internally by Google, and thus have been executed billions of times. Python's
PyPi (formerly Cheese Shop) has no quality control, and many versions of very
similar libraries, each with different bugs. There's no convergence.

~~~
andybak
Shame you started with "Python's little tin god" as it meant I took everything
else you said less seriously.

~~~
Animats
I'm worried about a repeat of the Pascal debacle. Pascal was a good language,
invented by Niklaus Wirth. It had some flaws, which were fixable. But Wirth
was insistent on not doing anything which would invalidate his elegant, but
limited, recursive-descent compiler. He didn't like separate compilation of
modules, for example; everything was supposed to be in one big file. He had
this thing about conformant-array parameters, where arrays were passed with
size info. Strings were limited to 255 characters. The I/O operations all
aborted on error. Integers and subranges were designed on the assumption that
integers were very big. (The original implementation was for the CDC 6600,
with 60-bit integers.) He pushed his version into being an ISO standard.[1]

ISO Standard Pascal is useful mostly as a teaching language. You can't do much
real work in it. So Pascal fragmented, badly. There were lots of incompatible
variations. In time, Pascal was abandoned.

Sometimes the original language guru has to be pushed aside before they run
the language into the ground.

[1] [http://www.pascal-central.com/docs/iso7185.pdf](http://www.pascal-
central.com/docs/iso7185.pdf)

------
mountaineer
Python has been the #1 language/technology in Hacker News whoishiring threads
11 of the past 12 months[1]. Seems to be a fine time to invest. (Disclaimer: I
publish these trends)

[1] [http://www.ryan-williams.net/hacker-news-hiring-
trends/2016/...](http://www.ryan-williams.net/hacker-news-hiring-
trends/2016/february.html)

~~~
mastazi
I think that says it all. Your HN Hiring Trends site is awesome!

------
gedrap
This is an interesting example of what might happen if you think that the
things which are the most frequently mentioned on HN are the ones which are
the most commonly used in production/industry :)

It's a bit dangerous bias/distortion, you can easily trick yourself into
thinking that everyone is running everything with docker, soon everyone will
be spinning up clusters with tensor flow to compute on their petabytes of data
:) (nothing personal, OP, just something I've noticed lately).

------
aabajian
I was taught Java in college and use it at work, but over the years I've done
a little BASIC, Perl, Haskell, Lisp, C and C++. All of these languages were
interesting and fulfilled specific use cases, but I couldn't see anything
distinctive about them. Moreover, there weren't any _ah-ha_ moments...until I
learned Python.

Python is a beautiful language, and what I like to call programming at its
purist. It removes the distraction of syntax from the task of problem solving.
It's simple enough that a 7 year old can grasp it, and yet powerful enough
that Google used it for its TensorFlow's API. Python syntax is so close to
pseudocode, that I'll often code a solution in Python, see that it works, and
then recode it in Java. It's difficult to describe if you haven't spent 7+
years using Java, but it's way more satisfying debugging Python code than
rewriting solutions in Java.

------
lucb1e
I started using Python because everyone around me was starting to use it about
a year ago. By now I'm rather proficient at it and it's replacing my primary
language (PHP) to write quick scripts to run from the command line. In a few
weeks I'll also be working on a web project in Python (where I'd normally have
picked PHP).

I still use PHP and bash a ton, will use Java in school next semester, used C#
during my internship, but Python is among my core tools right now. I notice
that library support for Python is so, so much better than for PHP, making my
life a lot easier at times.

As for Go, I still intend to look at it, at some point in the future.
Basically like I intended to look at Python three or four years ago.

Javascript, yeah for in browsers.

Julia? I heard of it but I still think of the girl first and the language
second. Never looked at it and don't see it come by that often. Data science
you say? I thought R was hot there, a language I was going to look at
somewhere in the next few months (my girlfriend will get it in university,
good opportunity for me as well).

------
Jsonzhang
As a JS developer I think python is strong than ever before , it can use not
only in web but also in data analysis. The coming Big Data trend can lead
extensive use of python. The LIGO Scientific Collaboration announced that they
use python when in their first direct detection of gravitational waves.
[https://www.reddit.com/r/IAmA/comments/45g8qu/we_are_the_lig...](https://www.reddit.com/r/IAmA/comments/45g8qu/we_are_the_ligo_scientific_collaboration_and_we/czxnlux)
And they are also make some lib of python they used open source in github.
[https://github.com/ligo-cbc](https://github.com/ligo-cbc) It is excited ,
isn't it ? Thanks to these news , I have decided to continue learning python
since I break it off two years ago.

------
monster2control
I've only been using Python for 2 months now. I'm coming from a Ruby, Java,
Node background. The things I don't understand about Python and what I miss
the most from those other languages is a solid tool chain. From package
management down to the test runners. I miss Ruby gems, Bundler, Rack, and
Gaurd tools. I miss Maven and the plethora of plugins. I miss NPM.

Pip is just OK. It feels like it's missing something. Could be a simple lack
of experience still. I haven't found anything like Gaurd yet and yet to find a
replacement for rack and NPM 's simple package.json. There is setup.py but it
feels harder and wrapped in mystery still and doesn't work universally the
same for Python 2 and 3 which I have been causing some road blocks and extra
cycles being wasted.

Most of all I hate the backward compatibility issues of Python 2 to 3. I
rarely have issues running older Ruby or Java code in newer versions of the
language. It seems ridiculous that it's been a little over 7 years and people
are still fighting with issues between Python 2 and 3 and you still need to
pick a version to use. Sure you can code around it, but why the interpreter
doesn't handle backward compatibility with deprecation statements is just
amazing to me. This isn't a new thing. Languages like Java and Ruby do it as
do plenty of others I'm sure if you wanted to make a syntax change you can
handle the code in the interpreter and issue warnings to uograde them without
breaking all old code bases.

But any ways, I digress, I don't think Python is going anywhere. Too many
people and companies use it. It's got a lot of good libraries and and if you
just start with Python 3 it's language is just like any other programming
language. It's got some things you have to get used to that are unique to it
but in the end, you can make it do what you need.

I personally think Ruby allows for nicer looking code and readability, and
NodeJS has a far better Eco system. Hell, Languages like Elixir feel like a
nice mixture of both with the huge added benefits of being highly parallel at
the VM layer.

PyPy seems like a better place to invest resources since the JIT can really
speed things up.

That's my 2 cents.

~~~
csense
> Ruby allows for nicer looking code and readability

Have you ever actually used Ruby?

Here's what FizzBuzz looks like in Python:

    
    
        def fizz_buzz(number):
            if number%3 == 0:
                return "fizz"
            if number%5 == 0:
                return "buzz"
            return str(number)
    
        for num in range(1,101):
            print(fizz_buzz(num))
    

Compare that to the hideous mess of fizz buzz in Ruby [1] -- there's a lot of
magic going on there. Many unfamiliar operators, line #2 is a magic string
interpolation thing with tons of weird escaping going on (the #{} seems to be
some kind of template which makes stuff inside the "" string actually be
interpreted as code which itself contains '' strings, and I don't want to
think about the potential injection vectors that could be introduced by this),
the ternary operator, absolute value bars, an anonymous function, and defining
a function by binding an anonymous function created with -> function call
syntax to a name.

People on HN keep saying Ruby is intuitive and easy to learn -- no it isn't.
The Python code by contrast is basically the same as the pseudo code you would
write on a napkin in "not-any-particular-language-I-just-want-to-describe-an-
algorithm-without-language-specific-issues-to-get-in-my-way".

[1] [http://hostiledeveloper.com/2014/04/26/on-why-learning-to-
pr...](http://hostiledeveloper.com/2014/04/26/on-why-learning-to-program-is-
hard.html)

~~~
zimpenfish
Here's what your code looks like in Ruby:

    
    
      def fizz_buzz(number)                                                                                       
        if number%3 == 0 then                                                                                     
            return "fizz"                                                                                         
        end                                                                                                       
        if number%5 == 0 then                                                                                     
            return "buzz"                                                                                         
        end                                                                                                       
        return number                                                                                             
      end                                                                                                         
                                                                                                                  
      for num in 1.upto(100) do                                                                                   
        puts(fizz_buzz(num))                                                                                      
      end
    

Don't mistake someone fannying about with code-golfing for the language
itself.

(Also your code is wrong - it never prints "fizzbuzz" which it should for 15,
30, 45, etc.)

------
basketcasing
Python is the least-worst general purpose imperative not-performance-critical
OO scripting language. It has lots of problems (weird scoping, community
issues, roundabout docs, `''.join()`, crippled lambda, no variable
declarations, some lousy naming, module distribution issues, yet more ways to
do string formatting, whitespace-sensitive syntax instead of curlies+semis),
but the alternatives have _worse_ problems, so Python is at the top of the
heap for its type of language.

I think Python could easily be replaced --- for greenfield projects --- by
something better, but there's nothing better right now, and more and more
people will keep using Python for that very reason.

~~~
aldanor
What's wrong with `''.join()`? It's fine as is, I think, same logic as
'{}'.format().

~~~
basketcasing
Re. join, I think Perl got that one right: `join(glue, pieces)`.

`','.join(pieces)` just seems unnecessarily weird, and present simply for OO's
sake. Not everything needs to be some object's method.

~~~
aldanor
Yes but then you can map things more easily without having to create partials,
and it's consistent with how all other methods work in Python (e.g. format
method)

    
    
        >>> phrases = [['a', 'b', 'c'], ['d', 'e']]
        >>> print(list(map('-'.join, phrases)))
        ['a-b-c', 'd-e']

------
flohofwoe
I've switched to Python a little while ago for the following use-cases, and
couldn't be happier:

\- Non-performance-critical command line tools for game-data export-pipelines
that I previously wrote in C/C++: Python code is usually more compact, and
everything I ever needed is in the standard library. If performance is
critical I still prefer python to call out to minimal C or C++ tools which do
the heavy-lifting.

\- Replace native shell-scripts and Windows batch files with portable python
scripts that run on Windows, Linux and OSX.

\- Stitching together 3D content-creation-tools and command line tools, most
DCC tools of have become python-scriptable in recent years.

\- Code generation for C/C++ and shader code.

These are all very pragmatic and simple things, I don't care whether my python
scripts are 'pythonic' or elegant, and I don't care about the 2 vs 3 debate.
Python gets the job done, works everywhere, and I enjoy writing it because of
its friendly syntax and powerful standard library.

------
mpdehaan2
Absolutely not.

Python strikes an amazing balance in being a rapid development but also
sustainable language, that makes for maximally maintainable code.

While I can't speak for it's growth in data science, it's widely used in
systems programming and web development and web services as well.

Go is simply not as agile, it's a lower level systems tool for "tight" low-
level code, yes.

Python has never been a front end language. I still think Javascript is a
HORRIBLE language, but that's beside the point.

At least from my experience, it's exactly in the perfect sweet spot of
language design for being unexciting and getting massive amounts of work done.

------
sr_banksy
It has massive support and libraries for almost anything imaginable. It's not
dying. Yes, the transition from 2 to 3 is a bit of a hiccup, but it's going to
be around for a long time!

A tad bit old, but read this:
[http://www.curiousefficiency.org/posts/2012/10/pythons-
futur...](http://www.curiousefficiency.org/posts/2012/10/pythons-future-
global-perspective.html)

TL;DR: No.

------
hartator
Despite some rifts in the community around 2 vs 3 versions, Python is still
widely used, no worries.

My take is Python 3 has done more damage to community than we accept to
recognise. Python 3 has taken a strong academic approach to make the language
better while being valid made it feels like a regression compared to Python 2.
The 'print "abc"' not working anymore without brackets is a good example of
it.

~~~
someguydave
Agreed. If anything, Python 3 is dying - Python 2 is going strong.

If the above is true, the Python language has outlasted the Python developers
- like C.

------
thkim
Unless there is another language that beats Python in terms of simplicity of
toolchain, deployment and syntax, Python is not going to die. Very few people
care about the performance of a language (this is same as asking whether Intel
i5 or i7 is a better choice when most of what you'll be using is Microsoft
Word or PowerPoint), and Python provides reasonable and handy solution to that
problem as well (pypy).

Bottom line is that performance does not predict whether a language will die
or live. That's not what most people care about.

~~~
tumdum_
> Unless there is another language that beats Python in terms of simplicity of
> toolchain, deployment and syntax

Actually those 3 things are much simpler in Go.

------
BuckRogers
Python2 is not dying, its momentum is the main reason for Python's continued
meteoric rise. Python3 is _languishing_ though. At roughly 10% of Python right
now but might(?) pick up that slack once Python2 starts to die.

I've always used Python, but I'm starting to wonder if I didn't back the wrong
horse. I've been dabbling with Erlang as my side-language for a years, and
Elixir is extremely intriguing to me. I'm considering using Ruby for a new
project simply because the syntax is closer to Elixir. A Ruby+Elixir shop
makes a ton of sense.

I think the better question would be "is Python losing focus?". The answer to
that would be yes. Which includes not only the ~8 year Python3 debacle that's
~10% complete from a usage standpoint, but also the Python3 feature soup.
They've just added a 4th string formatting method in Python 3.6.[0] I don't
even have words for Python3's feature soup, it's absurd in its own right.

[0][http://learning-python.com/books/python-
changes-2014-plus.ht...](http://learning-python.com/books/python-
changes-2014-plus.html#section4)

------
lmm
The moment a language is born is the moment it starts dying. No language lasts
forever.

My opinion: Python will outlive the three languages you list. But it's dying
outside data science, and maybe even there. Optional typing can't compete with
modern type inference, and there is too much dynamism in the existing Python
ecosystem (even though it's so rarely used - there's not a monkeypatch culture
like in Ruby - it's used often enough that you can't just remove it). But not
today, probably not in five years either. In fact with the community finally
having rallied around 3.x this is probably the best moment in years to leap
into Python.

But yeah, all languages are dying, some faster than others. You have to make
your own judgements, and learn general skills so that you're not bound to one
particular language (unless you're _very_ confident in that one language).

~~~
bulutsuzku
Python is just a fashion language.

If you want truly survivor languages look at Smalltalk. More than 30 years and
still alive. Is not about modern type inference or dynamism... it's always
about the people. And people in Python doesn't have _that_ commitment with the
technology, they are more like freeloaders.

------
brianchu
I do a little work in machine learning (as an undergrad). Deep learning
specifically is dominated by Python and C++ (Python for the interface,
C++/CUDA for the implementation). Theano's interface is in Python. Caffe has
C++, Python, and Matlab interfaces (Python and C++ being the most popular in
my experience). Tensorflow has C++ and Python interfaces. ipython notebooks
started with Python. The odd one out is Torch; its interface is in Lua.

Machine learning also, at least from my academic view, seems to be dominated
by C++/Matlab/Java/Python (and things seem to be moving to Python).

But more broadly, you'll have to learn dozens of languages as a programmer
anyways. I wouldn't get too caught up in Python vs. other things.

------
TYPE_FASTER
Python, as a language and a community, seems to focus more on producing code
than marketing. This is an observation, not a judgment on Python or other
languages.

Look more at what you want to implement, then see if Python makes sense as a
language.

------
droithomme
No. Python is extremely useful and will remain so. However Python has
fundamental design problems regarding unicode handling and 2/3 discrepancies
that make it challenging to work with in a number of contexts.

~~~
mjevans
I agree completely. Python could fix a LOT of that by using the (completely
seriously named)
[https://simonsapin.github.io/wtf-8/](https://simonsapin.github.io/wtf-8/)
WTF-8 (Wobbly Transformation Format − 8-bit) encoding for it's native Unicode
(like) strings.

Additionally Python should then allow the (explicit) casting of WTF8 datatype
to bytes and from bytes to WTF8 datatype (edit: note, I mean invalid data
would be read, stored within a WTF8 datatype as such, then converted /back/ to
an invalid UTF-8 bytestream identical to the one read in).

The main reason that Python Unicode handling is broken is that it creates
problems that aren't necessary to exist or solve. In the real world, you
encounter unvalidated data; and many times you don't /care/ if it's valid.
It's just some human name for a bytestream. Or some not-quite valid Unicode
stored within a file, or maybe something else that you want to handle like a
bytestream but pick matching Unicode bits out of.

~~~
zokier
You mean something like PEP-0383?
[https://www.python.org/dev/peps/pep-0383/](https://www.python.org/dev/peps/pep-0383/)

------
746F7475
I'm not quite sure why people are always so concerned about programming
languages "dying", like if the language not being popular has anything affect
on the applications already using it.

If you are starting your own company or a side project choose a language that
a) best suites your needs and b) you know. Unless your goal is to learn a new
language you probably don't want to write your business logic in a completely
new language just because it's popular at the moment. And outside of stuff you
actually have a say in (i.e. stuff you do for your employer) it doesn't matter
what language(s) you know as long as you know something that's applicable.

I learned PHP as my first language (well, I wrote some VB stuff for school
before that, but I never wrote it on my spare time), after that I went on to
JS just before college and in college I learned C#/Java, but also for my web
side projects (which I made some money from) I learned Ruby. Now since
graduating I've also dabbled in Python and very lately little in Perl6 (just
because the syntax looks so nice), but for my actual job I'm mostly working
with Python. It's not my favorite language, but my Ruby and JS (as well as
general programming knowledge) carries me through the tasks, it's not like I'm
in completely different world where I can't function.

My point is as long as you know how to program the language shouldn't matter,
obviously jumping from something like Python to C++ is a bigger change than
going from Ruby to Python, but it's not imposible and if your employer really
just cares about your languages they are either super specialized and doing
some weird shit (which might be your thing and then all you can do is to learn
that language) or they really don't know what they want/need.

------
dudul
I think it's HN echo chamber. A lot of articles here about new exciting
technologies, but when you look at job postings for example this is not the
same song.

I'm very excited about Elixir for example. There is a new Elixir blog
post/article/github repo posted on HN every day, you would think that Elixir
is the new cool thing. Well, not easy to find companies that actually use it.

~~~
tanlermin
yes, but are these articles early sensitive indicators of things to come or
just esoteric blovation?

~~~
abrookewood
I think they're an indication that people find something interesting, which is
often because it's novel.

------
thearn4
> Julia for data science

I work in scientific computing, and while me and my colleagues have all
experimented with Julia at some level (and definitely welcome having more
options), I don't yet know of anyone who has built any part of their permanent
toolchain with it yet.

Are there any notable use cases out in the wild yet (known internal use by an
organization, or major FOSS tool or framework)?

~~~
ihnorton
I won't comment on organizations using Julia, but some conclusions can be
drawn from the presenters and sponsors at JuliaCon 2015:
[http://juliacon.org/2015/](http://juliacon.org/2015/)

Here is a brief list of some major packages that I am aware of:

\- [https://github.com/JuliaOpt/JuMP.jl](https://github.com/JuliaOpt/JuMP.jl)
\-
[https://github.com/JuliaOpt/Convex.jl](https://github.com/JuliaOpt/Convex.jl)
(Stephen Boyd's current and former students) \-
[https://github.com/ApproxFun/ApproxFun.jl](https://github.com/ApproxFun/ApproxFun.jl)
(Nick Trefethen's former students) \-
[https://github.com/dmlc/MXNet.jl](https://github.com/dmlc/MXNet.jl) \-
[http://nemocas.org](http://nemocas.org)

Julia has been used (and cited) in at least one Nature publication:
[http://www.nature.com/nature/journal/v526/n7575/full/nature1...](http://www.nature.com/nature/journal/v526/n7575/full/nature15707.html?WT.ec_id=NATURE-20151029&spMailingID=49884916&spUserID=MjA1NzcwMjE4MQS2&spJobID=783976831&spReportId=NzgzOTc2ODMxS0)

A larger list (with associated publications):
[http://julialang.org/publications/](http://julialang.org/publications/)

Julia is also being used for courses at a number of universities:
[http://julialang.org/teaching/](http://julialang.org/teaching/)

------
mixedCase
Python is very strong in data analysis, as strong as ever in DevOps, and it's
very versatile to always see it show up in other areas.

Most of our Python use is for cross-platform mobile development with Kivy and
we're happy with it so far. Certainly happier than having to deal with Java
and the disgustingly horrendous Android SDK.

------
jay_kyburz
There are a lot of great comments in here already but I'll add my 2c anyhow
because it's something I have been thinking a lot about lately.

Python is my absolute favorite language without a doubt.

 _But Python is dying for ME_

I think there is a lot of value in having front and back end code in the same
language.

Python is significantly slower than JavaScript and I just don't want to have
to run 2x the number of servers to handle the same number of requests.

I host my games on App Engine. Google has no public plans to move Python app
engine to Py3. Python 2 EOL is just 5 years away. I move slow - need to start
moving now.

\-- Also while on the topic, let me just rant about how great the Python
Standard Library is and how much I hate NPM and the javaScript ecosystem. I
really hate having to evaluate 5 ways of doing every little thing. I wish the
node folks would start building a batteries included standard library.

~~~
bendmorris
>Python is significantly slower than JavaScript

I don't think there's anything inherent about either language that makes it
faster or slower than the other, and it's not really fair to compare one high-
performance implementation (Node) with another specific implementation
(CPython) when there are other options. For example, have you compared Node
vs. PyPy? In my experience they're very close.

------
noelsusman
Python is dying in much the same way that C is dying, and by that I mean it's
not dying at all. I'm no expert on Go or JS but Julia is not even close to
being a serious competitor to Python for data science right now. Besides,
Julia has a role more similar to R than Python.

~~~
aninteger
I think C and even C++ are basically dead from a job market perspective but
seem alive and doing ok in the opensource community. The need for paid C
development pales in comparison to the job market for python. The industry, at
least outside HN, for "backend" type work has settled on java/.net languages.
They are just good enough for 95% of use cases and easy enough to hire for.

~~~
eva1984
AFAIK, for a competitive backend programmers, besides C++/Java, good at least
one script language(tool) is a must, let it be bash/perl/Python, etc... More
and more people are picking up Python for this role, simply because it is more
a complete package than its competitors.

I do agree with you, knowing ONLY Python is not really something to feel good
at, but same thing can be said for any other programming language...

------
nl
Julia for Data Science? Ha!

I think Julia might _maybe_ have a shot at the space Matlab plays in the
moment. But I'd define that more as scientific computing than data science.

Does Julia even have a properly supported HBase interface? People are confused
about how to connect to _SQL Server_ [1] - until some pretty basic things like
that are sorted out I don't think anyone will take it seriously for data
science.

Also: [http://danluu.com/julialang/](http://danluu.com/julialang/)

[1] [https://groups.google.com/forum/#!topic/julia-
users/BOeyuSlz...](https://groups.google.com/forum/#!topic/julia-
users/BOeyuSlzCXE)

~~~
Blahah
Julia is not even at 1.0 yet, and will be full of holes until at least then.
It's still a wonderful language for technical/scientific computing, but you
don't want it to be your only language if you have to make diverse real
things.

~~~
nl
Couldn't have said it better myself.

That's almost the complete opposite of Python, which has the ugliness of real
world use (eg, 2.7 vs 3), but also has those thousands or real world hardened
packages.

~~~
nl
Wow, this got more downvoted than I've had in a long time!

I'm pretty sure that this is an uncontroversial view so I'm a little
surprised, especially since I work in this field.

Enlighten me, Julia fans?

------
zanny
I, for one, look forward to the day I have Python in my frontend.

Browser support for <Script type=text/python>! Viva la revolution!

I would need so much less migraine medicine that the pharma industry would
lobby against it.

~~~
antod
That day was 15+ yrs ago. Back in the IE4/5 days with ActivePerl and/or
ActivePython installed you could do just that (along with VBScript). It also
allowed you to use them in ASP pages too.

eg: [https://msdn.microsoft.com/en-
us/library/ms974552.aspx](https://msdn.microsoft.com/en-
us/library/ms974552.aspx)

[http://www.icodeguru.com/WebServer/Python-Programming-on-
Win...](http://www.icodeguru.com/WebServer/Python-Programming-on-
Win32/ch21.htm)

Apparently Perl tended to work better than Python though due to not being as
picky about whitespace in an HTML script element :)

------
zmanian
The thing you ideally want from a language is the ability to benefit from an
ecosystem adding functionality, teaching, open sourcing libraries etc.

The Python ecosystem seems healthy to me. Interesting things are happening in
the language around incremental typing and async.

Python seems like the language of choice for binding C and C++ libraries.

Python devs seems widely in demand.

There is definitely a pullback in using Python in performance critical
conditions where Go seems to be making huge progress.

~~~
BuckRogers
>There is definitely a pullback in using Python in performance critical
conditions where Go seems to be making huge progress.

I work a regular gig, but also have a home business built on Django. I would
do it as Dropbox does it- run the company on CPython2.7 and then CPU
performance critical services on PyPy. GVR noted they have at least 1 thing
running on PyPy.

I wouldn't personally bring another language into the stack unless it's
absolutely unavoidable. When starting from scratch, I'd probably still go with
Python.

...Or maybe Ruby. I'm starting to see the Ruby guys as being luckier than they
think. You can run an entire Ruby shop and transition new services over to the
Rubyesque Elixir. Which has significant benefits over anything the Python
ecosystem has. I've never used Ruby but may give it another shot, due to
Elixir's existence.

------
EdwardDiego
Mate, you've got to stop taking the social media hype at face value. I
remember desperately trying to learn Haskell during my pedagogical years
because all of /r/programming was talking about it. Clearly it was the next
big thing! In the end I decided that I enjoyed F# more, but since then neither
language has been anywhere close to relevant in my career.

I write my back-ends in JVM languages, because the JVM is performant for my
use cases, and the ecosystem is very rich. I'm currently liking Kotlin as a
better Java, and I dabble with Clojure for fun. Oh, and I can't resist having
a jab at the ol' Go-has-no-generics thing. Go has no generics, which leads to
type-unsafe upcasting to interface{} or copy and paste. Both of which are
shite.

I write my data science code in Scala (on account of how that's the nicest
Spark API, although the Python one looks good).

Yep, JS for the front-end when you're doing heavily dynamic sites, but if it's
a slightly-less-than static CRUD site? Django is ideal, free CRUD interface,
no fucking around with the tool and fad filled hell-hole of modern JS
development.

(I must admit to some hypocrisy because despite the above statement, I quite
like React).

------
lacker
No. Python is the third most popular language on Github, for example. Ahead of
either Go or Julia.

[http://githut.info/](http://githut.info/)

The Python 2 vs Python 3 debacle has stalled the adoption of new features into
Python for quite a while now. Nevertheless, Python has a very nice design at
its core. Maybe it doesn't need that many new features.

------
thebouv
There are lots of tools and even lots of toolboxes.

What do you like to do? What can you find work for?

If you know other languages, you can shift easily. It's not like you have to
invest years into a new language if you're already proficient with others.
You're not going to forget if/else logic, what functions do, or object
oriented basics. Most languages just have their own syntactic sugar on all of
that.

Learn Python.

Learn Node.

Learn Julia.

Be flexible.

------
mindcrime
COBOL and FORTRAN aren't dead, and you think Python is going to die anytime
soon? I don't see it. For the most part, technologies never really "die" per-
se.

Now as to the question of what stack to invest in from a career standpoint...
my guess is that Python would still give you a very good ROI. Look how popular
it is in the machine learning / data science world, for example. I'd bet there
will be more jobs for Python coders than for Julia coders for at least another
5 or 10 years or more.

But hey, hedge your bets... invest in something for today like Python, but
start spending a few cycles here and there on Julia and Go. Flexibility helps
in this field. In my 17 some odd years doing this stuff, I've gone from
focusing on C++ to mostly Java, then to Python, back to Java, then on to
Groovy, and now am using Java, Groovy and Python. But I'm also spending some
time on R, as well as Julia, Go, and Rust, just to stay current.

------
CuriouslyC
Python isn't going anywhere. No other language has such a rich set of tools
for the complete analytic workflow from data acquisition and transformation,
through analysis to end product creation (i.e. web/application development). I
think in terms of an exploratory/prototyping language it is going to be at the
top of the heap for a long time.

Julia is an extremely interesting language, in some ways it is more "pythonic"
than Python (at least in regards to consistency), while also being
surprisingly lisp-like. Unfortunately, the library ecosystem is still
extremely immature. Within ten or fifteen years, I expect Julia will take over
pretty much all of Python's niches.

As for systems/backend code, I'd bet on Scala over go; much more interesting
language, and able to leverage the massive java ecosystem.

~~~
tanlermin
You think it will take that long?

------
eva1984
Julia for data science is not as nearly as true. The landscape of data science
or machine learning is shifting so fast because of the recent deep learning
revolution, which, IMHO, makes some Julia's featured improvements a little
awkward. If it anyway has to delegate the computation to something like GPU,
then the goodie Julia has promised, like auto vectorization, are less
important.

JS for frontend...Is python ever used in frontend?

Only Go is worthy mention here. Yes, Go has some goodies in terms of
performance, so it will eat up some Python's share in server-side programming,
which I won't deny.

TL;DR: Python is on rise as the dominant language for data science, which I
didn't think any other language can challenge it in short time. It will still
be used/favored in light to middle complexity web services depends on tastes.

------
zmmmmm
My suggestion is not to ask not whether your favorite language is dying. Ask
why you are so worried about that.

If you plan a career of any length of time technology you will have to up
sticks and move to new language countless times. In fact, in some ways doing
that is one of your core skills. Embrace it and enjoy it. Perfect your ability
to digest and consume a new language complete with its idiomatic quirks and
warts and its various ecosystem of tools and frameworks.

In terms of a choice of a language for an actual project, Python is so
established that there is basically zero risk in starting a project in Python
now. There is exactly zero chance that it's going to be abandoned and you will
be left without a viable community of support any time in the next decade. So
if Python solves your problem today just use it.

------
teekert
I just got into Python, as a biologist. I'm happy I did it because now the
entire large healthcare company I work for (or at least the research
department) is switching from Matlab to Python. I have never heard the name
Julia before here. Could be because I'm a biologist.

------
hyperion2010
I heard an anecdote from a colleague who was surveying undergraduate CS
courses. The prof was explaining what the course was going to be about and
said that the students could choose any language they wanted to complete the
work something like C or Java or anything didn't have libraries for
everything. A student wanted to know if this meant they couldn't use python.
Prof said, ya, you probably shouldn't use python for this, too tempting to
cheat. Grumbling, so prof asks, how many people actually know C, Java, or
something like that? ~50% hands. How many only know Python? ~40% hands. These
were CS majors, in an upper level CS course.

------
Paul_S
Python pretty much replaced Perl in everything yet Perl is alive and well
today. So, no.

------
stray
Some people will always flock to Teh Shiny -- but python isn't going anywhere.

------
spiralpolitik
All the interns we've recently interviewed all have Java and Python skills so
neither language is dying in any sense of the word. In fact I would probably
say that those (plus Javascript) are probably the languages new programmers
are learning first.

Both languages are however going through transition periods, with Python the
2.x to 3.x migration is still dragging on and shows no sign of ending. Java is
in a period of libraries rebasing themselves around Java 8 and Java 9 will
similarly be a disruptive release once project Jigsaw finally lands. But both
languages will continue to be around for a long time.

------
emmelaich
It's merely plateau'd. That's not something that brings news.

If you graph the popularity I would say the derivative gives you
newsworthiness (golang, julia) but the integral gives you the popularity.

~~~
tanlermin
my point exactly.

------
simonw
I forget where I saw it, but someone said Python is the second-best language
for pretty much everything, which is why it's such a useful language to have
in your tool chest.

------
brianolson
Python is fine. I just came off a job in it and interviewing around saw a
couple other jobs in it. I see it competing with Ruby and server-side-js.
Python is more mature than either, and has a different flavor that will appeal
to some people. Choose your environment to taste. OTOH, job[-2] was switching
away from Python due to run speed concerns, towards Go. But while the
application would be less Python, the 'devops' system glue would still be all
Python.

------
ausjke
Python is the new BASIC these days.

------
tanlermin
Let's look at Julia for example. Its currently gaining steam in numerics,
machine learning other technical computing areas...I hypothesize this is
compound growth.

For general computing, what would happen when it gains static compilation and
can be distributed easily on Linux/Windows, Mobile and then web (with
Emscripten/web assembly).

Then its as expressive if not more than python, easy to read/write and faster
(unless its written poorly).

~~~
GFK_of_xmaspast
It's really easy to get a huge growth rate if you start from a very small
number.

------
readme
No, python's strong. It's just not a fad anymore?

Is PHP still cool? Not really. Yes, there was a day when it was. But guess
what: from [http://php.net/usage.php](http://php.net/usage.php) PHP: 244M
sites, 2.1M IP addresses -- sites powered by PHP.

Python's not going anywhere. It might go out of style, but it's not going out
of use.

... they are still trying to replace retiring cobol programmers.

------
bliti
No, it's not dying. It has simply gone enterprise. Which means it is no longer
"cool". Python is a good glue language that runs everywhere.

------
dperetti
Python is not dying, it's mature and _stable_.

------
dcolgan
I play around with NodeJS and front end frameworks like React for my own side
projects, but all of my paying client work is made with good ol Django. It
just does so many things well and is very mature. I recommend for production
code using libraries that have a strong community and have been around for a
while so that they don't keep changing all the time.

~~~
andybak
Don't forget that Django and React make a great combination.

You probably still want Django to handle server-side rendering for most of
your site (unless you're a masochist). Django Rest Framework for the API, and
React (or whatever) to handle the app-like parts.

~~~
mrdrozdov
Why not render client-side?

~~~
andybak
1\. On the whole 'normal' websites with an overabundance of client-side
rendering are in a kind of 'uncanny valley'. They nearly behave the way a
normal server-side rendered site would but something always breaks whether it
be the back button or link behaviour, caching/refreshing or something. So from
the user's perspective it's often a bit off.

2\. It's still more work from the developer's side. You have to implement
stuff you get for free with server-side rendering. And currently (and for the
foreseeable future IMHO) Python/Django is still simpler, more maintainable and
nicer to work with. So I'd prefer to keep the client-side code where it
belongs - the parts of the site that are more like an 'app' than a 'website'.

------
devlim
For the past few years, many say java is dead, ruby is dead, nobody want C and
etc, still today, individuals and business still continue using those language
and invest new framework/plugin/tools for those language. So i pretty sure
python is not dead. 'Dead' is for framework when community move from one
framework to another.

------
datashaman
Over the last year (for the first time) Python surpassed PHP in popularity and
seems to be gaining on C#.

Python has never been more alive, IMO.

[http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

------
MichaelBurge
There's projects where you're trying something new, and there's projects where
you're trying to get something done. I recommend keeping the two separate, and
for the second type using whatever you feel most productive with. Mixing the
two just increases the risk of your project for no real benefit.

------
mheiler
I'd say it does well compared to other languages:
[https://www.google.com/trends/explore#q=python%20tutorial%2C...](https://www.google.com/trends/explore#q=python%20tutorial%2C%20go%20tutorial%2C%20javascript%20tutorial%2C%20julia%20tutorial)

------
gkya
In case of Go, it is a dead baby, the language and the tooling suffer from
dogmatism and inflexibility. Python is stable and good now, it does not need
to change that much. Thus, those who mix up version numbers with stock prices
and become happy when they increase switch away and complain. Ignore them.

~~~
mixedCase
>the language and the tooling suffer from dogmatism and inflexibility

The inflexibility and dogmatism of the language is its biggest strength,
lending it to create universally readable codebases that any Go programmer can
pick up and be productive with.

The tooling has never stopped improving, and Go 1.6 is going to make the
VENDOREXPERIMENT an official, supported part of the language.

Plus the real reason why backend devs are abandoning Python for Go is a
numbers game that Python, short of PyPy pulling a miracle, will never even
hope to compete against.

~~~
gkya
Go tries to make code readable via dumbed down features and arbitrary rules.

The tooling hasn't stopped changing. Improving? Not as sure.

In the last paragraph you compare oranges to apples. Python has never promised
to be fast, its promise is convenient use, easy start up and interactive
development. Go on the other hand a speed focused thing that gives up
developers' comfort for dogma and modern features for ease of development of
the compiler.

~~~
zerohp
Don't forget that dumbed down features and arbitrary rules were what made Java
popular.

------
coldtea
For the frontend, and asynchronous server backend (Node), JS won hands round.
I don't see Python getting there.

More systems and backend use Python (including at Google) than Go.

An insignificant amount of people use (or will use in the next 5 years) Julia
for data science. Python (and R, Matlab) rule there almost completely.

------
ryan-allen
I don't think so, it seems to be the go-to language for scientific stats work,
maybe for web development it is trending down though?

Udacity's stats courses use R and Python, a friend of mine who works in
environmental research, it is all they use! Google still use it heavily as far
as I know?

------
melted
Python was never a front end language, and it was never a systems/backend
language, at least not a good one. Its main strength is that "batteries are
included" and you can get something usable going really quickly. None of these
purported challengers has that strength.

------
USNetizen
Quite contrarily, I've seen an increasing amount of Python usage in enterprise
software, especially analytics applications. More and more job postings are
starting to mention Python, and the web frameworks associated with it (Django,
Flask, etc.) are more popular than ever.

------
transfire
Believe it or not COBOL is still a thing. So it is doubtful Python will ever
die die. At least not for a very long time. But, and I think this answer is
probably more to the real spirit of your question, one could reasonably argue
that Python has reached it's peak.

------
hoodoof
[http://www.tiobe.com/index.php/content/paperinfo/tpci/index....](http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html)

Python is 5th place after the three C's and one J.

------
edem
You might want to check
[This].([http://www.itjobswatch.co.uk/jobs/uk/python.do](http://www.itjobswatch.co.uk/jobs/uk/python.do))
It doesn't look like dying to me.

------
mrdrozdov
First there was Perl. Now there's Python. Until there's another powerful
scripting language that starts with a P, I think Python is going to be safe.
That being said, rumor is that Perl is back on the rise...

------
chm
Not in my sphere of activity. I have a friend who recently started his PhD...
and is moving all of his development from C/C++/Fortran to Python. Numerical
code even - he just doesn't want to bother.

~~~
happywolf
Citing this example isn't very convincing.

Would be more interesting to know what language he uses when he finishes his
Ph.D.

~~~
chm
Well, I also have two other colleagues who started using it some months ago to
parse data. They don't know about Go or Julia. I think the "wow" factor of
Python might be lower than it used to be, but it's not considered dead, at
least not in science. Does that reflect the broader reality? I don't know :)

------
davidw
No, it's just pining for the fjords.

People still use Perl and Tcl and Cobol. You'll be fine with Python if it's a
good fit for what you're doing. It's a solid language with a solid community.

------
ninjakeyboard
Python is used in academia (eg SICP) so it's not going anywhere. Consider it's
a google approved language like Java and Go and Javascript. I can't see python
going anywhere.

------
pkenjora
Python has always been under attack because people using it are busy making
things instead of wasting time with language debates.

Just because Python doesn't have zealots doesn't men its dying.

------
luckydude
I'm a guy who has funded a bunch of tcl development. You think python is dead?
Wow. Python seems pretty alive to me.

------
drvortex
Julia? Now you're just making me laugh. Julia has a lot of potential but won't
even begin to scratch Python for about 5 more years. Scientific programming is
very very addicted to its tools. There is a reason even SciPy (for Python) is
compiled Fortan (yes Fortan!) code. R is king for data science and the only
reason it lost ground to Python is that R is a one trick pony compared to jack
of all trades Python.

~~~
firebones
It's called the Lindy Effect:

[https://en.wikipedia.org/wiki/Lindy_effect](https://en.wikipedia.org/wiki/Lindy_effect)

Python (and Fortran), having survived this long, seem destined to live a lot
longer than the challengers.

------
shiftoutbox
Noooo freebsd and Python are dying , zombie-Linux-Javascript-Jesus will save
us with docker on mint .

------
ddw
Django, Flask, PySpark, tons of solid GIS stuff, IPython Notebook, Ansible,
etc. etc. So no.

------
zoffix222
Yes. Join the club.

Sincerely, Perl Programmers :)

------
yahyaheee
The practicality of Python will keep it around for the foreseeable future

------
no1youknowz
I don't know. As a single developer house, I have a behemoth of a project.

Started out with PHP, then used Python for the backend (php sucks as daemons).
Expanded to NodeJS for real-time elements. Used JS exclusively for the front-
end. When I found python not working as it should be for heavy concurrent
tasks, I used Go.

So PHP, Python, NodeJS, Go, JS all for 1 project. Couple this with NoSQL,
Postgres, Varnish, Nginx and being a linux sys-admin and throw in clustering,
security and a whole lot of other things. Wow, something has to give.

4 months ago decided to learn Go. Now I'm almost at the point where I have a
JS front-end and Go backend.

I regularly see complaints about Go having issues. I don't see this as the
case. I went from PHP/Codeigniter MVC backend including sessions, validation,
integration with nodejs using historyJS and a small JS footprint for the
front-end SPA...

To a couple of days worth of work which involved grabbing GIN (the framework),
make it do MVC, put in JWT, use GIN for validation and Gorilla/websockets for
real-time.

There are many blogs, code samples on github, for a lot of different use-cases
or to get the gist of how something is supposed to work. I havent yet found
myself not being able to do what I need with Go.

I think what is the sticking point. A lot of developers want to import
packages and just build the core of their app. I don't know. I find myself
WANTING to build everything out because then I can trust that it will work and
work in production. So if a library isn't available. Fine, I'll just build my
own.

In fact, the net benefit for me, was that I no longer need to think about
scaling my entire application. I made every facet of my old application into
micro services that can now be clustered. In addition, the overhead for
running Go is now very minimal. The outlay of $$$ each month dramatically went
down vs running PHP/Python.

Finally yes, I understand that if I wanted to double down with Python or
NodeJS, I could have probably achieved the same result. I'm sure someone will
reply saying, why didn't you use X or why didn't you use Y. The fact is, I
used Go. The barrier to entry to learn it was minimal to none. I hit the
ground running with Go on day 3. Go has paid back lots of dividends and it
continues to do so. All my new development is with Go and I don't miss any of
the other languages and not only that, upgrading from 1.4 to 1.6 hasn't
bothered me in the slightest. I hope that trend continues with 1.7 and 1.8 and
beyond. Oh and getting http2, better GC and other goodies to boot. May that
trend also continue.

I think in the next 5 years, things will be different. I think if Go starts to
match the number of libraries Python has, it will be different. At this point,
yes, Python may well be dying.

~~~
dcu
I completely agree with you and I had the same experience. Once you know the
Go concepts (which are very few and simple) Go is not harder to write than
Python. Probably easier to write and read.

I came to the conclusion that people who complain about Go haven't really try
it.

------
d1ffuz0r
No. Python is rather getting stronger and going enterprise than dying

------
crdoconnor
Not really:
[https://www.google.com/trends/explore#q=go%20programming%2C%...](https://www.google.com/trends/explore#q=go%20programming%2C%20python%20programming&cmpt=q&tz=Etc%2FGMT)

------
mydpy
If anything, it is growing. Large companies are now adopting Python.

------
cblock811
If people still use PHP I'm sure Python will be fine.

------
sdfin
How is Python doing as a replacement for Bash scripting?

------
majestik
>>> Is Python dying?

False

~~~
bulutsuzku
It is dying

------
markstanford
No we use python a lot, we are a python shop

------
Dowwie
I love Python and the community behind it.

------
SixSigma
Netcraft confirms it

------
bobby_9x
Go doesn't have anywhere near the amount of libraries or support that we see
with Python.

Python isn't being assaulted on any front. We have always had multiple
programming languages and some are better than others.

My issue is that we seem to have these fad languages, like Ruby-on-rails. I
still remember when it was rammed down our throats on HN around ~2008 and you
were instantly down voted if you wanted to objectively talk about it's pros
and cons.

Now, all of the same people from that community (which I noticed, are mostly
designers, not developers) have jumped ship and moved into Javascript
frameworks like Ember.js and node.js.

PHP, while flawed and not cool anymore, is still one of the most popular
languages.

Python will be around for a long time.

~~~
Jach
I'd say PHP is still cool, there's nothing quite like it. (For good reason,
according to snooty devs, who are the ones that don't think it's cool or ever
was cool...) I'm probably closer to a snooty dev myself now too with my
favorite languages to sip on being Clojure/Lisp/Python2.7/Nim, but man PHP was
the most awesome thing when I was 15-16 and learning web programming. I still
find aspects of it cool when I do web stuff in other languages (though a lot
of that is probably from the CGI model), and there's no way it can maintain
its 80% market share if no one (even out of ignorance) thinks it's cool.

When people ask if Python is dying on the web... seems kind of irrelevant, it
never had much market share there anyway. Python's strength is in its breadth,
with a few deep anchors here and there. I agree it's not going anywhere.

------
smegel
> Go for systems and backend

Certain sorts of systems and certain sorts of backends maybe. There is a
reason people prefer dynamic languages for web based backends for example -
the amount of text mangling and arbitrary data structure manipulation becomes
a serious headache in a compiled language, be it Go, C/C++ or what-have-you.

I work on a large system written entirely in Python -we've considered
introducing Go to speed up certain processes, but Python will remain the
foundation for the foreseeable future.

~~~
BuckRogers
>I work on a large system written entirely in Python -we've considered
introducing Go to speed up certain processes, but Python will remain the
foundation for the foreseeable future.

Consider doing what Dropbox does, use PyPy for those few processes that need
more CPU performance. They run 2.7 for most things and PyPy where they need
to.

------
oniMaker
The code written to control the LIGO detectors was all python.

------
hellbann0r
[https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headline...](https://en.wikipedia.org/wiki/Betteridge%27s_law_of_headlines)

~~~
gaur
"What language will replace python?"

"No."

------
crimsonalucard
Don't trust any of the statements here. People are just responding with
qualitative predictions and observations of the tiny little programming
microcosms they dwell in.

No one here can produce an accurate prediction of the stock market anymore
than they can predict the future of python. The thing with stocks though is at
the very least they can look at a pricing trend line. People responding to you
here aren't even looking at any quantitative data.

See the data here:

[https://en.wikipedia.org/wiki/Measuring_programming_language...](https://en.wikipedia.org/wiki/Measuring_programming_language_popularity#/media/File:Tiobe_index.png)

Is python dying?

The data says "Maybe?"

