# Programming languages that do not match our default posting criteria

In the What are programming languages? meta post we seem to have come to the consensus put forth by Peter Taylor that:

A purported programming language should be accepted as such if and only if it is capable of addition of natural numbers and primality testing of natural numbers.

Peter's post goes into more depth but the point is that not just anything one might want to call a programming language counts as a valid language you can answer in here on PPCG. The main exception to this rule is when the original poster of a challenge specifically allows languages that would otherwise be forbidden.

The problem I see, however, is that there may be many old answers on this site that use languages that are now considered forbidden. A user, especially a new user, could easily see these answers and assume that the language is allowed (perhaps never having seen Peter's post). Then when they answer in that language they will be disheartened by downvotes and fussy comments.

Additionally, if a user wants to answer in a relatively uncommon language that they may just be learning, it might not be clear if the language satisfies our definition of a programming language or not. For example, if someone is just trying to output Hello, world! then their focus will not be on proving that the language can generate primes.

I suggest we make a list of supposed "programming languages" that are forbidden by default here on PPCG so all users can easily make sure their languages are valid without wasting time writing an entire answer or specifically asking on meta.

Each answer here should cover one purported programming language (or a group of highly related languages) and explain why it doesn't satisfy our criteria. This is not the place to invalidate languages you don't like. Only languages that clearly do not satisfy our definition of a programming languages should be posted.

Answers here only invalidate languages if they have a score (upvotes minus downvotes) of at least three. This ensures that no single person can invalidate a language. (I'm completely fine with changing this +3 vote threshold.)

• Were non-programming languages really forbidden by default here, for tasks not related to programming languages themselves? – jimmy23013 Nov 1 '15 at 10:56
• Who downvoted this? – user45941 Nov 2 '15 at 17:36
• Sorry, but I don't understand why you want to disallow languages. Stuff like HQ9+ isn't funny and yes, I can see why you don't want it, but it's useless as well. – 0WJYxW9FMN Jan 3 '17 at 13:37

# MetaGolfScript and Co.

I would go through them one by one if I could, but I can't :P.

It's great for lolz, but ruins the fun when implemented in code-golf challenges. (I mean, who wants zero-byte answers anyway?)

• I would argue that it isn't even great for lolz. – Alex A. Nov 1 '15 at 18:34

# Precisely the languages that don't satisfy our definition

An exhaustive list of non-programming languages will never be up-to-date; literally anybody can create a new "programming" language. Even trying to keep up would require considerable effort from the community.

The problem I see, however, is that there may be many old answers on this site that use languages that are now considered forbidden. A user, especially a new user, could easily see these answers and assume that the language is allowed (perhaps never having seen Peter's post).

I agree the vast amount of rules we have in the help center, the wikis and here on meta can be overwhelming for a new user, but adding yet another post every new user should know about doesn't really solve that problem. A new user can miss this thread just as easily as Peter's post.

To make matter worse, we would be replacing a unique criterion for all existing and future languages with a continuously changing list. Languages might get forbidden all of the sudden, so even established users could use a recently forbidden language by accident. This will make matters more confusing, not less.

Additionally, if a user wants to answer in a relatively uncommon language that they may just be learning, it might not be clear if the language satisfies our definition of a programming language or not. For example, if someone is just trying to output Hello, world! then their focus will not be on proving that the language can generate primes.

A primality test can indeed be a bit complicated in some langauges, even if possible. If you think that Peter's definition is too complex, we could try too come up with a simpler one.

Also, printing a fixed string is essentially a challenge, and the current consensus on Should answers to fixed-output challenges be written in a programming language? is that the restriction to actual programming languages does not apply to those challenges anyway.

Finally, I'm worried that the whole idea of voting on languages is just too arbitrary. Somebody might – at some point – add actual programming languages to this post. Given the great amount of support for J and GolfScript suck all the enjoyment out of Code Golf and the low threshold of +3 to forbid a language by default, I might wake up one day to find out that I cannot use Pyth or CJam anymore.

Requiring a 2 : 1 ratio like the standard loopholes do would help with this issue, but new users see only the score, not the vote breakdown. Increasing the threshold to +n doesn't help either; +11/-1 is clear consensus, but +110/-100 is not.

• +a billion if I could. I think this is a very important point. – Alex A. Nov 1 '15 at 18:35
• Yes there will always be new purported languages but they will be invalidated by Peters rule and (hopefully) rarely survive long on PPCG. This list is mainly for languages that existed before the rule that we have plenty of answers in. For example, SVG is invalid but a user searching for SVG on main will find dozens of upvoted answers, yet searching for SVG on meta gives nothing relevant. – Calvin's Hobbies Nov 1 '15 at 18:47
• And I'm fine with changing the threshold. 3 was an arbitrary choice. – Calvin's Hobbies Nov 1 '15 at 18:47

# Encodings such as base64

Base64 is an encoding, decoded by the base64 decoder. It literally isn't a programming language at all.

## HQ9+ and variants

Let's go through these one-by-one:

1. HQ9+ is only capable of printing hello, world!, the program's source code, and 99 Bottles of Beer. This fails miserably to meet our standards.
2. HQ9++ is functionally identical to HQ9+, and so also is forbidden.
3. CHIQRSX9+ adds a few more commands, but still does not meet our standards, without the X instruction. The X instruction is vaguely defined and implementation-specific; the Perl implementation provided simply randomly modifies the input and attempts to run it as Perl code (which is not guaranteed to work, and the functionality will change each run). Still not valid.
4. HQ9+B adds the B command, which interprets the input as a Brainfuck program. It's not a programming language; it's a Brainfuck interpreter, and thus fails to meet the requirements.
5. HQ9+2D is ostensibly the same as HQ9+, but interprets input in a 2D, Befunge-inspired fashion. Once again, still not valid.
• At this point, you might as well disclude ShadyAsFuck as well, since it's a compressed BF variant. – Addison Crump Nov 1 '15 at 11:27
• @VoteToClose I disagree. It's hardly compressed and any Brainfuck variant is quite unlikely to be competitive in code golf anyway. I see no reason to disallow it. – Alex A. Nov 1 '15 at 18:33
• @AlexA. Hmm. I personally would never use SAF competitively. That being said, it would be a nice one to post every once in a while... – Addison Crump Nov 1 '15 at 18:37
• @VoteToClose Then why recommend disallowing it? :P – Alex A. Nov 1 '15 at 18:37
• @VoteToClose The difference between Brainfuck and HQ9+ is that Brainfuck is actually useful, if a bit unwieldy. It's Turing-complete, so it passes our requirements and then some. – user45941 Nov 1 '15 at 18:54

# Text, aka Cat

It's the language that every program written in it is a quine, and you can't write programs to do anything else. (But there is also a language that satisfies the criteria also named Cat.)

And most answers in Text probably also works in PHP or /// anyway.