Talk:Automatic programming
![]() | Computing Start‑class | |||||||||
|
![]() | The content of Source code generation was merged into Automatic programming. The former page's history now serves to provide attribution for that content in the latter page, and it must not be deleted as long as the latter page exists. For the discussion at that location, see its talk page. |
A List of Code Generation Tools
Both the radid application development and ORM sections have pulled the sample tools list out into a separate page. As the developers of Habanero (see Wikipedia's Habanero.NET), we would like to include our framework in the sample applications list in the short term future when we release as a full code generation kit, but on this page it smells too much like spam. Having a separate page provides a reader with an informative list of tools to use (and helps us get marketed!), but helps to pull the marketing away from the academic material for those who don't want to see marketing on Wikipedia. The marketing is happening and will always happen, let's just make it cleaner. Erichero (talk) 07:53, 24 December 2008 (UTC)
Merge
These four (count 'em four) articles are all very closely related and all terribly short. I think they could really be handled by one article. ---- CharlesGillingham 05:58, 26 August 2007 (UTC)
- Disagree. Program synthesis from nonalgorithmic specifications is an *entirely* different beast, researched from the 60s, and one for which no good solution exists yet. In essence it's formal verification taken further. As a research subject I'm sure it merits its own article given the amount of research --SLi 18:16, 26 August 2007 (UTC)
- Thanks for responding. Would you agree to merging the other three? Is there a better general term than "automatic programming" that covers these? ---- CharlesGillingham 23:21, 26 August 2007 (UTC)
- Hmm, maybe. "Automatic programming" doesn't seem entirely right to me, but I can't think of a better term that encompasses all forms of it. --SLi 01:26, 28 August 2007 (UTC)
- Thanks for responding. Would you agree to merging the other three? Is there a better general term than "automatic programming" that covers these? ---- CharlesGillingham 23:21, 26 August 2007 (UTC)
- Also disagree. Automatic programming is an idea dating back to the 50's. In fact, early compilers were considered to be doing automatic programming. The idea of fully automatic programming got scaled back, along with a number of other AI initiatives, once it was realized how difficult the problem really was. Program synthesis, on the other hand, isn't necessarily about being fully automated, but machine assisted. Consequently, it has had quite a bit more success. Sometime this summer if i have the time, I hope to work on an expanded article.
Houseofwealth (talk) 20:11, 28 April 2009 (UTC)
More about the merge
I'm picturing an article with separate sections for each of these research areas, and an introduction that distinguishes them and puts them in context with related things like Computer aided software engineering and Formal methods. It could be a summary article of various automatic programming paradigms. ---- CharlesGillingham 23:21, 26 August 2007 (UTC)
Criticism
I know there's been some criticism of generated code, things like bloat, unnecessary repetition, and so on. Perhaps some sources could be found and a criticism or disadvantages section added to the article. 82.46.253.56 (talk) 15:11, 2 August 2010 (UTC)
- I agree with this. There is also the issue that in order to develop specs that are sufficiently detailed so that the code can be generated automatically the developer often needs to have an understanding of things like set theory and logic which many developers (unfortunately) don't have. Or that creating such detailed technical specs is really not that much less effort than writing the actual program, especially with high level languages like Java that have lots of re-usable libraries already written. Also, the issue of different platforms. Ideally those details (e.g.,the difference between deploying on Android or Windows or creating a relational DB in MS Access or Oracle) can be programmed into the generator but often the run time environments change so rapidly that that is difficult to do. Finally, the issue of maintenance. Generated code is often difficult or virtually impossible to edit manually which means every time you want some minor change you may have to regenerate the code which often isn't practical given how frequently user requirements change. Or if you can edit the code does doing so mean that the spec is no longer usable? I.e., what people call "round trip engineering" can you generate the code from the spec, edit the code, then re-engineer the edited code so that the spec can be changed and new code generated without losing the changes you made manually? All of these are critical problems that few tools solve. That's why in my experience code generation is often limited to specific domains, e.g., security algorithms or mission critical software where the economics are different (e.g., it's more important to have absolutely perfect code than to be frequently modifying the code as you would with most systems). In addition to criticism, I think some discussion of where automatic programming is used and where it isn't would be very worthwhile. I may take a crack at this later but don't have time right now but at least wanted to document I think it's an important requirement to make this article better. --MadScientistX11 (talk) 18:59, 5 September 2018 (UTC)
Generative programming?
Currently there is a section titled "Generative Programming". I've never heard that phrase and the description is so vague it just sounds like various kinds of code generation to me. There is the following reference in that section: <ref>James Wilcox, "[http://edgewatertech.wordpress.com/2011/03/11/paying-too-much-for-custom-application-implementation-code-generation/ Paying Too Much for Custom Application Development]", March 2011.</ref> If you go to that link the article is just a blog with a very general discussion of code generation. There are no references except links back to Wikipedia and the article says nothing substantive. IMO there is no way that reference backs up what is in the section. Without a reference my suggestion would be to delete that section and move the text in the discussion to the general overview of automatic programming. --MadScientistX11 (talk) 04:07, 7 January 2014 (UTC)
- @MadScientistX11: It should be relatively easy to find reliable sources for this section. There are many books and articles about generative programming that also discuss automatic programming. Jarble (talk) 04:23, 7 August 2017 (UTC)
Removed "Failed Verification" tag in Generative Programming section
There was a "failed verification" tag next to a statement in the Generative Programming section about how the goal is to improve programmer productivity. For one thing, I don't think that a specific reference is really needed for such a statement. There is some policy that statements which are simply obvious logical conclusions from other references can be included and I think this is an example. A goal of EVERY kind of automatic programming is to improve programmer productivity. But even if you look at the specific reference it says things about how automatic programming can automate tasks that an entry level programmer would do. If you automate a programmer's task you are making the programmer more productive. I think there is a question of how good a reference that ref is, it seems to be just someone's blog and the things it says about automatic programming seem really basic and generic to me, but that's another issue. --MadScientistX11 (talk) 18:38, 5 September 2018 (UTC)