Talk:List of programming languages by type

Liszt Language
I just read an article on the Liszt language and thought maybe it should be added? I couldn't find anything on Wikipedia about it. http://liszt.stanford.edu/ http://liszt.stanford.edu/spec.pdf The language is designed for use with super computers, and programming across large numbers of CPUs. They keep saying "Liszt Language" a lot, and I suppose it is an offshoot from Scala. Or is it really just a compiler bolted on top of Scala? I don't know. Zarkme (talk) 00:40, 29 June 2012 (UTC)

i a good man — Preceding unsigned comment added by 50.164.130.160 (talk) 14:37, 17 May 2016 (UTC)

C# Editorialized as "a version of C" or "an attempt at C"
In my opinion, C# listed in these various categories should not have an editorialization in parenthesis afterwards. These editorializations are opinionated, inprecise, and entirely unnecessary (if one wanted to know more about C#, they would simply read the entry for C#).

I'm new here, so instead of just taking a whack at it, I'll check what the more experienced here have to say.

Samrolken 10:29, 18 Jan 2004 (UTC)
 * Most certainly, C# is not "C for .NET project", and there is no ".NET project" in this context &mdash; correct me, but I have never heard these words in this combination referring to anything but a project file in MS Visual Studio and #Develop. C# is much much closer to Java than to C, and arrogantly strict in typisation &mdash; in the biased eye of a C++ hacker, indeed :) &mdash; to remind of Pascal and its Delphian variety, especially given that both the latter and C# were designed by the same team.
 * -kkm 21:49, 31 Jan 2005 (UTC)

Does Ruby belongs to Curly Brace family?
Isn't Ruby is also a Curly brace programming language? I am a layman, but I want to help. -- cow_2001 12:21, 4 Sep 2004 (UTC)
 * Ruby can use braces to delimit a code block that is to be provided to a method. In other words, they are used for a very specific feature, but not for method definitions or for/while/etc. blocks. Ruby programs frequently use braces, but not in the sheer numbers seen in C. I'd say it doesn't belong in the family. --Yath 04:11, 5 Sep 2004 (UTC)

Compared to python it belongs in the curly brace family. Perhaps it should be added with a caveat?
 * I don't think Ruby qualifies. To delimit syntactical blocks, it doesn't use curly brackets, but keywords ( / / / /...,  ).  The {|params| body} syntax is roughly just a shortcut for  ... :  it specifically declares an anonymous function, instead of acting as a generic syntactical grouping, like other curly bracket programming languages.
 * In other words, the point of talking about "curly bracket programming languages" is to contrast them against languages which use other approaches of delimiting syntactical blocks, such as keywords (Ruby) and whitespace/indentation (Python).
 * --Piet Delport 16:46, 24 February 2006 (UTC)

Perl is Interpreted language
I think Perl scripts are more interpreted then compiled. --Michal Jurosz 10:06, 6 Feb 2005 (UTC)

I think you're right.

Hmm... JIT compiled is still compiled. Strange conundrum -- perl itself jumps through hoops to simulate an interpreter while compiling and caching code. But it is possible to pre-compile perl into binary form to make it load and execute quicker. zowie 17:14, 13 December 2005 (UTC)


 * Perl is compiled into a kind of intermediate parse tree, then executed by dynamically interpreting that intermediate form. All syntactical checking occurs during the parsing phase prior to execution, so arguably it's a compiled language. On the other hand, it's a bit more dynamic/interpretive than, say, Java, in that it does not produce an executable binary or bytecode format. -Loadmaster 23:06, 9 June 2006 (UTC)

Python is both Interpreted and Compiled
Python compiles bytecode - very similar to Java - when it runs. Furthermore, the bytecode is deposited in a .pyc file alongside the source .py file. If detected at runtime, this compiled bytecode is used instead - making second and subsequent initialization loads much faster.

Also, my understanding is that both Perl and Python have utilities for generating binary executables (basically the virtual machine is encoded along with the bytecode in a binary). Does anyone have sufficient experience using these facilities to comment on them here?
 * Neither of those (bytecode complilation and interpreter bundling) qualify as true compilation, as its generally understood. However, PyPy (the self-hosting Python implementation) can currently compile an informal subset of Python (known as RPython) into native code: enough so that it can compile itself.  That's still not enough to declare Python a compilable language, yet, but at the rate things are going, that day is probably not too far off.   --Piet Delport 17:03, 24 February 2006 (UTC)

I like to point out that for most uses of Python such as CGI, it is interpreted. Also, I'm not sure I'd include bytecode as a compiled language either, because the intermediate file also has to be interpreted. I'm of the opinion that Python should be removed from the Compiled Language list until someone writes a suitable compiler for the language. Which, as pointed out by Piet, probably ain't too far off. I am not going to remove it myself, I'll leave that to someone else (or nobody). I just wanted to state my opinion. 75.88.30.191 (talk) 14:58, 28 November 2009 (UTC)

stack-based
Can we add a stack-based category? Stack_%28computing%29 --213.48.248.121 21:28, 4 May 2005 (UTC)

assembly languages
I'm not sure on this so can anyone shed any more light? -> There's only 2 assembly languages listed here - What about the different assembly languages for each processor? e.g. x86 assembler, motorola assembler etc... I don't know enough on assembly languages specifically to really makes changes to this section.

Pascal supports generators?
Pascal is listed under Iterative languages ("Languages built around or offering generators"), but cursory research seems to indicate the opposite. Can someone more familiar with Pascal confirm this? --Piet Delport 13:29, 7 November 2005 (UTC)
 * Lacking evidence, i've removed Pascal from the list. --Piet Delport 11:26, 2 January 2006 (UTC)

Portability Categories
Could someone put lists for "Write once, run anywhere" and "Write once, compile anywhere". That's a crucial choice when choosing a language imo... --MatthewKarlsen 14:28, 27 December 2005 (UTC)
 * The problem is that it's non-trivial to find any useful definition of those terms, theoretical or practical. What (and which) percentage of the features of the language (and its core libraries) need to work across what percentage of which kinds of platforms, before it counts as "portable"?  How fast does it need to be to qualify? (keeping in mind that you can trivially make anything 100% "portable" by running it on top of a sufficiently low-level (but slow) emulator, or compatibility library)  --Piet Delport 12:25, 2 January 2006 (UTC)

I would answer that some are clearly trivial to identify --- e.g. java, python, perl for 'write once, run anywhere'; on the other hand 'write once, compile anywhere' is dependent upon having an assembly language, and then a compiler built for a particular cpu architecture - trivial if you stick to basic functionality that all CPUs are likely to have, but not trivial if you happen to use functionality specific to particular CPU's instruction set (c and c++ come to mind as languages that allow low level interaction with the cpu - but again 'it depends upon how you use the tool'). Finally, what do you consider 'compilation'? Does Java's, Python's or Perl's bytecode compilation count for this category? It is can be problematic - nonetheless useful in practice.
 * You might be in for a surprise if you think Java code can run "anywhere". :)
 * Just like you can't run C code on some target platform without writing/porting a working compiler to it, you can't run Java/Python/Perl code on some target platform without first writing/porting a working VM to it (which, in the case of JVMs, can be an extremely difficult undertaking: how many platforms have complete and conformant JVMs by now?).
 * Even assuming the availability of compilers/VMs on all target platforms, the "portability" of your program really doesn't depend on what language it's written in, but on how well you wrote it. It's just as easy to write unportable Java code as it is to write unportable C code:  a language can only support portability, not enforce it.  (The situation is further complicated by the fact that even the most unportable programs (regardless of the language) can be made portable again through appropriate compatibility layers (like Wine for Windows code), or dynamic recompilation/binary translation software.)
 * The situation with compilation (WOCA) versus interpretation (WORA) is not much different. It can become hard to find a meaningful distinction:
 * "compiled" languages can be interpreted (like CINT for C/C++)
 * "interpreted" languages can be compiled (like GCJ for Java, and PyPy for Python])
 * in languages like Lisp, Scheme, and Haskell, the concept of "interpretation" or "compilation" as two distinct processes begins to disapppear altogether: instead, depending on your implementation, you can get as much compilation, or interpretation, as you ask for at any given time
 * --Piet Delport 19:15, 24 February 2006 (UTC)

Point of this list?
Since this is a Categorical list of programming languages, wouldn't it be easier (and more maintainable in the long term) to simply create a bunch of Wikipedia categories for each category on the list, and add the listed languages to each of these categories? Then add each of the categories to Category:Programming languages, and the need for this list pretty much vanishes. Plus new additions to the "list" are handled locally. --Allan McInnes (talk) 16:44, 11 April 2006 (UTC)
 * It took a while to find the guidelines on this question: Categories, lists, and series boxes and also Lists (stand-alone lists). These might be helpful although I didn't get much out of them yet. Basicly, the first one says that there can be both a list and a category, and the second one mentions lists of lists. This page is so long it should be broken into several pages anyway. Category:Programming languages looks like people have been working on it but that it has been of too much work. Anyway, some of the lists already have a respective category that of course should somehow correspond to the info on this page. --TuukkaH 17:43, 11 April 2006 (UTC)
 * Well, I'm less interested in policy than in maintainability. This list is undoubtedly already out of date, and only likely to become more so as time goes on (I think it's also notable that there aren't that many links to this list to begin with). I suppose there might be something to the point about annotations in Categories, lists, and series boxes. OTOH, there aren't that many annotations in the list (some parts more densely annotated than others). I suppose that one solution might be to break the list into separate articles, or more likely to simply merge the lists into articles that deal with the language category in question (for example, concurrent computing already contains an extensive list of concurrent programming languages &mdash; the only reason that this list has as many entries is because I updated it based on the concurrent computing list a month or so ago). --Allan McInnes (talk) 18:31, 11 April 2006 (UTC)
 * Right, I missed the maintainability issue. If any of the lists are retained, I suggest we prepend them by a link to the respective category, and only include significant languages in the lists itself. --TuukkaH 19:20, 11 April 2006 (UTC)
 * I think that sounds like a good suggestion. --Allan McInnes (talk) 20:04, 11 April 2006 (UTC)
 * I agree with Allan McInnes, just use categories and talk about them in articles about the language types. —Quarl (talk) 2006-04-12 09:25Z 
 * Regarding splitting the list into multiple lists, it seems to me like there are multiple orthogonal axes of categorisation, and maybe we could have one page for each axis. Many of the paradigms are based on code management (ie. imperative, declarative, and any of their descendents, as per Programming paradigm).  Some paradigms are based around aesthetics (ie. curly-brace languages, and arguably the Wirth ones belong here as BEGIN...END languages).  Some seem to be based around the data structures handled (Array-based).  Some of these are really sub-paradigms (eg. both Agent-oriented and Aspect-oriented are sub-paradigms of OOP).  Then we'd presumably also need an "Other" category.  I think if we break it into code management/data management/aesthetic, that'll give us a good start.  And maybe also "programming languages by memory management" needs its own list.  HTH, TimNelson (talk) 07:48, 11 May 2024 (UTC)
 * To clarify, I think the "Programming language lists" box at the top of the page should have:
 * By code management type (Imperative, Declarative, etc)
 * By data management type (Array, Data-oriented, etc)
 * By aesthetic type (Curly-brace, Wirth, etc)
 * By Garbage-management type (see existing section)
 * By other type
 * At the top of each page, we'd need to clarify what we're excluding, otherwise the pages will end up like this one.
 * HTH TimNelson (talk) 23:09, 12 May 2024 (UTC)
 * Well... You are focused on splitting up this HUGE page into smaller but still big pages. And, you are proposing adding articles for categories you/we are inventing. In general, humans are good at categorizing things, but everyone does it differently. Your groupings may make little sense to others. And IMO WP should not invent terminology by giving it an article. Organization is information. ... Thing is, I think there is very little valuable WP information in the article. My solution is to delete it after copying out anything that is actually useful. ... Although most of the groups already have an article, some that don't might be worthy of an article (and for the concept behind the group; not just xxx languages); And, if people thinks it's valuable to list all the languages of a grouping, then move the list to grouping's page. Stevebroshar (talk) 23:29, 12 May 2024 (UTC)
 * I've got no problem with that idea as long as we can have a page called "List of programming paradigms", preferably by type. That way we could leave out the languages, and link to all the paradigms.  TimNelson (talk) 08:10, 13 May 2024 (UTC)
 * I think all list articles are low value and should be avoided. I think list articles allow a loophole in the apparent WP goal of organizing based on well-established concepts; notable terms. List of programming paradigms is not a term in the real world. We would be inventing it. Organization is information ... Focusing on the positive, I think solid, topical articles are great, and in some cases listing sub-categories in an article is valuable. In this case, there already is Programming paradigm and it lists sub-categories. If any sub-categories are missing, then that article is deficient and should be enhanced. I see no value in a new article to list paradigms if there's an article about paradigms. Stevebroshar (talk) 12:09, 13 May 2024 (UTC)
 * Regarding your comment that '"List of programming paradigms" is not a term in the real world', it's still the case that "programming paradigm" is a term in the real world, and this is a "List of..." type article. Having said that, I think a good "List of..." article should look more like Comparison of multi-paradigm programming languages (because its so tabular).  Yes, I'm aware that Comparison of programming paradigms exists, but it has fewer paradigms listed than this page does.  TimNelson (talk) 21:49, 13 May 2024 (UTC)
 * In fact, I think the good option would be:
 * Replace the body of each section in this article with links to a) the main article, and b) the relevant category
 * Once that's completely done, merge this article into Comparison of Programming Paradigms
 * TimNelson (talk) 22:04, 13 May 2024 (UTC)
 * @Allan McInnes Genius idea. List by tagging. Tag each language page and let a tool (WP engine) create the list. That's cook'n with gas. Stevebroshar (talk) 11:43, 29 April 2024 (UTC)

Cleanup
This list could use a lot of cleanup, both internally and externally. Many of the lists contained correspond to categories, but they aren't listed; I've started to add a see also link where possible to rectify this. Often, these lists contain languages that are not categorized as being in the list; I've started to fix that, making sure that the languages are either in that cat or in an appropriate descendent cat. The categories contain languages that aren't listed on this page as well, but I figure that having the category links will make that tolerable enough; it would of course be better to update the list with everything listed in the categories, but I'm not doing that myself.

Not all sections have a corresponding category. I've already added one new category that seemed reasonable, but others I wasn't sure of. I figure that once I've finished doing what makes sense to me, I'll probably start posting questions about the stuff that I'm less sure what to do with&mdash;unless someone else deals with them first.

There was some discussion as to whether this list should be kept. If it ever is deleted, this kind of cleanup should be finished before the deletion.

If anyone has any comments, concerns, or suggestions on how to continue this effort, please share. – Zawersh 00:04, 3 June 2006 (UTC)
 * Indeed. The Assembly Languages section, for example, is almost an exact copy of the List of assemblers entry. Perhaps rather than listing a bunch of languages in each category, this entire page should simply list the categories, and within each category a link to the more specific category (which itself contains the canonical list of implementations) will suffice. -Loadmaster 23:20, 9 June 2006 (UTC)

Simula as the first object oriented language
It seems to me that the concept of Object Oriented Programming was introduced by Alan Kay and first implemented in his Smalltalk language. Alan Kay referred to Simula as on the major of the sources of inspiration. Thus Simula is not the first object-oriented language, but a direct precursor of Object Oriented Programming. —Preceding unsigned comment added by P99am (talk • contribs) 22:55, 23 November 2008 (UTC)

I am not a Simula expert, but to the best of my understanding, Simula67 contains the characteristics of what we today call object oriented programming languages (although Kay first used the term). Jack Waugh (talk) 16:02, 23 September 2011 (UTC)

Proposal - obsolete languages
There are many languages that are no longer in use, often because the machines they ran on no longer exist.

The example I came looking for is PROSPER, a financial modelling langauge used in the 1970's and 80's on ICL 1900 range machines.

I see two issues with adding such langauges to this page. Firstly, do they being here? Secondly, the lack of sources or references. Andrew.Blucher (talk) 04:42, 12 January 2010 (UTC)

PHP Interprited Language
Shouldn't PHP go under the interprited languages heading too. It can be compiled but rarely is. --193.113.135.87 (talk) 12:02, 4 August 2010 (UTC)

Curly
The word curly doesn't appear to this article, but lots of redirects related to curly bracket languages redirect here. Mathiastck (talk) 16:03, 21 October 2010 (UTC)

''Seconded. This is really unhelpful. Was there an article Curly bracket programming language at some point? If so, could we either have it back, or have a suitable distillation of its contents included here? In particular (and this would require a separate article), it would be interesting to have something about the history of this combination of syntactic elements; what was the first language to use it? What was the first major language to use it? I know it's in C; did C get it from BCPL? Where did BCPL get it from?'' -- Tom Anderson 2010-12-51 —Preceding unsigned comment added by 109.231.204.82 (talk) 18:26, 15 December 2010 (UTC)


 * The item was removed in May 2009, in this edit. Anyone who feels strongly about this can undo the edit (but I don't and won't). I agree that dangling redirects is not a good thing. Marc van Leeuwen (talk) 14:35, 3 January 2011 (UTC)
 * Thanks. I do and I did. Even though I agree (with the description in the removing edit) it's not really a "scientific" classification of programming languages, "curly bracket languages" is still very notable, it's a well-known and oft-used phrase in describing programming languages. Plus, I came to this article (via the dangling link) looking for exactly this list of languages. —Preceding unsigned comment added by 94.212.39.49 (talk) 14:21, 22 February 2011 (UTC)

Line-number or GOTO-oriented languages
What about a category for languages (at least originally) based on line numbers or labels and GOTO statements, like BASIC, FORTRAN, or COBOL? These languages (especially in earlier versions) used several variations of GOTO and other statements that use line numbers as their primary form of flow control. These include arithmetic IF, computed GOTO, ALTER, GOSUB, PERFORM, the ability to use an expression as the target of a GOTO statement, THEN or ELSE taking a line number as their target, and the ability to go to any line in the program. Unlike C or Perl where goto is only for convenience, like breaking out of nested loops/switch statements or jumping to a common cleanup routine, it's almost impossible to write a useful program in these languages without using a line number or label. Since there's a "curly-bracket languages" list, there should also be a list for these types of languages. 76.205.72.76 (talk) 22:16, 27 June 2011 (UTC)

Logic Languages that are Purely Declarative
A useful subcategorization of logic-based languages would between those that are purely declarative and the others. Jack Waugh (talk) 16:10, 23 September 2011 (UTC)

What about Agent-based programming languages?
Add Category:Agent-based programming languages? 99.190.87.151 (talk) 04:02, 28 January 2012 (UTC)

List Merge Needed
There exists another list of interpreted languages in List of programming languages by type. New items in that section should be brought over to the corresponding section in this page (along with any notes), then the section should be deleted and replaced with the link here in either the end of the intro or the "see also" section. There are complications, however. This page does not include sub-bullets to indicate the ancestry of languages. Should we change this page or just sort out the page? Furthermore, the list is not alphabetical, which will be a pain. I have posted this note on the other page as well. AllenZh (talk) 01:12, 18 March 2012 (UTC)

non-curly bracket languages
It would be meaningful to list languages that are *not* curly-bracket based, like Haskell and Python. I have two proposed names to my avail, "Non-curly bracket languages" or Off-side_rule languages. Latter has a list that should be incorporated into this.article.

C++
C++ is in the assembly laguages category, but as far as I know it is not an assembly language. Shouldn't it be deleted? Zolija (talk) 14:36, 24 January 2013 (UTC)
 * Done. You are correct.  C++ is not an assembly language.  Msnicki (talk) 17:05, 24 January 2013 (UTC)
 * I recall a quote that goes something like this: C++ has all the power of assembly language ... with all the limitations of assembly language. :) Stevebroshar (talk) 11:38, 29 April 2024 (UTC)

ActionScript 2 class-based?
So I know AS2 has support for classes, but I don't know whether that makes it class-based or not, or if classes need to be a prominent part of the language for it to qualify (I've never programmed in AS2, so I don't know how classes are often used in AS2 programming). 129.21.34.68 (talk) 12:59, 1 April 2013 (UTC)

Redlinked languages and WP:WTAF?
Should this list be subject to WP:WTAF? There are a fair number of redlinks, and more get added over time, although some are removed as well. On List of programming languages‎, for example, the no redlink policy is fairly strictly enforced. I think the policy should apply here, but as it clearly has not been really enforced in some time (if ever), I thought I'd open a discussion before removing them. Rwessel (talk) 22:39, 21 November 2013 (UTC)


 * Support WP:WTAF. Yes, please.  Go for it.  It's a fair amount of work to go through and cull out the redlinks but if you're willing to do it, I support you.  Msnicki (talk) 22:52, 21 November 2013 (UTC)

Done. A summary:


 * A variety of redlinks and other items without articles were removed per WP:WTAF.
 * Tangible programming languages section removed – no primary article, no articles for any listed languages.
 * AspectLua, ConcurrentLua, dylan.NET, XMLmosaic, Glyphic Script, biterScripting removed – HTML links only.
 * Fixed Autocoder, DCL links.
 * A few redlinks in non-list items remain.

Should I hit the other "List of programming languages by..." articles too? Rwessel (talk) 08:35, 15 December 2013 (UTC)

Should this list include every "programming language" described in Wikipedia?
E.g. these two categories include "TeX" as "programming language":
 * Category:Macro programming languages
 * Category:Typesetting programming languages

Kazkaskazkasako (talk) 13:26, 3 June 2014 (UTC)
 * Arguably yes, but adding every minor language would likely make this article unwieldy. Rwessel (talk) 03:52, 4 June 2014 (UTC)
 * It's unwieldly :) Stevebroshar (talk) 11:39, 29 April 2024 (UTC)

Ambiguity of "TCL"
In the section of curly-bracket languages, does TCL refer to Tcl or Transaction_Control_Language? (Both are computer languages.) — Preceding unsigned comment added by Wbeek (talk • contribs) 20:45, 22 December 2014 (UTC)
 * Definitely not Transaction_Control_Language - no subset of SQL could possibly be described as a "curly brace language". OTOH, Tcl clearly *is* a curly brace language, although Tcl does not make that clear (see the external references on that page).  I've fixed the link.  Rwessel (talk) 21:35, 22 December 2014 (UTC)

Data Languages
The definition and list of data languages might be better titled RDBMS languages, since they both (currently) appear to be constrained to relational data.

XPath is certainly a data language for any reasonable definition of that broad term, though doesn't manipulate "entity relationship tables". Lisp, being homoiconic, could be argued to be a data language. Regular expressions could be said to be a "data" language as well.

Brianary (talk) 17:55, 23 February 2015 (UTC)

Summary table
added a summary table. While I do not fundamentally object to such a thing, in its current form it is absurdly incomplete, listing five of hundreds of languages and three of ~60 categories. If we're going to keep this, we should have some policy on what's included, and some plan to actually get this to be fairly complete based on that criteria. Otherwise there no hope at all that this will be maintained as the rest of the list gets updated. Rwessel (talk) 10:09, 24 March 2016 (UTC)
 * As there have been no comments on this, I'm going to go ahead and remove the summary table. Rwessel (talk) 03:57, 20 April 2016 (UTC)

Comment by 70.115.135.184 (Ada/Perl)
Your own article says Ada is object-oriented but it is listed as a procedural language. Perl has not been a procedural language for a long time. — Preceding unsigned comment added by 70.115.135.184 (talk)
 * Preceding moved to new section. Rwessel (talk) 03:31, 20 April 2016 (UTC)


 * Both Ada and Perl are listed in multiple sections, as they both support multiple paradigms. Rwessel (talk) 03:33, 20 April 2016 (UTC)

C as a functional language?
C is listed under the Functional languages section, but the only functional feature it has is the ability to pass functions by reference as parameters. It doesn't even have closures, much less any way to compose two functions, and idiomatically, it relies very heavily on mutable state and pointers, without any garbage collection and very explicit resource management (more so than even Rust or C++).

If you consider the GCC-specific extensions, then it could potentially be argued, because inner function closures are fully supported, but those are rarely used in practice. Compilers also occasionally employ tail call optimization when optimizations are enabled, but it's not required by spec. But even then, I don't think that necessarily is enough to call C a functional language, so in my honest opinion, it probably should be removed from that list.

129.71.158.128 (talk) 18:41, 18 October 2016 (UTC)

Agreed. We could even get looser in the definition and state that assembly is a functional programming language. It's not because a language allows functional constructs to be defined that they are FP languages. — Preceding unsigned comment added by 74.12.162.30 (talk) 02:44, 13 March 2018 (UTC)

Real Time Languages
Hi all, I'm missing Real Time Languages as category — Preceding unsigned comment added by DrHBK (talk • contribs) 14:49, 27 December 2017 (UTC)

Incorrect definition of procedural language
Whether a language is procedural has nothing to do with whether it is compiled or interpreted, but has to do with the semantics of the language. A procedural language is characterized with the sequential execution of blocks or statements that can modify the state, e.g., set variables, subject to modification by various control structures. Types of languages that are not procedural include functional languages, in which functions are not allowed to alter the state and rule-based languages, e.g., Prolog.

Most if not all of the shells listed in the article are procedural, and at least one of them is also compiled. Shmuel (Seymour J.) Metz Username:Chatul (talk) 19:40, 16 January 2019 (UTC)

Little Language - SQL
1. Note [a] - Would someone have a look at this note? I can't parse it at all. 2. And 'Little Language' seems rather disrespectful. SQL is far more powerful than many 'full' languages. I think the proper term is 'Domain Specific Language'. — Preceding unsigned comment added by 174.7.15.241 (talk) 02:50, 9 July 2019 (UTC)
 * 'Little' need not be pejorative; awk is a useful, usable language. It's not criticism when a tool is used appropriately. The note, for example, could contrast SQL with T-SQL to illustrate that it's little by comparison. But then the note would be less general. -- 11:29, 9 July 2019 (UTC)
 * OK. I added to the note, including a link to database record. (But might it be worthwhile to caution that one can bring a system to its knees with an imprudent SQL query? I didn't mention any of the cautions which came to mind. "With great power comes great responsibility," et cetera. ...) --Ancheta Wis   (talk  &#124; contribs) 07:47, 10 July 2019 (UTC)
 * I'd support to overthink this Note. SQL has been Turing-Complete since SQL:1999 and stating that for a 'full' programming language it is necessary to be able to specify algorithms limits it to imperative languages whereas this very page lists lots of declarative and logical languages without such a limiting note.--T.bussmann (talk) 09:19, 13 November 2019 (UTC)

Where does FORTH belong on our list of programming languages by type?
(Also asked at Talk:Forth (programming language))

FORTH is listed under:
 * "Compiled languages" (professional systems, like VFX and SwiftForth)
 * "Interactive mode languages"
 * "Interpreted languages" (interactive shell only, otherwise compiled to native or threaded code)
 * "Metaprogramming languages"
 * "Reflective Language"
 * "Stack-based languages" (for some odd reason forth and colorforth get separate entries)

And yet FORTH is not listed under "imperative languages" and there is no category for "threaded languages" or "threaded interpreted languages" (which, of course, only describes some implementations of FORTH).

So I ask, where should FORTH be listed on our list of programming languages by type?

Related: What is the Forth programming language?, The Evolution of Forth. --Guy Macon (talk) 18:02, 17 March 2020 (UTC)
 * To me it is most obviously stack based. Do we have a limit to how many times a language can be listed though? -- Sirfurboy🏄 (talk) 21:08, 17 March 2020 (UTC)


 * Not really, but calling FORTH "compiled" is misleading. Most versions of FORTH use an incremental compiler for a edit-compile-test cycle that appears to the human writing the code to be instantaneous. Some are interpreters. Also, with FORTH you pretty much write a new language for each problem, which is similar to but not quite the same as the reflective languages. I say we just put it in the stack based category and let anyone who wants more details read the article on it. --Guy Macon (talk) 01:03, 18 March 2020 (UTC)
 * Okay, I am content with that. -- Sirfurboy🏄 (talk) 07:46, 18 March 2020 (UTC)
 * Before I make the change, does anyone object? --Guy Macon (talk) 13:42, 18 March 2020 (UTC)
 * Done. --Guy Macon (talk) 12:11, 20 April 2020 (UTC)

Fanscript (Fancade) as a visual programming language
There is an app in the Play Store / App Store that's called "Fancade". By many users, the visual programming language is called "Fanscript". Fancade is an engine written in C + OpenGL + Bullet physics, according to the official wiki. It executes programs by dragging scripts and wires.

One of the recent edits adds Fanscript (Fancade) into the list of visual programming languages. So I ask: should Fancade's programming language be added/kept to the list of visual programming languages? - D-ynamics (talk) 11:00, 4 July 2020 (UTC)


 * Clearly not. Entries should be notable, and Wikipedia is no advertising platform for new products and other activities - free or not. GermanJoe (talk) 12:00, 4 July 2020 (UTC)

Formating: the noten in brakcets after Julia in the section "multiple dispatch" displays wierdly
Hi! sry to bother, I'm reading wikipedia a lot but so far have only done some minor typo fixes. the Julia entry has a bigger line of text after it within the list, and that spills over in other table columns. If I play around with my browser size, it goes to two lines per column, but the order is wierd so its hard to read. I don't know how to fix that, maybe someone with some edit experience can quickly fix that up, thy wikipedians! I don't have an account but best wishes 24.134.80.25 (talk) — Preceding undated comment added 09:11, 16 November 2021 (UTC)

Pony Programming Language
I added, not too long ago, Pony (programming language) under several subheadings, and my change was immediately reverted by someone who mistakenly assumed that it was vandalism.

It was not. Pony is what I claimed it was in my edit. The website is https://ponylang.io

Obviously, there's no page for the language on Wikipedia, and I had hoped someone else would have taken up the charge of writing up a stub (I don't know the protocol for such things.) 50.35.80.67 (talk) 04:59, 5 March 2023 (UTC)


 * For a language to be included in this list, it must be demonstrated that it is a notable language, by having its own Wikipedia page. To have a page, a language will need to meet th general notability guidelines WP:GNG. If the language meets those guidelines, you would need to write the page first and then it can be listed here. Be aware that if it does not meet the guidelines, a new page would probably be deleted, so read about those before spending time on it. Sirfurboy🏄 (talk) 07:41, 5 March 2023 (UTC)

Vlang
, you are repeatedly adding Vlang to this list despite the fact that it does not meet the list inclusion criteria. This list is for programming languages that demonstrate notability by having their own Wikipedia page. All other languages always get reverted. You have left a link on my talk page. The link you left was incorrect, but should be to Draft:V_(programming_language). That is a page in draft space and not in main space. When that draft is published, and assuming it is not immediately rejected by a new page reviewer, or taken to AfD as not notable, then you can, at that point, link it here. Until then, the link cannot be here. Per WP:ONUS it is also your responsibility to gain consensus for inclusion of challenged material. You have not done that, but simply reverted your edit back in 2 times now. It is very tempting to simply re-assert edits when you think you are right, but please note that doing so is edit warring. Please discuss instead. Sirfurboy🏄 (talk) 09:58, 13 March 2023 (UTC)

SETL language?
I've added SETL to #Imperative languages but am not sure in what other categories to list it. My first thought was #Esoteric languages but there might be other relevant categories. Shmuel (Seymour J.) Metz Username:Chatul (talk) 16:49, 13 March 2023 (UTC)

Criteria for inclusion
Supposedly only languages that have demonstrated notability are allowed to be on this page. Yet, there are various languages listed which don't have their own page. Some of the languages, which will be listed below, have links to external pages and others don't. From the perspective of programming language history, not administrative, arguably various listed languages are significant. Hopefully various ones do get a page, at some point. List of languages in question below: Wukuendo (talk) 02:22, 25 July 2023 (UTC)
 * Gleam
 * Winbatch
 * Kitten[2]
 * Lviv[3]
 * r3[4]
 * Staapl[5]
 * Trith[6]
 * xs[7]
 * 8th[8]
 * Beef[12] — Preceding unsigned comment added by Wukuendo (talk • contribs) 02:30, 25 July 2023 (UTC)
 * Canonware Onyx[30]
 * glex/gyacc (GoboSoft compiler-compiler to Eiffel)
 * G (used in LabVIEW)
 * Houdini VEX Shading Language (VEX)
 * ICI
 * SMX


 * Thanks for the note, I cleaned up the list a bit. MrOllie (talk) 02:29, 25 July 2023 (UTC)
 * Maybe these languages are not notable. Beef. really? Stevebroshar (talk) 00:10, 13 February 2024 (UTC)

BEGIN/END languages?
Should there be a section on languages where blocks are delineated by keywords rather than braces, e.g., BEGIN/END, PROCEDURE/END? Examples include Ada, Algol 60, Icon, Pascal, PL/I. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 16:56, 12 February 2024 (UTC)


 * I'd put that in the category: glutton for punishment. This page seem to be a ridiculously long and complicated list of overlapping stuff. I think it should a database, not a Wikipedia page. Clearly there are many ... nay ALOT ... of ways to categorize programming languages. I have to ask: is it worth maintaining in this form? But... if you want to: knock yourself out dude :) Stevebroshar (talk) 00:15, 13 February 2024 (UTC)

Not just a list of languages by type
This is a 'list of languages by type' but just as importantly it is also a 'list of language types with examples'. People seem to want to add new types as much as adding new language items. ... Just saying. Stevebroshar (talk) 11:47, 29 April 2024 (UTC)

Second meaning of scripting language
Current text: ''"Scripting language" has two apparently different, but in fact similar, meanings. In a traditional sense, scripting languages are designed to automate frequently used tasks that usually involve calling or passing commands to external programs. Many complex application programs provide built-in languages that let users automate tasks. Those that are interpretive are often called scripting languages. Recently, many applications have built-in traditional scripting languages, such as Perl or Visual Basic, but there are quite a few native scripting languages still in use. Many scripting languages are compiled to bytecode and then this (usually) platform-independent bytecode is run through a virtual machine (compare to Java virtual machine).''

So one meaning is: language designed to automate frequently used tasks. What is the second meaning? Stevebroshar (talk) 19:47, 10 May 2024 (UTC)
 * On the face of it, the first sense is a script hosted on an execution environment (think Perl on POSIX); the second sense is a script hosted on a framework which is itself hosted (think JavaScript app on a Domain object model). --Ancheta Wis   (talk  &#124; contribs) 10:45, 28 May 2024 (UTC)
 * That's not how I read it. The first case is that the script can invoke commands external to its execution environment. The second case is that the script can execute commands internal to its execution environment, or both external and internal commands. The second case typically involves some sort of callback mechanism.
 * A good example is Rexx. When an application initializes the interpreter it provides a set of named environments and selects on as the default. When the user executes a Rexx script from the command line, the default environment treats all generated commands as external program names. When the user executes a Rexx script from a Rexx-aware application, the default environment treats all generated command as callbacks, although other environments may treat them as external program names. As an example, if you call a Rexx script from the ISPF editor under TSO, the script will be able to control 3 environments:
 * ISREDIT
 * The default environment; commands are treated as callbacks to the editor.
 * ISPEXC
 * Commands are treated as callbacks to ISPF
 * TSO
 * Commands are treated as calls to external TSO commands.
 * I suspect that something similar is true for Lisp scripts in Emacs. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 14:58, 28 May 2024 (UTC)
 * @Ancheta Wis@Chatul I don't understand either. Stevebroshar (talk) 00:36, 31 May 2024 (UTC)
 * Some context is necessary: My reference is Lincoln Stein How to implement a web server. Lincoln Stein writes in Perl. His execution environment is a Unix-style server. The software framework (HTML) is based on the example of email. In fact, the first HTML version 0.9 is a clone of an e-mail protocol, using https GET. This is documented in Business Insider. (This is the reason that Perl is the duct-tape of the Internet.) It was easy to stitch together the wiki (think Ward Cunningham's C2, a few lines of code written in Perl), because Perl is so close to the roots of HTML. Next came CSS, then JavaScript. The source text we type in (on this talk page) is very close to HTML. The CERN connection to Tim Berners-Lee shows up, for example in the  notation cloned from quantum mechanics. On a related note, string processing is very easy in Perl (for example regular expression processing is a capability of that language.).-- Ancheta Wis   (talk  &#124; contribs) 07:25, 31 May 2024 (UTC)
 * @Ancheta Wis Sorry, I think you are spiraling away from the topic at hand. I'm asking what the current text of the article means WRT "Second meaning of scripting language". Why are you talking about Perl as duct-tape and good at string processing? Stevebroshar (talk) 19:46, 31 May 2024 (UTC)
 * @Chatul @Ancheta Wis huh? I don't get either of those explanations. Stevebroshar (talk) 00:35, 31 May 2024 (UTC)
 * IMO the current text is probably the result of multiple edits that have resulted in nonsense; as often happens here in WP. I will fix it so that it makes sense. ... Often a good way to avoid this sort of problem is to never use a specific number when about to list things. Then, the clause does not become wrong wrong someone adds or removes an item from the list. Stevebroshar (talk) 19:57, 31 May 2024 (UTC)
 * Here is an example illustration of a context (SCM) for applying scripts, using string processing:
 * 1969 Panvalet is developed to backup the metadata encoded in punchcard programs
 * 1972 Marc Rochkind uses SNOBOL to implement SCCS (Source Code Control System)
 * 1975 CCC generalizes an implementation of SCM Software configuration management
 * 1982 Rochkind reimplements SCCS in C
 * 1982 Walter F. Tichy implements RCS Revision Control System for SCM
 * 1985 Larry Wall writes patch (Unix) to simplify software releases
 * 1986 CVS, a front end to RCS further streamlines the SCM process
 * 2005 Linus Torvalds writes git to streamline Linux releases
 * As of 2014 git becomes the most popular source-code management tool
 * 2018 Github, a frontend for git, is acquired by Microsoft as the defacto standard for SCM, and is also used as a distribution platform for more than software
 * Thus a second meaning is  use of scripts to lift up the abstraction of a concept, which spreads the further use of a concept through simplification of that concept
 * -- Ancheta Wis   (talk  &#124; contribs) 10:53, 11 June 2024 (UTC)
 * Sorry, but ... that makes _no_ sense to me. The list of items is a history of related SCM systems. I see no connection to scripting language. CVS, git and github are not scripting languages. They are software systems. ... And what does "use of scripts to lift up the abstraction of a concept, which spreads the further use of a concept through simplification of that concept" mean? lift up? abstraction of a concept? spreads? simplification of that concept? Sorry, but that's nonsense to me. ... I'm sure you have something useful to tell me, but I do not see how it's related to scripting language. Stevebroshar (talk) 17:16, 19 June 2024 (UTC)
 * SCM solves a problem; that problem defines the systems you mention. A language implements concepts in a system. Scripting languages are meant to be simpler and less heavy in their cognitive load on the coder. A tough problem is reduced to the verbs in an imperative language. But scripts can also express functional languages, so they are also capable of expressing other concepts.
 * See The Magical Number Seven, Plus or Minus Two. We humans are able to integrate a limited number of concepts, whether it be 3 ... 7, and no larger. The point is that problems which require large numbers of concepts like 9 cannot be understood in toto; a concept will survive only in chunks with a name. When the limit is exceeded, the remaining concepts fall into a bin (a chunk), and we humans can't handle any more at the moment of confusion. Category theory is one avenue for addressing this problem. I added some more links to help out such as Lambda calculus, rewriting, and REPL.
 * Chunking: only when the salient concepts can be expressed in small-enough number (like 3) to be parseable can they be communicable. Situations requiring a large number of words will neither be understood by an originator, nor communicated to others with a similar background, nor finally applied to situations. The goal would be to be understood, even by others who have no similar background. Edit: I just replaced a link that was repeated, with a category theory term (which is not a programming term, but which is meant to signal that some additional concepts from nlab might require further study). I included terms  saliency and predicate in a polysemic sense. End of edit.
 * Lifting: Richard Montague  was  able to apply the theory of grammar to linguistics only when the concepts had clarified enough to be able to be stated simply. That is the reason that scripting languages are useful. An abstract concept like SCM requires a specialized environment for specialists (such as those working in software quality). A specialized implementation language would require a system to be implementable.
 * Application: Panini invented the parts of speech but it took 2400 years for Montague to mechanize this theory: a sentence in English has 3 parts in a standard order SvO (subject verb object), where that sentence has a truth value, as opposed to a predicate. Scripting languages which have Boolean values can be used for SCM. Even better, a language with types can express situations simply. See large language model, in which the concepts number in the billions. --Ancheta Wis    (talk  &#124; contribs) 22:04, 20 June 2024 (UTC)
 * Application: Panini invented the parts of speech but it took 2400 years for Montague to mechanize this theory: a sentence in English has 3 parts in a standard order SvO (subject verb object), where that sentence has a truth value, as opposed to a predicate. Scripting languages which have Boolean values can be used for SCM. Even better, a language with types can express situations simply. See large language model, in which the concepts number in the billions. --Ancheta Wis    (talk  &#124; contribs) 22:04, 20 June 2024 (UTC)

String (text) processing languages?
One missing category is string processing languages, used for manipulating text. Off the top of my head this includes These languages are important historically, and many of their features have entered the mainstream. -- Shmuel (Seymour J.) Metz Username:Chatul (talk) 10:22, 28 May 2024 (UTC)
 * 1) COMIT
 * 2) Icon
 * SL5
 * 1) SNOBOL


 * @Chatul Are they? (important) Stevebroshar (talk) 00:39, 31 May 2024 (UTC)