1. An interactive method for learning and executing executable tasks using language and demonstration inputs from a user, comprising: a. providing a computational device including a graphical user interface (GUI); b. providing software running on said computational device and supported GUI-based interaction with said user; c. wherein said user performs tasks using the GUI d. wherein said software includes a natural dialog-based interface whereby said user can communicate with said software using natural dialog-based language; e. for each of said executable tasks, recognizing said user's overall intent; f. for each of said executable tasks, identifying a plurality of steps needed to complete said task; g. for each of said plurality of steps, identifying and generalizing a step objective; h. learning to execute each of said steps from demonstrations provided by said user; i. providing incremental execution and interaction with said user using said natural dialog-based interface; j. providing a database for storing a task definition for each of said tasks, wherein said task definition includes said steps comprising said task and said step objectives; k. storing said task definitions in said database; l. for each of said tasks, learning semantic characterization of said task for later retrieval from said database; m. retrieving a particular task definition from said database using said semantic characterization; and n. improving said task definition for each of said tasks through practice, with instruction being provided by said user.