John Aspinall <j@jkmfamily.org> says:
CAD languages based on Constructive Solid Geometry _do_ describe the shape of an object in fairly rigorous, tractable ways. But they say absolutely nothing about how to make the object.
CAM languages such as G-code (http://en.wikipedia.org/wiki/G-code) describe how to make the object by moving a (subtractive) tool through space occupied by raw material. It's basically connect-the-dots, but with an eraser.
Going from one to the other is roughly like compilation.
In fact, G-code is precisely a Constructive Solid Geometry language, where every model is the CSG difference of the initial billet and the Minkowski sum of the tool and the tool path. i.e. Blank-(Tool*Path) (in some notation or other.) -- Tom Duff. No proper program contains an indication which as an operator-applied occurrence identifies an operator-defining occurrence which as an indication-applied occurrence identifies an indication-defining occurrence different from the one identified by the given indication as an indication-applied occurrence.