Jump to content

Automatic programming

From Wikipedia, the free encyclopedia

Incomputer science,automatic programming[1]is a type ofcomputer programmingin which some mechanism generates acomputer programto allow humanprogrammersto write the code at a higher abstraction level.

There has been little agreement on the precise definition of automatic programming, mostly because its meaning has changed over time.David Parnas,tracing the history of "automatic programming" in published research, noted that in the 1940s it described automation of the manual process of punchingpaper tape.Later it referred to translation ofhigh-level programming languageslikeFortranandALGOL.In fact, one of the earliest programs identifiable as acompilerwas calledAutocode.Parnasconcluded that "automatic programming has always been aeuphemismfor programming in a higher-level language than was then available to the programmer. "[2]

Program synthesisis one type of automatic programming where a procedure is created from scratch, based on mathematical requirements.

Origin

[edit]

Mildred Koss,an earlyUNIVACprogrammer, explains: "Writing machine code involved several tedious steps—breaking down a process into discrete instructions, assigning specific memory locations to all the commands, and managing the I/O buffers. After following these steps to implement mathematical routines, a sub-routine library, and sorting programs, our task was to look at the larger programming process. We needed to understand how we might reuse tested code and have the machine help in programming. As we programmed, we examined the process and tried to think of ways to abstract these steps to incorporate them into higher-level language. This led to the development of interpreters, assemblers, compilers, and generators—programs designed to operate on or produce other programs, that is,automatic programming."[3]

Generative programming

[edit]

Generative programmingand the related termmeta-programming[4]are concepts whereby programs can be written "to manufacture software components in an automated way"[5]just as automation has improved "production of traditional commodities such as garments, automobiles, chemicals, and electronics."[6][7]

The goal is to improveprogrammerproductivity.[8]It is often related to code-reuse topics such ascomponent-based software engineering.

Source-code generation

[edit]

Source-code generationis the process of generating source code based on a description of the problem[9]or anontologicalmodel such as a template and is accomplished with aprogramming toolsuch as atemplate processoror anintegrated development environment(IDE). These tools allow the generation ofsource codethrough any of various means.

Modern programming languages are well supported by tools likeJson4Swift(Swift) andJson2Kotlin(Kotlin).

Programs that could generateCOBOLcode include:

These application generators supported COBOL inserts and overrides.

Amacroprocessor, such as theC preprocessor,which replaces patterns in source code according to relatively simple rules, is a simple form of source-code generator.Source-to-sourcecode generation tools also exist.[11][12]

Large language modelssuch asChatGPTare capable of generating a program's source code from a description of the program given in a natural language.[13]

Manyrelational database systemsprovide a function that will export the content of the database asSQLdata definitionqueries, which may then be executed to re-import the tables and their data, or migrate them to another RDBMS.

Low-code applications

[edit]

Alow-code development platform(LCDP) is software that provides an environmentprogrammersuse to createapplication softwarethroughgraphical user interfacesand configuration instead of traditionalcomputer programming.

See also

[edit]

Notes

[edit]
  1. ^Ricardo Aler Mur, "Automatic Inductive ProgrammingArchived2016-03-04 at theWayback Machine",ICML 2006 Tutorial.June 2006.
  2. ^D. L. Parnas. "Software Aspects of Strategic Defense Systems."American Scientist.November 1985.
  3. ^Chun, Wendy. "On Software, or the Persistence of Visual Knowledge." Grey Room 18. Boston: 2004, pg. 30.
  4. ^"About Generative Programming".Generative programming, as a subdomain of meta-programming, describes the practice of writing programs that generate other programs as part of their execution.
  5. ^P. Cointe (2005). "Towards Generative Programming".Unconventional Programming Paradigms.Lecture Notes in Computer Science. Vol. 3566. pp. 315–325.doi:10.1007/11527800_24.ISBN978-3-540-27884-9.Generative Programming (GP) is an attempt to manufacture software components in an automated way by developing programs that synthesize other programs.
  6. ^"Generative Programming: Concepts and Experiences (GPCE)".
  7. ^A conference ofSIGPLANon this topic is planned for November 2018. Earlier/1970s attempts in this area includedYacc and the related Lex programs.
  8. ^James Wilcox, "Paying Too Much for Custom Application Development",March 2011.
  9. ^"Application generator".PCmag.Software that generates application programs from descriptions of the problem rather than by traditional programming. It is at a higher level and easier to use than a high-level programming language such as...
  10. ^"DYL-280 Command Syntax"(PDF).Archived fromthe original(PDF)on 2018-07-30.Retrieved2018-09-03.
  11. ^Noaje, Gabriel, Christophe Jaillet, and Michaël Krajecki. "Source-to-source code translator: OpenMP C to CUDA".High Performance Computing and Communications (HPCC), 2011 IEEE 13th International Conference on. IEEE, 2011.
  12. ^Quinlan, Dan, and Chunhua Liao. "The ROSE source-to-source compiler infrastructure".Cetus users and compiler infrastructure workshop, in conjunction with PACT. Vol. 2011. 2011.
  13. ^Tung, Liam (January 26, 2023)."ChatGPT can write code. Now researchers say it's good at fi xing bugs, too".ZDNET.Archivedfrom the original on February 3, 2023.RetrievedJune 22,2023.

References

[edit]
  • Generative Programming: Methods, Tools, and Applicationsby Krzysztof Czarnecki and Ulrich W. Eisenecker, Addison Wesley, 2000.
[edit]