Automatic programming: Difference between revisions

Content deleted Content added
Origin: auto
Tags: Mobile edit Mobile web edit
 
(25 intermediate revisions by 18 users not shown)
Line 1:
{{short description|Type of computer programming}}
{{Programming paradigms}}
 
<code>'''In [[computer science]], the term '''automatic programming'''<ref>Ricardo Aler Mur, "[http://www.evannai.inf.uc3m.es/et/icml06/aiptutorial.htm Automatic Inductive Programming] {{Webarchive|url=https://web.archive.org/web/20160304073124/http://www.evannai.inf.uc3m.es/et/icml06/aiptutorial.htm |date=2016-03-04 }}", ''ICML 2006 Tutorial''. June 2006.</ref> identifiesis a type of [[computer programming]] in which some mechanism generates a [[computer program]], to allow human [[programmer]]s to write the code at a higher abstraction level.'''</code>
 
<code>'''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 punching [[paper tape]]. Later it referred to translation of [[high-level programming language]]s like [[Fortran]] and [[ALGOL]]. In fact, one of the earliest programs identifiable as a [[compiler]] was called [[Autocode]]. [[David Parnas|Parnas]] concluded that "automatic programming has always been a [[euphemism]] for programming in a higher-level language than was then available to the programmer."<ref>D. L. Parnas. "[httphttps://web.stanford.edu/class/cs99r/readings/parnas1.pdf Software Aspects of Strategic Defense Systems]." ''American Scientist''. November 1985.</ref>'''</code>
 
<code>'''[[Program synthesis]] is one type of automatic programming where a procedure is created from scratch, based on mathematical requirements.'''</code>
 
==Origin==
Line 11:
 
==Generative programming==
'''Generative programming''' and the related term [[Metaprogramming|meta-programming]]<ref>{{cite web
|quote=Generative programming, as a subdomain of meta-programming, describes the practice of writing programs that generate other programs as part of their execution.
|url=https://scala-lms.github.io/tutorials/01_overview.html
Line 30:
|quote=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 ...
|url=https://www.pcmag.com/encyclopedia/term/37909/application-generator
|title=Application generator |publisher=PCmag.com}}</ref> or an [[Ontologyontology (computerinformation science)|ontological]] model such as a template and is accomplished with a [[programming tool]] such as a [[template processor]] or an [[integrated development environment]] (IDE). These tools allow the generation of [[source code]] through any of various means.
 
Modern programming languages are well supported by tools like [https://www.json4swift.com/ Json4Swift] ([[Swift (programming language)|Swift]]) and [https://www.json2kotlin.com/ Json2Kotlin] ([[Kotlin (programming language)|Kotlin]]).
 
Programs that could generate [[COBOL]] code include:
* the DYL250/DYL260/DYL270/DYL280 series<ref>{{cite web
|url=http://www.sysed.com/DnLoads/RefCards/DYL280.pdf
|title=DYL-280 Command Syntax}}</ref>
|access-date=2018-09-03
|archive-url=https://web.archive.org/web/20180730111004/http://www.sysed.com/DnLoads/RefCards/DYL280.pdf
|archive-date=2018-07-30
|url-status=dead
}}</ref>
* [[Business Controls Corporation]]'s SB-5
* [[KPMG|Peat Marwick Mitchell]]'s PMM2170 application-program-generator package
These application generators supported COBOL inserts and overrides.
 
A [[Macro (computer science)|macro]] processor, such as the [[C preprocessor]], which replaces patterns in source code according to relatively simple rules, is a simple form of source-code generator.{{citation needed|date=August 2017}} [[Source-to-source compiler|Source-to-source]] code generation tools also exist.<ref>Noaje, Gabriel, Christophe Jaillet, and Michaël Krajecki. "[https://www.researchgate.net/profile/Ponnuswamy_Sadayappan/publication/221302775_Automatic_C-to-CUDA_Code_Generation_for_Affine_Programs/links/09e4150e7f97085734000000/Automatic-C-to-CUDA-Code-Generation-for-Affine-Programs.pdf Source-to-source code translator: OpenMP C to CUDA]". High Performance Computing and Communications (HPCC), 2011 IEEE 13th International Conference on. IEEE, 2011.</ref><ref>Quinlan, Dan, and Chunhua Liao. "[https://www.researchgate.net/profile/Chunhua_Liao/publication/267861836_The_ROSE_Source-to-Source_Compiler_Infrastructure/links/5465a8120cf2f5eb17ff4238.pdf The ROSE source-to-source compiler infrastructure]". Cetus users and compiler infrastructure workshop, in conjunction with PACT. Vol. 2011. 2011.</ref>
 
[[Large language model]]s such as [[ChatGPT]] are capable of generating a program's source code from a description of the program given in a natural language.<ref name="ChatGPT can write code">{{Cite web |url=https://www.zdnet.com/article/chatgpt-can-write-code-now-researchers-say-its-good-at-fixing-bugs-too/ |title=ChatGPT can write code. Now researchers say it's good at fixing bugs, too |website=ZDNET |date=January 26, 2023 |first=Liam |last=Tung |access-date=June 22, 2023 |archive-date=February 3, 2023 |archive-url=https://web.archive.org/web/20230203051252/https://www.zdnet.com/article/chatgpt-can-write-code-now-researchers-say-its-good-at-fixing-bugs-too/ |url-status=live}}</ref>
 
Many [[Relational database system|relational database systems]] provide a function that will export the content of the database as [[SQL]] [[Data definition language|data definition]] queries, which may then be executed to re-import the tables and their data, or migrate them to another RDBMS.
 
==Low-code applications==
{{Main article|Low-code development platforms}}
 
A [[Low-code development platforms|low-code development platform]] (LCDP) is software that provides an environment [[programmersprogrammer]]s use to create [[application software]] through [[graphical user interface]]s and configuration instead of traditional [[computer programming]].
 
==See also==
Line 52 ⟶ 63:
* [[Comparison of code generation tools]]
* [[Feature-oriented programming]]
* [[GitHub Copilot]]
* [[AI-assisted software development]]
* [[Language-oriented programming]]
* [[Modeling language]]
Line 58 ⟶ 71:
* [[Vocabulary-based transformation]]
* [[Fourth-generation programming language]]
* [[Low-code development platformsplatform]]s
* [[Emergent Coding]]
 
==Notes==
Line 69 ⟶ 83:
* [http://www.methodsandtools.com/archive/archive.php?id=86 Code Generation for Dummies]
 
{{Programming paradigms navbox}}
{{Authority control}}