Hey
I started as a machinist but became a NC Programmer in the 1980's using IBM APT 360. Or apt (not debian apt). Apt is a programming language used to define and drive geometry. There is now a free version of apt360 available at
sourceforge.net/projects/aptos/files/
There is also a manual online at
www.archivist.info/apt/aptos/apt360/doc/manual/
I haven't had an occasion to write anything very complex but it has done well on the times I have used it. One thing I like is the ability to subscript points so a simple loop can be used to read in the points and preform center drilling, drilling, reaming, tapping, and spot facing by using drive statements in a separate loop for each operation.
For a lot of people doing 2D work it can be a easy way to generate g-code. While a person familiar with g-code may be faster just writing the code out. On more complex parts or familys of parts apt360 can be a good choice. Once you learn the language it can do a lot more complex work than can be done by writing the g-code.
I believe the apt360 processor has a post processor that works with linuxcnc.
Jim