Talk:Programming language
This is the talk page for discussing improvements to the Programming language 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, 2, 3, 4, 5, 6, 7, 8 |
![]() | Programming 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. | |||||||||||||||||||||
|
![]() | This ![]() It is of interest to the following WikiProjects: | |||||||||||||||||||||||||||||||||
|
A summary of this article appears in Language. |
![]() | The contents of the Dialect (computing) page were merged into Programming language on 7 February 2018. For the contribution history and old versions of the redirected page, please see its history; for the discussion at that location, see its talk page. |
Article scope too limited: assuming machines and computers
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.
- http://news.mit.edu/2016/programming-language-living-cells-bacteria-0331
- http://reliawire.com/biological-programming-language/
dr.ef.tymac (talk) 18:13, 29 April 2017 (UTC)
- 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)
This article is a total mess!
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)
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)
- What a pedantic message. Kwiky (talk) 19:04, 19 September 2023 (UTC)
Defining the term "programming language" properly
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 (talk • contribs) 00:39, 8 January 2018 (UTC)
Broken refs
@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)
- @Fyrael Fixed :D Squoop (talk) 00:19, 11 October 2022 (UTC)
"Semantics" is singular
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)
- 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)
Done. Freoh (talk) 17:01, 5 January 2023 (UTC)
- 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)
Standard examples
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)
Proprietary section needs better citations
Oracle asserting something shouldn't be taken a evidence, needs better sources. FallingPineapple (talk) 02:05, 7 June 2023 (UTC)
Needs article-wide cleanup?
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)
Source code example's usage of method
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)
Edit request
![]() | This edit request by an editor with a conflict of interest has now been answered. |
- Change the "Taxonomies" section title to "Classification"
- Replace the contents of the "Classification" section, after the further reading link, with:
Extended content
|
---|
Programming languages are often placed into four main categories: imperative, functional, logic, and object oriented.[1]
Although markup languages are not programming languages, some have extensions that support limited programming. Additionally, there are special-purpose languages that are not easily compared to other programming languages.[5] References
|
- 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.
- Reason: a lot of the current text of that section is unsourced, original research, or fails verification. Buidhe paid (talk) 15:17, 13 January 2024 (UTC)
- @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)
- Sohom Thanks, now done. Buidhe paid (talk) 02:29, 14 January 2024 (UTC)
Already done Shadow311 (talk) 16:03, 18 January 2024 (UTC)
![]() | This edit request by an editor with a conflict of interest has now been answered. |
Please add the following text at the end of the "elements" section:
Extended content
|
---|
ConcurrencyIn computing, multiple instructions can be executed simultaneously. Many programming languages support instruction-level and subprogram-level concurrency.[1] By the twenty-first century, additional processing power on computers was increasingly coming from the use of additional processors, which requires programmers to design software that makes use of multiple processors simultaneously to achieve improved performance.[2] Interpreted languages such as Python and Ruby do not support the concurrent use of multiple processors.[3] Other programming languages do support managing data shared between different threads by controlling the order of execution of key instructions via the use of semaphores, controlling access to shared data via monitor, or enabling message passing between threads.[4] References
|
Buidhe paid (talk) 17:48, 23 January 2024 (UTC)
Done Both. Sohom (talk) 18:06, 23 January 2024 (UTC)
![]() | This edit request by an editor with a conflict of interest has now been answered. |
Please add the following text just before the "Concurrency" section:
Extended content
|
---|
Exception handlingMany programming languages include exception handlers, a section of code triggered by runtime errors that can deal with them in two main ways:[1]
Some programming languages support dedicating a block of code to run regardless of whether an exception occurs before the code is reached; this is called finalization.[2] There is a tradeoff between increased ability to handle exceptions and reduced performance.[3] For example, even though array index errors are common[4] C does not check them for performance reasons.[3] Although programmers can write code to catch user-defined exceptions, this can clutter a program. Standard libraries in some languages, such as C, use their return values to indicate an exception.[5] Some languages and their compilers have the option of turning on and off error handling capability, either temporarily or permanently.[6] References
|
Thanks Buidhe paid (talk) 19:27, 23 January 2024 (UTC)
Done, Sohom (talk) 08:40, 24 January 2024 (UTC)
![]() | The user below has a request that an edit be made to Programming language. That user has an actual or apparent conflict of interest. The requested edits backlog is very high. Please be extremely patient. There are currently 211 requests waiting for review. Please read the instructions for the parameters used by this template for accepting and declining them, and review the request below and make the edit if it is well sourced, neutral, and follows other Wikipedia guidelines and policies. |
Please change the content of the "Type system" section, after the hatnote, to:
Extended content
|
---|
A data type is a set of allowable values and operations that can be performed on these values.[1] Each programming language's type system defines which data types exist, the type of an expression, and type equivalence and type compatibility function in the language.[2] According to type theory, a language is fully typed if the specification of every operation defines types of data to which the operation is applicable.[3] In contrast, an untyped language, such as most assembly languages, allows any operation to be performed on any data, generally sequences of bits of various lengths.[3] In practice, while few languages are fully typed, most offer a degree of typing.[3] Because different types (such as integers and floats) represent values differently, unexpected results will occur if one type is used when another is expected. Type checking will flag this error, usually at compile time (runtime type checking is more costly).[4] With strong typing, type errors can always be detected unless variables are explicitly cast to a different type. Weak typing occurs when languages allow implicit casting—for example, to enable operations between variables of different types without the programmer making an explicit type conversion. The more cases in which this type coercion is allowed, the fewer type errors can be detected.[5] Commonly supported typesEarly programming languages often supported only built-in, numeric types such as the integer (signed and unsigned) and floating point (to support operations on real numbers that are not integers). Most programming languages support multiple sizes of floats (often called float and double) and integers depending on the size and precision required by the programmer. Storing an integer in a type that is too small to represent it leads to integer overflow. The most common way of representing negative numbers with signed types is twos complement, although ones complement is also used. [6] Other common types include boolean—which is either true or false—and character—traditionally one byte, sufficient to represent all ASCII characters.[7] Arrays are a data type whose elements, in many languages, must consist of a single type of fixed length. Other languages define arrays as references to data stored elsewhere and support elements of varying types.[8] Depending on the programming language, sequences of multiple characters, called strings, may be supported as arrays of characters or their own primitive type.[9] Strings may be of fixed or variable length, which enables greater flexibility at the cost of increased storage space and more complexity.[10] Other data types that may be supported include lists,[11] associative (unordered) arrays accessed via keys,[12] records in which data is mapped to names in an ordered structure,[13] and tuples—similar to records but without names for data fields.[14] Pointers store memory addresses, typically referencing locations on the heap where other data is stored.[15] The simplest user-defined type is an ordinal type whose values can be mapped onto the set of positive integers.[16] Since the mid-1980s, most programming languages also support abstract data types, in which the representation of the data and operations are hidden from the user, who can only access an interface.[17] The benefits of data abstraction can include increased reliability, reduced complexity, less potential for name collision, and allowing the underlying data structure to be changed without the client needing to alter its code.[18] Static and dynamic typingIn static typing, all expressions have their types determined before a program executes, typically at compile-time.[3] Most widely used, statically typed programming languages require the types of variables to be specified explicitly. In some languages, types are implicit; one form of this is when the compiler can infer types based on context. The downside of implicit typing is the potential for errors to go undetected.[19] Complete type inference has traditionally been associated with functional languages such as Haskell and ML.[20] With dynamic typing, the type is not attached to the variable but only the value encoded in it. A single variable can be reused for a value of a different type. Although this provides more flexibility to the programmer, it is at the cost of lower reliability and less ability for the programming language to check for errors.[21] Some languages allow variables of a union type to which any type of value can be assigned, in an exception to their usual static typing rules.[22] References
|
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
- ^ 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)
- Delisted good articles
- Old requests for peer review
- C-Class level-4 vital articles
- Wikipedia level-4 vital articles in Technology
- C-Class vital articles in Technology
- B-Class articles with conflicting quality ratings
- B-Class Computing articles
- High-importance Computing articles
- All Computing articles
- B-Class Computer science articles
- Top-importance Computer science articles
- WikiProject Computer science articles
- Implemented requested edits
- Wikipedia conflict of interest edit requests