1. A computer-implemented method for controlling a target program by natural language, the method comprising: providing a control program which is executed concurrently with the target program on a computing device, the control program comprising a list of natural language commands, each natural language command comprising one or more words starting with a first character and each natural language command being associated with one or more commands of the target program; generating a graphic user interface by the control program to receive inputs from a user, the graphic user interface comprising a filter field for entering characters and a list field for displaying natural language commands; receiving a plurality of inputs from the user, entered in succession, wherein each of the plurality of inputs corresponds to a character entered in the filter field; creating a subset of natural language commands comprising only those entries from the list of natural language commands that have a plurality of words, a count of words in the natural language command being at least equal to a count of inputs received from the user, wherein each of the plurality of inputs matches in identical order the first character of a respective one of the plurality of words in each of the natural language commands, and wherein available natural language commands in the subset are progressively reduced in response to each successive input; displaying the subset of natural language commands in the list field; enabling the user to select one of the natural language commands from the subset of natural language commands displayed in the list field; and causing the target program to execute one or more commands in response to the user's selection of the one of the natural language commands in the control program.