Abstract
While the use of natural language for software development has been proposed since the 1960s, it was limited by the inherent ambiguity of natural languages, which people resolve using reasoning in a text or conversation. Programming languages are formal general-purpose or domain-specific alternatives based on mathematical formalism and which are at a remove from natural language. Over the years, various authors have presented studies in which they attempted to use a subset of the English language for solving particular problems. Each author approached the problem by covering particular domains, rather than focusing on describing general elements that would help other authors develop general-purpose languages, instead focusing even more on domain-specific languages. The identification of common elements in these studies reveals characteristics that enable the design and implementation of general-purpose naturalistic languages, which requires the establishment of a programming model. This article presents a conceptual model which describes the elements required for designing general-purpose programming languages and which integrates abstraction, temporal elements and indirect references into its grammar. Moreover, as its grammar resembles natural language, thus reducing the gap between problem and solution domains, a naturalistic language prototype is presented, as are three test scenarios which demonstrate its characteristics.
Highlights
For a number of decades, programmers have sought the means by which to employ natural languages in software development [1]; the use of these languages is limited by the inability of computers to detect and resolve ambiguities, the resolution of which requires the human cognitive process
Natural Language Computer (NLC) is presented in [4] as a programming language focused on the management of arrays that appear on the screen by using a subset from the English language to resolve the expressiveness problems of the C language
Presented in [30,31], Natural Language Command Interpreter (NLCI) is a tool focused on generating executable code from an entry in English and is based on an ontology generated from an Application Programming Interface (API)
Summary
Featured Application: A general-purpose naturalistic language can be used to develop software systems using a syntax closer to natural languages, but formal enough to avoid ambiguity. This is useful for tasks such as requirement transformation, maintenance and software evolution
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have