Talk:List of programming languages

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
WikiProject Computing (Rated List-class)
WikiProject iconThis article is within the scope of WikiProject Computing, a collaborative effort to improve the coverage of computers, computing, and information technology on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.
 List  This article has been rated as List-Class on the project's quality scale.
WikiProject Lists (Rated List-class)
WikiProject iconThis article is within the scope of WikiProject Lists, an attempt to structure and organize all list pages on Wikipedia. If you wish to help, please visit the project page, where you can join the project and/or contribute to the discussion.
 List  This article has been rated as List-Class on the project's quality scale.


I believe numpy should not be on this list considering that it is a library for python and cannot be used on its own. From, "NumPy is the fundamental package for scientific computing with Python". AlexBenishek (talk) 19:57, 23 March 2017 (UTC)

Numpy was removed. --Guy Macon (talk) 15:54, 17 June 2021 (UTC)

Torp - is this actually a programming language?[edit]

This does not seem to be a programming language at all. I'm a little bit hesitant to remove it from this list for some reason, but if it is to remain, its presence here needs to be justified and the link fixed. --Joel7687 (talk) 05:12, 7 March 2010 (UTC)

Surely any language listed here needs to be Turing complete? (CSS is not) Otherwise the page would get flooded with inappropriate content. Nick mesham (talk) 19:07, 10 May 2010 (UTC)


The article dedicated to 4D describes it as "a relational database management system and IDE". Should this really be considered a programming language? (talk) 09:29, 28 May 2010 (UTC)

I'd agree, this is primarily a database product; its language appears seems to be more of an SQL than a programming language. Unless somebody disagrees, I'll remove it in a day or three. Nibios (talk) 14:40, 6 June 2010 (UTC)

Assembly language(s)[edit]

I propose that we replace the list of individual assemblers with a generic assembly language entry. Otherwise the list needs to be expanded to include (among others) the Motorola 6800, Intel 8080/8085, Zilog Z80 (different assembly language from the 8080 despite binary compatibility), IBM 7090, Data General Nova/Eclipse, etc, etc. In other words, it would become a laundry list of processors. Nibios (talk) 14:54, 6 June 2010 (UTC)

In fact it would be worse than that, since assembly is not machine code, we should have the machine codes as well. Rich Farmbrough, 16:04, 10 February 2011 (UTC).

Make is a language[edit]

Make is a language. The article about make says "The make language is similar to declarative programming." So it should probably be added to the list of programming languages. —Preceding unsigned comment added by (talk) 18:19, 3 September 2010 (UTC)

YesY Done Mark Hurd (talk) 20:26, 18 June 2011 (UTC)

Arduino is not a language[edit]

Arduino is not a language. It's a development/prototyping platform that uses C or C++. —Preceding unsigned comment added by (talk) 22:36, 28 December 2010 (UTC)

Crystal Clear action edit remove.png Removed Mark Hurd (talk) 20:34, 18 June 2011 (UTC)

DEC- DAL (Digital Authoring Language)?[edit]

I am not sure if this qualifies as an "esoteric" language, but I worked with it in the early '80s. On this site:

I found the abstract below. Since it is a catalog, I believe there are no copyright issues.

Abstract: VAX DAL (Digital Authoring Language) is a powerful, easy to learn authoring language designed for developing computer-based instruction.

VAX DAL is a high level programming language designed expressly for computer-based instruction. Some major aspects of the language are: logging of lesson performance information, screen addressing, full integration of graphics, and special response judging capabilities, including a spelling algorithm.

VAX DAL has various response judging capabilities which can be incorporated into the lesson by the author. The author can:

- Control whether or not spelling, punctuation or capitalization must be exactly as specified in the response. 
- Indicate whether or not extra words can be entered in the response. 
- Specify that the words in the response can be in any order, as long as all of the words are present. 
- Define multiple right and wrong answers, each with a different logic path. 
- Specify that the response will be an expression, which will be evaluated during the response judging process. 

Any of these attributes can be altered on a question by question basis.

Digital's DAL was based on the Tutor language developed by the University Of Illinois for the PLATO Computer Aided Education system which ran on CDC systems. — Preceding unsigned comment added by (talk) 17:40, 16 June 2013 (UTC)

Weallcock (talk) 21:10, 30 March 2011 (UTC)

Is Speed II esoteric?[edit]

I designed applications in 1987-1990 for WANG VS using SPEED II. It was a 4GL which was also ported onto Unix. I am nor sure of the language's history after 1990. APPX retired their SPEED II product line in 2007 - see —Preceding unsigned comment added by (talk) 06:40, 7 April 2011 (UTC)

I would say that it's not esoteric, it's a real language (albeit probably not used in production any more, but who knows?). It should be added to this article. Ref is --Brian Fenton (talk) 19:21, 3 January 2021 (UTC)
I have added a stub article for SPEED II and linked to it from this article.--Brian Fenton (talk) 13:40, 4 January 2021 (UTC)

Programming languages versus markup languages[edit]

CSS is a programming language? And SQL no? Valugi (talk) 11:34, 1 September 2009 (UTC)

and what makes CSS better then HTML? CSS is a styling sheets. gute1 10:44, 4 October 2009 (UTC)

I agree: HTML, XML, XHTML, and CSS seem to be conspicuously absent from this list. I'm adding them. Kaiserkarl13 (talk) 02:16, 12 July 2011 (UTC)
This has come up a few times before. Most people feel that there's a significant difference between a programming language and a markup language. Things like HTML and CSS are definitely markup languages not programming languages. TeX occupies an interesting position: it's often used as if it were a markup language, but it's capable of doing computations and is Turing-complete, so it's also listed as a programming language. Jowa fan (talk) 03:47, 12 July 2011 (UTC)
Sand and Rocks are also Turning Complete.
I'm just saying. :) --Guy Macon (talk) 15:50, 17 June 2021 (UTC)

Algebraic modeling language[edit]

The first line of Algebraic modeling language calls them "high-level computer programming languages". As such, I'm undoing the undocumented deletion of AMPL by (talk). Mark Hurd (talk) 06:21, 16 April 2012 (UTC)

Bill Kinnersley's list[edit]

I would provide the list of Bill Kinnersley:

I hope that it helps. Szalakóta (talk) 18:32, 7 October 2012 (UTC)

Should the "Visual xxx" implementations, or implementations in general, be included in this list?[edit]

There are a number of language implementations included in this list, for example Microsoft Visual C++ (which is the page for the MS product) or Visual Fortran (which redirects to Fortran). Should those be included? Various other C/C++ compilers (GCC, LCC, LccWin, ICC, etc.), for example, do not have entries here. I think these should be removed, with the obvious exception of languages where the implementation is not really distinct from the language itself. Rwessel (talk) 03:20, 19 December 2012 (UTC)

Machine Code?[edit]

Is machine code actually a programming language? Most languages are compiled to binary, but does it actually constitute a language itself? I'd say not. Assembly language is listed also. — Preceding unsigned comment added by Prince of Strings (talkcontribs) 16:59, 14 March 2013 (UTC)

Pretty clearly it should. As Machine code says "Numerical machine code (i.e. not assembly code) may be regarded as the lowest-level representation of a compiled and/or assembled computer program or as a primitive and hardware-dependent programming language." And very many languages are not compiled to binary, but are interpreted instead, so that's clearly not a requirement. Rwessel (talk) 07:10, 15 March 2013 (UTC)
No, it's not a programming language, it's merely a machine encoding. We might as well list the alphabet since most programming use letters to make up their keywords. Msnicki (talk) 13:49, 8 May 2013 (UTC)
I would say that assembly and machine code should be considered a programming language. There are multiple dialects for assembly and machine code, mostly catering towards different processors, but this was the case with BASIC as well, often catering towards different purposes or target architectures/machines/purposes. Machine code doesn't require compilation, and it is interpreted directly by the machine, but in theory, it is possible to make an interpreter for any theoretical programming language that has ever existed on any computer that supports that language's computational complexity level (e.g. NP can run P, but P cannot run NP).
According to the article Programming Language, the first paragraph under the section Definitions reads:

A programming language is a notation for writing programs, which are specifications of a computation or algorithm. Some, but not all, authors restrict the term "programming language" to those languages that can express all possible algorithms.

The 1's and 0's are an obvious notation for a program under this definition, and although it might not be as human readable, it still is a programming language in this sense. Those 1's and 0's notate a series of instructions for that computer's processor, which is much like commands for a shell script or a series of methods executed in a program written in C. The difference is the level of abstraction, where C++ has a moderate level of abstraction and JavaScript a high level while machine code has next to none and assembly has just enough to not require the programmer to memorize all the 1's and 0's of several different target environments (only a common set of dialects for most common processors).
Also, machine code was the only way to program computers for decades until the advent of the first usable programming languages and was still the primary way until assembly language was introduced (and that was the primary way for everything until C).
This is why I believe machine code should be included. impinball (talk) 22:55, 17 March 2014 (UTC)

Non-procedural Languages?[edit]

My recent addition of Hartmann pipelines to the list was reverted with the statement that "Hartmann pipelines are not a programming language". I disagree. Pipelines is a perfect example of non-procedural, or functional, programing.
---dav4is (talk) 10:57, 8 May 2013 (UTC)

I reverted your addition with that edit summary. Hartmann pipelines are a specification language not a programming language. They're a variation on Unix pipelines that offer additional functionality. But they're not a whole language. There are no provisions for iteration, condition-testing, etc., that you'd expect in a whole language. Basically, it's just a feature that got added to IBM CMS. We might as well list regular Unix pipelines as a programming language distinct from the Unix shells that implement them and we don't do that, either. Msnicki (talk) 14:00, 8 May 2013 (UTC)

C-family languages[edit]

I know that there aren't nearly as many languages that are considered "C-family" as there are BASIC dialects, but should they merit their own distinct list? Examples of entries include C, C++, and Objective C. impinball (talk) 21:36, 17 March 2014 (UTC)

I'd say not. At the end of the day C and C++ are fairly radically different languages, whereas most Basic dialects tend to share more of a core. I suspect that such a list would end up somewhat like List of C-based programming languages, and while it's something of a judgment call, I'd say that the languages in that (fairly short, at least compared to the Basic list) list share far less than do most of the Basic dialects. In any event, the major reason for the separate Basic list is that there are just so darn many. Rwessel (talk) 03:35, 18 March 2014 (UTC)

Scratch by MIT is a huge coding language. It' needs to be added[edit]

This coding language is huge. It's founder Mitchel Resnick got to do a Ted Talk. There is world Scratch day with almost every users from almost every country in the world. There are users from every continent in the world except Antarctica. There is users from every state in the US. There is over 100+ events held on a single day every year called Scratch day. There was a Scratch day held in every state in America. A day were Scratchers meet together to host Scratch days. I held an event in my town. My event was the first Scratch day in my town. I live in Colorado and the nearest event was at a school in Aurora near the state capital Denver. The statistics on there site says that there is over 3 million users who have joined the site over the 6 years the site has existed. It also says there is over 6 million projects created with the coding language. These statistics are updated daily and are 100% correct because the coding language can only be used online or through the offline editor which captures data when you go online. Scratch has it's own wiki with tons of wiki contributors as well. Please add this coding language as Scratch under the S section in the alphabetical list. — Preceding unsigned comment added by Greshthegreat (talkcontribs) 16:20, 10 August 2014 (UTC)

Am I missing something? It's already there. Rwessel (talk) 17:00, 10 August 2014 (UTC)

SQL is a Programming Language[edit]

The SQL Wiki page even says "SQL is a special-purpose programming language designed for managing data held in a relational database management system (RDBMS)." We have other special-purpose languages like AWK listed, so why not SQL?

Derektom14 (talk) 03:20, 13 August 2014 (UTC)

I agree.
It has variables, flow control statements, user defined functions and so on. It's a programming language rather than GPSS. --Kissg (talk) 12:33, 15 September 2016 (UTC)
I agree. I added it. Enterprisey (talk!) 20:42, 3 January 2017 (UTC)

Delphi entry?[edit]

Either Delphi (which is rather an IDE?) should be referred as Object Pascal, either it should be removed if it considered to be a n IDE, not a Pascal dialect. — Preceding unsigned comment added by (talk) 07:06, 4 November 2014 (UTC)

There already is an entry for Object Pascal, which is distinct from the entry for Delphi (programming language). Borland/Embarcadero (and users) commonly use the term "Delphi" in either context, for both the IDE and for that particular dialect of Object Pascal. So it's a bit of a mess, but leaving both entries in place seems like the best choice. Rwessel (talk) 14:46, 4 November 2014 (UTC)

PCBoard Programming Language (aka PPL)[edit]

I think community standards prevent me from adding this language, as I was the principle author, but the PCBoard Programming Language (referenced at PCBoard) provided a means to modify / enhance the BBS. It was compiled to a tokenized / "byte code" format which was then interpreted by the runtime embedded in the BBS. CasaDeRobison (talk) 20:10, 19 February 2015 (UTC)

I think this is something of a borderline case. The general rule is that the languages need to be notable enough that they have their own article on Wikipedia, before being in this list, but we do have a number of exceptions where a language was a part of something else that has an article (see Game Maker Language, for example). But we're not listing every product that had some ad-hoc programming language in it. PPL appears to be a modest part of PCBoard, unlike GML which at least is a major part of GameMaker. So I'm not really convinced that this PPL (there's another PPL on the list already) is really appropriate to list here. Rwessel (talk) 21:13, 19 February 2015 (UTC)
Fair enough. I personally think it is worthy of inclusion based on various factors, but as I indicated originally, I'm not going to include it myself. That being said, 99 Bottles of Beer [1] can't be wrong about what PPL stands for. ;) CasaDeRobison (talk) 05:16, 20 February 2015 (UTC)
Why not present your arguments for inclusion? Doesn't mean we'll reach consensus to actually include it, but it certainly improves the odds over simply saying "I think it should be". Rwessel (talk) 05:34, 20 February 2015 (UTC)

Proposed edit filter for HTML[edit]

I propose that we make a new edit filter preventing people from adding "HTML" to this list. There have been a large number of edits over the past few years adding it (Dec, twice in August, three times in May, twice more in April, and once in January, and that's just 2018). It's just getting to be a waste of time at this point. Pinging a couple of people who've recently reverted HTML edits: Jpgordon and General Ization. Enterprisey (talk!) 04:27, 13 December 2018 (UTC)

Shrug. It's easy enough to revert, and doesn't actually do any harm in the meantime. 9 problematic edits in one year? Its what watchlists are for. --jpgordon𝄢𝄆 𝄐𝄇 06:32, 13 December 2018 (UTC)
Concur. General Ization Talk 13:06, 14 December 2018 (UTC)

Add either TinyMUSH or MUSHcode[edit]

See MUSH, "The programming language for MUSH, usually referred to as "MUSHcode" or "softcode" (to distinguish it from "hardcode" – the language in which the MUSH server itself is written) was developed by Larry Foard. TinyMUSH started life as a set of enhancements to the original TinyMUD code. "MUSHcode" is similar in syntax to Lisp." — Preceding unsigned comment added by 2601:600:8080:1C5C:6465:AFC8:AC93:D648 (talk) 04:44, 10 April 2019 (UTC)


the Náni link is to a page on the Norse god, not to the code language. — Preceding unsigned comment added by (talkcontribs) 15:51, 18 September 2020 (UTC)

I see no Náni link on this page, and Nani does not mention any Norse god. Could you give us a hint about what you are talking about? --Guy Macon (talk) 13:05, 22 September 2020 (UTC)


(Copied from my talk page)

Hi Guy, I saw you deleted DAML in the list of programming languages. I suppose I should write here in your watchlist section

DAML is not an API to JSON. It’s a smart contract language like solidity (since that one is already in the list). You can interact with a ledger that runs smart contracts using JSON but that has nothing to do with DAML as a language. Hope this explains the reasoning further. — Preceding unsigned comment added by Andreolf1 (talkcontribs) 08:26, 22 September 2020 (UTC)

So, is he right? Are smart contract languages computer languages, or are they more like markup languages?
The smart contract article lists:
Does the Bitcoin scripting language have a name?
Ethereum looks like a cryptocurrency platform (It has a scripting language. Does that scripting language have a name?)
Ripple looks like a payment protocol, not a computer language.
Solidity looks like a computer language to me.[2]
EOS.IO looks like a a blockchain protocol.
Tezos is... I am not quite sure what Tezos is.
--Guy Macon (talk) 12:53, 22 September 2020 (UTC)

Wow, above my pay grade. I am pretty sure that Ethereum doesnt have a language, and that Solidity is a language that is used on Ethereum. @Ladislav Mecir: and @N2e: care to comment? Jtbobwaysf (talk) 16:21, 23 September 2020 (UTC)

I will abstain from the question as to DAML specifically, as I am unfamiliar with that language. But I will answer Guy Macon's question more generally about smart contract languages. While not necessarily true for all smart contract languages, any smart contract language that runs on a Turing complete computing machines (as Ethereum does, and I believe EOS does; while the bitcoin scripting language is not, as the Bitcoin protocol and network is not Turing complete), would definitely be validly considered a programming language. Ethereum has had, and currently had, multiple programming languages used to write smart contracts that run on the Ethereum EVM; including Solidity, LLL (Low-level LISP-like language), Serpent (now dead, I believe), Vyper, and others I believe) Some of those languages are used to write smart contract on other smart contract-capable blockchains, but I don't have a cross-reference list that clarifies all that. Hope that helps. N2e (talk) 21:47, 25 September 2020 (UTC)
Sand and Rocks are also Turning Complete.
I'm just saying. :) --Guy Macon (talk) 15:52, 17 June 2021 (UTC)


The Tezos smart contract language is called Michelson. --Ysangkok (talk) 15:36, 17 October 2020 (UTC)

"Programming language" vs "markup language"[edit]

This is the wrong question to ask, because none of them are really designed for markup. Some of them are, indeed designed for non-turing completeness. A non-turing complete language can be embedded (as a DSL) in a turing complete language, by one definition of "language".

Some non-turing complete languages (some alternatives to Solidity) can compile to platforms that are turing-complete (like EVM).

There are also languages that compile to Bitcoin script (which is the name of the Bitcoin "smart contract" language). See BitML. --Ysangkok (talk) 15:42, 17 October 2020 (UTC)

Sand and Rocks are also Turning Complete.
I'm just saying. :) --Guy Macon (talk) 15:52, 17 June 2021 (UTC)


Can we add the Vale programming language on the list? --RedViking20200702 (talk) 21:23, 12 December 2020 (UTC)

This is a list of notable languages, not all languages, so it would need to meet minimum sourcing requirements for an article. - MrOllie (talk) 22:10, 12 December 2020 (UTC)

Semi-protected edit request on 1 January 2021[edit]

Needs link to MML page (Man Machine Language - switching language for routers, DACS frames, etc.) DemonBuddha (talk) 20:15, 1 January 2021 (UTC)

yellow tickY Partly done MML appears to be a specification language. It probably doesn't belong on this specific list, but I did add it to Specification language#Languages. TimSmit (talk) 03:11, 2 January 2021 (UTC)

Semi-protected edit request on 26 January 2021[edit]

Whitespace language not listed — Preceding unsigned comment added by Chrellrich (talkcontribs) 15:47, 26 January 2021 (UTC)

What part of "esoteric programming languages are not included" are you having trouble understanding? --Guy Macon (talk) 15:47, 17 June 2021 (UTC)

HTML being Turning Complete[edit]

I know the article says markup languages are not included, but should HTML+CSS receive some mention since it is now Turing complete?

Some sources: DukeOfGrammar (talk) 21:03, 6 April 2021 (UTC)

Forgot to mention these are old articles, but that shouldn’t matter because it is still about the latest iteration of HTML and CSS. DukeOfGrammar (talk) 21:04, 6 April 2021 (UTC)

Sand and Rocks being Turning Complete[edit]

I'm just saying. :) --Guy Macon (talk) 01:47, 7 April 2021 (UTC)

😅 Fair point. DukeOfGrammar (talk) 14:43, 7 April 2021 (UTC)

So, I was reading through previous discussions, and someone used the argument of TeX being Turing complete. If it is a markup language that is on here, why not HTML? DukeOfGrammar (talk) 19:01, 8 April 2021 (UTC)

I removed Tex and added the comment <!-- [[TeX]] is a markup language, not a programming language --> please let me know if you find any other markup languages listed.
Getting back to the "Turing complete" argument, is Rule 110 a programming language? I think not. --Guy Macon (talk) 15:30, 17 June 2021 (UTC)

Unix shells as programming languages[edit]

For years, the various Unix shells, each slightly different, have been included in the list of programming languages. Early this month, Guy Macon commented them out at [3] as "not a programming language". I reverted the change at [4] and Guy Macon has reverted it back at [5] and inserted Shell script as a language.

I do not know why Guy Macon does not believe Unix shells are programming languages. Most (all?) Unix shells include constructs for condition testing, iteration, expression evaluation, variables, arrays, and procedures -- the usual defining characteristics of a programming language -- and they are routinely used for performing complex activities using programs saved as scripts that may run for thousands of lines. I also do not understand why Guy Macon believes a shell script is a language since the term doesn't identify a particular shell language and only refers to the generic notion of saving a program written for a particular shell as a file.

To me, it seems very clear that the various Unix shells are definitely programming languages and that Shell script is not a language. I believe Guy Macon's changes should be reverted. I am requesting discussion. Msnicki (talk) 13:43, 17 June 2021 (UTC)

This page has had inline comments such as <!-- [[Bash (Unix shell)|bash]] not a programming language --> for years, so this is not by any means a new thing.
Is MS-DOS a programming language? It runs DOS Batch language but it isn't, itself, a programming language. Is the text-based CP/M user interface a programming language? --Guy Macon (talk) 13:57, 17 June 2021 (UTC)
No, MS-DOS is not a programming language. It was the name of a very simple operating system that included a simple file system and application programming interface, nicely described in DOS API, packaged and sold as a product that included a number of very simple applications, including COMMAND.COM, which implemented a simple command language. Our article on COMMAND.COM correctly describes it as "a DOS program. Programs launched from COMMAND.COM are DOS programs that use the DOS API to communicate with the disk operating system." I never used CP/M but my expectation is that its command processor was also written as an application that used an underlying CP/M API to execute commands. I think you may be confused about the difference between an operating system and applications that run on top of an operating system. Shells and command processors are applications that run on top of an OS and they implement programming languages with language constructs suited to interactive use and for scripting. They are commonly distributed with an operating system but they are not part of the OS. They run as applications. Msnicki (talk) 16:31, 17 June 2021 (UTC)
(edit conflict) but too lazy to reframe the text now that Guy ahs actually responded My guess is that Guy Macon's argument is that calling any particular shell a programming language, rather than shell script, is like calling "javac.exe" a programming language rather than the Java language. The argument being that any individual shell is the interpreter of a language, not the language itself; while some of the specifics of the language you use with each shell is slightly different, they are all minor variations of a single language--shell scripting--rather than languages in their own right, and either way, it's "shell script with csh/bash/etc. flavor", not separate languages called "csh", "bash", etc. FWIW, if that's Guy's position, I'd tend to agree; I think it makes more sense to include shell scripting but not each individual shell, perhaps in a similar way to the note at the top of the page that indicates we don't list each dialect of BASIC separately. Writ Keeper  14:00, 17 June 2021 (UTC)
Yes, that is essentially what I am saying. A very interesting edge case is the Commodore 64 operating system. For those to young to remember it (get off my lawn, you damn kids!) you can run it in a browser here:[6][7][8] It drops you right into BASIC (with a few extensions to handle loading and storing to cassette or floppy) and if you make a mistake it returns the standard BASIC "Syntax Error" message. The original IBM PC Cassette BASIC (for IBM PCs with no hard drive or floppy, just a cassette tape drive) was similar, but with no floppy or hard drive support. We get away with not listing either because of our "don't list every BASIC variant" decision, but if we hadn't decided that would they be considered operating systems or programming languages? In the case of Cassette BASIC there is no MS-DOS because there is no floppy to load it from. In the case of the C64 you could load operating systems such as GEOS from BASIC. But then again, so can the BIOS on my PC. --Guy Macon (talk) 16:00, 17 June 2021 (UTC)
@Guy Macon:, I'm asking why you don't think Unix shells are programming languages and I don't think you've addressed that. Instead, you seem to be offering whataboutism, first with MS-DOS and CP/M, now with this. The claim that a Commodore 64 was sold as a machine that could only run BASIC does not, for me, blur the question of what we commonly accept as the difference in all modern operating systems between the OS API and the applications that run on top of the OS. Without seeing the code, it seems very likely that whoever wrote the Commodore 64 system was aware of this classical structuring and probably wrote it as two parts, a minimal OS and the BASIC language implementation running on top of it. As you point out, BASIC is already included in our list and there is an existing consensus that we will not list individual variants of BASIC; I'm fine with that, but if you think the Commodore 64 BASIC needs a separate mention, you're welcome to make the case. Either way, I don't see how this explains why you don't think the Unix shells are programming languages. Are there capabilities that you think all PLs must have to be genuine PL and which they lack? I'm trying to understand your objection. Msnicki (talk) 16:31, 17 June 2021 (UTC)
@Writ Keeper:, yes, each shell is an implementation, but each implements a particular language and for each shell, the language is robust and well-defined. And the languages are not just "slightly" different. For example, C shell language constructs are very different from those provided by the Bourne shell. The name of the shell is understood to mean the language you get with that shell, as explained in the articles we have on each shell. Msnicki (talk) 16:31, 17 June 2021 (UTC)
  • COMMENT*: What does Steve Bourne say? Beginning of Chapter 4 of "The Unix System" (1983)... "The shell is both a programming language and a command language and is often referred to as the command interpreter of the UNIX system." That ought to be a clincher, but anyway we should ask questions as to whether the reader is helped, not whether a lawyer might make money off it. The characteristics of what the shell does include things which characterise languages, like parameters, control structures; to say it is "not a programming language" only obfuscates. Imaginatorium (talk) 18:23, 17 June 2021 (UTC)
    I don't think that's either Guy's or my opinion, though. We're not saying that these aren't programming languages at all, we're saying that the different shells aren't separate programming languages from each other, such that they all have to be listed individually. I think everyone is in agreement that some form of shell scripting should be included in this list; it's a question of a single link to shell script, or many links to each individual shell. Writ Keeper  18:31, 17 June 2021 (UTC)
    Please note that I added shell script to the list of programming languages, so clearly I believe that shell script is a programming language. What I do not believe is that a shell and a shell script are the same thing. I also do not believe that Job Control Language is the same thing as z/OS. --Guy Macon (talk) 18:44, 17 June 2021 (UTC)
Even though most (all?) Unix shells fall into two general categories of following in the style of either the original Bourne or the original C shell, many (most?) were written completely independently and provide very different sets of language features. For example, the original Bourne and C shells do not provide procedures or functions but KornShell and Hamilton C shell do, but they do it differently. That's a pretty big language difference. I think it warrants listing all the Unix shells as we've been doing. We're not running out of pixels. Finally, there is no such thing as the one and only script language. A script is a file containing a program written in any interpretative language of your choice, whether that be sh, csh, or Python, or the text stored in the file. A script is not a programming language. It contains a program written in a programming language. Msnicki (talk) 18:52, 17 June 2021 (UTC)
Yes, different shells define different programming languages (which are all shell script languages), just like Common Lisp and Scheme are different programming languages, even though they provide similar features. Strictly speaking, different versions are actually different programming languages, even though they are generally identified (the word "dialect" is sometimes used to differentiate them, e.g. by GCC, and sometimes for very similar languages, see Lisp). — Vincent Lefèvre (talk) 20:00, 17 June 2021 (UTC)
@Guy Macon:, @Writ Keeper: It'd have been nice to get more discussion and I'm happy to let it continue in hopes we get some more. But a quick temperature check to see where we are might be helpful. Based on the discussion so far, do you accept the argument that Unix shells are programming and scripting languages, that they're all slightly different, and that shell script is not a programming language? Or do you still object? Basically, I'm asking if you concede you're unlikely to get consensus for Guy's changes and if I may revert them. If you do object, it'd helpful if you could state your objections as regards Unix shells and shell scripts specifically, not what about MS-DOS, CP/M, Commodore 64s, JCL, z/OS or other things which are neither Unix shells nor shell scripts. Msnicki (talk) 14:47, 19 June 2021 (UTC)
I do not find your arguments to be persuasive. I strongly oppose the claim that Unix shells ARE (as in "the exact same thing as") programming or scripting languages. They aren't languages at all. They are command line interfaces that include scripting. This morning I used Bash to start an instance of Apache and to run KiCAD. According to your logic, that means Unix shells are web servers and Unix shells are CAD systems. --Guy Macon (talk) 18:54, 19 June 2021 (UTC)
No, none of that is "by my logic". I think you are confused on what shells do and how they work. Yes, the whole point of a command processing or shell language is so you can start other applications easily and control what happens with them. But starting Apache from bash does turn bash into Apache. Instead, you get an Apache child process and you still have the bash parent process. Yes, all the Unix shells include features for interactive use but ultimately, it's still a programming language you have to type, a language that's been designed to be useful both interactively with short programs of a few lines typed right at the command line and for creating executable script files of perhaps thousands of lines. If a script file is marked executable, Linux picks the appropriate shell or interpreter based on the #! header in the first line. Msnicki (talk) 19:27, 19 June 2021 (UTC)
Also, you didn't respond to @Imaginatorium:'s observation that Steve Bourne claims a shell is indeed a programming language. As the author of the Bourne shell, wouldn't he be a pretty authoritative and reliable source on this point? Never mind that you don't find me persuasive, you don't find Steve Bourne persuasive either? Msnicki (talk) 20:21, 19 June 2021 (UTC)
No. I don't. Stephen R. Bourne is a computer scientist, not a linguist. And he wrote that in 1983 -- almost 40 years ago. Language evolves. And computer scientists very commonly use the term "is" when they mean something else such as "is a subset of", "is an example of", "is very similar to", "has the some of the aspects of" or "can be thought of as". That's why you see so many computer scientists and programmers "==" in the middle of an English sentence to indicate that two things with different names are the same thing. Human languages, unlike computer languages, are often imprecise and ambiguous. --Guy Macon (talk) 01:08, 20 June 2021 (UTC)
This is a list of programming languages, it is a not list of human languages. Linguists are not experts in programming languages. The experts in programming languages are computer scientists. I'm surprised by your confusion on this point. Also, it is not helpful to debate the meaning of the word "is" or how it's used. Msnicki (talk) 02:31, 20 June 2021 (UTC)
You seriously think that "a shell is indeed a programming language" is statement in a programming language and not a statement in the English language (the area where linguists are exerts and computer scientist are not)? You may think "it is not helpful to debate the meaning of the word 'is' or how it's used", but that's just because you are misusing it.
I am done responding to you. Feel free to try to get a consensus that Unix shells are programming languages. (If anyone reading this thinks they are, now would be a good time to speak up). --Guy Macon (talk) 04:58, 20 June 2021 (UTC)
Since you're the one seeking a change, it's YOU who needs consensus support. And it's clear you don't have it. Only one other editor half-heartedly supported you; everyone else disagreed. (@Writ Keeper: do you still support Guy's changes?) I was willing to listen to new discussion but if you've declared it over, you've lost and your changes need to be reverted. Msnicki (talk) 06:11, 20 June 2021 (UTC)
Honestly, the two of you are talking completely past each other. Guy, yes, I agree that technically "csh", "bash", etc. refer to actual programs that function as interpreters, not overall language specifications, which is why you're saying they're not programming languages. But I think you will be better served by assuming that the terms "csh", "bash", etc. are metonyms that refer to the particular scripting language as used in those interpreters, rather than insisting it refers to only the interpreter itself. AFAIK there aren't any more specific terms that refer to strictly the scripting languages themselves (apart from maybe "bash scripting" in the specific case of bash). Msnicki, it sure feels like you're choosing not to see or engage with Guy's analogies (which is what they are), instead preferring to tell him that he's "confused". That does not a healthy discussion make. You continue to insist that Guy thinks that all shell scripting languages are not programming languages, when that has never been his point. The Bourne quote is irrelevant, because again, the question is not "do the various dialects of shell scripts count as programming languages?" That is the question the Bourne quote is answering, but none of us have ever been in disagreement about that. And given that we're here to write an encyclopedia, not an API spec, the human language we use to describe the programming languages is at least as important as the programming language itself. not to imply that human language isn't also important in API specs; I've learned that the hard way.
The actual question, again, is: are the various dialects of shell scripting unique enough to warrant inclusion separately from each other? Ultimately, there is no objectively correct answer to that question; it's a matter of editorial judgment. Precedent points in both ways: we don't include all the different variations of BASIC, which I suspect are fundamentally as disparate as the different shells are. But we do include things like the various flavors of LISP or versions of ALGOL. FWIW, I stand by my instinct that there are too many different shells that are too similar to each other to list them all I would rather we include a single link to a superset of the different shells, which could be shell scripting or perhaps Unix shell (the latter of which is already in the list). Frankly this list is already too long as it is.
Really, the more I think about it, the less I understand the use of this list as it currently exists. I mean, I get why we feel it's necessary to have one; it would I guess be weird if we didn't have a list of programming languages somewhere. But I don't really know what function it serves for a reader; there is a huge glut of information in the list and not nearly enough context to make sense of any of it. It might be useful if it were organized in a more interesting order than alphabetical; if we instead grouped programming languages by, for example, procedural vs. object-oriented vs. functional, I might see a clearer purpose for this list. But as it is, I don't really see a use for it, so arguing about whether to include individual shells seems to be missing the point. It feels like (analogy time!) we've torn all the pages out of a copy of Dune, tacked them all up onto a single billboard, and are now debating whether we should tack up the pages of the appendices, as well. One side is saying "these are part of the book, so they should go up!", the other is saying "no, that would be too much information!", but either way, the book has been rendered, for all practical purposes, unreadable.
TL;DR: I'm not really convinced this is a useful or interesting discussion any more; I think the list has (literally) bigger problems than how we handle UNIX shells. Writ Keeper  07:34, 20 June 2021 (UTC)
Okay, point taken re: comments about confusion. I've struck those sentences and apologize. Msnicki (talk) 13:56, 20 June 2021 (UTC)
List of programming languages by type § Command line interface languages and List of programming languages by type § Scripting languages
Command-line interface language (Command-line program) and Scripting language – what's the difference between these types? They both include Unix shells. – wbm1058 (talk) 23:23, 20 June 2021 (UTC)
See List of command-line interpreters. – wbm1058 (talk) 23:26, 20 June 2021 (UTC)
Unix shells are both command line interface and scripting languages. The difference is the use case and which features of a shell might be most important for that use case. For the command line interface use case, features like history, command line editing and filename and command completion are very helpful. But powerful programming constructs are somewhat less important because most user only type very small, perhaps 3 or 4 line "programs" interactively at the command line. For the scripting use case, interactive features are mostly unimportant but the programming constructs for iteration, condition-testing, expression evaluation, procedures, arrays, etc., are more important because users write more complicated programs as scripts. Msnicki (talk) 23:35, 20 June 2021 (UTC)