Esolang talk:Categorization

From Esolang
Jump to navigation Jump to search

Please discuss categorization of the Esolang wiki here.

Category: Languages

Language articles should not have Category:Languages. Everything in Category:Implemented, Category:Unimplemented, Category:Stack-based, Category:Cell-based, etc. is a language. Those should be subcategories of languages. --Graue 17:40, 5 Jun 2005 (GMT)

And shouldn't there be by-topic subcategories of Category:Languages like Category:Languages by storage type, in which Category:Cell-based and Category:Stack-based could be categorized? --Puzzlet Chung 02:10, 6 Jun 2005 (GMT)
No, I think cell-based, stack-based etc should be parts of the languages category directly. --Graue 06:10, 6 Jun 2005 (GMT)
My objection is that the ones in a subcategory aren't automatically shown in the parent category, so Category:Languages is not an extensive list. I'd like to keep such an automatic list, similar to the Wikipedia category ([1]) and use the main list to add short descriptions of each language. --Pgimeno 23:46, 10 Jun 2005 (GMT)
Okay. I seem to have given in without realizing it. I don't mind the languages list that much, but if someone does come up with a better idea i'll be quick to consider it. --Graue 02:47, 11 Jun 2005 (GMT)
And those characteristic categories are still going to be subcategories of Category:Languages, aren't they? After all, browsing languages by characteristics from Esolang:Categorization (which is a project page) is ridiculous. --Puzzlet Chung 14:37, 15 Jun 2005 (GMT)

Please avoid adding a partial list of categories to an article. It's easy to find pages that have not been given a category list by consulting Special:Uncategorizedpages but that magic is gone when any category is added. Or is there a way to find out the articles that do not belong to a given list of categories? Like, those articles which do not belong to either Category:Languages or Category:Computational models. That would be ideal but I don't think it's possible. --pgimeno 10:13, 11 Jun 2005 (GMT)

Just fix it if you find it. The whole idea of a wiki is that it's small compared to the line-of-sight of its editors. --Graue 12:15, 11 Jun 2005 (GMT)

i made a new category--EsolangGuy

Computational models categories

Shouldn't everything listed under Category:Computational_models be available as a choice for Computational class? In particular, I was looking for a list of languages that are particle automata. --Calamari 06:19, 13 Jun 2005 (GMT)

It's kind of a pity that MediaWiki makes a distinction between articles and categories (instead of, say, just having some sort of general "can-be-classified-under" association between articles.) What if I want to see a list of all languages designed by Gerson Kurz, for instance...?
I guess I wouldn't mind making some sort of compromise for computational models, though. I think what we end up with is either an article plus a category (where the category says "see the article for more info",) or an article which just redirects to a category (with the real article "embedded" in the category.) --Chris Pressey 21:30, 5 Jul 2005 (GMT)


We should have a Category:Persons or something like that. --Graue 21:17, 14 Jun 2005 (GMT)

Yes, we should have a category. I prefer the term designer to author, myself. But persons is more general (maybe too general). Are there any persons that should have an article here that are not esolang creators? --Rune 21:49, 14 Jun 2005 (GMT)
Possibly. I don't know of any esolangs invented by Daniel Cristofani, but he is notable for his Brainfuck work. --Graue 01:16, 16 Jun 2005 (GMT)
Good point. I kind of feel there should be a category for authors/designers, but two categories might be impractical. If only sub category members were included in their super category listings... Then we could have authors as a subcat of persons. --Rune 01:41, 16 Jun 2005 (GMT)
We now have several pages on people... does anyone seriously object to the imminent creation of a 'People' category? --Chris Pressey 17:47, 5 Jul 2005 (GMT)
I think that is a good idea. --Rune 13:02, 8 Jul 2005 (GMT)

Proposed Category:Uncategorized Languages

This new category would be for languages that have not yet been properly categorized, so that they become visible in a list for future categorization. --Calamari 00:09, 15 Jun 2005 (GMT)

I don't see the need for this. Why not just add proper categories to the article instead of this one? --Rune 00:34, 15 Jun 2005 (GMT)
That would be ideal, if one person had no life. It takes time to properly evaluate a language and see which categories it fits into, and the search is disorganized. With this category, we can quickly know which pages still need to be categorized, rather than having to click each one in turn and get lucky. --calamari
I think it is unrealistic that a language will be completely categorized in one go. When I categorize a language I just skim the article, and perhaps the spec, and then go through the Esolang:Categorization list and add the ones I think fit. This does not take much time. It is not 100% accurate, but that's not a problem IMHO. --Rune 01:48, 16 Jun 2005 (GMT)
The already is a way of finding out which languages have yet to be categorised through the special page Special:Uncategorizedpages. --Safalra 19:31, 8 Oct 2005 (GMT)

Proposed category: Data structures

I'd like to make a category for data structures so that stack, queue, tape and probably someday others like graph all have somewhere to live. --Chris Pressey 17:56, 5 Jul 2005 (GMT)

Agreed. That is a good candidate for a category. --Rune 13:03, 8 Jul 2005 (GMT)
Now there is a programming language which uses graphs, as in Cvlemar. --Zzo38 16:24, 4 Oct 2005 (GMT)
Category:Stack-based and Category:Queue-based are both subcategories of Category:Languages, and their pages both contain a 'See also' section pointing to the other category. Category:Deque-based, on the other hand, is not part of Category:Languages nor of that little 'See also' ring. Can I change that? And what about all those "stack-based languages" like Super Stack! which can actually access the bottom element of the 'stack', should they be moved to Deque-based? Also we have Cvlemar and Eodermdrome which are Graph-based, and I think there are a (small) handful of tree-based languages. Shouldn't we make a category? (Actually, we don't even have a Tree (data structure) page.) --Koen (talk) 16:41, 31 October 2012 (UTC)
yes plz tree data structure catagory. like for =? --Yayimhere (talk) 14.32, 2024, 17. may (UTC)
Category:Tree-based is the category for tree-based languages. --None1 (talk) 13:21, 17 May 2024 (UTC)

Proposed category: Concepts

I'd like to make a category for "concepts", so that Turing tarpit, Turing-complete, wimpmode, and other related but hard-to-categorize stuff have somewhere to live. --Chris Pressey 18:27, 5 Jul 2005 (GMT)

Other Categories

Where would Category:CJK fit in this list?

Source format? --Rune

Symbol independent languages

I think we should have a category for these languages, but I'm not sure what it should be called. Symbol independent or Pattern based are two possibilities.

So far I know of the following languages that fit in this category (but there are probably more): Beatnik, Udage, Trigger, Glypho and possibly l33t. --Rune 01:13, 7 Oct 2005 (GMT)

I agree, Udage and Trigger clearly are symbol independent, not sure about the others --Aardwolf 01:20, 7 Oct 2005 (GMT)
Well, I agree too. But what is THE symbol if we use "Symbol independent languages"? For example, symbol of Beatnik could be a Scrabble score of the word -- so it cannot be symbol independent language. I think Udage, Trigger and Glypho is symbol independent, but Beatnik and l33t is not. --Tokigun 19:59, 7 Oct 2005 (GMT)

Seems like "symbol independent" is a rather tenuous concept to apply to anything other than a straightforward textual language. I believe that the way Tokigun has sliced it is the most meaningful distinction, whether or not "symbol independent" actually describes that distinction. I would suggest "pattern-based" with the understanding that it refers to languages in which differences, patterns, or relations of adjacent symbols are treated themselves as symbols. Thus, for example, Fugue is pattern-based; Beatnik and l33t are not; Mycelium and Braincopter are not, but a graphical language based on the difference between adjacent pixels would be, as would one based on patterns of adjacent pixels. (This is an attempt to extend the concept to non-textual languages while retaining its integrity.) --Graue 20:47, 7 Oct 2005 (GMT)

I agree that Beatnik can be said to be dependent on symbols (word score). But this also applies to Trigger, which is dependent on the 256 ASCII characters, unlike Udage and Glypho. In my opinion Trigger is even less symbol independent than Beatnik because in order to output say the character T you must use the code TTT, while with Beatnik you can accomplish this in a lot of different ways (with different characters).
However I think that in order for this category to not be too narrow we should include languages like Trigger and Beatnik. They are both based on patterns, though they are not symbol independent. --Rune 23:48, 20 Oct 2005 (GMT)
That's an interesting point you bring up about Trigger's mapping of each byte to the character thus represented. Still, Trigger is pattern-based, per my definition just above. Beatnik does not seem pattern-based to me. It essentially uses a list of numbers and has a preprocessor that turns letter strings into numbers based on Scrabble word score -- not a pattern, but a mapping of particular symbols and values. I don't see any way that patterns are involved in Beatnik programming. This, combined with the fact that Trigger intuitively (to me) belongs with Udage and Glypho but Beatnik does not, makes me think that a "pattern-based" category, as defined above, is the best idea here. --Graue 01:30, 21 Oct 2005 (GMT)
Well, it seems we have a consensus to name the category "pattern-based" at least. You have a point that Beatnik is not really based on patterns, so I guess it should be excluded. You also mention Fugue as pattern-based. I don't see how that qualifies. In Fugue each instruction maps directly to a certain interval, which is just another kind of symbol... --Rune 13:15, 21 Oct 2005 (GMT)
Fugue is based on differences of adjacent symbols. See my definition above. --Graue 13:46, 21 Oct 2005 (GMT)
Hmmm, yes. You have me convinced. All these musical terms in the Fugue spec confuses me :) --Rune 14:06, 21 Oct 2005 (GMT)

OK, I've added Category:Pattern-based to the Categorization page. I wasn't sure exactly where to put it, but I put it under Source format. --Rune 14:21, 21 Oct 2005 (GMT)

Multidimensional languages

In my opinion it would be better to remove two-dimensional language as a sub category of multi-dimensional, and let it be a separate "super"-category. I don't think sub-categories work well. Also there are so many 2-dimensional languages that they definately deserve a proper category of their own. --Rune 23:39, 20 Oct 2005 (GMT)

I agree, 2D languages should be a category next to multi dimensional and zero dimensional, and the explanation of multi dimensional can then become "languages with more than 2 dimensions" instead of the "languages with more than 1 dimension" it is now. --Aardwolf 00:09, 21 Oct 2005 (GMT)
A subcategory is a proper category. The only difference from any other category is that it, itself, is categorized.
You don't think subcategories work well? Why? You are asking to remove the link to the 2D languages category from the multi-dimensional languages category, because that's the only change it makes. What is the advantage in removing that link? It would just make the wiki harder to navigate. --Graue 01:36, 21 Oct 2005 (GMT)
My main problem with sub-categories is that when you for instance view the multidimensional language category (which is currently including 2d langs) you only get a list of the >2d langs plus a link to the 2d category. I guess what I'm really after is redefining multidimensional to be >2 dimensions... --Rune 13:09, 21 Oct 2005 (GMT)

Category:Lesser known programming languages

Category:Lesser known programming languages contains only one language, SARTRE, plus the Lesser known programming languages. If no one objects I will delete the category and move the two articles to Category:Joke_languages. --Rune 04:26, 2 Nov 2005 (GMT)

The category is now gone. --Rune 17:47, 7 Nov 2005 (GMT)

Category for years

The idea of having categories for each year has been discussed in various places, but as Graue has pointed out it should be discussed on this page. Can people make their opinions clear here so that we can finally settle this issue. For the record, I support the idea of having categories for each year (as subcategories of a 'Years' category). --Safalra 16:53, 7 Nov 2005 (GMT)

I support it as well. However, I'm not sure how we should handle the years before 1993. Should we only add categories for the years that something actually happened, or should we have a < 1990 category? --Rune 17:50, 7 Nov 2005 (GMT)
Questions about this category: 1) Can we agree that only languages, not implementations and concepts, go in it? 2) Befunge was revised in 1997 and 1998; can we agree that it still only belongs in the 1993 category? I'm not crazy about the idea, but if 1) and 2) are yes then I could go along with it. Also, I think there ought to be a "Before 1993" category, if the year categories are used, for the few languages that predate the year of False, Brainfuck, and Befunge. --Graue 18:43, 7 Nov 2005 (GMT)
I totally agree with both 1) and 2). It was always my intention for this to be way to browse languages by year, and cluttering it with other articles would be messy. --Rune 00:43, 8 Nov 2005 (GMT)
Should we go ahead and put the categories back then? Not many has voiced their opinion, but those that have have been positive, except for Graue which is "not crazy about the idea". I'd wish more people would join the discussion, but it doesn't look like that's going to happen. --Rune 23:27, 13 Nov 2005 (GMT)
Well, I say "do it". --Ihope127 00:52, 14 Nov 2005 (GMT)
I support the idea with the provisos in my comment above. --Graue 05:05, 15 Nov 2005 (GMT)
OK. I'll go ahead then. --Rune 00:29, 16 Nov 2005 (GMT)

I have now restored the year categories from 1993 to 2005, and added a before 1993 category. I've also created a template (based on the ones in wikipedia) for the year categories, which makes it easy to browse through the years. Consequently the contents of each year category should only be {{yearcat}} (unless something particular needs to be said about a certain year, though I can't imagine what). The template doesn't work for the Before 1993 category, so that one has to be edited manually, but someone might come up with a better wording which will allow that one too to be templated. --Rune 01:08, 16 Nov 2005 (GMT)

I found out how to make the Before 1993 category use the same template, by using parameters, so now only one template needs to be altered to change the looks of the year category pages, and that is Template:Yearcat2. --Rune 04:23, 16 Nov 2005 (GMT)

Hi guys, after a long, necessary hiatus, I have posted a comment regading the rather unpleasant beginnings (well for me anyway) here. That includes a comment on the category creation policy, which I beleive should be more prominently displayed. --Stux 16:19, 9 Feb 2006 (GMT)

Joke languages

I just removed Category:Languages from CHIQRSX9+, for consistency with (what I thought) was all the others, then realised that some jokes were categorized as languages and some weren't. I think we should have an explicit policy about whether jokes are in Category:Languages or not; my reading of the categorization page implies not, but I don't think I should go ahead with this without collecting more opinions first. I'm going to self-revert this change, pending discussion. --ais523 13:17, 19 May 2006 (UTC)

I see three possibilities:
  1. Joke_Languages are considered entirely distinct from Languages.
  2. Joke_Languages is a subcategory of Languages, the articles are classified as both.
  3. Joke_languages is a subcategory of Languages, the articles are only listed in the subcategory.
This ties in with another question: What part of Category:Languages should be in the Language_list? I see from the above discussion that subcategories are not truly inherited. --Ørjan 14:24, 19 May 2006 (UTC)
This is a difficult topic. It is very easy to categorize HQ9+ as a joke and nothing else. But how about INTERCAL? From reading the spec. it is rather obvious that it was meant as a joke, but that doesn't prevent it from being a popular and useable (sort of) language. The Joke Language List description states that This is a list of languages that are not of any interest except for potential humor value, but that is a rather subjective matter. I think that the original intent was for the Joke language list and the Language list to mutually exclusive, but the problem is (as usual) the grey areas. --Rune 16:28, 19 May 2006 (UTC)

New category?

I was looking through the language list and randomly going to things that looked interesting. The thing is I hate going to external links to find out more about an esoteric languages. That is why I think there should be a category or maybe sub category that list all the languages that arn't just stubs, that have a command list and information. A user on the #esoteric channel on freenode named kipple suggested that maybe instead of having a new category, we could just add something next to the language names on the language list to signify if its a stub or not. Well thats all for now!
Poiuyqwert 21:36, 22 May 2006 (UTC)

I'm kipple from #esoteric, and I think it is a good idea to somehow indicate which articles contain sufficient information to actually understand how the language works. I'm not sure what's the best solution though. Adding the info to the language list will probably take more effort to maintain than a category. A category which is a kind of "Mark of quality" (or something similar) which could be applied to good articles might inspire people to improve them. --Rune 21:35, 23 May 2006 (UTC)
Why don't you fix stubs by adding the information you want? Seems like a better use of your time. --Graue 01:59, 24 May 2006 (UTC)

Duplicated pages

I noted that a couple of the linked-to articles in the list of ideas are categorized in the non-existent Category:Ideas, so for consistency I changed the last article to do so also. But this just exaggerates something I have noted (and which has been discussed above for some instances):

This wiki has several categories or special pages that are also duplicated as list articles, needing double editing to keep consistency. The ones I have noticed so far:

Perhaps there are good reasons for some of these (as the above discussions show), but it should not be allowed to get out of hand. A list containing just a link and no description for each item, such as the list of ideas, can (I assume) simply be moved into the category page, which is my suggestion in that case. For those manually edited lists we do want to keep, perhaps one could make a template that would request an automatic check that every article in a category is linked to from the article containing the template. --Ørjan 20:26, 27 May 2006 (UTC)

The list of ideas is of my own invention, although some other people posted things in there as well. I think we should keep some the pages that are duplicates of categories (Language list, Joke language list, list of ideas, etc.), and you can use those pages to add short description to them on the list, so you can see the list with descriptions on it. --Zzo38 01:37, 28 May 2006 (UTC)
Double editing is unfortunate, but AFAIK it is not possible to achieve the layout of the Language list in a category page. Also, it is nice to be able to list a language that does not have an article yet, and therefore cannot be categorized, though ideally there should always be at least a stub. The list contains 8 such entries at the moment. The list of ideas does not currently have anything that cannot be done in a category page, so unless there are plans to add more details to it, I think that it should be replaced by a category page.
Special:Categories cannot be edited at all, and is not a duplicate of Esolang:Categorization as Esolang:Categorization contains more than just a list of categories. --Rune 10:45, 28 May 2006 (UTC)
Another problem with the category pages is that they don't show articles with special charaters in the name, like [] or *W, correctly.--Rune 10:59, 28 May 2006 (UTC)

Formal definition of "usable for computation"

I suggest that a language is usable for computation if possible limitation of storage and I/O can be eliminated by trivial manner, and resulting one is Turing-complete. Because many usable computation requires Turing-completeness, I think this definition covers almost all cases including Malbolge and Aura. --Tokigun 11:14, 13 Dec 2006 (UTC)

Linear-Bounded Automaton

This one's kind of a no-brainer, and I have no idea why it doesn't already exist. Any nays on adding this to the "Computational Complexity" category list? --(this comment by Quintopia at 09:37, 18 September 2010 UTC; please sign your comments with ~~~~)

Um it's right there on the list and has been for years, it just doesn't have a page or any member articles yet... --Ørjan 23:34, 18 September 2010 (UTC)

In that case, it was supposed to exist already but someone forgot to actually create the page. I just did that. Everything should be cool now. --Quintopia 06:51, 19 September 2010 (UTC)

Well it would have been if you'd paid attention to how the link was actually pluralized. --Ørjan 23:30, 19 September 2010 (UTC)

Bounded-storage machine

I oppose adding a computational class category for Bounded-storage machine - it's a computational model, not a computational class. The class for it is simply finite state automata, which already have a category. --Ørjan 23:54, 19 September 2010 (UTC)

OK, but maybe just a category then, no computational class? --Javamannen 04:53, 20 September 2010 (UTC)

Er well technically, a finite state automaton is a computational model too; it just happens to be our poster-child model for the class of regular languages. Ditto push-down automaton and context-free languages. I too would object to a computational class category for BSMs (since they define the same class as FSAs), but I guess I wouldn't oppose it as a non-computational class category.
On a related topic, I notice we don't distinguish between languages which are "complete" for their class, and those which aren't. For example, beta-Juliet is "FSA-complete" because you can describe any finite automaton in it; Spaghetti on the other hand is not, because there are finite automata (with extremely large numbers of states) which you can't. Similarly, Befunge-93 is not "PDA-complete" because there some PDAs (with extremely large numbers of states) which you cannot describe in it.
I don't know offhand how to deal with this yet, categorization-wise; I just thought I'd bring it to peoples' attention for now. I guess I've generally used "Bounded-storage machine" to describe languages which both accomodate programs with a huge number of states yet aren't FSA-complete, but that certainly hasn't been a conscious part of its definition. --Chris Pressey 17:34, 10 January 2011 (UTC)
I began to bring this up at Talk:Finite-state automaton - you've generalised it. If we apply computational classes to algorithms, rather than languages, then an FSA language is a language whose programs are all FSAs (and which can describe at least some FSAs not belonging to some lower class), and an FSA-complete language is one that can describe an arbitrary FSA. But can we have an FSA-complete language that can also describe some PDAs but isn't PDA-complete? I suppose there are potentially two computational classes for every language: the highest class in which it is complete, and the highest class for which it can describe at least some algorithms not belonging to any lower class. The question is: Which combinations are possible, at least without contriving the language so that it can be trivially split into two languages? (For example, can we have an FSA-complete, PDA-incomplete PDA language that isn't really just the union of an FSA-complete non-PDA language and an FSA-incomplete PDA language?)
Moreover, I can see that we needn't stop at complete or incomplete in describing a language's relationship to a computational class. If a given language can describe algorithms in some proper subset of a computational class, this subset may still be finite or infinite. It could even be of size 1, with programs in the language being just initial states (e.g. Byte Syze). -- Smjg 23:12, 10 January 2011 (UTC)

Category Proposal: Turning Tarpit

I would like to propose the category Category:Turning tarpits as a subcategory of the category Category:Turing tarpits. There are several turning tarpits on this wiki (I was able to find three easily). I created a page for them but I think a category would be appropriate as well. Thoughts? —Maharba 21:42, 5 April 2011 (UTC)

I agree that the category needs naming, and I think your name is amusing. Probably best to wait a while to see if it catches on, though. --ais523 22:04, 5 April 2011 (UTC)
Someone on WP seems to have unilaterally called them despotic languages, but I prefer Maharba's name for them. Phantom Hoover 16:49, 7 April 2011 (UTC)
It's not really "my" name for them. I found the name in the Whirl Documentation, which said it came from a #esoteric discussion. Still, better than "Despotic language". —Maharba 22:51, 7 April 2011 (UTC)

Quick question: should the page turning tarpit be included in this category, or just those languages that are turning tarpits? —Maharba 16:30, 10 April 2011 (UTC)

Judging by Category:Turing tarpits, the page turning tarpit should not be part of the category. In a few days, if no one complains, I'll add the category. —Maharba 01:45, 13 April 2011 (UTC)
It should be linked from the category description page, but not part of the category itself. --ais523 02:26, 13 April 2011 (UTC)

Declarative paradigm

Category:Declarative paradigm has been created; I'm adding this discussion so that we can come to a consensus on whether it should exist or not, as policies require. I'm strongly in favour, and I suspect everyone else will be too. —ehird 21:52, 7 July 2011 (UTC)

In favor. While we're at it, could we also make a category along the lines of "Computability unknown"? - Madk 23:35, 7 July 2011 (UTC)
Does Category:Unknown computational class not cover this? If it turns out to be Turing complete or less powerful, then it's computable; otherwise, it's not. —ehird 03:53, 8 July 2011 (UTC)
There's actually a considerable difference. - Madk 20:58, 8 July 2011 (UTC)
I'm fine with it. I'm not quite sure what makes it the paradigm "Declarative", but it seems like a useful category.Maharba 00:23, 8 July 2011 (UTC)
I'm not sure I understand. —ehird 03:53, 8 July 2011 (UTC)
Sorry, typo. I just meant that I wasn't sure what the declarative paradigm is. I read the wikipedia article and that helped. —Maharba 00:22, 9 July 2011 (UTC)
I've added the paradigm to the list here, since some languages are in it already (including mine, SillyCon) - kwikrick


Should Category:Shameful exist? There are pages placed in Shameful by consensus, but the category page has been deleted, as it has never been officially created. Therefore, I am starting a discussion here to officially decide if Category:Shameful or some equivalent thereto should exist. What do people think? —Maharba 20:58, 11 March 2012 (UTC)

I think the weather is mightily drafty here today. --Ørjan 21:07, 11 March 2012 (UTC)

category: resource hungry

Should there be category "resource hungry" or categories "computationally intensive" and "memory hungry" (or similar better wording)?

From what I have encountered in this wiki, at least this belongs to something like that: Seed --(this comment by Tektur at 04:32, 13 March 2012‎ UTC; please sign your comments with ~~~~)

It seems like a fairly subjective designation. For one, executing a Seed program is fast; it's only writing them that is slow. That said, ShaFuck is another obvious contender. —ehird 05:01, 13 March 2012 (UTC)
The definition should be machine independent.
Possible definition could be that each operation needs at least 1000 steps from an underlying algorithm, run-time or compile-time / making-time. It should have so many steps even with the shortest programs, that nobody would bother to read them all in any text format. This definition even though such program's execution could still take just blink of an eye.
Machine dependent definitions could be for example, that having or running some standard short simple program takes at least 1 second computation on a new computer, or that the implementation uses many cores or wikipedia:OpenCL. Implementations that use the non-graphics way to use "graphics" processors, openCL, should have their own category if at least 2 of them exist, and same for openGL. 1 openGL related language: Deltaplex.
Tektur 02:38, 16 March 2012 (UTC)
Isn't all that about runtime? Seed's runtime performance is the same as Befunge plus a (not unreasonable) constant overhead. —ehird 02:53, 16 March 2012 (UTC)
Never mind, I see I misread. I still think the definition is imprecise: what's the definition of a "step"? I could accept something like "any compiler from a non-resource-hungry language of equal computational class to this language is at least O(whatever)". But in the case of Seed, you can't even write such a compiler. —ehird 20:38, 16 March 2012 (UTC)

Interactive versus non-interactive IO

Where do we draw the line? I can see that there are four possible values here:

  • Completely non-interactive. All input is read before the program begins or any output is generated.
  • Undefined. The language makes limited or no guarantees about the sequence of input events and output events.
  • Limited interactiveness. The order in which output is generated and input is received is well-defined, in such a way that more input can be accepted after output has been generated. But it isn't possible to implement arbitrary sequences of I/O events.
  • Fully interactive. For Turing-complete languages, I suppose this means every BF program has an equivalent program in the language in question that behaves identically (or would but for I/O format restrictions such as those in INTERCAL-72). For Turing-incomplete languages it's harder to define, but I suppose we can classify an imperative language as such if it allows an arbitrary I/O instruction to be placed at an arbitrary point.

On this basis, if we're going to have categories for interactiveness of I/O, how many categories should we have?

One simple possibility is to just add Category:Non-interactive IO. Which would hold the completely non-interactive languages, and maybe undefined as well, if it's permissible for an implementation to run arbitrary programs in a completely non-interactive way. — Smjg (talk) 13:02, 24 March 2012 (UTC)

The IO issue is a tricky one; as far as I know, nobody has managed to formally define the concept of "BF-completeness" (i.e. fully-interactive IO combined with arbitrary effect at an arbitrary point) yet. I'm not sure what "limited interactiveness" means, exactly. If people want a categorisation scheme for interactiveness of IO, I would suggest having interactive IO be the default (and hence have no category), and having only a category for non-interactive IO; languages that don't define interactivity or with a status in the middle ("semi-interactive", whatever that means) could simply have an explanation of that fact on their article. But I think the ambiguity of the concept, combined with the relative unlikeliness of someone wanting to browse languages by their interactiveness, means it's probably OK to keep descriptions of interactivity in prose. —ehird 13:08, 28 March 2012 (UTC)
I suppose "Limited interactiveness" means anything that doesn't fall under the other categories. Though I can see now that non-deterministic languages make "Undefined" hard to define, as well as Turing-incompleteness making "Fully interactive" hard to define. But a typical example of limited interactiveness would be a functional language with a lazy I/O model, if there's no way to circumvent this laziness (e.g. calculates the next output character based on all possible subsequent inputs, and only pauses for input if the next output character actually depends on that input). A more contrived example of limited interactiveness is where only as many characters as have been input can be output, perhaps until EOF has been reached. — Smjg (talk) 16:16, 29 March 2012 (UTC)

Order of categories

I've noticed that I haven't followed a consistent order in listing the categories to which my languages belong. I'm not sure if we should have a house style in this respect.

But what would be a good order to list them in? The order in which they're listed here would be one way, except that Implemented/Unimplemented really ought to go last as it isn't a property of the language itself as the others are. I'm also inclined to put the year of creation either just after Languages or just before Implemented/Unimplemented.

What do you think? — Smjg (talk) 12:36, 28 March 2012 (UTC)

Yeah, the category ordering is kind of a mess. As it stands, I'm happy with people just doing whatever they want. I've idly thought about creating a bot to search for dead links and reorder categories, but it's not really a high priority. If you want to stick to a specific ordering, I would suggest Category:Languages, year, paradigm, level of abstraction and other features, computational class, IO functionality, then implementation status. But that's mostly arbitrary. —ehird 13:01, 28 March 2012 (UTC)

New Category? (brainfuck Derivatives)

I am still fairly new on this wiki but it's becoming painfully obvious that often when people "create" a new language that it's just a derivative of brainfuck. Now while some of them have made me laugh (Ook, Blub and DNA# come to mind), I was wondering if another main category (other than "main" and "joke") existed dedicated simply to languages which are derivatives of brainfuck. It may already exist and I'm just not looking hard enough, but I just thought it was a good idea. —Foggalong 19:10 16 April 2012 (GMT)

It does.ehird 18:26, 16 April 2012 (UTC)

Abstraction level

There's a suggestion of making low-level the default, and having Category:High-level override it. I disagree, on the grounds that low-level versus high-level is a false dichotomy. Some languages are obviously low-level, such as those that are essentially stack-based machines, assembly-like or many of the minimalistic languages. Others are obviously high-level. But many are somewhere between, or combine low-level and high-level aspects.

As such, removing Category:Low-level and declaring it to be the default would force many languages to be classified as one or the other, in cases where either it hasn't been thought about or it cannot be clearly classified as one or the other. Not everything is either big or small, either hot or cold, or either high or low. There is a middle. — Smjg (talk) 20:06, 19 April 2012 (UTC)

I think the suggestion to make it default is because so many languages are minimalist tarpits, compared to the fewer number that are more elaborate. I basically agree, though; it's not so universal that it should be the default. I've removed the note about it. (Besides, things like that should go on this talk page, rather than the categorisation page itself.) —ehird 20:47, 19 April 2012 (UTC)


Category:Probabilistic has existed for some time but not been listed here. I added it and made it a subcategory of Category:Nondeterministic. --Ørjan (talk) 21:39, 4 September 2012 (UTC)

Proposed category: Instruction-rewriting

(or Instruction-redefining, or something)

Languages like Emmental and Enema are currently categorized under Category:Self-modifying, but there's a huge difference between a program that can access its own 'source code' during runtime (like Befunge, Blank or Circlefuck) and a program that can define a few symbols to mean something specific (which to me is closer to functional programming - after all, Ocaml already allows me to redefine + and - so that they mean something completely different than addition and subtraction, if I want them to). I think Emmental, Enema, and maybe Grits and a few others would qualify for that category. --Koen (talk) 18:09, 31 October 2012 (UTC)

What about the more broader "Extensible paradigm" as a category rather than the rather limiting "Instruction-redefining". ( --AnotherTest (talk) 18:32, 31 October 2012 (UTC)
I agree the category "Self-modifying" doesn't seem quite right for these. I like "Self-redefining" fwiw. Chris Pressey (talk) 21:02, 31 October 2012 (UTC)

Category:ICFP contest

I propose this category. Like every other of these contests define a language in their problem. We still have to add at least the raytracer one, the ant brain one, and the interactive fiction one. – b_jonas 07:02, 3 April 2014 (EDT)

FOR. --Ørjan (talk) 15:58, 3 April 2014 (EDT)
I agree. --Pro465 (talk) 15:49, 13 September 2023 (UTC)

Musical esolangs

User:TomPN's recent spree has made it clear just how many music-related esolangs there are (I'd only previously known of perhaps three). I suggested cross-linking them, but may be a category would be a better idea with them all just linking to the category in their "See also", apart from highly related languages like Prelude and Fugue. As this is a new category, we need agreement. Anyone support/oppose this? --ais523 12:44, 24 October 2014 (UTC)

I greatly support this. It would be an excellent idea. User:TomPN

Support. --Ørjan (talk) 09:20, 2 November 2014 (UTC)

Proposed Category:Big Five

User:Ais523 says it's informally agreed that INTERCAL, Befunge, Brainfuck, Unlambda, Underload for the "Big Five" of esolangs. This should be canonized by a category. – b_jonas 10:14, 20 February 2015 (UTC)

  • It doesn't make sense to me to make a category which only has five languages applied to it. Besides, people could claim that their language is one of the "Big Five". --Posted by Maikeru51! (talk) 17:00, 17 October 2021 (UTC)

Category: Libraries

A category for libraries for Esolangs and for sufficiently esoteric libraries for normal langs (that last part is optional)

Description: "Libraries for Esolangs (Whether or not the change the esotericism factor of the language (up or down))or Esoteric libraries for non-esolangs."--Hppavilion1 (talk) 22:53, 17 June 2015 (UTC)

Array-based languages

I'd like a category for array-based languages, that is, languages in which the built-in arithmetical operators usually automatically map through arrays/lists of numbers. Examples of (not necessarily esoteric) array-like languages are all variants of APL, matlab, Mathematica, maxima, GAP, Jelly. (Languages with operator overloading also sometimes have extension libraries that define types that behave in a way that ordinary arrays of numbers do in an array-based language, examples are: the PDL module for Perl, Numpy for Python, the std::valarray class for C++, the Eigen library for C++. This might not be relevant for the categorization here, but may make it easier to understand what I mean by array-based.) --(this comment by B jonas at 19:15, 21 June 2016‎ UTC; please sign your comments with ~~~~)

Enterprise languages

There should be a category for languages used in The Real World. This would include languages like CUTLASS and the infamous BANCStar. Jafetish (talk) 08:03, 3 March 2017 (UTC)

I've pretty much got to support this since I suggested the name :P --Ørjan (talk) 00:20, 4 March 2017 (UTC)

Languages that ignore chars or strings

There should be a category for languages that ignore all but a few characters (eg. Whitespace). --(this comment by Programmer5000 at 18:29, 7 June 2017‎ UTC; please sign your comments with ~~~~)

This might be too subjective, how many would "a few" be? Brainfuck ignores all but 8 characters, is it "a few"? --None1 (talk) 11:49, 21 March 2024 (UTC)

Category proposal: languages designed to be easy to implement in esolangs

There's a "genre" of esolangs that I've been increasingly involved with recently, and it strikes me that it could do with a category of its own. That's languages which are designed, not so much to be programmed in, but to be interpreted by or compiled into other languages (typically as a method of proving those language's computational class). The aim would be to give language designers a quick guide of languages that they can try to implement or compile from in order to prove their language's computational class.

Bitwise Cyclic Tag (or just cyclic tag by itself) is probably the best example of the genre, but things like SK combinatory logic, the various "simpler than Minsky" counter machines, and the like would also count. (Of course, there's a lot of potential grey area here; minimized Underload is used in TCness proofs sometimes, but it's not all that easy to implement.) Incidentally, I'd argue that if an esolang finds it trivial to implement brainfuck, it's either insufficiently tarpitty (for its computational class to be in serious doubt) or else insufficiently creative.

Perhaps this would work better as an article, something like "How To Prove Your Language Turing-Complete", rather than a category? It'd be a bit awkward to put it in mainspace, though (especially as that name seems like fertile inspiration for an esolang), but I can't think of any namespace where it'd fit better. Or perhaps we could put the article on the category description page. Ais523 non-admin (talk) 13:50, 13 March 2018 (UTC)

Category proposal: constant string printers

It strikes me that a fairly commonly made category of language is that in which each command runs in sequence from start to end (and then ends), and the program has no form of control flow (in the sense that each command always does the same thing when run and the previous contents of memory are either irrelevant or effectively linear, in the sense that they are always combined into the output in the same way). These languages tend to have output but not input. The +-. subset of brainfuck is a good example of the sort of thing I mean; it clearly has substantially less power than even a finite-state machine. I'd like to propose adding this as a computational class, so that languages with this level of power can easily be identified separately from the FSMs. (Are all languages of this level necessarily unusable for programming?) --ais523 19:48, 25 June 2018 (UTC)

There are indeed a lot of such dead fish languages. However, most such languages are uninteresting, so I don't think you'd browse the category often. Perhaps a visible category would discourage people from creating more such pages, or you could use it as a negative filter to skip those pages when searching for hidden gems. – b_jonas 12:41, 11 September 2023 (UTC)
"(Are all languages of this level necessarily unusable for programming?)" ­– apparently not, ELEMENTARY is usable for programming and actually fairly powerful. (We could probably do with an article on that; there's one on Wikipedia, wikipedia:ELEMENTARY, although it's too technical to really get an idea of what the language is like.) That said, unusually for this sort of language, it's normally considered to take input. --ais523 12:50, 11 September 2023 (UTC)


Should this be one?

  • Very complicated
  • Not complicated, mot simplified
  • Extremely simplified

(moved here from article edit by User:A). --Ørjan (talk) 08:16, 10 July 2018 (UTC)

IMO it's too subjective as written (see, for example, me and A arguing over what languages are intentionally hard to read). There'd also be a bit of overlap with Category:Turing tarpits. (Perhaps that should be split into just a tarpit category, without worrying about whether the language is actually Turing-complete? There are definitely "sub-Turing" tarpits around, which may or may not have resulted from a failed attempt to make a Turing tarpit.) --ais523 18:02, 10 July 2018 (UTC)


Should this be one?

  • Unreadable(No or a bit connection between command and function, and/or source is extremely messy without modified)
  • Easy to read(Complete connection between command and function, or source is like a normal language)

--User:A 12:04 21 Jul.2018

I think this is too subjective. People vary with respect to how easy they find various syntaxes to read. --ais523 18:44, 21 July 2018 (UTC)

Looks like

Should this be one?

Others can be added. Maybe they can be added in the "Source format". --User:A19:32 22 Jul. 2018

I don't think we should add categories for something that applies to just a few articles – that's what "See also" is for. Besides, Lisp isn't just about syntax. Logo is Lisp-like, for example, but I don't think log is. --Ørjan (talk) 15:42, 22 July 2018 (UTC)


Should this be one? Category:Linear bounded automata does not seem to describe every BSM. As far as I can tell, bitch is one of them that could not fit into this category.--A (talk) 13:25, 24 May 2019 (UTC)

There already is a Category:Bounded-storage machine that was created at some point. I do not object to its continued existence. --Chris Pressey (talk) 11:56, 22 June 2020 (UTC)

Proposed Categories: Arch-based and Bootstrapped

I recently made an Esoteric data structure called an Arch. There are already 3 languages that use the arch as their data structure, so would the Arch-based category be in order? Further more, there are many languages and joke languages alike that havery self interpreters, or are bootstrapped. I'm proposing a sub-category for the implemented category called Bootstrapped. It would help find all the languages with self interpreters. Areallycoolusername (talk) 14:41, 19 July 2019 (UTC)

I do not think that adding an Arch-based category is a good idea; only two people are developing in it. Your self-interpreter request is nice and is possibly acceptable. --A (talk) 02:30, 24 July 2019 (UTC)

HQ9+ Derivatives

There are quite a lot of languages based on HQ9+: I made a list at User:IFcoltransG/HQ9+ derivatives. I propose a category a la Brainfuck derivatives to make them easily findable. IFcoltransG (talk) 00:21, 17 January 2020 (UTC)

Agree vote, though I have no ideas if I was supposed to be a voter. --YamTokTpaFa (talk) 02:12, 19 March 2020 (UTC)

Subcategories for the Non-Textual category.

There should be subcategories of the Non-Textual category, so that it would be easier to search for these interesting languages which are not even used as text . I suggest the following categories:

  • Auditorial languages or Musical languages - Programming languages in the form of MIDI files or similar. (e.g Velato, Musical notes or Bitoven)
  • Pictorial languages - Programming languages in the form of PNG, JPG, or any image file. (e.g Piet, BiTrax, Brainloller)
  • Any more needed categories.

SunnyMoon (talk) 19:39, 29 August 2020 (UTC)

Can we have an Imperative paradigm category now please?

I get that imperative is the most common paradigm and anything that isn't explicitly assigned some other paradigm is most likely imperative, but:

  1. How do you readily get access to a list of such languages?
  2. What about the ones that aren't imperative but just haven't yet been categorized by paradigm?

I volunteer to go through as many languages as I can and add the category if it is created. --Quintopia (talk) 10:08, 31 December 2020 (UTC)

I agree with this category addition. A google custom search should give all the languages which mention "imperative": Link. Maybe a front page announcement for the category addition would be useful to notify language creators. --Razetime (talk)

Both points are very true, moreover non-esoteric languages that are said to be "imperative" these days are a lot more than just imperative. True pure imperative languages are generally esolangs (brainfuck is imperative, C is imperative+procedural+stringreplacement), and thus this category that is almost exclusive to esolangs should be represented on the esolang wiki ^^. --AnimaLibera (talk) 04:35, 24 January 2021 (UTC)

I don't have an objection to this (although it would be a lot of work to put the category inclusions in so I won't be implementing it myself). We'd need to think about what an imperative language actually is; in particular, do things like The Waterfall Model count? (It's mostly imperative in nature, but doesn't have an instruction pointer, and that may exclude it.) --ais523 00:46, 12 April 2021 (UTC)


I think categories should be categorized too, ie there should be a Category:Memory model that only includes Category:Cell-based, Category:Stack-based, Category:Queue-based, Category:Deque-based in it, and it itself should be in a Category:Main language classifications. --Betseg (talk) 14:49, 10 April 2021 (UTC)

This is why the page is grouped into sections. —User:PythonshellDebugwindow (talk) ~~~~ 20:54, 10 April 2021 (UTC)

I propose the category "Esoteric IRC bots"

There are several articles about existing IRC bots and most of them don't even have any category. It feels wrong to me and I just found that in Wikipedia there is even such a rule: "Every Wikipedia page should belong to at least one category." --Nakilon (talk) 11:25, 24 May 2021 (UTC)

Not true, most of those articles are already in Category:People. – b_jonas 12:37, 11 September 2023 (UTC)

Category:No input

There are a lot of esolangs without output, and I think there should be a category with them. ResU (talk) 18:35, 4 June 2021 (UTC)

How would this be different from Category:Output only? --ais523 19:39, 4 June 2021 (UTC)

It isn't different. But there are some esolangs which are not in Category:Output only which do have output only. ResU (talk) 21:05, 4 June 2021 (UTC)

Category Proposal: 'Impossible To Implement' as Subset of unimplemented

Not all unimplemented languages can necessarily be implemented, but most can. I think that this is an important distinction, as many unimplementable languages aren't joke languages, and so technically aren't covered by any categories. --PolySaken (talk) 01:09, 23 June 2021 (UTC)

We already have Category:Uncomputable, which covers most of these. It wouldn't cover, e.g., languages which can't be implemented because the specification contains a contradiction, or because the implementation would have to have been written in the past, or the like, but such languages are likely to be jokes. --ais523 01:11, 23 June 2021 (UTC)

Tacit programming

As explained at wikipedia:tacit programming, we have pages for several languages which should be described in terms of their "natural style", including Forth, APL, pipelines in Unix shell commands, crowd favorite Jelly, and of course, my own conflict of interest, Cammy. We also have a page on pointfree programming already. I am not going to bikeshed the category name, but we should have a category for tacit/pointfree languages. (Also, as the range of examples demonstrate, it shouldn't be a subcategory of any other paradigm.) Corbin (talk) 16:55, 15 August 2021 (UTC)

Abstract algebraic languages

Many languages explicitly attempt to incorporate a rich wikipedia:abstract algebraic structure. Here are some examples. I've split these up so that the conversation can be threaded, but ideally we would add all of these wiki categories. Corbin (talk) 18:00, 9 September 2021 (UTC)


A language's programs form a wikipedia:monoid when there is a way to compose programs syntactically and an identity program which acts as a unit for that composition. By vertical categorification, the language itself is a "monoidoid", more typically called a "category". By the folklore of concatenative languages, and in particular Von Thun's work with Joy, all of the concatenative and tacit languages would go in this wiki category. (...if we had one! See prior topic on a wiki category for tacit languages.)


To form a wikipedia:group (mathematics), we start with a monoid, but add an inverse program or "antiprogram" for every program. A program composed with its antiprogram is the identity program; the antiprogram "undoes" its corresponding program. This means that these languages are reversible. Examples:

By vertical categorification, we have that each of these languages is a wikipedia:groupoid, a venue for wikipedia:homotopy type theory.

Is every reversible language a group? Only if they are also concatenative! In that case, we can check that the reversed version of each program is exactly its antiprogram.


To form a wikipedia:semiring, we take two monoids and lock them together so that one distributes over the other. By tradition and also suggestive analogy, one monoid is called "addition", its unit "zero"; and the other monoid is called "multiplication", its unit "one". It can be shown that addition must be commutative, which implies that programs can be executed in parallel. (This is yet another instance of the wikipedia:Eckmann–Hilton argument.) Examples:

Note that every grammar for regular expressions forms a wikipedia:closed semiring. Dolan 2013 "Fun with Semirings" casts several classical algorithms in this form, so that The Waterfall Model and relatives might be related to this concept.


Chrissey 2007 "Potro" is a proposed language which explores whether any interesting languages can form rings.

Plurality of category name

I think we should standardize whether the category name is plural or not (e.g. Golfing language is singular but Joke languages is plural). I don't think I need to explain to you all why I think this is important, as you are all very smart! However, is there any good reason to not do this that I may be missing? Thammks TheJonyMyster (talk) 19:54, 27 September 2021 (UTC)

Category:Project Euler

Do we need a Category:Project Euler? There are already fifteen pages related to Project Euler. I don't want to make them clutter up the Category:Program forms and annoy other users. Thank you. ProjectEuler (talk) 08:47, 11 January 2022 (UTC)

Redirect Pages

This category would be used just for you to know if a page is a redirect or not.

Each redirect page created would be added automatically to this category. --(this comment by CappyIsCrappy at 17:29, 14 May 2022‎ UTC; please sign your comments with ~~~~)

This already exists, Special:ListRedirects. (A "Category" is populated manually; it's "Special" pages that handle automatically generated lists.) --ais523 19:49, 15 May 2022 (UTC)
Is there a similar list for disambiguation pages? Squidmanescape (talk) 18:36, 4 May 2023 (UTC)

Proposed Category: Category for implemented stubs

idea proposed by User:Yes

	A category for implementations of work-in-progress esoteric programming langauges,
	or esoteric programming langauges that are stubs.

--Yes (talk) 22:33, 2 July 2022 (UTC)

Procedular Paradigm

Shouldn't the procedular paradigm be added? I guess technically some procedular languages might fit into other paradigms, but it could be useful if you can classify your language otherwise. Languages based on the Procedular Paradigm

--SpaceByte (talk) 15:00, 20 January 2023 (UTC)

User Categories

Other categories to consider include user categories. Maybe a Category for a date joined. Category:Well_Known for maybe users like ais523, just general categorization of users. --SpaceByte (talk) 14:43, 1 February 2023 (UTC)

Disambiguation Category / Lists Category

As far as I know, there is no master list of disambiguation pages, unlike redirects. If there is, then ignore this. If not, I think a category called "Disambiguations" should be added to the disambiguation template, so that these pages do not show up as uncategorized.

I think having a category of lists will make it easier to find lists of things. As mentioned above, the lists can be useful because you can do things you wouldn't be able to do in a category page or something like that.

I may come up with other ideas. Squidmanescape (talk) 23:08, 8 May 2023 (UTC)


a SNACBIT is an awesome datatype and it needs a category cinnamonytalk 15:00, 23 June 2023 (UTC) edited by cinnamonytalk 15:00, 23 June 2023 (UTC)

Propose Category:No-code esolang

Shall we create a category that lists all the no-code esolangs? --None1 (talk) 12:17, 11 September 2023 (UTC)

A question

should not categories like Category:Tree-based, and Category:Graph-based be in Esolang:Categorization#Memory too? thanks in advance! --Pro465 (talk) 09:39, 13 September 2023 (UTC)

I think so, too. --None1 (talk) 13:43, 13 September 2023 (UTC)

Is Category:Unimplemented really neccessarry?

There are the categories Category:Implemented and Category:Unimplemented in this wiki. However, an esolang that is not implemented is certainly unimplemented, so if one category exists, we don't need the other one. --None1 (talk) 11:54, 8 October 2023 (UTC)

One of the main ideas behind the Unimplemented category is to serve as a starting point for people who are looking for existing esolangs to implement. If you remove the category, there's no easy way to get a list of unimplemented esolangs (that people cared enough about to add the category to). (Note that this means that it would make more sense to define the category to exclude esolangs that would be impossible to implement, such as those in Category:Uncomputable, and joke esolangs which aren't generally interesting to implement.) --ais523 15:07, 12 October 2023 (UTC)
Also there are pages that discuss multiple variants of an esolang, some but not all of which are implemented. I added Amicus to both the implemented and unimplemented category for this reason, because there's an implementation for the subset Amicus Severus which doesn't have its own page. – b_jonas 19:37, 12 October 2023 (UTC)

However, there are many esolangs that are not in Implemented or Unimplemented or Uncomputable, also many users do not tag their esolangs Unimplemented when it is not implemented. --None1 (talk) 05:24, 13 October 2023 (UTC)

Propose Category:Languages that involve deletion

Whether we should create a category for languages that involve deletion, like Python but bad, DeleteScript, Earfuck, etc. --None1 (talk) 11:44, 12 October 2023 (UTC)


Some non-esoteric languages (like Python, Lisp) are tagged as Category:Languages, so they will be counted in the main page as esoteric languages. I think this is inappropriate, so there should be a Category:Non-esoteric to tag non-esoteric languages. --None1 (talk) 23:44, 15 December 2023 (UTC)