From the beginning of the computer age, computer sci-entists have grappled with the fact that writing programs in any computer language, even relatively high-level ones such as FORTRAN or C, requires painstaking attention to detail. While language developers have responded to this challenge by trying to create more “programmer friendly” languages such as COBOL with its English-like syntax, another approach is to use the capabilities of the com-puter to automate the task of programming itself. It is true that any high-level language compiler does this to some extent (by translating program statements into the under-lying machine instructions), but the more ambitious task is to create a system where the programmer would specify the problem and the system would generate the high-level language code. In other words, the task of programming, which had already been abstracted from the machine code level to the assembler level and from that level to the high-level language, would be abstracted a step further.
During the 1950s, researchers began to apply artificial intelligence principles to automate the solving of mathemat-ical problems (see artificial intelligence). For example, in the 1950s Anthony Hoare introduced the definition of preconditions and postconditions to specify the states of the machine as it proceeds toward an end state (the solution of the problem). The program Logic Theorist demonstrated that a computer could use a formal logical calculus to solve problems from a set of conditions or axioms. Techniques such as deductive synthesis (reasoning from a set of pro-grammed principles to a solution) and transformation (step-by-step rules for converting statements in a specification language into the target programming language) allowed for the creation of automated programming systems, primarily in mathematical and scientific fields (see also prolog).
The development of the expert system (combining a knowledge base and inference rules) offered yet another route toward automated programming (see expert sys-tems). Herbert Simon’s 1963 Heuristic Compiler was an early demonstration of this approach.
Applications
Since many business applications are relatively simple in logical structure, practical automatic principles have been used in developing application generators that can cre-ate, for example, a database management system given a description of the data structures and the required reports. While some systems output code in a language such as C, others generate scripts to be run by the database manage-ment software itself (for example, Microsoft Access).
To simplify the understanding and specification of prob-lems, a visual interface is often used for setting up the appli-cation requirements. Onscreen objects can represent items such as data files and records, and arrows or other connect-ing links can be dragged to indicate data relationships.
The line between automated program generators and modern software development environments is blurry. A programming environment such as Visual Basic encapsu-lates a great deal of functionality in objects called controls,
which can represent menus, lists, buttons, text input boxes, and other features of the Windows interface, as well as other functionalities (such as a Web browser). The Visual Basic programmer can design an application by assembling the appropriate interface objects and processing tools, set properties (characteristics), and write whatever additional code is necessary. While not completely automating pro-gramming, much of the same effect can be achieved.
During the 1950s, researchers began to apply artificial intelligence principles to automate the solving of mathemat-ical problems (see artificial intelligence). For example, in the 1950s Anthony Hoare introduced the definition of preconditions and postconditions to specify the states of the machine as it proceeds toward an end state (the solution of the problem). The program Logic Theorist demonstrated that a computer could use a formal logical calculus to solve problems from a set of conditions or axioms. Techniques such as deductive synthesis (reasoning from a set of pro-grammed principles to a solution) and transformation (step-by-step rules for converting statements in a specification language into the target programming language) allowed for the creation of automated programming systems, primarily in mathematical and scientific fields (see also prolog).
The development of the expert system (combining a knowledge base and inference rules) offered yet another route toward automated programming (see expert sys-tems). Herbert Simon’s 1963 Heuristic Compiler was an early demonstration of this approach.
Applications
Since many business applications are relatively simple in logical structure, practical automatic principles have been used in developing application generators that can cre-ate, for example, a database management system given a description of the data structures and the required reports. While some systems output code in a language such as C, others generate scripts to be run by the database manage-ment software itself (for example, Microsoft Access).
To simplify the understanding and specification of prob-lems, a visual interface is often used for setting up the appli-cation requirements. Onscreen objects can represent items such as data files and records, and arrows or other connect-ing links can be dragged to indicate data relationships.
The line between automated program generators and modern software development environments is blurry. A programming environment such as Visual Basic encapsu-lates a great deal of functionality in objects called controls,
which can represent menus, lists, buttons, text input boxes, and other features of the Windows interface, as well as other functionalities (such as a Web browser). The Visual Basic programmer can design an application by assembling the appropriate interface objects and processing tools, set properties (characteristics), and write whatever additional code is necessary. While not completely automating pro-gramming, much of the same effect can be achieved.
No comments:
Post a Comment