Talk:Computer programming
This is the talk page for discussing improvements to the Computer programming article. This is not a forum for general discussion of the article's subject. |
Article policies
|
Find sources: Google (books · news · scholar · free images · WP refs) · FENS · JSTOR · TWL |
Archives: 1 |
This level-4 vital article is rated C-class on Wikipedia's content assessment scale. It is of interest to the following WikiProjects: | ||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
This page has archives. Sections may be automatically archived by Lowercase sigmabot III when more than 5 sections are present. |
Wiki Education assignment: Linguistics in the Digital Age
[edit]This article was the subject of a Wiki Education Foundation-supported course assignment, between 11 January 2023 and 11 May 2023. Further details are available on the course page. Student editor(s): Stephintomson (article contribs).
— Assignment last updated by Nurbekyuldashov (talk) 01:52, 9 May 2023 (UTC)
Conflicting statements regarding the first programmer
[edit]The history section features an image with the caption:
Ada Lovelace, whose notes added to the end of Luigi Menabrea's paper included the first algorithm designed for processing by an Analytical Engine. She is often recognized as history's first computer programmer.
However in the history section it states:
The first computer program is generally dated to 1843, when mathematician Ada Lovelace published an algorithm to calculate a sequence of Bernoulli numbers, intended to be carried out by Charles Babbage's Analytical Engine. However, Charles Babbage had already written his first program for the Analytical Engine in 1837.
It seems like there are contradictions:
- The image caption states Lovelace designed the first algorithm for the Analytical Engine, however the article states that Babbage already wrote a program for the Analytical Engine
- The image caption states that she is often recognized as history's first computer programmer, but this also conflicts with above
I am not sure which is correct here. According to Ada Lovelace it is contested. Perhaps the text should be rephrased in the article and image caption to reflect this. Lightbloom (talk) 19:42, 10 September 2023 (UTC)
This article is terribly inaccessible to laypeople
[edit]Can someone please rewrite at least the lead section, with an eye toward helping laypeople (e.g. high school students with no computing background) to make sense of it? The current version gets way too far into the weeds about the details of how computers work, and barely talks about what computer programming is. It consists almost entirely of unexplained jargon, for which mere wikilinks don't cut it. Try to put yourself in the shoes of a total novice, and write using ordinary English, possibly with a few jargon words explained parenthetically. This is too fundamental a topic to be left with such a summary. –jacobolus (t) 15:35, 19 October 2023 (UTC)
- @XOR'easter – I think we want to wikilink computer program ASAP, but I'm afraid I've bungled the first few sentences again. Care to take another crack at it? –jacobolus (t) 03:15, 20 October 2023 (UTC)
- I don't see the need to wikilink computer program immediately, and a sentence that basically says "computer programming is the writing of computer programs" is redundant. Writing the text around the links seems like the wrong way to go about it. XOR'easter (talk) 15:40, 20 October 2023 (UTC)
- I wasn't trying to "write around the link" per se: I really do think "computer programming is writing computer programs" is the basic definition, and is not necessarily redundant. In some other kind of context "programming" might be something like picking the order kids should play in a piano recital or deciding when to schedule each show on a broadcast television network, and it's not a priori obvious that the action here is fundamentally different. To someone who does not know what programs or programming are, I think this kind of explicit link between the two is necessary, but perhaps there's a more artful phrasing. Perhaps following Knuth we could say something like "Computer programming is the art and science of writing computer programs". Or more precisely perhaps something like "Computer programming is the composition of formal texts, called programs, which a computer can interpret and put into effect to perform tasks."
- But then quickly defining a computer program is its own challenge: "What then is a computer program? A particular form of expression of a flowchart or algorithm? An instruction manual for human beings? A process for controlling or bringing about a desired result inside a compurer? A machine part or completion of an incomplete machine? A circuit diagram or blueprint for a circuit board? A compilation of data? A coded writing? A "phonograph record," or perhaps "sheet music?" A mere pattern of symbols or a nonsense writing? All of these things, some of them, or something altogether different? When you read the first sentence of this article, you were probably sure you knew what a computer program is. Perhaps now the answer is not so obvious." (JSTOR B2320464)
- –jacobolus (t) 17:49, 20 October 2023 (UTC)
- I think "Series of instructions" (or "set" of instructions) is a good basic definition. Frankly, I'm not sure this article even needs to exist when I look at others, like Computer Program and Programmer, which include practically the same information. DonFB (talk) 18:21, 20 October 2023 (UTC)
- I do think there are meaningful distinctions of concept between program, programming, and programmer, and there could plausibly be distinct material targeted at all three topics (though some of them could also plausibly be combined or sliced in other ways). The scope of the various current articles has not ever been too carefully considered though, from what I can tell. –jacobolus (t) 18:26, 20 October 2023 (UTC)
- They never are. XOR'easter (talk) 03:53, 21 October 2023 (UTC)
- To elaborate a bit: in my experience, clusters of articles on closely related topics are seldom deliberately coordinated with any kind of plan. They each just do their own random walk, accumulating redundancies and sometimes even contradictions. Sorting out the resulting tangle is a passion project that few editors have the passion for. I'm fairly content with the opening paragraph of this article now. XOR'easter (talk) 16:10, 21 October 2023 (UTC)
- I have no problem with substantial redundancy per se, so long as the scope of each article is clear, the articles in combination cover the subject, and readers can easily find the answers to questions they have. Indeed redundancy is often inevitable, and straining to avoid it often does more harm than good. But it can definitely also be the case that renaming, merging, splitting, reorganizing, etc. can improve the overall organization of clusters of related articles, and better serve readers. –jacobolus (t) 16:21, 21 October 2023 (UTC)
- Yes, "sorting it out" involves deciding which overlaps are good. XOR'easter (talk) 17:33, 21 October 2023 (UTC)
- I have no problem with substantial redundancy per se, so long as the scope of each article is clear, the articles in combination cover the subject, and readers can easily find the answers to questions they have. Indeed redundancy is often inevitable, and straining to avoid it often does more harm than good. But it can definitely also be the case that renaming, merging, splitting, reorganizing, etc. can improve the overall organization of clusters of related articles, and better serve readers. –jacobolus (t) 16:21, 21 October 2023 (UTC)
- I do think there are meaningful distinctions of concept between program, programming, and programmer, and there could plausibly be distinct material targeted at all three topics (though some of them could also plausibly be combined or sliced in other ways). The scope of the various current articles has not ever been too carefully considered though, from what I can tell. –jacobolus (t) 18:26, 20 October 2023 (UTC)
- I think "Series of instructions" (or "set" of instructions) is a good basic definition. Frankly, I'm not sure this article even needs to exist when I look at others, like Computer Program and Programmer, which include practically the same information. DonFB (talk) 18:21, 20 October 2023 (UTC)
- I don't see the need to wikilink computer program immediately, and a sentence that basically says "computer programming is the writing of computer programs" is redundant. Writing the text around the links seems like the wrong way to go about it. XOR'easter (talk) 15:40, 20 October 2023 (UTC)
sequence of instructions
[edit]IMO "is the composition of sequences of instructions" is not good. What about a visual programming language? Are graphical boxes instructions? Could say yes, but kinda forcing a square peg in a round hold. And some text languages don't have instructions; just specify the output. Again could call that instructions, but it's really not. And sequence implies order which in some context is not important.
This is hard. How to be general enough to include visual and spec languages while not making it so obtuse it's incomprehensible?
How about: A programmer composes source code in a language that after automated processing to generate corresponding computer instructions can control the computer's behavior. Commonly, a programmer edits source code as text, but some languages are graphical instead of textual.
"A programmer writes code to produce a program that runs on a computer." is not great either. Someone can be a programmer without producing a program. What's important is that they write code that could be run; even if they don't write the rest of the program. ... A programmer could write code for a computer that does not exist (as Aida noted) so saying "runs on a computer" is a bit off the mark. Stevebroshar (talk) 22:44, 12 May 2024 (UTC)
- Yes, graphical boxes would be a sequence of instructions, in my opinion. I don't think your alternative suggestions yet are improvements, but by all means keep trying! –jacobolus (t) 01:23, 13 May 2024 (UTC)
- If the graphical language is a sequence of boxes and each is an instruction, then sure, that's a sequence of instructions. But, I can imagine a graphical language that is not sequentially presented or executed. Further, I think specification languages are challenging to fit into the sequence category. If someone only writes SQL, are they not programming since they never write sequencing logic? Stevebroshar (talk) 13:24, 30 June 2024 (UTC)
- You can see the previous version at special:permalink/1180298271. I think it was a lot more confusing than the current one. But I'm sure there are improvements that can still be made. –jacobolus (t) 01:25, 13 May 2024 (UTC)
- I agree that is the process of performing particular computations is not good. Programming is about creating something that can be used to perform computations; not actually performing any. The current composition of sequences of instructions, called programs, that computers can follow to perform tasks addresses that issue, but still lacking IMO. It's too specific. Programming is about creating something that can be used to control computer behavior via its programmable interface. Surely, there's a better word than something. Maybe instructions is good. sequence of instructions is too specific. Stevebroshar (talk) 13:31, 30 June 2024 (UTC)
Nonsense
[edit]The section title 'Modern programming' is nonsense. I'm guessing someone wanted to group sections into a top-level section so that there were fewer top-level sections, and that they chose to contrast the 'history' section name. But, the stuff under 'modern programming' is not what I'd call modern -- since modern implies different than some older form. This info applies to programming from its beginning and therefore is not modern. IMO, either this section needs a better title or the sub-sections should be promoted to top-level. ... A better title would be something rather generic like 'attributes', 'aspects' or something.
The 'Quality requirements' section needs work or should be removed altogether. The start: Whatever the approach to development may be, the final program must satisfy some fundamental properties is nonsense. The first part alludes to some approaches, but I don't see the referent. As for having to satisfy fundamental properties such as reliability, robustness (all that stuff) actually no! A program can be utter garbage yes still be a program :) IMO, as with many sections throughout WP that have a 'main article' link, better to just link without trying to give extra info. IOW, remove the section while leaving the a link in a strategic location.
In Readability of source code, However, readability is more than just programming style seems odd to me. Readability is not style. Style can affect readability.
Also, why talk about 'Readability of source code' in the programming article? I'd say better suited under source code.
The section 'Methodologies' seems out of place. It starts with The first step in most formal software development processes is requirements analysis.... Isn't there an article with this info already? This section dives super deep into something that is definitely programming, but if the whole article dives this deep into all programming topics it will be 100 pages long. IMO this article should stay very high level; mostly linking to other articles.
It is very difficult to determine what are the most popular modern programming languages seems out of place. Why does the author think the reader wants to know that. It's a so what statement. It's what I might have written in a high school paper. Get to the point. IOW ax this sentence.
Debugging is a very important task in the software development: so what. high school level.
The more I read this article, the more I see that it needs work. Stevebroshar (talk) 12:30, 30 June 2024 (UTC)
- 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 Technology articles
- WikiProject Technology articles
- C-Class Systems articles
- Top-importance Systems articles
- Systems articles in systems
- WikiProject Systems articles