1. A computer-implemented process for synthesizing a robotic task program, comprising: using a computer to perform the following process actions: receiving one or more example tasks, each example task comprising a scene-reposition pair, said scene portion of a scene-reposition pair comprising a collection of objects characterized by their orientation, location and perceptual object characteristics, and representing a starting configuration of the objects in a workspace associated with a robot, and said reposition portion of a scene-reposition pair comprising repositioning data for one or more of said objects, wherein the repositioning data for an object comprises a destination orientation, or destination location, or both and is indicative of a task that it is desired for the robot to perform on the various objects in the workspace; generating one or more candidate robotic task programs, each program comprising instructions for causing the robot to reposition one or more of said objects in the workspace, and wherein each program represents a different permutation of instructions consistent with the received example task or tasks; ranking the one or more candidate robotic task programs generated based on the degree to which a candidate program would cause the robot to reposition objects in a manner indicated by the scene-reposition pair or pairs of the received example task or tasks; and whenever the top ranking candidate robotic task program accomplishes the repositioning specified in each of the scene-reposition pairs in the received example task or tasks, designating the top ranking candidate robotic task program as the synthesized robotic task program.