1. A software development tool for programming natural language software applications, the software development tool comprising: a programming language comprising a set of programming constructs for facilitating natural language programming; and a compiler adapted to take a software program containing instances of the set of programming constructs and to generate a software application.