Programming needs to be based on machine tool operation, and tool path, workpiece position and so on cannot be supported by theory alone.
Zero-based learning of programming is already difficult, and five-axis programming is more complicated.
I recommend a study material for you, http://www.skjgzx.org/wenda.
Integrating theory with practice is a good way to learn CNC equipment.