Learning Programming and writing Cheats are more like 2 different pair Shoes because for writing a Cheat the core Competence is not to can Program,
it's the Reverse Engineering Part, so how good you understand a Program works. That depends of course of a little bit Programming Language.
And it must be a very low Programming Language, like Pascal, C or (that would be the ultimate knowledge: ) ASM (Assembler)
Now there are 2 different Types of Cheats. The Internal Way, is to inject your own Native Machine code to the target Process or you can read and write the Process Memory from an External Process.
The first Way is forced to be from a Programming Language which Build Native Machine Code output (Pascal, C(++), ASM) and the second one can be done by any language. But for some Languages (like Java or Python) the effort to setup a Game Hack is really Hard.
The first one can call Functions from the Game itself which gives it more power and the Second can only set existing Values.
If your Goal are Game Trainers, like External Programs i would recommened C# because the effort to use the Windows API is minimal and it's not complex as C++ is.
If your Goal is that the Game Hack is the most mighty Shit in the Universe, you can't avoid C++