
I Love Python - zdw
https://opensource.com/article/19/10/why-love-python
======
musicale
My personal reasons why python is the language I hate to love:

\- it is 100x slower than C++, so you need 100,000 servers rather than 1000

\- python 3 broke backward compatibility with python 2, creating unnecessary
chaos

\- python 3 removed the wonderful print statement, which _could_ have
coexisted peacefully with the print function but no!!!

\- pytype and pylint suck and are very slow

\- even though it supports coroutines, concurrency and parallelism support is
poor

\- there isn't a commonly available native compiler for it

\- pep8 recommends mixing camelCase and stupid_underscores (and has lots of
other things I hate)

\- the base constructor method must be called __init__

\- the if __name__ == '__main__': idiom is evil

\- map, filter, lambda etc. are all deprecated, but their replacements aren't
always better

\- no repeat..until or do..while loop

\- range() is often confusing (e.g. range(0, n+1)) and there doesn't seem to
be a built-in inclusive range iterator (e.g. start..finish or irange(start,
finish, step))

\- there doesn't seem to be a standard format for docstrings

\- multidimensional arrays/matrices are clunky

\- it has three exit() functions: exit(), sys.exit() and os.exit() - but
sys.exit() is the one you're supposed to use

\- (controversial I'm sure) you can't use minus signs in identifiers

\- implementing numerical types is hard, making dimensional analysis hard

~~~
scrollaway
What? Some of these assertions are so wrong I don't even know where to begin
correcting them.

> _it is 100x slower than C++, so you need 100,000 servers rather than 1000_

This is not even sort of how it works.

> _the wonderful print statement, which could have coexisted peacefully with
> the print function_

No, it couldn't have. It really couldn't have.

> _pep8 recommends mixing camelCase and stupid_underscores_

pep8 doesn't recommend camelCase anywhere.

> _the if __name__ == '__main__': idiom is evil_

… evil? I'd prefer a "def __main__" myself but… evil?

> _map, filter, lambda etc. are all deprecated_

they are not

> _there doesn 't seem to be a built-in inclusive range iterator_

there is, it's called range().

> _there doesn 't seem to be a standard format for docstrings_

there is.

> _you can 't use minus signs in identifiers_

you syntactically can't, but given your other assertions, this isn't even sort
of controversial.

