Talk:Computer program/GA2

GA Review
The edit link for this section can be used to add comments to the review.''

Reviewer: Ovinus (talk · contribs) 17:44, 7 June 2022 (UTC)

I don't think this one is ready for GA yet. Broad comments:


 * History is rather long and focuses on less-useful things. I'd trim down the section on Relay-based computers (example: The Mark I's integer registers were 23 digits wide (binary or decimal?) and had various units for setting constant values, program execution, arithmetic operations, special functions (trigonometric and logarithmic), and output.)
 * "4-bit microprocessor" – The concept of what an "n-bit processor" actually is is not really defined.
 * The Harvard architecture's concept concept of separating instructions from data, along with the fact that modern computers have elements of both, should be introduced early on
 * Mention of non-x86 ISAs seems relevant (at least ARM, maybe RISC-V, PowerPC, etc. in passing. CISC vs. RISC is relevant too, I think)
 * To characterize the implementation of SIMD (SSE introduced 1999) in the same subsection as 16-bit x86 is misleading. For a history section spanning the whole of programming history there deserves to be a paragraph on the continuing widening of registers. ARM even has 1024-bit registers in its Scalable Vector Extensions now
 * Expanding memory capacity from 16-bit to 32-bit, 64-bit is not discussed
 * Definitely needs to be a paragraph on the transition from assembly language to higher and higher-level languages. I know it's discussed in Programming languages, but it's a critical part of history
 * The Computer programming section simply doesn't belong. It's also described at a massively different technical level than the preceding section.
 * The standardization of languages like C, Fortan, C++, and even high-level languages like ECMAScript, should be discussed somewhere
 * Program examples in Object-oriented programming are... wanting. First of all, C is not an object-oriented language. Second, it includes such distracting information as include guards and a Makefile. The inclusion of a Makefile would only be warranted if, say, discussing the various stages of compilation, but that's not done.
 * "The principle behind a functional language is to use lambda calculus as a guide for a well defined semantic" – No one but students who have taken a class in, say, formal language or functional programming, will understand this sentence and the following description
 * "A functional language compiler will not store this value in a variable. Instead, it will push the value onto the computer's stack before setting the program counter back to the calling function. The calling function will then pop the value from the stack." Not necessarily true; compilers will transform functional constructions into whatever they think executes fastest on a given CPU, which probably does not involve a memory access

Essentially, I think this article talks about less important things, and is overall far too technical for the base article "Computer program". Of course such an article would include technical parts, but a less-informed reader, who perhaps has never written a line of code in their life, should be able to skim the article and take away some main thrusts. Ovinus (talk) 17:44, 7 June 2022 (UTC)


 * Good art is in the eyes of the beholder. Timhowardriley (talk) 20:16, 7 June 2022 (UTC)
 * Indeed you're welcome to renominate it, but I'd encourage you to at least consider the points I made above. It's very unlikely anyone will pass this article in its current state. Ovinus (talk) 22:16, 7 June 2022 (UTC)
 * I updated the article to include your suggestions that I'm qualified to make. However, two of your suggestions to include additional material are already there. One example: your "standardization of languages" suggestion. (Hint, follow the examples in the article.) Overall, researching the material for this article enabled me to bump my programming skills up a notch. I believe an open minded reader will equally benefit. Timhowardriley (talk) 22:18, 8 June 2022 (UTC)
 * Doing a command-F for "standard" I only find the sentence about the kernel; I mean stuff like standardization by ISO. Also, I'm genuinely glad that you enjoyed researching this article! I often do a similar thing, where I research an article for which I already have some background. One benefit is that you're better able to see what an uninformed or perhaps misinformed reader might assume, and write to accommodate them. All that said, we definitely have different visions for what this article should look like, and I don't want to impose my version. I do want to correct factual errors and provide constructive criticism that could help this article pass GAN and, ultimately, better inform readers. Ovinus (talk) 14:32, 9 June 2022 (UTC)
 * Edit: If I'm not mistaken, this article is your first GAN. As someone who's only successfully written two GAs, and with great difficulty, I'd recommend you start with something easier. High-level (as in, very broad) articles are particularly hard. Given you're a C programmer, I'd suggest articles like The C Programming Language, X87, NaN, Undefined behavior, perhaps IEEE 754 or C dynamic memory allocation—these are articles which would benefit from non-pseudocode examples (probably in asm or C), and which are easier to make comprehensive. Ovinus (talk) 14:39, 9 June 2022 (UTC)
 * Again, I really appreciate your critical thoughts and comments. I want to think that my edits based upon them have improved the article. Regarding start with something easier: I started editing this article when it was this version. Timhowardriley (talk) 04:23, 11 June 2022 (UTC)
 * Oh damn, I didn't realize you wrote the whole article! That's really quite impressive. Ovinus (talk) 04:37, 11 June 2022 (UTC)