Some of the choices I have came across: Python, C++, Java, JavaScript, (any other ones?);
As long as you understand how things works under the hood, any programming language is sufficient.
If you are beginner- for the sake of learning just programming language syntax- use python.
but if you want to write blockchain. smart contract things you need to understand the low level things like stack, heap, memory management, assembly.
that you usually learn in college year.