This is the talk page for discussing improvements to the Automatic programming article. This is not a forum for general discussion of the article's subject. |
Article policies
|
Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
![]() | This article is rated Start-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||
|
![]() | The contents of the Source code generation page were merged into Automatic programming. For the contribution history and old versions of the redirected page, please see its history; for the discussion at that location, see its talk page. |
A List of Code Generation Tools
editBoth 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
editThese 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.
More about the merge
editI'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
editI 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)
- The line "These application generators supported COBOL inserts and overrides." in the "#Source code generation" section of Automatic programming is a reference to a capability needed to part of what you said. If the "programmer" knows about the underlying templates and the code that will be generated, then an "override" can carry through.
The generated code wasn't originally edited by hand... the overrides were incorporated, so it's possible, that a re-gen will work. Of course it's possible that new options/features/etc. will make a re-gen less than a set-and-forget.
Alas, it's pay now or pay later. (per Technical debt which I got to via Code refactoring. Pi314m (talk) 19:26, 5 September 2018 (UTC)
- The line "These application generators supported COBOL inserts and overrides." in the "#Source code generation" section of Automatic programming is a reference to a capability needed to part of what you said. If the "programmer" knows about the underlying templates and the code that will be generated, then an "override" can carry through.
Generative programming?
editCurrently 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)
- Thanks for those references. I haven't looked at them in detail yet but just FYI my fear is that in computer science different terms are often used for essentially the same concept. That's why I question whether there should even be a section titled "Generative programming" because in my experience "generative programming" is essentially just a synonym for automatic programming. The whole point of automatic programming is that you generate the code from the spec. So I'm not surprised you can find articles and books on "Generative programming" what I'm doubting is that there is any significant difference between what those references describe and what references on Automatic Programming describe. But I won't change anything unless I have time and motivation to look at the articles but since I may not I just wanted to document that I think it's still an issue if anyone else is looking for ways to improve the article. --MadScientistX11 (talk) 19:16, 5 September 2018 (UTC)
Removed "Failed Verification" tag in Generative Programming section
editThere 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)