Jump to content

Talk:Programming language

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia
Former good articleProgramming language 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
June 21, 2006Featured article candidateNot promoted
June 28, 2006Peer reviewReviewed
July 8, 2006Good article nomineeListed
March 10, 2009Good article reassessmentDelisted
Current status: Delisted good article

Article scope too limited: assuming machines and computers

[edit]

Currently this article assumes that programming language is a phenomenon exclusive to machines in general, and computers in particular.

This assumption seems inappropriate, given that there is at least one widely-recognized counterexample: biological programming languages:

See e.g.

[edit]

dr.ef.tymac (talk) 18:13, 29 April 2017 (UTC)[reply]

Did you read more about it?
Programming biological systems is a metaphor.
The work you cite is not as recent as you think, it is part of an area called Synthetic Biology.
Synthetic biology tries to apply real engineering principles to genetic engineering.
Biological systems, however, are complex systems. They can not be programmed them in the same sense that computers are, because you can not program emergent properties just designing a DNA chain. Not even composing known biological pathways isolated and standardized as Biobricks, as synthetic biology works.
There are however other computing forms, like quantum computing, there is an ongoing research on it. Even a DNA computing, which encodes problems in DNA chains and place them to evolve in a thermo-cycler for PCR and device a way to isolate the chain with the answer. — Preceding unsigned comment added by 201.124.211.115 (talk) 05:10, 11 June 2017 (UTC)[reply]

This article is a total mess!

[edit]

It repeats many common places, many of them wrong!, but repeated again, and again, in many programming courses given in basic education based on outdated information. Also many "complete idiot's guide", "learn in N days" or "for dummies" like those in the photo with tech books, repeat again and again.

Many people know some programming language and write code. That does not make then an authority in the subject. However many of them feel they are.

This article seems written from notes taken in basic programming courses.

Has discussions like: How many angels can be in the tip of a needle? — Preceding unsigned comment added by 201.124.211.115 (talk) 05:53, 11 June 2017 (UTC)[reply]

yep too much information unrelated to the core subject and which does not help understanding. this needs to moved to relevant topics.

For example, the paragraph in FLOW-MATIC adds nothing to understanding what a computer language is and should be in the topic on Flow-matic, not programming.

there are also too many competing ideas, such as the definition of a programming language that just confuse things. My view is that Wikipedia should focus on commonly accepted facts and theories rather than pet issues insered by Academics to try and give exposure to very minority theories. it is a to help understanding, not a weapon in obscure Academic debates and personal obsessions. 60.241.211.27 (talk) 12:07, 28 July 2021 (UTC)[reply]

What a pedantic message. Kwiky (talk) 19:04, 19 September 2023 (UTC)[reply]
I suspect we disagree on the answer, but I do agree that the definition of programming language seems to be totally relative throughout the entire article. Theaceofthespade (talk) 23:28, 28 February 2025 (UTC)[reply]

Defining the term "programming language" properly

[edit]

Wikipedia currently says a "programming language" is "a formal language that specifies a set of instructions that can be used to produce various kinds of output" which is true-ish, but vague. The phrase "various kinds of output" hints at the relevant characteristic, but still doesn't pin it down. Dictionary.com defines a "programming language" as "a high-level language used to write computer programs, as COBOL or BASIC, or, sometimes, an assembly language." This gibberish dances around it for a moment... but it makes no difference whether it is the highest-level symbolic meta-language or lowest-level machine code. An alternate Dictionary.com definition starts getting closer, "a simple language system designed to facilitate the writing of computer programs" but simplicity has nothing to do with it either and this definition still doesn't capture the essence. The important nugget here is the specification of decision making. A "computer language" is any predefined set of symbols and syntax that allows people to communicate with a computer system. But a "programming language" is a language among the broader set of computer languages that specifically enables a person to specify decision-making rules. CPUs make logical (true/false) decisions. The specification of a logical decision-making process is where the rubber meets the road. As example, HTML is a computer language, but not a programming language. If I want my computer's clock to display upside down, but only on Tuesdays, I can't use HTML to accomplish that. Get it? (HTML is really just a data markup language used to specify the metadata and the semantic structure of a Web document.)

Shall I take a crack at rewriting the first paragraph on the "programming language" page and I'll let you all have a look? I won't spend too much time on it unless the community wants me to, so let me know what you think. — Preceding unsigned comment added by Dlampton (talkcontribs) 00:39, 8 January 2018 (UTC)[reply]

Broken refs

[edit]

@Squoop: you used some ref names that don't exist in the Abstractions section. Could you please fill those in? -- Fyrael (talk) 21:58, 10 October 2022 (UTC)[reply]

@Fyrael Fixed :D Squoop (talk) 00:19, 11 October 2022 (UTC)[reply]

"Semantics" is singular

[edit]

A recent edit by Sumanbalayar corrected if computational semantics is defined to if a computational semantics is defined, but it was reverted by Girth Summit. Using "semantics" as singular is standard in the field, for example:

  • Pierce, Benjamin (2002). Types and Programming Languages. p. 111. ISBN 0-262-16209-1. We first define the terms, then define a semantics showing how they behave, then give a type system that rejects some terms whose behaviors we don't like.

I favor Sumanbalayar's version of this sentence. Freoh (talk) 16:20, 5 January 2023 (UTC)[reply]

Fine to reinstate it if you like; it looked like a well-meaning but incorrect tweak to me, but you seem to know what you're talking about. Girth Summit (blether) 16:51, 5 January 2023 (UTC)[reply]
 Done. Freoh (talk) 17:01, 5 January 2023 (UTC)[reply]
Don't know if you noticed, but there were quite a few other tweaks I reverted in that edit - feel free to review them and reinstate if you think I erred. Girth Summit (blether) 17:33, 5 January 2023 (UTC)[reply]

Standard examples

[edit]

It would be helpful if there were a small set of "standard" tasks and all pages on programming languages showed how to do them all (e.g., compute prime numbers, compute the squares of the numbers 1 to 10, print "Hello, world!"). Where should I suggest this? LachlanA (talk) 01:00, 21 January 2023 (UTC)[reply]

Proprietary section needs better citations

[edit]

Oracle asserting something shouldn't be taken a evidence, needs better sources. FallingPineapple (talk) 02:05, 7 June 2023 (UTC)[reply]

Needs article-wide cleanup?

[edit]

I think this article needs a thorough cleanup.

  • The entire article is needlessly verbose.
  • A lot of the content is irrelevant or covered in other articles.
  • Lots of the information is unsourced and could be original research.

I feel like the article as a whole fails to provide accurate and useful information about programming languages.

I tried to improve the introduction but I'm sure my improvements still have issues...

Could a cleanup tag/tags be added? I'm not an experienced Wikipedian so I'm not sure what needs to be done. Squoop (talk) 01:19, 28 October 2023 (UTC)[reply]

Your concerns are valid ... but not actionable. Need more detail on what you think is needlessly verbose, irrelevant and unsourced. Stevebroshar (talk) 12:54, 10 May 2024 (UTC)[reply]

Source code example's usage of method

[edit]

The source code example https://en.wikipedia.org/wiki/Programming_language#/media/File:C_Hello_World_Program.png mentions that sayHello is a function and in between brackets 'method'. This is not a method, a method is associated with an object/class, C has no classes. 2A02:8389:2200:9F90:B5B9:15B4:D8AA:5901 (talk) 09:54, 5 December 2023 (UTC)[reply]

Edit request

[edit]
  • Change the "Taxonomies" section title to "Classification"
  • Replace the contents of the "Classification" section, after the further reading link, with:
  • Add to further reading the following source:

Sebesta, Robert W. (2012). Concepts of Programming Languages (10 ed.). Addison-Wesley. ISBN 978-0-13-139531-2.

@Buidhe paid @Buidhe I'm personally fine with the changes above, I think going ahead and making these changes are fine, however, I'd like you to comply with PAID and disclose your employer/client/affiliationn on your user page for future reference :) Sohom (talk) 16:18, 13 January 2024 (UTC)[reply]
Sohom Thanks, now done. Buidhe paid (talk) 02:29, 14 January 2024 (UTC)[reply]
 Already done Shadow311 (talk) 16:03, 18 January 2024 (UTC)[reply]

Please add the following text at the end of the "elements" section:

Buidhe paid (talk) 17:48, 23 January 2024 (UTC)[reply]

 Done Both. Sohom (talk) 18:06, 23 January 2024 (UTC)[reply]

Please add the following text just before the "Concurrency" section:

Thanks Buidhe paid (talk) 19:27, 23 January 2024 (UTC)[reply]

 Done, Sohom (talk) 08:40, 24 January 2024 (UTC)[reply]

Edit request 2

[edit]

Please change the content of the "Type system" section, after the hatnote, to:

I'm a bit worried about the whole article becoming a summarization of this book. This is a really good starting point, but I think we should try to work in other material. Snowmanonahoe (talk · contribs · typos) 13:20, 18 April 2024 (UTC)[reply]

Edit request 3

[edit]

Also, please add the following sentence to the end of the "proprietary languages" section: "Open source programming languages are particularly helpful for open science applications, enhancing the capacity for replication and code sharing."[1]

References

  1. ^ Abdelaziz, Abdullah I.; Hanson, Kent A.; Gaber, Charles E.; Lee, Todd A. (2023). "Optimizing large real‐world data analysis with parquet files in R: A step‐by‐step tutorial". Pharmacoepidemiology and Drug Safety. doi:10.1002/pds.5728.

Thanks Buidhe paid (talk) 02:23, 25 January 2024 (UTC)[reply]

 Done Encoded Talk to me! 13:31, 9 February 2024 (UTC)[reply]

Edit request 4

[edit]

Please:

  • Remove the unsourced section titled "Standard library and run-time system". I checked several textbooks on PL, including Sebesta 2012, Programming Languages: Principles and Paradigms, and Practical Foundations for Programming Languages. They either don't mention standard libraries at all or barely mention them, without enough content to source a stand-alone section. Instead, I mention standard libraries in the new version of the "Design and implementation" section.
  • Replace the current content of the "Design and implementation" section, after the hatnote, with the following ("specification" subsection is unchanged):

Please add the following source to the "further reading" section:

Thank you Buidhe paid (talk) 04:37, 27 January 2024 (UTC)[reply]

 Question: This is a big lift. Can you show the before and after text, or explain why the changes are being made? STEMinfo (talk) 05:12, 5 April 2024 (UTC)[reply]
STEMinfo the sections this edit is replacing are currently in the article. They have been completely rewritten in my version with very little of the original text/sourcing remaining.
  1. You can see that the "Standard library" is currently unsourced. As I explain above I was able to confirm that a section on this topic was UNDUE.
  2. The current "design and implementation" section is partly cited but many of the sources are not ideal—such as lecture notes, which may not be considered RS, and a book from 1982, which is certainly outdated. Large parts are entirely unsourced
  3. My version of the draft removes content that is poorly or not sourced and replaces it with a new version that is supported by reliable sources and does a better job balancing the coverage of different topics in overviews of the subject.
Does this answer your question? Buidhe paid (talk) 06:53, 5 April 2024 (UTC)[reply]
Thanks for the info. I'll have to take a closer look. STEMinfo (talk) 17:44, 5 April 2024 (UTC)[reply]
@Buidhe paid: I replaced the Implementation section, and as you pointed out, the Specifications section is unchanged. I've read up about the standard library, and I'm not seeing how it helps readers to remove the section. It's clearly an element of every programming language, which you can tell just by doing a simple phrase search with quotes for "standard library". I'm reluctant to remove it. Feel free to discuss further. I'm still reviewing your opening text and the tradeoffs section. STEMinfo (talk) 20:49, 12 April 2024 (UTC)[reply]
@Buidhe paid: I'm not convinced that your version is enough of an improvement to remove the information about natural languages and the reasons for having diverse programming languages, unsourced or not. You also removed the segue to the specification and implementation sections, and accidentally introduced a typo that changes the meaning.
[[Edsger W. Dijkstra]] took the position that the use of a formal language is essential to prevent the introduction of meaningless constructs, and dismissed [[natural-language programming]] as "foolish". [[Alan Perlis]] was similarly dismissive of the idea.
+
[[Edsger W. Dijkstra]] took the position that the use of a formal language is essential to prevent the introduction of meaningless constructs. [[Alan Perlis]] was similarly dismissive of the idea.
I'm going to leave this open but I think you can propose changes while also preserving more of the existing content. 68.5.3.227 (talk) 22:02, 12 April 2024 (UTC)[reply]
Agreed. Marked partially answered. STEMinfo (talk) 22:20, 12 April 2024 (UTC)[reply]

The issue with UNDUE hasn't been resolved, because due weight is based on coverage in reliable sources about "programming languages" in general. Many languages do have a standard library, but that fact by itself doesn't mean that it's DUE to cover them extensively in this high-level overview. "Natural language programming" never took off the ground, and the content about it is also UNDUE. (relevant discussion) Buidhe paid (talk) 02:20, 13 April 2024 (UTC)[reply]

If every programming language has a standard library, why is it bad to have a standard library section? STEMinfo (talk) 01:22, 14 April 2024 (UTC)[reply]

References

  1. ^ Dijkstra, Edsger W. On the foolishness of "natural language programming." Archived 20 January 2008 at the Wayback Machine EWD667.
  2. ^ Perlis, Alan (September 1982). "Epigrams on Programming". SIGPLAN Notices Vol. 17, No. 9. pp. 7–13. Archived from the original on 17 January 1999.
  3. ^ Dijkstra, Edsger W. On the foolishness of "natural language programming." Archived 20 January 2008 at the Wayback Machine EWD667.
  4. ^ Perlis, Alan (September 1982). "Epigrams on Programming". SIGPLAN Notices Vol. 17, No. 9. pp. 7–13. Archived from the original on 17 January 1999.

Edit request 5

[edit]

Please change the content of the article lead (beginning below "use dmy dates" template) to:

Thanks Buidhe paid (talk) 08:57, 27 January 2024 (UTC)[reply]

 Done. Thanks for improving the lead. ― novov (t c) 05:01, 5 March 2024 (UTC)[reply]

Edit request 6

[edit]

Please replace the content of the "History" section, after the hatnote, with:

Also, add the following source to the "further reading" section:

  • Gabbrielli, Maurizio; Martini, Simone (2023). Programming Languages: Principles and Paradigms (2nd ed.). Springer. ISBN 978-3-031-34144-1.

Reasons: add references, improve summary style, remove unsourced text, fix some MOS:CURRENT issues Buidhe paid (talk) 20:08, 28 January 2024 (UTC)[reply]

Wiki Education assignment: IFS213-Hacking and Open Source Culture

[edit]

This article was the subject of a Wiki Education Foundation-supported course assignment, between 30 January 2024 and 10 May 2024. Further details are available on the course page. Student editor(s): SirRiles (article contribs). Peer reviewers: ApolloMartin.

— Assignment last updated by KAN2035117 (talk) 22:51, 3 April 2024 (UTC)[reply]

Wiki99 summary

[edit]

Summary of changes as a result of the Wiki99 project (before, after, diff):

  • Rewrite much of the article from reliable sources, fixing some of the unsourced content issues
  • Condense history section per WP:SUMMARYSTYLE, as the details are already covered in another article
  • Add information about some programming language issues, such as tradeoffs between different desirable qualities that are mutually exclusive

Further possibilities for improvement:

  • Rewrite the parts of the article that I did not get to, such as the semantics and syntax sections, according to coverage in reliable sources
  • Get the article to good article status

Buidhe paid (talk) 07:13, 5 August 2024 (UTC)[reply]

Wiki Education assignment: IFS213-Hacking and Open Source Culture, Fall 2024

[edit]

This article was the subject of a Wiki Education Foundation-supported course assignment, between 3 September 2024 and 13 December 2024. Further details are available on the course page. Student editor(s): Pbblombo1! (article contribs). Peer reviewers: Sagethehero.

— Assignment last updated by KAN2035117 (talk) 02:34, 30 October 2024 (UTC)[reply]

Definitions Section

[edit]

The "definitions" section isn't really... a definitions section at this point. I suggest this current section should be separated out into two sections: "Formal definitions" and "informal definitions." I'm happy to take it on, but it seemed like a big change so I figured I'd put it here for discussion for input before presuming to rewrite a bunch. I know this is long - but that's so that this could serve as a sort of rough rough draft for feedback in regard to how I think the section should be restructured if the objections aren't too strong - just trying to lay it all out.

I suggest this for a few reasons (also note that I am not working hard to hide any "bias" here, but would endeavor to steelman any viewpoints I wrote about in the actual article):

1) Formal Definitions are important but obscure/nuanced The more stringent, formal definitions are, frankly, not super useful outside of theoretical conversations (and I say this as someone who does in fact use those definitions). In computer science, the emphasis of a "programming language" was actually on the fact that it resembled *written language* (vs punch cards). For a long time the goal (and arguably marketing) was around developing programming language technology to the point that it would essentially reach natural speech. This distinction about input style is still extremely important, especially for contemporary discussions about LLM's, for example. But now that programming languages are abundant and common, most people do not find themselves making this distinction, leading to a sort of "drift" in the meaning of the term as its original meaning becomes *colloquially* irrelevant.

2) Trying to cite/support this section is a nightmare right now There are many informal definitions scattered throughout this and other sections, but they are not explicitly labeled, nor their merits discussed. Aside from there surely being some high quality definitions out there to cite, this has lead, in my opinion, to citations that attempt to prove the *validity* of a definition rather than cite its usage or source. For example, one citation simply stated "x language is not a programming language" as a way to show that some authors use the term "computer languages for things that aren't considered programming languages" (or specifically give an example of a term it might be used for) - and while this does demonstrate that there are "languages that some authors don't consider programming languages," the author was not asserting that it was a "computer language" or referencing the term (at least not that I could find). To demonstrate why this makes no sense, I could just as easily cite that as evidence that people use the term L33TCOD3 to describe things that aren't considered programming languages. And that's not to say the validity of the definitions shouldn't be discussed - merely that it should be done so explicitly.

3) Informal definitions fall into tidy but distinct categories There are several "batches" of informal definitions, each with their own utility/limitations, and these are worth discussing in contrast to more formal/historical definitions. These are the groups as I see them, and some of the utility they lack vs the more formal definitions - I believe people tend to informally mix/match these (and obviously in a full writeup I would cite sources):

Programming Languages Are Compiled- many people will use compilation as a standard for whether or not something is a "real" programming language, usually arguing that an interpreter makes it a "scripting" language. This definition does not to do a good job describing virtual-machine based language implementations

Programming Languages Must be Turing Complete - the reason people think this is obvious, but an important misconception is that this test is meant more generally for instruction/mathematical operation sets and is just able to be applied to programming languages as a result. Like much of Turing's work, it was just so solid that we can continue to use it for things he never even got to see, and programming languages inherently overlap with instructional sets by design - but at the end of the day Turing Completeness just means being able to accomplish the same things as a certain class of machine he made up (not to diminish the concept, it's a really important machine that does a lot).

Programming Languages must be imperative/have logic/control structures - this perception often arises due to the popularity and power of imperative programming languages - however as the name suggests (and this article even mentions several times), that's formally a *subset* of programming languages. Declarative programming often "feels" less like programming because it is not as concerned with how the task is going to be accomplished, but the original distinction of instructing a machine with language was not concerned with that sort of distinction.

I'm open to any feedback/discussion on this - I'm relatively new to editing here, but this is my field and I am happy to elaborate on or support anything that seems subjective/biased (or just own if its a bias ). I really think this would both represent these viewpoints more clearly, and contextualize why people might have differing ones "in the wild" Theaceofthespade (talk) 18:28, 2 March 2025 (UTC)[reply]

A programming language is for writing programs

[edit]

WRT "A programming language is a system of notation for writing computer programs."

Natural language is writing books. ...And a whole lot of other stuff.

Also, it's not just about writing. I could generate and that's not what I'd call writing. So, maybe 'authoring' is better word.

Thing is, it's not wrong but it's not accurate and it's grandiose. I can use a programming language to write a fragment or code that's never compiled into a program or compiled into a library. A language defines the rules for writing source code. Maybe less sexy, but that's all it is. If you love the 'notation' word, then: a programming language is notational system for encoding the control of a computer. Stevebroshar (talk) 02:12, 9 July 2025 (UTC)[reply]

An implementation of a programming language

[edit]

WRT "An implementation of a programming language is required in order to execute programs"

A compiler/interpreter is not an 'implementation' of a language. A compiler/interpreter understands and conforms to a language. Stevebroshar (talk) 02:18, 9 July 2025 (UTC)[reply]