Talk:Computer program/GA3
GA Review
GA toolbox |
---|
Reviewing |
Article (edit | visual edit | history) · Article talk (edit | history) · Watch
Reviewer: Caleb Stanford (talk · contribs) 21:59, 25 June 2022 (UTC)
Starting review. Caleb Stanford (talk) 21:59, 25 June 2022 (UTC)
The prose is well-written and the article surveys a lot of useful information. I haven't read this article before. This is also my first GA review so corrections/feedback appreciated. The main thing that would improve the article in my opinion is better organization, and clarity with respect to the different dimensions of computer programs considered. I will give some examples and details below.
- It is reasonably well written.
- It is factually accurate and verifiable.
- a (reference section):
b (citations to reliable sources):
c (OR):
d (copyvio and plagiarism):
- The article is well-sourced throughout but the chosen reference style repeats the same references many times. For an article with this pattern of references, I would personally appreciate a different citation style that lists each reference only once: either the page number style (like [1]:25-32) or the short form style (Wilson, p. 394 with the full citation included only once in a separate list: Wilson, Leslie B. (2001). Comparative Programming Languages, Third Edition.). The actual references listed contain a relatively small number of books but that is not easily apparent from reading the reference list.
- a (reference section):
- It is broad in its coverage.
- a (major aspects):
b (focused):
- Some key concepts are not covered, such as the semantics of computer programs. Also, coverage is difficult to assess due to article organization (more comments on organization below)
- a (major aspects):
- It follows the neutral point of view policy.
- Fair representation without bias:
- The article seems to reflect an engineering and systems viewpoint and does not include a perspective from programming languages and programming languages theory. Viewpoints are generally listed fairly but I am not sure fair/due wait is given to each sub-concept and many concepts are missing. As with coverage, this is a bit hard to tell due to the organization of the article (more comments below). One particular example that I doubt is neutral is the delineation of a "5th generation programming language".
- Fair representation without bias:
- It is stable.
- No edit wars, etc.:
- No problem here.
- No edit wars, etc.:
- It is illustrated by images and other media, where possible and appropriate.
- a (images are tagged and non-free content have non-free use rationales):
b (appropriate use with suitable captions):
- Media/illustrations look great!
- a (images are tagged and non-free content have non-free use rationales):
- Overall:
- Pass/Fail:
- See comments below.
- Pass/Fail:
Although it isn't directly one of the GA criteria listed above, my biggest concern with the article overall is its organization. Reading through the article, I don't get a clear sense of which sections should contain which information, and I don't know that the current section choices reflect a clarity of thought with respect to different aspects or features of computer programs.
Specific comments, by section. These thoughts are mostly unedited, please let me know if any comments are unclear:
- Hello world program: missing some context on what a hello world program is (maybe a brief history) and how it relates to the key concept of a computer program. I'm not sure why the section is discussing concepts of variable declaration and use; that's specific PL syntax stuff, what we want to explain here is what a computer program is and how a Hello World program is used as an example of one to illustrate program syntax.
- The History section is generally very good, but the last subsection "Programming environment" seems out of place as written (also, lacks references). Is this intended to discuss a development in the history of programs to more advanced GUIs and IDEs? Or does this belong in a different place? Also what is the criteria for what programs are going to be listed in the History section, e.g. why are we not include a COBOL program, a C program, a C++ program, etc?
- The programming language section includes a view of PLs by "generation", which in my experience is not a common way to understand programming languages today and reads as obsolete. In particular, first through fourth generation programming languages seem like perfectly reasonable delineations, but the Fifth-generation programming language is a dubious concept that I don't think makes sense from a programming languages standpoint. This delineation needs some qualification. For example, who proposed this classification and when was it proposed, and how widely was it accepted?
- Why does the PL section include "Imperative Languages" and "Declarative languages" but "Object-oriented programming" is in a different place?
- I would suggest a different organization with a section on "programming paradigms", including imperative, declarative, OOP, Functional, statically typed, dynamically typed, and many other paradigms that are missing or not discussed currently.
- It could make sense for PL to be a separate section from programming paradigms.
- The article is missing a discussion of programming language syntax and semantics. The word ["semantics"](Semantics (computer science)) does not appear in the article.
- The section "Computer programming" also lacks some clarity on what should be included here. Why is the "waterfall model" discussed but no other systems development paradigms or engineering methodologies? Is this section intended to be an overview of the Software development process? Rather than try to rehash specific paradigms/processes like Waterfall, perhaps it should summarize what computer programming consists of in relation to computer programs, and what are key concepts such as process models, development/code organization strategy, software lifecycle, etc.
- Program modules: I am not sure why this is a top-level section. The word "module" can refer to sections of a program, or namespaces, or files. It does not necessarily have to do with software aging, but can be simply about software size and separation of concerns. Is this section about code organization more generally?
- Functional categories: I like this section.
- Other inclusions: The article mentions only a few programming languages and should at least mention, in a few sentences, different programming languages that exist and how computer programs differ in different languages. For example:
- the article doesn't contain the words "static" or "dynamic"
- the article never mentions "Python", "Java" except for a sentence in the intro, "Javascript", or many other popular languages.
- The article lacks a discussion of what counts as a computer program, not an easy concept. E.g. HTML? LaTeX? Have computer scientists discussed what counts as a program and how have different scientists agreed/disagreed on basic inclusions?
Minor comments:
- First sentence: I disagree that the difference between imperative and declarative programming is whether the instructions are a list or a set. This would only be true in certain languages, not in others. I would suggest: "In computer programming, a computer program is a set or sequence of instructions in a programming language that a computer can execute or interpret."
- Is "The Free Dictionary: computer program" a reliable source? Didn't find it listed at WP:Reliable sources/Perennial sources
- For a topic with a controversial definition like this, more work may be required to source the definition in the lead.
- Program execution box at the top: Why do notable compilers only include GCC, LLVM, and CLang
- "For examples of declarative languages, visit Declarative_programming#Examples." -- would be great to have a broad survey of a few examples, this can be pointed to with "see also" or another similar template rather than ad hoc text
- "Example packages include accounts payable and payroll" -- This is a non sequitur. Examples of fifth generation languages include specific applications for accounts payable and payroll? I am not sure what the writer had in mind. (But I don't think the entire concept of a 5GL is accepted today, see comments above.)
- Programming-in-the-small/programming-in-the-large: seems out of place, why is this discussed here and not e.g. under modules
- "Utility programs detect computer viruses." Comment may be out of place / unreferenced / unexplained