I use Python since 2001 and it works fine for most of my use-cases.
Nevertheless there are some things about Golang which are nice.
Instead of comparing Python with Golang I decided to ask myself:
Thomas, what is your wish list for a programming language?
The language should be able to be compiled to WebAssembly
This way you can run your code in modern browsers.
I don't want to burn the planet. My small applications don't run at scale, so it does not matter much.
Nevertheless I would like my programms to be fast, efficient and use little energy.
Here you can read that Python is not efficient Sustainability with Rust
Dynamic typing is nice, but overall I don't need it. I can work with a staticaly typed language, since this would reduce energy consumption.
I think Python code is often beautiful.
Classes use CamelCase and uppercase, and methods use snake_case and lower case.
That's one thing I don't like about golang.
The great thing about Python: You don't need to worry about pointers. It just works.
This semantic is part of my wish list.
The language should support a name2type mapping.
This can help to keep the source code clean an easier to read for humans.
Of course this is optional. Don't use it, if you don't like it.
In Python packaging is not part of the core. There are several ways to package and install code (pip, conda, ...).
It would be nice if there was one way to package and install the code.
Python f-strings are nice, but Template Literals could be even better.
For example auto-escaping all arguments would be great.
More about this: Template Literals to Python
Go has a great template/html library.
I would love to have this: Strings get quoted according to their context.
Combined with f-string like template-literals this would be heaven to create HTML inside code (Locality of Behaviour.
I don't want to type async and await again and again.
I think there is a way to create a async-transparent language.
Up to now the only language I know which is async-transparent is hyperscript
I know that Rust is faster than golang, but nevertheless garbage collection is on my wish list.
I don't want to allocate and free memory.
There should be a gRPC integration
Profiling should be part of the standard library. Related: Go Profiling.
I like function based tests like pyTest provides them. I don't want to write a class (jUnit style).
Example: https://docs.pytest.org/en/stable/how-to/assert.html#assert
PyTest fixtures are great. This way you can easily create data for your tests.
Just create an argument for your test function with the corresponding name.
Example: https://docs.pytest.org/en/stable/explanation/fixtures.html
It would be great, if there would be a simple and fast way to get from a method in the code to the corresponding tests which execute this method.
Example: I have a method do_foo().
Now I want to see all tests which execute do_foo().
I think object-oriented-programming is overrated. Nevertheless I don't want to miss it.
I like the explicit way you need to call the parent-constructur in Python.
It is perfectly fine to write this one line in the constructor of your class.
Golang has great support for profiling production code: https://go.dev/doc/diagnostics
It wish there is an active community chat where threads get used. Without threads a chat is just a stream of messages without structure. I prefer threaded chat, even if there is little traffic.
Please tell me your thoughts. The prefered way is to open an issue.