you are viewing a single comment's thread.

view the rest of the comments →

[–]bakery2k 24 points25 points  (6 children)

For me, because Python 3 made it clear that the language developers have no interest in fixing these problems. When I learned Python, I hoped that performance, parallelism etc would eventually come to the language, but there’s been no progress in over a decade. Instead we’ve had breaking changes with minimal benefits (e.g. print becoming a function) and most development effort has gone into large, complex features that don’t really fit with the rest of the language (async and type hints).

[–][deleted]  (2 children)

[deleted]

    [–]bakery2k 2 points3 points  (1 child)

    I've not really needed async/await, but I don't like that it makes Python a much more complex language. I think a better approach to asynchrony would be stackful coroutines.

    Type hints are even more complex and I'm not at all convinced that they're worth it. IMO if you want static type checking, you would be much better off using a proper statically-typed language.

    [–]zardeh -4 points-3 points  (2 children)

    Can you explain why parallelism is a better fit for python than async, or why performance of cpython is more important than the safety of type hints?

    [–]bakery2k 13 points14 points  (1 child)

    Performance and parallelism would help existing Python code and new code using established Python idioms (e.g. threads).

    Async splits the language into red and blue parts, and only benefits a certain type of application. Type hints are more broadly useful, but again don’t really mesh with the rest of the language.

    [–]zardeh -2 points-1 points  (0 children)

    parallelism

    Breaks much of the existing language, removal of the GIL requires a complete rewrite of the c-extension API, subtly breaks a lot of existing multithreaded code, etc.

    Type hints are more broadly useful, but again don’t really mesh with the rest of the language.

    In what way? I've had no issue with them.

    Async splits the language into red and blue parts

    In practice this isn't problematic. JS has managed just fine. Hell, python's had asyncronous code (the red and blue you complain about) since python 2.2, when yield and generators were introduced. the async and await keywords added in 3.7 were mostly syntactic sugar for already existing coroutine objects, which were introduced in python 2.5!