Make tools that provide constraints that reflect the real world, in the hands of the designer. How often do you see beautiful design concepts that have zero draft or unmoldable overhangs? If those are things that are irrelevant with additive printing, then render the preview in no greater resolution than what the printer can produce, and identify the grain along which your part will break.
This will lead us to what my partner calls augmented fabrication. He prototyped Part Preview, a "Print Preview" for milling machines, projecting toolpaths onto your material or using a Kinect to intersect the blank with the model (unfortunately, no documentation except for http://www.metropolismag.com/pov/20111010/lab-report-2 and a thesis paper).
We need tighter integration between the software used to design objects and the hardware that manufactures them. Protomold is a step in the right direction. Because they control much of the process, they can tell you how your uploaded design needs to change to be manufacturable. That's an API for manufacturing - it digitizes something about the physical process. And it's a great educational tool. It's all about reducing the length of the feedback loop so that we can make mistakes and learn faster.
First thing the damn pre-processor does is a rapid traverse in x and y to the center of the pocket, WITHOUT raising the tool to safe "flight altitude". I was lucky in that I was using a vacuum chuck and a block of machinable wax for these tests, otherwise it could have been really ugly (broken tool and potential collision of the spindle with clamps leading to torquing the column out of vertical).
Fun stuff.
As a programmer who's used nearly every computer programming language from machine code, Forth, APL, C++, ObjectiveC and everything in-between I have always felt that G-Code is stuck somewhere in the Mesozoic era. Sure, it works, but one could certainly talk to these machines in far better ways.