Ask HN: Why not use Python? - pygix
======
odonnellryan
I'm mostly a Python dev who dabbles in random languages. Few things that
aren't-so-great with traditional Python:

1) Not statically typed 2) Not compiled 3) Super-cross-platform is cool, and
not cool.

1: This one is obvious: it doesn't stop you from writing awesome code, but the
type-hinting in Python still has a way to go. And what's type-hinting without
#2?

2: You lose out a lot on a language that isn't compiled. It's nice to just be
able to execute the code, but compiler warnings are awesome. Binaries are
actually cool in a lot of circumstances.

3: It's good to know, in general, that you have the _ability_ to run on many
systems. However, in the real world you still have to test extensively on all
the platforms you want to run the code on, and you have to ensure the tech
you're using is supported, of course.

Python is an awesome language for many, many things: but sometimes a language
like C# or Go or Rust or.... makes more sense. Performance, statically typed,
or pure-functional-programming is sometimes desired: these things are often
harder in Python.

One thing Python has over many of its contemporaries is the _vast_ and helpful
(fun) community. There's a million libraries (like from the JavaScript world)
but unlike JS (in my experience, this is just because of the "newness" of the
ecosystem) these libraries are very, very mature. And the tooling is actually
really good, check out Conda for example!

~~~
Can_Not
> but unlike JS these libraries are very, very mature

I have a very different experience. JS libraries are typically fine. You
usually have more than one option (because there's more than one type of
nail). Libraries are smaller (Unix philosophy), so if it hasn't had a commit
in 6 years it was probably complete anyways and loss of backwards/forwards
compatibility is nearly never an issue. Python libraries always exclusively
support the version of python you're not using (2 or 3) and are abandoned
except for the really popular ones like numpy, django, flask, etc.

------
iEchoic
There are too many other mainstream backend languages with important
advantages over Python. I'm having a hard time thinking of a problem space
where I wouldn't rather pick something else.

C# has static types, far better tooling, and is generally more maintainable.
Go and C++ are way faster. Node has the benefit of allowing you to (share)
code in the same language on the frontend and the backend. Every other
language has "not having to deal with a broken inheritance model that makes me
pass `self` around everywhere" and "doesn't silently turn things into tuples
when I add an extra comma somewhere".

I will say that Python is one of the easiest backend languages to throw new
people into and have them contributing quickly - but I think the gap has
narrowed substantially recently. JavaScript has become so pervasive that Node
might actually have the advantage now.

------
botten
Python is slow. Sometimes this matters (pypy can improve speed in many but not
all cases).

