Talk:List of programming languages by type

From Wikipedia, the free encyclopedia
Jump to: navigation, search
WikiProject Computing (Rated List-class)
WikiProject icon This 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.

Liszt Language[edit]

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. 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 (talk) 14:37, 17 May 2016 (UTC)


jain leads to a religion page. I don't think that's right. —Preceding unsigned comment added by (talk) 02:07, 13 December 2008 (UTC)

This page is missing languages like applescript and hypertalk and others. I don't know what categories you would want to add, such as fifth generation languages perhaps, or beginner-friendly languages (basic variants belong there as well).

(suggests adding markup languages) (runs from flack) -- 00:25, 27 November 2005 (UTC)

Something went wrong with the formatting when I tried to edit! HELP! -- RTC 22:10 Apr 9, 2003 (UTC)

Is that what you want it to look like? Make sure when you bullet things that stuff in the same category isn't seperated by a line break. -- goatasaur

Yes, that looks more like the original. All I did was edit the page and change a couple items. I have no idea what inserted all that "trash", I've never seen it happen before! -- RTC 22:17 Apr 9, 2003 (UTC)

I did some tests, and found that I had to go back at least 2 revisions before the one I edited to avoid getting the format scrambled like that in a preview of the edit (without changing a thing). Must have been someting "hiding" in that revision that my browser did not like, I guess. -- RTC 22:26 Apr 9, 2003 (UTC)

What about the REBOL language? It's more than a scripting language, but I don't know quite enough about all this to know where to put it. --Marj 18:21, 4 Jan 2004 (UTC)

Aren't batch and scripting languages the same thing? Evil saltine 06:45, 8 Jan 2004 (UTC)

You are sooo young :-) Good question -- bad title. I'm just about to replace subtitile "batch languages" "CLI languages (batch languages)", meantime you read Command line interface Mikkalai

Some so-called 'scripting languages' are not 'batch processing' languages in the strict sense of the term (compare sed and python for example; sed is very much a batch processing language, whereas python is full featured enough to write complete systems with). While you *can* use them in this way - just about any other language for that matter can be used in a 'batch' processing mode. A language is a language - plain and simple. I think the term 'scripting language' has been used too often to deprecate the subject language as 'not a real' programming language - i.e. 'it is a useful toy for small tasks' - but not much use for any 'real' large application/system programming utility. Modern languages such as Python, Ruby, and Perl argue against this characterization.

I think there are probably several additions that could be made to the Little Language category from the Unix environment. SED and BC are the top two that come to mind. Of course, the nix environment is full of tools like these, so are you guys drawing the line at the more recognizable "little Languages"? That may be a good idea so that the category doesn't get swamped. (talk) 15:23, 28 November 2009 (UTC)

C# Editorialized as "a version of C" or "an attempt at C"[edit]

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 — 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 — in the biased eye of a C++ hacker, indeed :) — 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?[edit]

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 (if/while/do/def/..., end). The {|params| body} syntax is roughly just a shortcut for do...end: 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[edit]

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[edit]

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. (talk) 14:58, 28 November 2009 (UTC)


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

assembly languages[edit]

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?[edit]

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[edit]

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?[edit]

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: Wikipedia:Categories, lists, and series boxes and also Wikipedia: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 Wikipedia: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 — 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


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—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[edit]

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 (talkcontribs) 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)


I am currently editing a script on computer languages and their use for scientific computation. I am missing references in the page. Aren't there any good books one might cite? (talk) 16:30, 16 December 2008 (UTC)

Proposal - obsolete languages[edit]

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[edit]

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


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 (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 (talk) 14:21, 22 February 2011 (UTC)

Line-number or GOTO-oriented languages[edit]

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. (talk) 22:16, 27 June 2011 (UTC)

Logic Languages that are Purely Declarative[edit]

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?[edit]

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

List Merge Needed[edit]

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[edit]

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++ 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)

ActionScript 2 class-based?[edit]

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). (talk) 12:59, 1 April 2013 (UTC)

Redlinked languages and WP:WTAF?[edit]

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?[edit]

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)

Ambiguity of "TCL"[edit]

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 (talkcontribs) 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[edit]

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[edit] (talk · contribs) 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 (Ada/Perl)[edit]

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 (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?[edit]

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. (talk) 18:41, 18 October 2016 (UTC)