Naturalistic Programming: Model and Implementation
Keywords:Naturalistic Programming, Controlled Natural English, Expressiveness, Automatic Source Code Generation
Naturalistic programming is defined as a programming technique that uses abstractions with expressiveness like a natural language. The objective is to preserve as much as possible the client’s needs in their language and at the same time the text of these needs is simultaneously the requirements specification and the program source code. Consequently, the goal of a naturalistic paradigm is to reduce the gap between the problem domain and the solution domain. In the literature two main approaches are reported, one focuses on transforming controlled natural languages in to high level code, such as Java and Python; in the other approach the requirements description is at the same time the program source code. While the translators employed in the first approach do not offer a new paradigm, the few naturalistic languages reported have utility in specific domains. In the absence of a naturalistic framework, this article presents the minimum elements to define a naturalistic model that allows the creation of general-purpose languages and at the same time as a proof of concept the SN language is introduced, a prototype language for naturalistic programming.