TOOLBOX

BROWSE TOPICS

RESOURCES

ABOUT THIS SITE

pmwiki.org
pmwiki-2.2.0-beta65

edit SideBar

Automatic Programming

(a subtopic of Applications)

cellnr width=200
)
div class="toc" style="font-size
small; border:1px solid gray; background-color:#f0f8ff; width:180px":)

Contents

divend
)

[T]hree fundamental questions that must be addressed in the design of any automatic programming system: What does the user see? How does the system work? What does the system know? - from Approaches to Automatic Programming

cartoon of computer typing    

Computer Software That Writes Itself. By Sandra Upson. Newsweek (International Edition; December 26, 2005 - January 2, 2006) / available from MSNBC.com. "Software is a messy business. ... The situation has triggered interest in using computer programs to generate other programs automatically. The benefits of automatic software are compelling. ... 'If a programmer can sit down, specify what you want and push a button, you end up much more productive,' says Doug Smith, a researcher at the Kestrel Institute, a nonprofit RD center in Palo Alto, California. 'It's the next stage in the evolution of computer programming.' Smith and his colleagues at Kestrel have developed a program that translates a description of a problem into guidelines a computer can understand. ... One automatic programming tool has already made it into the financial marketplace. SciComp, based in Austin, Texas, has developed a product that helps investment banks design programs to price financial derivatives. ... Researchers at NASA hope to be able to generate programs on the fly during emergencies."

"Computer programming is the process of constructing executable code from fragmentary information. ... When computer programming is done by a machine, the process is called automatic programming. AI researchers are interested in studying automatic programming for two reasons: First, it would be highly useful to have a powerful automatic programming systems that could receive casual and imprecise specifications for a desired target program and then correctly generate that program; second, automatic programming is widely believed to be a necessary component of any intelligent system and is therefore a topic for fundamental research in its own right."
- excerpt from Biermann, A. 1992. Automatic Programming. In Encyclopedia of Artificial Intelligence. 2nd edition, Stuart C. Shapiro, editor, 18 - 35. New York: John Wiley & Sons.

Tool turns English to code. By Kimberly Patch, Technology Research News (March 23 / 30, 2005). "Writing software has been relatively difficult since people began programming computers in the mid-1900s. Although programming a computer is eminently useful -- it gives you fine control of a powerful tool -- it requires learning a programming language. Researchers from the Massachusetts Institute of Technology are aiming to remove this requirement. They have taken a step toward that goal with a language-to-code visualizer dubbed Metafor. The visualizer uses natural language instructions to sketch the outlines of a program. It can be used as a programming learning tool and to provide rough drafts of programming projects, and could lead to more complete programming-by-natural-language methods. ... Metafor organizes a natural-language description of a program into the skeleton of a program by mapping the inherent structure of English -- parts of speech, syntax, and subject-verb-object roles -- into a basic programmatic structure of class objects, properties, functions, and if-then rules, said [Hugo] Liu. "

Automatic Programming Project at the Artificial Intelligence Laboratory, University of Texas at Austin. "Automatic Programming is defined as the synthesis of a program from a specification. If automatic programming is to be useful, the specification must be smaller and easier to write than the program would be if written in a conventional programming language."

Automated Software Engineering Group, NASA Ames Research Center. "The goal of automated software engineering is to increase by orders of magnitude both the quality and the productivity of software engineering. The cross-cutting research done by the Automated Software Engineering group of Code IC at NASA Ames draws upon several disciplines including: Artificial Intelligence - particularly automated reasoning and knowledge representation; Formal Methods; programming language theory; mathematical logic; and advanced compiler methods."

1979: Cordell Green, David Barstow, Elaine Kant and others at Stanford demonstrated the CHI system for automatic programming. - from Bruce G. Buchanan's Brief History of Artificial Intelligence

"Kestrel Institute is a non-profit computer science research institute focusing on formal and knowledge-based methods for incremental automation of the software process. Kestrel's research efforts are applicable to the construction of the intelligent software design and engineering environment of the future that provides automated support for all activities in the software life-cycle. ... Our staff of researchers combines expertise in program synthesis, software engineering, machine intelligence, knowledge-base management, logic, automated reasoning systems, software environments, programming languages and compilers."

Watch What I Do: Programming by Demonstration. Ddited by Allen Cypher, co-edited by Daniel C. Halbert, David Kurlander, Henry Lieberman, David Maulsby, Brad A. Myers, and Alan Turransky. 1993. The MIT Press Cambridge, Massachusetts; London. The entire text of this book is available online!

  • Also see Henry Lieberman's Programming by Example pages: "Programming by example [or 'programming by demonstration' (fn)] is a technique for teaching the computer new behavior by demonstrating actions on concrete examples. The system records user actions and generalizes a program that can be used in new examples."

16 Attributes of a System for Automatic Programming - Genetic programming has 16 attributes of what is sometimes called automatic programming or program synthesis or program induction). From Genetic Programming Inc.

Quality and Knowledge in Software Engineering. By Stu Burton, Kent Swanson, and Lisa Leonard. AI Magazine 14(4): Winter 1993, 43-50. "Celite corporation and Andersen Consulting have developed an advanced approach to traditional software development called the application software factory (ASF). The approach is an integration of technology and total quality 'management' techniques that includes the use of an expert system to guide module design and perform 'module programming.' The expert system component is called the knowledge-based design assistant and its inclusion in the ASF methodology" has significantly reduced module development time, training time, and module and communication errors.

Approaches to Automatic Programming. By Charles Rich and Richard C. Waters. Advances in Computers, Volume 37, M. C. Yovits, ed., Academic Press, 1993. Available from MERL (Mitsubishi Electric Research Laboratories). "This paper is an overview of current approaches to automatic programming organized around three fundamental questions that must be addressed in the design of any automatic programming system: What does the user see? How does the system work? What does the system know? As an example of a research effort in this area, we focus the Programmer's Apprentice project. ... Much of what was originally conceived of as automatic programming was achieved long ago. Today, no one would call an assembler or a compiler automatic programming. However, when these devices were first invented in the 1950's the term was quite appropriate."

80% of software is no brain work: Ivar Jacobson. By Nick Gibson. Builder AU (August 10, 2007). "He's one of the fathers of modern software practices. In the late sixties while working at Ericsson he invented both sequence diagrams and use cases, and in later years worked on the SDL, UML and the RUP. We caught up with Dr Ivar Jacobson to hear his thoughts on where the industry is today, and where it will head in the future. ... [Q] What do you think is the most important thing to change? [A] To really automate and remove no brain work you need to find some identifiable patterns and apply these patterns over and over again with slightly different inputs -- that makes it hard because it's not reusable code only. I think reusable code has increased, we definitely use more reusable code than we did 20 years ago -- not as much as we could -- but we use more. When it comes to patterns you need to have different parameters based upon the context. They're very context centred. So what programmers do is use patterns, but they have to add the context themselves. That is what makes it so slow. I have since 1981 described a vision where we are assisted by intelligent agents. An intelligent agent that understands what you're doing in software. The only real difference between this kind of software and normal software, so to speak, is that its rule driven. ... These rules trigger based on context, and then a pattern is applied. ... [Q] Do you think then that using artificial intelligence is a way we can increase productivity?...

SciFinance: A Program Synthesis Tool for Financial Modeling. By Robert L. Akers, Ion Bica, Elaine Kant, Curt Randall, and Robert L. Young. AI Magazine 22(2): Summer 2001, 27-42. This paper is based on the authors' presentation at the Twelfth Innovative Applications of Artificial Intelligence Conference (IAAI-2000). Abstract: "The SciFinance software synthesis system, licensed to major investment banks, automates programming for financial risk-management activities-- from algorithms research to production pricing to risk control. SciFinance's high-level, extensible specification language, aspen, lets quantitative analysts generate code from concise model descriptions written in application-specific and mathematical terminology; typically, a page or less produces thousands of lines of c. aspen's abstractions help analysts focus on their primary tasks--model description, validation, and analysis--rather than on programming details. Compared with manual programming, automation produces codes that are more sophisticated, accurate, and consistent. Analysts develop models within a day that previously took weeks or were not even attempted. SciFinance extends a system that generates scientific computing codes in a variety of target languages. The implementation integrates an object-oriented knowledge base, refinement and optimization rules, computer algebra, and a planning system. The shared knowledge base is used by the specification checker, synthesis system, and information portal."

Computer animation taking new steps. By Christi C. Babbitt. The Daily Herald (April 29, 2004). "In the past, computer animation for movies and computer games has been expensive and time-consuming. But Brigham Young University researchers have developed new techniques that let a computer create more realistic animations faster. Using artificial intelligence, the researchers have developed a new software technology that allows computers to learn to animate a computer-generated character through examining animation examples provided by a human. The computer then makes choices based on those examples regarding how the character will behave and react, even if the computer is presented with an unfamiliar situation. 'This is brand new stuff,' said Jonathan Dinerstein, a BYU graduate student studying computer science and co-author of a paper detailing the research. The paper was published in Tuesday's issue of the Journal of Computer Animation and Virtual Worlds. ... The closest thing to it is probably Massive, a software program created to help animate major battles in 'The Lord of the Rings' film trilogy, he said."

Watch What I Do: Programming by Demonstration. Edited by Allen Cypher, co-edited by Daniel C. Halbert, David Kurlander, Henry Lieberman, David Maulsby, Brad A. Myers, and Alan Turransky. The MIT Press, 1993. Now available online!

Related Pages

AAAI Home   Recent Changes   Edit   History   Print   Contact Us
Page last modified on August 26, 2008, at 08:32 AM