1. A method for translating natural language descriptions to programs in a domain-specific language for spreadsheets, the method comprising: generating a model of a spreadsheet, comprising a column description for each column, and one or more types associated with each column; identifying phrases in the natural language description that match with a column name or a data value in a column; generating a normalized description for the original description; generating a plurality of programs in the underlying domain-specific language from the normalized description by applying a combination of rule-driven translation and type-based program synthesis; and ranking the generated programs in an order that reflects their likelihood.