The lack of standards is a problem, as Rick G.commented, and this seems similar to other tech companies creating "proprietary" use of a language.
If you learned For-Next loops or subroutines in a languages like C++ you will find G code easier but odd. For what you are trying to accomplish (code reuse I gather) you could write O codes for pocketing operations, as I learned on the Haas, but it has it's drawbacks. Gcode is procedural, as you may have guessed, you don't write for classes or inheritance or object oriented methodology. There are quirks to some Gcode commands depending on vendor implementations. Standard are nice to have, no doubt.