Talk:Computer program
Add topic| This is the talk page for discussing improvements to the Computer program article. This is not a forum for general discussion of the subject of the article. |
Article policies
|
| Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
| Archives (index): 1, 2, 3, 4Auto-archiving period: 12 months |
| This article is written in American English, which has its own spelling conventions (center, color, defense, realize, traveled) and some terms may be different or absent from other varieties of English. According to the relevant style guide, this should not be changed without broad consensus. |
| Computer 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. | ||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||
| This It is of interest to the following WikiProjects: | |||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||
This article has major problems
[edit]First, it's waaaaaaaaaaaaaaaaaaaaaaaay too long. It seems try to cover everything known to man about software. Too much. Most of the content should be removed or moved to other pages.
- The article covers this broad subject with details researched from reliable sources. Timhowardriley (talk) 22:37, 5 February 2024 (UTC)
- You have made a mess by replying to my comment in the middle of it. I can't tell what you said vs. what I said. Well intentioned, but poorly executed. I can say the same of your writing style in the article. Stevebroshar (talk) 14:16, 30 June 2024 (UTC)
Second, just focusing on the leader, it's way off base...
- It is focused on the curious reader. Timhowardriley (talk) 22:37, 5 February 2024 (UTC)
"It is one component of software, which also includes documentation and other intangible components" I guess not wrong seems lame and begs the question: what intangible components?
- Hover over the citation to see the quote. The citation's quote says, "[Software includes] all or part of the programs, procedures, rules, and associated documentation of an information processing system." Procedures, rules, and associated documentation constitute intangible components. Timhowardriley (talk) 22:37, 5 February 2024 (UTC)
"A computer program in its human-readable form is called source code" yah. no. Programs _are_ executables –} machine code. They are not human-readable. The source code from which you build a program is not a program.
- Yes it is. Source code has many levels, from machine code on upward. See Computer_program#Generations_of_programming_language. Timhowardriley (talk) 22:37, 5 February 2024 (UTC)
- The original statement A computer program in its human-readable form is called source code is not completely wrong, but it's misleading and overly folky for my taste and IMO for WP. ... Regardless, the concept of source code does not include machine code. Source code specifically means code that can be used to generate machine code. It is the source of machine code. ... Interpreted code (which is not translated to machine code) is also called source but that's a different story. Stevebroshar (talk) 14:12, 30 June 2024 (UTC)
"language's compiler" Languages don't have compilers. A compiler is for a certain language; compiles code of a certain language.
- Yes they do. I work using the C language's compiler daily. Timhowardriley (talk) 22:37, 5 February 2024 (UTC)
"source code may execute within the language's interpreter." nope. The interpreter is a program. The source code that it runs is simply input; not a program itself. Interpreted source code is sometimes called a script – which is similar to a program but has the special distinction that it's not compiled; is human readable.
- Yep. Whereas everything you said is true, it's also true that R computer programs execute within an R interpreter. Timhowardriley (talk) 22:37, 5 February 2024 (UTC)
"If the executable is requested for execution, then the operating system loads it into memory and starts a process. The central processing unit will soon switch to this process so it can fetch, decode, and then execute each machine instruction." not wrong, but very ham-handed. How about: Generally, the operating system copies a program from permanent storage into memory (i.e. RAM) and starts executing its instructions, starting at the entry point, as what is called a process. The OS executes instructions in sequence and sometimes in parallel with conditional branching logic that directs the flow of logic. In some cases, a program is run directly from permanent storage – without copying instructions to RAM.
- It is not ham-handed. Looking down from 10,000 feet, this sentence correctly describes the context switch. Further on in the kernel program subsection, it details the context switch. Timhowardriley (talk) 22:37, 5 February 2024 (UTC)
- All of your criticisms are with the lead section, where a lot of thought went into every sentence. The lead section is not intended to be fully nuanced. It is just generalities, and the rest of the article drills down to the details. Timhowardriley (talk) 22:37, 5 February 2024 (UTC)
- Yeah. you are not getting my point. And, you seem defensive. You disagree with everything I've said. I guess I'll just leave the article as-is since you would probably make a stink if I try to make improvements. You seem like that sort of person.
- But, I will respond to your comments since you took the time to respond to me.
- I went into detail on the lead as a start. It would take a long time (too long) to describe in detail the issues I have with the rest.
- Broad subject: yes. As broad as this article: nope. I see no point in describing the history of computing just to describe the program. For example, how does telling me that Charles Babbage spent £17000 on his failed machine help me understand the program? Interesting: yes; correct: if you say so; cited: sure, good job. Relevant? nope.
- The Babbage machine is what the world's first computer programmer worked on. Timhowardriley (talk) 15:53, 7 February 2024 (UTC)
- This is an article about computing in general, but it's supposed to be about the program. For example, it says "The waterfall model is an implementation of a systems development process". I somewhat randomly picked that sentence from the body to prove a point. The body is not about the program.
- The waterfall is a software engineering model. Software engineering is about writing quality computer programs. Timhowardriley (talk) 13:49, 7 February 2024 (UTC)
- Analogy: To describe what a carburetor is, I don't need to understand the history of the auto industry or how much Henry Ford spent to build this his first Model T plant.
- ...
- About the first sentence and footnote:
- Burying important info in a footnote is not a good writing technique. References allow the reader to verify the content. The text of the reference should not be the content. ... This is my opinion about good writing. I learned it in college.
- Further, I wouldn't say that "Procedures, rules, and associated documentation" are "intangible components". Seems like an off-the-mark categorization. IOW confusing.
- This is the first sentence -- basically the definition of the term computer program. It should be super tight! It's what shows when you hover over a link in another page. This says that a program is part of something that includes intangible components. Is that one of the most important aspects of program? Deserving of sentence #1? I think not. ... It's not wrong, but it's off the mark.
- If you wrote that, then I understand that that critique may sting. Sorry if I touch a nerve. But, come on. It's not good.
- ...
- This article is for the curious reader? The intent may be to delight the curious reader, but the result is to torture the reader. It holds them captive while they read through irrelevant details searching for the useful parts.
- I was curious to learn about program -- including its history. But, after a few pages I was bored! I thought: this is not about the program. It's about computing.
- An author has the power to engage a reader or to bore them to death.
- ...
- "Source code has many levels, from machine code on upward" Well. no. Machine code is definitely _not_ source code. Source code is human readable text and machine code is a stream/block of numeric/binary data. Further, source code is not the same as a program. A program can be built from source code. Analogy: A book consists of text, but a block of text is not a book.
- ... but on that point ...
- After reading about older variants of BASIC, I now see how interpreted source code can be a program. It's a challenging concept for me. For example,
int main(){printf("hello");}is not what I'd call a program. I can build a program from it, but that text is not a program. But in the context of old BASIC10 PRINT "hello"is a program. Or maybe it's not. Maybe a program is more conceptual. I can define the behavior of a program with source code or machine code. - A program seems to be the encoding of machine behavior in some language (source or machine). And it must have an entry point since since without that the encoding is a library which is different.
- I'm curious to learn more about what makes something a program -- the defining characteristics. For example, how can very different things like interpreted BASIC and an app on my phone both be programs. Sadly, I don't see that in the article.
- ...
- Is the info of the article researched and well cited? sure. Didn't say it wasn't. Why did you jump to that?
- Wikipedia has the rule: Wikipedia:No original research. Therefore, we are constrained to paraphrase only what we discover doing secondary research. Every fact in this article is presented because a computer scientist published that fact. The scientists published these facts because they were material. Timhowardriley (talk) 21:51, 7 February 2024 (UTC)
- Just because something is researched and well cited does not make it well-suited for the context, and writing is all about context. The context here is an encyclopedia entry for the computer program; not the computer or software or programming or programmers or programming languages...
- I stand by my suggestion to remove most of this article. Not saying it should be thrown out the window. Move it into other articles where it's more appropriate.
- You seem to be a programmer. This article is like a class with too many lines of code. It should be re-factored into several smaller classes.
- ...
- A language does not have/own a compiler. A compiler is for a language or languages or version(s)/variant(s) of a language or something like that.
- A C compiler is not owned by the C language. A C compiler is designed for a specific version and dialect of C; probably a super or sub set. I think "C's compiler" _implies_ various incorrect things like there is only one C compiler and/or the compiler defines the language. A compiler does what it does regardless of how a language is defined. Also, people don't use that verbiage. Seems invented in this article.
- ...
- "Looking down from 10,000 feet, this sentence correctly describes the context switch. Further on in the kernel program subsection, it details the context switch."
- Context switch. OK. Seems important. Use that term. As a reporter says: Don't bury the lead.
- And, that's the point of this sentence? I had no idea. I stand by my classification of ham-handed. Not saying it wrong. But, yikes. It is poorly written.
- Also, it is so particular to a modern computer which is in stark contrast to the rest of the article that talks about history. Did Charles Babbage's computer do this too?
- Further, some computers do not load the program into RAM. So, it's also misleading even for modern computers.
- Further, not all computers have an operating system. Does such a computer have programs? I'm curious.
- ...
- "The lead section is not intended to be fully nuanced. It is just generalities, and the rest of the article drills down to the details" I get that. but ... one should be able to read the lead without wondering: what does that mean? It should leave the reader thinking: that's interesting; I want to learn more. I was so turned off by the poor writing and inaccuracies of the header that I didn't want to press on. I did scan the rest of the article a few times so that I could talk about it here. But, I don't really want to read it in depth. I am not engaged. My curiosity died.
- - Stevebroshar (talk) 07:43, 7 February 2024 (UTC)
Stevebroshar (talk) 20:33, 5 February 2024 (UTC)
- Thank you for your feedback. This was the state of the article when I started editing it. Throughout the decades, I kept all of my college textbooks. Working on this article forced me to dig through them with a new perspective. Timhowardriley (talk) 14:57, 7 February 2024 (UTC)
- Much of the info that you added is very good, but much of it is not appropriate for this context -- for 'computer program'. And for writing, context is so important.
- IMHO much of the content of this page should be moved to other pages. Like for computer, software engineering, software development, software and so on. As this seems to be a labor of love for you, maybe you would like to do that.
- Please do not be offended ... but that old version is better. It's not perfect, but is much more focused and reads better.
- I see that you added a lot of content that is clearly well-researched and I applaud your effort. Stevebroshar (talk) 21:43, 7 February 2024 (UTC)
- Thank you for your feedback. This was the state of the article when I started editing it. Throughout the decades, I kept all of my college textbooks. Working on this article forced me to dig through them with a new perspective. Timhowardriley (talk) 14:57, 7 February 2024 (UTC)
Thanks
[edit]Dear @Timhowardriley I tried working with you, but you have no interest in that. You are close-minded, and disagreeable. Not a team player. You shot down all the concerns and suggestions I made, horked up the comments I made above and now reverted my careful, well considered and IMO valuable edits. You are a hack and a bully. This article is terrible, yet you seem to think it's your pet and cannot live without one precious word of it. Thanks very little. Stevebroshar (talk) 16:16, 30 June 2024 (UTC)
- Please be polite. Timhowardriley (talk) 18:59, 30 June 2024 (UTC)
Is Prolog section too detailed?
[edit]This edit has merit. I reverted it because such a big change should first be talked about. The edit trimmed Prolog's second and third examples. These examples were added by Robert Kowalski himself. Given his stature as a pioneer of the language, it's an honor to collaborate with him. Nonetheless, the first example alone gives the reader enough information to decide whether or not to dig deeper. Timhowardriley (talk) 02:26, 1 July 2024 (UTC)
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)
- 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)
- How would you propose handling firmware? RastaKins (talk) 19:09, 5 June 2025 (UTC)
- Please explain. Timhowardriley (talk) 22:56, 5 June 2025 (UTC)
- 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)
- 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?
- 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.
- 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)
- 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)
- /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)
- 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)
- 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)- You're really straining to interpret this source to say what you want it to say. ~Kvng (talk) 15:54, 2 July 2025 (UTC)
mergeSoftware 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)- 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.
- 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.
- 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.
- 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)
- 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)
- 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) - Additional thought: The Internet is a web of networks scattered throughout the wide world. Timhowardriley (talk) 16:24, 23 June 2025 (UTC)
- 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
- 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)
- 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)
- 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:- Disagree with my indication and explain why.
- 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) - 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)
- 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)
- In "C How to Program, Second Edition", the author writes,
- oppose — revisited both articles, so reversing my comment. Both articles need some work, so any attempt to merge them will probably prove troublesome and most likely impossible — GhostInTheMachine talk to me 16:05, 24 July 2025 (UTC)
- 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)
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)
- 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)
- This is the American English WP. Stevebroshar (talk) 14:20, 5 September 2025 (UTC)
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)
- 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)
- I think the tag is meant to be disruptive. Timhowardriley (talk) 16:21, 9 October 2025 (UTC)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
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)
- 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)
- Yes, I agree. I am suggesting it in Software Er. Satinder J Singh (talk) 06:34, 15 May 2026 (UTC)
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)
- The code in the article reads and executes just fine. Who are you? Timhowardriley (talk) 10:06, 30 July 2026 (UTC)
...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)
- 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)
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*whenstd::stringwas 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)
- 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)
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)
- 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)
- Oh! I pressed the wrong "Reply ..." link. Sorry. Timhowardriley (talk) 00:38, 1 August 2026 (UTC)
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 frommain(), 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
constfields 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)
- 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)- 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)
- Yes. Thank you for clarifying. Timhowardriley (talk) 00:50, 2 August 2026 (UTC)
- That's not the point I'm making, I'm saying that deliberately omitting deallocation logic just because it's in the
- Regarding
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)
- Wikipedia articles that use American English
- Delisted good articles
- Former good article nominees
- C-Class level-4 vital articles
- Wikipedia level-4 vital articles in Technology
- C-Class vital articles in Technology
- C-Class Computing articles
- Top-importance Computing articles
- All Computing articles
- C-Class Computer science articles
- Top-importance Computer science articles
- WikiProject Computer science articles
- C-Class software articles
- Top-importance software articles
- C-Class software articles of Top-importance
- Unknown-importance Computing articles
- All Software articles
