1. A method for generating a program, comprising: detecting a plurality of steps for performing a task on a computing device and actual input data for the task; detecting an example relating to each of the plurality of steps, wherein the example comprises input data and corresponding output data relating to the step; and for each example, determining a plurality of rules that transform the input data to the corresponding output data based on cues comprising textual features within the input data and cues comprising textual features within the corresponding output data; for each example, ranking the plurality of rules according to a probability that each rule explains a transformation from the input data to the corresponding output data; for each example, specifying a rule to be used for performing a step represented by the example based on the ranking of the plurality of rules; and generating a program for performing the task based on the specified rules.
5. The method of claim 1 , wherein the rule comprises a composition of functions and constants.