Edge Rewrite
// request.cf · coarse context

A page that knows where it met you.

Only coarse request metadata is shown. This demo does not display or persist visitor IP addresses.

Country
US
Cloudflare location
CMH
Connection
HTTP/2
Language
Not provided

Ray ID: a3ff21895d0aefad

Jump to content

Talk:Computer program

Page contents not supported in other languages.
Add topic
From Wikipedia, the free encyclopedia
Latest comment: 20 days ago by Timhowardriley in topic Use of temp accounts to make changes
Former good articleComputer program was one of the Engineering and technology good articles, but it has been removed from the list. There are suggestions below for improving the article to meet the good article criteria. Once these issues have been addressed, the article can be renominated. Editors may also seek a reassessment of the decision if they believe there was a mistake.
Article milestones
DateProcessResult
November 4, 2007Good article nomineeNot listed
November 9, 2007Good article nomineeListed
November 17, 2007Good article reassessmentDelisted
October 28, 2021Good article nomineeNot listed
June 7, 2022Good article nomineeNot listed
June 25, 2022Good article nomineeNot listed
Current status: Delisted good article

Merge with Software

[edit]

According to the descriptions of software and a computer program, they seem to be almost exactly the same thing, if there is any distinction at all. Having two article therefore seems superfluous, and I suggest that we merge them into one. —Kri (talk) 15:55, 5 June 2025 (UTC)Reply

Agree. Software and computer program are the same thing. Software is just a a better sounding word. A source says software also includes documentation and other things. But I don't agree. That's just forcing a distinction. Those other things are categories of their own. Timhowardriley (talk) 17:04, 5 June 2025 (UTC)Reply
How would you propose handling firmware? RastaKins (talk) 19:09, 5 June 2025 (UTC)Reply
Please explain. Timhowardriley (talk) 22:56, 5 June 2025 (UTC)Reply
  • Oppose - Software, such as a library can be a subset of a computer program. Computer program is a specific software topic. ~Kvng (talk) 14:51, 9 June 2025 (UTC)Reply
    1. I don't see library as a subset of computer program. Also, the software article doesn't say this. The library article says, "Commonly, a library consists of executable code such as compiled functions and classes, or a library can be a collection of source code." What am I missing?
    2. Regarding "Computer program is a specific software topic.": Are you saying software is a general topic of which computer program is a special case? Again, the software article doesn't say this.
    3. What information is there in the software article that differentiates it from computer program? Design documents and specifications? Um. A colleague has never said to me, "Please hand me your documents software." Or "Please hand me your specification software." If I were to receive a request to hand over my software, then I would deliver computer programs.
    Timhowardriley (talk) 19:57, 9 June 2025 (UTC)Reply
    4. I could "sed s/software/computer program/g" in the software article and the information would stay the same. Likewise, I could "sed s/computer program/software/g" in the computer program article and the information would stay the same. Timhowardriley (talk) 23:19, 9 June 2025 (UTC)Reply
/1 what you're missing is you can't run a library. You have to link it in as part of a program.
/2 yes, per my library example. Object file and object file are other examples of software that is not necessarily a computer program. ~Kvng (talk) 15:01, 14 June 2025 (UTC)Reply
Yes, object files and other libraries are ready to be linked. Whereas they are not source code, they are computer programs. Timhowardriley (talk) 16:20, 14 June 2025 (UTC)Reply
Followup: In "Comparative Programming Languages, Third Edition", the authors write, "A computer is a tool that solves problems by means of programs (or software) written in a programming language." In the Implementation section is written, "Execution of a program written in an imperative language, such as Pascal, Ada, or C++, normally takes place by translating (compiling) the source program into an equivalent machine code program. This machine code is then executed." In the Separate Compilation section is written, "Packages ... can be compiled separately..." In "C How to Program, Second Edition", the author writes, "The compiler translates the C program into machine language code (also referred to as object code)." Later it says, "The fourth phase is called linking. C programs typically contain references to functions defined elsewhere such as in the standard libaries or in the libraries of a group of programmers working on a particular project." It also says, "A linker links the object code with the code for the missing functions to produce an executable." Therefore, computer programs (also called software) are written in a programming language that gets translated to another computer program called machine language. Large computer programs may be separated into object code files for convenience. The entire library is then compiled to an executable computer program. Software (also called computer programs) can exist at different levels. At each level, it's still called software -- it's still called computer programs. Timhowardriley (talk) 21:40, 14 June 2025 (UTC)Reply
You're really straining to interpret this source to say what you want it to say. ~Kvng (talk) 15:54, 2 July 2025 (UTC)Reply
merge Software is a type of thing, a bit like metal is a type of substance. A computer program is a bundle of software and other resources needed to perform some task on a computer. So, a computer program contains software, but can also contain other things, like graphics or data for the task. They are not quite the same thing, but it is reasonable to have one WP article that covers both topics as long as the distinction is covered in the article. The merged article will still need some work as both articles include some misconceptions. — GhostInTheMachine talk to me 07:36, 23 June 2025 (UTC)Reply
  1. Regarding "metal is a type of substance": I agree. Dictionary.com says, "[metal is] any of a class of elementary substances ... which are characterized by [additional attributes]". The set of metals is a subset of the set of substances. Therefore, metals have all the properties of substances, plus additional properties that other substances don't have.
  2. Regarding "a computer program contains software, but can also contain other things, like graphics or data for the task.": I disagree. The set of computer programs is not a subset of the set of software. Computer programs do have all the properties of software -- they are the instructions for the CPU. However, they don't have additional attributes. Therefore, the set of computer programs equals the set of software. Likewise, the set of software equals the set of computer programs.
  3. On the other hand, graphic files are bytes stored in files. They probably don't have any instructions for the CPU. Likewise, data for the task are bytes stored in files.
  4. Both graphics files and data for the task may contain embedded, auxiliary instructions for the CPU. Therefore, those isolated blocks are computer programs/software. But not the whole file. I would be confusing my reader if I were to write, "Attached is your graphics file computer program." Instead, I would write, "Attached is your graphics file which loads into the computer program."
Timhowardriley (talk) 13:22, 23 June 2025 (UTC)Reply
Oh dear. Having written a fair bit of the stuff, I do know that a computer program may contain non-software components. Casual use may equate the terms, in much the same way that WWW and Internet are often treated as synonyms, but at a technical level they are not the same thing — GhostInTheMachine talk to me 15:18, 23 June 2025 (UTC)Reply
You didn't refute my claims that graphics files and data for the tasks are not computer programs. Yes, WWW and Internet are synonyms. Regarding "I do know that a computer program may contain non-software components.": Please be technical. Timhowardriley (talk) 16:09, 23 June 2025 (UTC)Reply
Additional thought: The Internet is a web of networks scattered throughout the wide world. Timhowardriley (talk) 16:24, 23 June 2025 (UTC)Reply
In summary, at this point, you have my contention that software is a subset of a computer program because a library is software but not a computer program and we have GhostInTheMachine's contention that a computer program is a superset of software because it can contain images and other ancillary data needed to perform its function. We haven't heard anything more from other participants Kri or RastaKins. ~Kvng (talk) 15:54, 2 July 2025 (UTC)Reply
In "C How to Program, Second Edition", the author writes, C programs typically contain references to functions defined elsewhere such as in the standard library or in the libraries of a group of programmers working on a particular project." It also says, "A linker links the object code with the code for the missing functions to produce an executable." These two sentences indicate the author believes that libraries and computer programs are the same thing. Please:
  1. Disagree with my indication and explain why.
  2. Quote a sentence or two from a reliable source that indicate a library of functions isn't a computer program.
Also, GhostinTheMachine has not refuted my claims that graphics files and data for the task are not computer programs. Also, I challenged GhostinTheMachine to be technical regarding the I do know that a computer program may contain non-software components claim. No technical explanation was provided. Timhowardriley (talk) 16:39, 2 July 2025 (UTC)Reply
The software article will probably survive because many editors have contributed to it, and that's okay. However, I'm not going to let a semantic argument insult my intelligence. Timhowardriley (talk) 17:05, 2 July 2025 (UTC)Reply
The new quotes do not clearly support your position IMO - the word software does not appear in them. We need a consensus of editors to proceed with the merge. That does not mean you need to get my agreement to proceed but we do need to hear from other editors who see it the way you do and that has not happened. ~Kvng (talk) 14:57, 12 July 2025 (UTC)Reply
Oppose they are definitely not the same thing. First, a library is not a program yet it definitely is software. From that alone, they are different. That's just one example of the fact that software is a broader thing than program. Another example is any large/complicated software system. Consider Microsoft Windows: it's not a program or even a collection of programs. Whatever it is, it's definitely software. The concept of software encompasses the concept of program. But, software's Venn diagram circle is bigger the program's. ... As for the content of the two articles: neither seems great at defining the concepts. There are wildly differing opinions on what the terms mean. When I try to improve them, I usually get smacked, so I've given up trying. Stevebroshar (talk) 14:19, 5 September 2025 (UTC)Reply

AmE vs BrE

[edit]

The British traditional spelling of "program" is "programme". This is the only exception, computer program. The rest are programme in British English. Program is the British spelling in sense of computer programming. Dotsenter21 (talk) 01:10, 19 June 2025 (UTC)Reply

Somewhere, I remember reading that Wikipedia doesn't care which English spelling is used, as long as the entire article is consistent. Also, the first major edit of the article should start the consistency. Timhowardriley (talk) 06:15, 19 June 2025 (UTC)Reply
This is the American English WP. Stevebroshar (talk) 14:20, 5 September 2025 (UTC)Reply

In some contexts the program runs from storage

[edit]

This edit inserted a "dubious" tag, but a discussion wasn't created. I'm now creating the discussion talk. The claim is this sentence is implausible: If the executable is requested for execution, then the operating system loads it into memory and starts a process. The claim is this sentence should be rewritten, because some programs run from storage. However, no reliable source is provided that supports the claim that programs may run from storage. Nor have I ever come across this feature. Nonetheless, even if this feature exists somewhere, the Von Neumann architecture still has an instruction cycle that fetches the next instruction from the *memory* address pointed to by the program counter. Timhowardriley (talk) 04:26, 9 October 2025 (UTC)Reply

The only computers that run programs from storage are drum computers using drum memory. These serial computers were tightly synchronized and usually clocked from the drum. Example: the LGP-30 was a mass-produced drum computer introduced in 1956. It held its execution memory and registers on the drum. The programmer could also use the drum for general storage. LGP-30 was followed by the transistorized RPC 4000 (1960) and the low cost LGP-21 (1963) which curiously used a disk rather than a drum. Machines that can run programs out of storage without loading them into RAM have been obsolete since the invention of core memory. RastaKins (talk) 13:41, 9 October 2025 (UTC)Reply
I think the tag is meant to be disruptive. Timhowardriley (talk) 16:21, 9 October 2025 (UTC)Reply
Many simple embedded systems run their program from ROM. There is no loading step in this case and ROM is arguably a form of storage and is certainly not RAM. Are these sort of programs out of scope for this article? ~Kvng (talk) 17:10, 17 October 2025 (UTC)Reply
ROM is random-access memory; it's just not writable. You could think of it as write-protected RAM. Storage denotes a low level of the memory hierarchy below RAM-type devices. Sure, in ancient times programs ran directly from memory drums or paper tape loops. Since the proliferation of random-access memory, this is no longer done. Storage nowadays denotes secondary non-volatile storage. I know of no system created in the last 50 years that executes programs directly from disk files without first loading them in RAM. Even if there is, intermixing long-obsolete technologies will just confuse the reader. RastaKins (talk) 17:38, 17 October 2025 (UTC)Reply
Like embedded systems today, the operating system of the TRS-80 (1977) executes from ROM. That's not the context of the sentence being questioned in the article. The context of the sentence in the article is, if the operating system receives a request to execute a program, what's the first step? Is the first step to load the program from storage into memory? Or is that step skipped, and the OS executes the program while the program is still in storage? If the OS executes the program still in storage, then the program counter needs all the storage information, not just a memory address, which is the size of a word. The program counter would have to be wide enough to store the device number, sector number, block number, and offset number. Then each instruction fetch would warrant a context switch. This will never happen. Timhowardriley (talk) 19:47, 17 October 2025 (UTC)Reply
With virtual memory, things get interesting. To some degree, the program doesn't need be loaded from storage; the code segments in the file just need to be mapped to virtual memory. Code doesn't necessarily get loaded until the processor tries to execute it and gets a page fault. This is all a bit in the weeds. Probably best to just remove the tag and close this conversation. ~Kvng (talk) 20:12, 17 October 2025 (UTC)Reply
The tag was added by a Wikipedia editor with a history of disruptive edits and abrasive talks. I once had to get an administrator to intervene. The sentence that was tagged states a simple and long-standing fact. New technology has not changed the steps to start a process. Also, the beginning of the instruction cycle is reinforced in several Wikipedia articles. Here is one of them: Process_state#Ready. Timhowardriley (talk) 21:37, 17 October 2025 (UTC)Reply

Modern Software Distribution

[edit]

I would like to suggest adding a small section about modern software distribution and deployment methods.

The current article explains traditional computer programs well, but it gives limited coverage to how software is commonly distributed and used today.

Possible topics could include:

I would like to suggest adding a small section about modern software distribution and deployment methods.

The current article explains traditional computer programs well, but it gives limited coverage to how software is commonly distributed and used today.

Possible topics could include:

  • App stores for mobile and desktop software
  • Web applications running in browsers
  • Cloud-based software and Software as a Service (SaaS)
  • Package managers
  • Containerization and modern deployment systems

I think this addition could improve the article by reflecting how computer programs are commonly delivered and used in modern computing environments. Er. Satinder J Singh (talk) 06:30, 12 May 2026 (UTC)Reply

This article is already quite large, focusing down towards the instructions and not up towards the applications. Distribution and deployment probably fits better in Software. Timhowardriley (talk) 14:16, 12 May 2026 (UTC)Reply
Yes, I agree. I am suggesting it in Software Er. Satinder J Singh (talk) 06:34, 15 May 2026 (UTC)Reply

Undoing valid improvements to the page

[edit]

User:Timhowardriley, I would appreciate if you would cease undoing my edits to the page.

  • "in a simple school application" is extremely vague wording, "in an application modelling a school" is much more specific.
  • The C and C++ snippets are full of redundant comments that frankly patronize the user to an extent where any reader sufficiently literate in programming could only call it insulting. Does there really need to be a comment labeling an empty constructor body "nothing else to do"?
  • There is no reason why a Makefile needs to be included. WP:NOTTUTORIAL.
  • There isn't a single notable codebase that writes classes in ALL_CAPS, nor any modern codebase which still wraps every parenthesis in spaces.
  • Initializing fields in the constructor body rather than in the member initialization list is erroneous.
  • The C++ section which introduces "modular programming" is better served actually demonstrating modules (which also would shorten the code by eliminating the header/source split), otherwise I have no idea what the point of even introducing the term "modular programming" accomplishes other than just acting as a footnote.
  • Calling a C++ constructor an "algorithm" is imprecise to the point where someone doing that could only be called wrong.
  • I have no idea why the C++ section was using a class if all the data fields were made public anyway.
  • The C examples don't even deallocate the objects.
  • No one in an OOP context would ever say "Student is a subset of Person" even if that's technically true from a set-theory point of view.
  • I don't know any "students" named "The Student" and I don't know what that's supposed to model. Meanwhile an actual name like "John Doe" actually serves this purpose.

As User:Stevebroshar said in 2024, This article is terrible, yet you seem to think it's your pet and cannot live without one precious word of it., and I still concur with these words; the article is terrible, and these sections especially need work. While I personally don't care how much you choose to participate in an article's development, these changes are genuinely necessary and the page is full of accumulated cruft and otherwise subpar content that my edit was specifically addressing. ~2026-41537-93 (talk) 08:09, 30 July 2026 (UTC)Reply

The code in the article reads and executes just fine. Who are you? Timhowardriley (talk) 10:06, 30 July 2026 (UTC)Reply

...and executes just fine.

In what metric is "the code compiles" a meaningful indicator?

The code in the article reads... just fine.

No, it doesn't, for the aforementioned reasons I gave above which you conveniently ignored, and the fact that you avoided them is really eyebrow raising, especially when you've been confronted repeatedly about the state of the article, not least of all by @Stevebroshar (This article has major problems), @Caleb Stanford (see Archive 4, Suggested outline (2022-06-28)), @WikiLinuz (see Archive 4, WP:NOTREPOSITORY). And while you've been editing this page since 2007, by 2021 the edits are mostly your name, and I agree with User:Stevebroshar's words; and your attempt to dismiss them as a Wikipedia editor with a history of disruptive edits and abrasive talks is an even more intriguing case of WP:OWNBEHAVIOR.

Who are you?

Somebody with just as much of a right to edit Wikipedia let alone this page and contribute equally as you do, what's it to you? I sure hope you aren't trying to WP:DONTYOUKNOWWHOIAM. ~2026-41537-93 (talk) 23:07, 30 July 2026 (UTC)Reply
Because of your changes, I no longer understand the code. The code's audience is now smaller. How can I test its accuracy? Also, you're displaying anger. Instead, wikipedia editors are required to display politeness. I'm going to ignore your ad hominem attack. Timhowardriley (talk) 09:54, 31 July 2026 (UTC)Reply
I'm going to ignore your ad hominem attack.
I don't know what part of my message was an ad hominem attack. I pointed out that you ignored my stated reasons and had a history of dominating the article's development even at the expense of other user's inputs and suggested it constituted WP:OWNBEHAVIOR. I suggested that your question Who are you? was WP:DONTYOUKNOWWHOIAM because contextually that is what such a rhetorical question implies, unless you were literally asking for my identity as if me being a temporary account implied I was a logged-out WP:SOCKPUPPET. User:Caleb Stanford, indeed I do not currently possess an account but certainly intend to create one in the not-so-distant future.
I no longer understand the code.
The development of a Wikipedia page has never been tied to any singular user's ability to comprehend its entirety.
How can I test its accuracy?
It has never been a single user's responsibility to audit the "accuracy" of every snippet of code inserted into a page, but I don't see what my edits introduced that makes it so much harder to be sure it is correct content-wise. In fact, I'm skeptical of the accuracy of the previous versions themselves, as the C and C++ examples didn't even de-allocate the heap-allocated objects, nor did the C++ objects even need to be heap-allocated; furthermore, the C++ examples used const char* when std::string was available, while also initializing fields inside the constructor body rather than in the member initialization list.
Finally, as mentioned before, the inclusion of a Makefile really borders the article on a WP:NOTTUTORIAL violation. An article on a computer program really doesn't need steps on how to compile one. ~2026-41537-93 (talk) 22:57, 31 July 2026 (UTC)Reply

It seems to me that @~2026-41537-93: is making good faith efforts to improve the article, and bring it in line with more modern C syntax. User @~2026-41537-93:, I recommend creating an account! Caleb Stanford (talk) 00:39, 31 July 2026 (UTC)Reply

Projecting another editor's bad behavior onto me was an attack on my character. Yes, I thought you were a sockpuppet. Wikipedia articles are to communicate to the broadest audience possible. I'm an example of your changes, instead, narrowing the audience pool. Wikipedia articles need to be sourced or source-able. These examples are not sourced. But compiling and running them make them source-able. I compiled the prior examples and witnessed they executed correctly. The operating system will de-allocation heap memory (garbage collection) without the programmer having to bother. There are many ways to construct variables. Passing judgement on someone choosing one instead of another is counter-productive. A makefile is a relevant tool for creating computer programs. It's not a how-to. Timhowardriley (talk) 00:36, 1 August 2026 (UTC)Reply
Oh! I pressed the wrong "Reply ..." link. Sorry. Timhowardriley (talk) 00:38, 1 August 2026 (UTC)Reply

Wikipedia articles are to communicate to the broadest audience possible. I'm an example of your changes, instead, narrowing the audience pool.

It isn't the job of the Cauchy's integral theorem page to explain what a contour integral or a holomorphic function is, any more than it is this page's job to explain what a constructor, destructor, field, or a C++ module is (in fact, if the C++ section was going to introduce modular programming to the reader, it's if anything counterproductive to not demonstrate modular programming without using the feature which actually makes the code modular). Nor are any other code snippets this excessively labelled with having to label a class field or a constructor.

I compiled the prior examples and witnessed they executed correctly.

That would be WP:OR. On the other hand, even if the examples are not sourced, WP:CALC (which also applies to "hard sciences") allows such examples provided there is reasonable community consensus that the program is correct.

The operating system will de-allocation [sic] heap memory (garbage collection) without the programmer having to bother.

This seems like a contrived reason to me. The C++ code has no need for explicit destructors or explicit deallocation, whereas the C code does use manually allocated memory. If the reason for omitting deallocation logic from the code snippet is simply because the allocation took place in main(), then I don't really see what is being gained here; the program did not become "simpler" just because deallocation logic was omitted from main(), meanwhile it now expects the reader to question why the logic was omitted (especially in the context of C where explicit, manual memory management is so heavily emphasized). (And technically speaking, garbage collection refers to the recovery of memory during a program's execution, not the reclamation of all occupied memory of a program by the operating system at termination.)

There are many ways to construct variables. Passing judgement on someone choosing one instead of another is counter-productive.

Initializing fields through the member initialization list of a constructor is faster because it directly constructs the object with those values, unlike assigning fields in the constructor body which first creates the object and then assigns the fields. As a matter of fact, the member initialization list is necessary for const fields and references. On the other hand there is nothing gained by initializing the fields inside the constructor body, it does not make the program "simpler" or "easier to comprehend".

A makefile is a relevant tool for creating computer programs. It's not a how-to.

Almost no other Wikipedia page (and none that I can collect at the moment) provide a Makefile to compile the examples, and this isn't limited to just C/C++ examples; I haven't seen a single Java example on Wikipedia that provides a corresponding Maven/Gradle build file or a C# example with a corresponding MSBuild project file. ~2026-41537-93 (talk) 02:45, 1 August 2026 (UTC)Reply
Regarding This [memory de-allocation upon process termination] seems like a contrived reason to me.: It's good that memory free functions appear in C abstract datatypes. However, they are only necessary in programs that allocate large memory blocks or programs that continuously loop. Memory de-allocation upon process termination is not contrived. On page 22 in "The Linux Programming Interface", the author says, "Once a process has completed execution, the kernel ensures that the resources it uses are freed for subsequent reuse by later programs." Timhowardriley (talk) 21:32, 1 August 2026 (UTC)Reply
That's not the point I'm making, I'm saying that deliberately omitting deallocation logic just because it's in the main() function is just creating an exception to a rule, which by definition just makes the way code is presented on Wikipedia, more complicated. Now, instead of users simply being able to expect each object being deallocated without discrimination, we now expect the user to question why the logic is omitted.

However, they are only necessary in programs that allocate large memory blocks or programs that continuously loop.

Plenty of code snippets on Wikipedia are small, simple programs that do their job of simply being illustrative, educational/informative pieces, but they still include deallocation logic. The deallocation logic doesn't make the snippet more complex or less understandable, but including it makes things consistent and avoids these exceptional cases. ~2026-41537-93 (talk) 00:13, 2 August 2026 (UTC)Reply
Yes. Thank you for clarifying. Timhowardriley (talk) 00:50, 2 August 2026 (UTC)Reply

Removed two C++ encapsulation layers

[edit]

I removed from the C++ examples the encapsulation layers of export module and namespace. The remaining encapsulation layer class is enough for this simple example.

According to Bjarne Stroustrup's 2013 book, the export module encapsulation layer was depreciated by the C++ Standards Committee. He wrote, "In addition, the committee did remove the essentially unused export feature, because it was complex and not shipped by the major vendors." C++_Standard_Library#Standard_modules says the export feature was standardized in 2023. But the article doesn't tout its usefulness.

Indeed, I could not get the examples with the export module encapsulation layer to compile. I googled for help and was advised to use the following compile command: g++ -std=c++23 -fmodules-ts -xc++-system-header Since bleeding-edge flags are required, g++ doesn't support export module encapsulation right out of the box.

Even if g++ compiled the export module encapsulation right out of the box, the two additional layers are too advanced for this elementary article. WP:AUDIENCE would apply. Timhowardriley (talk) 21:38, 14 August 2026 (UTC)Reply

I reverted the edit per WP:BRD, and I disagree with the changes for the following reasons:

According to Bjarne Stroustrup's 2013 book, the export module encapsulation layer was depreciated [sic] by the C++ Standards Committee.

This seems to stem from a misunderstanding of "export" in this context. The aforementioned deprecated "export" was a feature called "exported templates", and is not related to C++ modules. The line He wrote, "In addition, the committee did remove the essentially unused export feature, because it was complex and not shipped by the major vendors." seems to refer precisely to this "exported template" feature, which these words accurately described; exported templates were never implemented by any major compiler vendor.
Modules, however, have implementations on all three major compiler vendors: GCC (since GCC 14), Clang (since Clang 17), and MSVC (since MSVC 17.6).

But the article doesn't tout its usefulness.

I do not see the reason to need this; modules are used in modern (C++20 and later) code precisely to create modular translation units that need to be compiled only once. They are literally an implementation of modular programming. This could, also, be turned towards classes: the same code could easily be encapsulated without classes, either, as the C code does, only using structs.

the two additional layers are too advanced for this elementary article. WP:AUDIENCE would apply.

I don't think these are particularly advanced features nor do they confuse an unfamiliar (but still competent) reader; they are not particularly esoteric; additionally, modules are simply another form of encapsulation, which the section describes and tries to make use of.
Additionally, I find the implementation that the modular approach was replaced with objectionable:
  • I don't see why the Grade must store an int, rather than just a char; it seems much more straightforward to just store a char, which is what its constructor is given.
  • Including source files is almost unheard of in most normal C++; at the very least, the code should resemble what real code looks like. While it does eliminate the need to write header files, I believe writing import statements is much more correct in illustrating this.
  • Making the actual data fields of the class public is also unheard of, even in most tutorial code; given that this section seems to be focused on encapsulation, it seems reasonable, almost intuitive, that those fields should be private and have getter methods.
  • There is no reason Grade and Student need to be instantiated with new or why Student should store a Grade* (rather than simply Grade); see the earlier discussion on why omitting deallocation logic as well.
  • The comments included in the code are excessive, and almost read as a tutorial; I believe this violates WP:NOTTUTORIAL.
~2026-46985-17 (talk) 00:40, 29 August 2026 (UTC)Reply
1) After reading the literature, it seems #include is destined to be retired. 2) Readers visit this article to learn about computer programs. Comments describe to the reader the statements intended for the compiler. Timhowardriley (talk) 10:53, 30 August 2026 (UTC)Reply
I don't oppose explanatory comments entirely, but I do think they should presented more as labels than in tutorial-like prose; and yes, WP:AUDIENCE would suggest this page is more oriented towards laypersons than completely computer-literate readers, but some of the comments are excessive, and I think would be better suited written in article prose rather than as code comments. Would that be acceptable? ~2026-46985-17 (talk) 12:01, 30 August 2026 (UTC)Reply
Both. Wikipedia contributions need to be sourced. I kept all my college textbooks and buy new ones. Every contribution I make is a paraphrase of either a book I have or an online article I can link to. The new C++ example in this article fries my brain. Actually, most technology articles on Wikipedia fry my brain. I just received from Amazon the textbook titled "Professional C++" by Marc Gregoire. Gregoire devotes 12 pages to modules. His narrative develops modules one step at a time. I now understand modules. Also, Gregoire has a C++ example at each development step. Each example has a comment next to the introduced language statement to reference back to its narrative. My eyes go up and down between the introduced statement and the narrative until I finally see the connection. Only if Wikipedia editors use a textbook as a guide will readers of an article gain useful information. Timhowardriley (talk) 17:35, 30 August 2026 (UTC)Reply
I guess my primary objection with comments is that many of them are describing things that are obvious to anyone familiar with the syntax of C++; the page is not a tutorial of C++, but rather a page discussing a computer program. For example, a comment above class Student : public Person; means Student extends (inherits from) Person is obvious just by reading the syntax, and the only people it is not obvious to are those who do not know that this is what the syntax means. Even then, a sentence right after that already explains precisely that this is what it means: a Student is a subclass of Person and inherits its capabilities.
More generally, I think it would be better if the comments were made more so on the lines of architectural choices or designs, rather than re-stating in prose what the syntax already depicts. For example, even if a page shows an integral , unless the page were really a page about introductory calculus, it's not needed to explain that means "the integral from to ". ~2026-46985-17 (talk) 23:54, 30 August 2026 (UTC)Reply
Everything is obvious after you learn it. Readers visit this article to learn about computer programs. I hope you buy "Professional C++" and teach me about the subject. Timhowardriley (talk) 01:22, 31 August 2026 (UTC)Reply
Regarding unless the page were really a page about introductory calculus: This page is about introductory computer programs. Timhowardriley (talk) 02:10, 31 August 2026 (UTC)Reply
If the audience is reading a Wiki article about computer programs, we can be fairly sure that the audience knows little about the subset of "computer languages" and even less about the C++ subset of computer languages. Comments should be detailed enough so the audience does need not understand the language. RastaKins (talk) 15:00, 31 August 2026 (UTC)Reply

Everything is obvious after you learn it. Readers visit this article to learn about computer programs.

About computer programs, not about the syntax of C++. As I explained already, the syntax does not need to be explained in comments, the text immediately following it already explains what the code does.

Regarding "unless the page were really a page about introductory calculus": This page is about introductory computer programs.

What's your point? I was making a comparison for a frame of reference.
~2026-46985-17 (talk) 15:08, 31 August 2026 (UTC)Reply
We're talking past each other. :-( Timhowardriley (talk) 16:44, 31 August 2026 (UTC)Reply
We are at an impasse. @Caleb Stanford, do you have any opinions on how comments should appear on the page? ~2026-46985-17 (talk) 17:02, 31 August 2026 (UTC)Reply
I'm sure that I do, but I don't have time to look at the moment so I suggest you invoke WP:3O. By the way, friendly encouragement to create an account :-) Caleb Stanford (talk) 05:50, 1 September 2026 (UTC)Reply
I think the conflict is resolved. I learned the syntax of the new example and understand its significance. The new example has explanatory comments, and I wrote descriptions of the syntax in paragraphs. Timhowardriley (talk) 08:11, 2 September 2026 (UTC)Reply
@Timhowardriley Please stop making changes to the code architecturally until the conversation concludes, per WP:BRD. I'll keep the comments you added, but I am removing the other things. ~2026-46985-17 (talk) 21:55, 31 August 2026 (UTC)Reply
I will only ask one more time, respectfully, before WP:ANEW is involved, to please resume dialogue on this page and to clearly explain the justifications for your changes here, rather than unilaterally make edits. I remind you once more that WP:BRD is a cycle of bold edits, which may be reverted (and for which I have given reasons earlier in the discussion), and that after this point, the situation should be resolved respectfully through dialogue on this talk page. ~2026-46985-17 (talk) 01:40, 1 September 2026 (UTC)Reply
We're talking past each other. I'm finished with this distraction. Timhowardriley (talk) 08:00, 1 September 2026 (UTC)Reply

distraction

Yes, WP:AOBF, I'm sure that aids your case.
Your sense of entitlement really baffles me. Not only have you dominated the edit history of this page for years, you clearly demonstrate you believe you have the right to override the process of WP:BRD when you can't get what you want immediately. And I'm afraid, that's not how things work here.
Per User:Caleb Stanford's suggestion, the next reasonable step is WP:3O, which is what I'll proceed with. ~2026-47379-61 (talk) 11:35, 1 September 2026 (UTC)Reply
What's your name? Timhowardriley (talk) 14:46, 1 September 2026 (UTC)Reply
I think you're picking a fight. Timhowardriley (talk) 14:56, 1 September 2026 (UTC)Reply
I'm sorry. I lost my temper. Timhowardriley (talk) 05:37, 2 September 2026 (UTC)Reply
Well, I think you're trying to dominate the page and its content, but if I really wanted to "pick a fight" I'd have instantly escalated this conflict rather than bothering with the talk page or WP:3O. ~2026-47379-61 (talk) 15:04, 1 September 2026 (UTC)Reply
What is your name? Timhowardriley (talk) 19:09, 1 September 2026 (UTC)Reply
I'm the only temporary account involved in this dispute. Referring to me as "the temp account" in WP:3O discussions is more than sufficient for the time being. ~2026-47379-61 (talk) 20:06, 1 September 2026 (UTC)Reply
Good Evening @Timhowardriley and @~2026-47379-61 who I assume is also @~2026-46985-17. I will be reading through this in just a second and will provide a third opinion. Please may I remind you in the meantime to please abide by Wikipedia:Assume good faith.
I am just about to begin reading through and then I will provide my opinion please bare with me for upto 30 minutes while I look into the sources and policies and edits to fully form a opinion on this. Kirbylegal (talk) 20:59, 1 September 2026 (UTC)Reply
Hello, and indeed, I am both those temporary accounts, and again thank you for your help with this dispute. ~2026-47379-61 (talk) 21:02, 1 September 2026 (UTC)Reply
icon Response to third opinion request:
Upon looking at all edits, the edits from the temp account editor seem the most accesible for lay readers and also comply with wikipedia policy however @Timhowardriley's may not. Personally and I mean this in good faith, I felt a like the edits in some cases overly explained the concepts.

My opinion is the edits by the temp editor are the most suitable for wikipedia. Kirbylegal (talk) 21:24, 1 September 2026 (UTC)Reply

I respect your opinion. What sentences did I write that may not comply with wikipedia policy? What sentences overly explain the concepts? Timhowardriley (talk) 22:22, 1 September 2026 (UTC)Reply
What sentences did I write seem less accessible for lay readers? Timhowardriley (talk) 22:46, 1 September 2026 (UTC)Reply
Hi User:Kirbylegal, thanks for your assistance with resolving this dispute. You said that edits in some cases overly explained the concepts, but I did restore User:Timhowardriley's comments in which were added to the examples in this edit. Do you think those are too excessive as well, or are these worth keeping in the article? ~2026-47379-61 (talk) 00:25, 2 September 2026 (UTC)Reply

C++ module names have prefix "wikipedia.example."

[edit]

The C++ module names have "wikipedia.example." as a prefix. I don't think this is necessary. As a matter of fact, I was confused when I first saw this and thought the examples were dependent upon wikipedia to load some library. Also, on page 424 of "Professional C++", the author has an example class named Person. The author exports this class using the module name person. I suggest we remove each "wikipedia.example" prefix. The export module name should simply be the class name. Timhowardriley (talk) 05:55, 2 September 2026 (UTC)Reply

I disagree, as wikipedia.examples.Person matches the class with namespace wikipedia::examples::Person, and this pattern is already followed in other pages with C++ examples (which have wikipedia::examples::*), Java topics (which have org.wikipedia.examples.*), and C# examples (which have Wikipedia.Examples.*). Prefixing with the library or organization name is already a pattern across C++ to clearly illustrate ownership of the module, even if the dots themselves do not actually enforce hierarchy. ~2026-47379-61 (talk) 06:13, 2 September 2026 (UTC)Reply
I agree. Thank you. Timhowardriley (talk) 06:42, 2 September 2026 (UTC)Reply

Use of temp accounts to make changes

[edit]

I believe a Wikipedia editor used temp accounts to facilitate changes to the C and C++ examples. This is called Wikipedia:Sockpuppetry and is wrong. Nonetheless, the Computer program article is now better. However, the same improvements could have been achieved much easier by being polite. Timhowardriley (talk) 15:50, 2 September 2026 (UTC)Reply

I will answer your question directed to me shortly when I have the time to go through everything again later. Temp accounts may be used in sock puppetry however this did not seem the case when I was reviewing for a 3O. If you have concerns you should report it as outlined in Wikipedia:HSOCK this is not the place.
Even if it was a registered editor using a temp account that in most cases is fine per Wikipedia:LOGOUT as long as it is not being used inappropriately.
I don't believe the temp account was being impolite either.
This talk page is not the best place to do this please either take it to a users talk page, AIN or potentially another notice board. Kirbylegal (talk) 16:10, 2 September 2026 (UTC)Reply
I disagree. The user started the thread by calling the article "terrible." Timhowardriley (talk) 16:52, 2 September 2026 (UTC)Reply
So are you implying all annon users are Stevebroshar?
Again this is not the correct forum please use Wikipedia:Sockpuppet investigations to request a admin to look into this. Kirbylegal (talk) 18:23, 2 September 2026 (UTC)Reply
ROFL! (to it being me; not about the correct forum stuff) Stevebroshar (talk) 10:29, 3 September 2026 (UTC)Reply
Oh, the humanity! Anything but the T word! ~2026-47379-61 (talk) 18:44, 2 September 2026 (UTC)Reply
ROFL!! Stevebroshar (talk) 10:50, 3 September 2026 (UTC)Reply
WP:ASPERSIONS aside, feel free to file a WP:SPI if you're so confident of my identity as a sockpuppet. Be sure not to WP:BOOMERANG yourself in the process. All of this really does strike me as childish, suddenly crying "sockpuppet" as soon as the WP:3O process didn't go your way. ~2026-47379-61 (talk) 18:43, 2 September 2026 (UTC)Reply
I am going to step away from this thread now. My role was purely to assist with the content consensus. If there are behavioral or sockpuppetry concerns, please resolve them via the appropriate noticeboards (WP:SPI) rather than this talk page. Kirbylegal (talk) 18:55, 2 September 2026 (UTC)Reply
I appreciate your help with resolving the WP:3O dispute as always. ~2026-47379-61 (talk) 19:07, 2 September 2026 (UTC)Reply
I stand by my assertion that everyone (including myself) needs to be polite. Timhowardriley (talk) 20:09, 2 September 2026 (UTC)Reply
I'm enjoying reading all this .. that people think it's the great and powerful stevebroshar rearing his ugly head again :) I stepped away from WP this year bc of editors who made me feel yucky. The attacks from tim can be categorized as false accusation, defamation, smear, poisoning the well, and innuendo. And before you, tim, use your favorite term (ad hominem attack), this is not that. That is discounting something by defaming/smearing/... the source ... which is what you do! That's the pot calling the kettle black. You falsely claim that others are mean in order to discount their opinion and their work. Also, describing character as I have done is not an attack. And more importantly, critiquing a thing such as article content is not personal. You take it personally I guess. I think that you feel you own the article ... which like a Jedi is not supposed to form personal attachments ... a WP editor should not feel ownership of an article. Stevebroshar (talk) 10:59, 3 September 2026 (UTC)Reply
Sticks and stones ... Timhowardriley (talk) 15:34, 3 September 2026 (UTC)Reply
Regarding I think that you feel you own the article: I don't own this article. However, I do enforce the rules of Wikipedia etiquette and the rules of Wikipedia verifiability. Also, I read a lot. If I come across something useful for readers, I'll add the material. My user page is filled with material that got reverted. Timhowardriley (talk) 21:15, 3 September 2026 (UTC)Reply