Esolang talk:Categorization

From Esolang
Jump to: navigation, 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)

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)

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 catagory?

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 catagory or maybe sub catagory 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 catagory, 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)

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)

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

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)