In my recent challenge, the task is to generate an output including the language name, and then generate an error (in two different languages).

Regarding the "language name", I used the following rules (since someone mentioned that another challenge was closed due to the "language name" being unclear):

  • In the output, language names should exactly follow:
    • The name listed on TIO, optionally excluding the version number and/or the implementation name (e.g. if you use JavaScript (Node.js) as one of your languages, you can use JavaScript for your language name, but not JS or Javascript.)
    • The full name on the official website (or GitHub repo) if your language of choice is not available on TIO.

I believe that these rules cover most languages used in PPCG (and a few others on chat said it looks clear enough when this post was in the Sandbox).

But then @Mark asked in the comment:

  • What about languages that are too old to have an official website or GitHub repository?

I've got some ideas, but all of them have some amount of ambiguity:

  • Submissions on PPCG must have a working compiler/interpreter to run the program on. And the compiler/interpreter should have some name associated with it.
    • A compiler often has an implementation name, not language name, as its name (e.g. GCC or Clang for C).
    • What if there are multiple implementations and they use different names for that language?
  • Just fall back to the most common name (or any common name) for such a language.
    • How to define "most common name"?!
    • "any common name" could lead to nonsense arguments in order to reduce bytes or something, and this might be an unfair advantage against languages with a well-established name.
    • "any common name" is also a problem when e.g. a challenge wants to ban chars used in the language name.

Any possible improvements to the above, or any other suggestions are welcome.

  • 12
    \$\begingroup\$ I think the real solution is to just avoid asking challenges based on language name. Just my 2 cents. \$\endgroup\$
    – Wheat Wizard Mod
    Mar 22, 2018 at 0:45
  • 1
    \$\begingroup\$ In cases like these, you basically have to give some guidelines, and then actively provide support for edge cases. The language name is an unobservable requirement, and therefore there is no way to have any reasonable, unambiguous rules. \$\endgroup\$ Mar 22, 2018 at 2:57
  • \$\begingroup\$ @NathanMerrill I have been doing that way so far, but that particular edge case looked like a hard nut to me which led me to post this in the first place. \$\endgroup\$
    – Bubbler
    Mar 22, 2018 at 4:42
  • \$\begingroup\$ @user56656 I agree it's one way to solve this problem (and I don't think that there are any other interesting challenges which involve the language name). But if someone happens to come up with a great idea in the future, I don't want it just blocked by this obstacle either. \$\endgroup\$
    – Bubbler
    Mar 22, 2018 at 4:47

2 Answers 2


Use name in following fallback rules:

  1. Official name used by the compiler / interpreter
    • Since we define language as its implementation, we should look at this first;
    • We are talking about name of languages, not name of compilers
      • Use C instead of IntelĀ® C Compiler;
      • Use JavaScript instead of Node.js;
    • If different implementation (maybe dialect) use different names, chose the one which your program works on;
      • Use MySQL, PostgreSQL, SQLite instead of SQL;
    • Official name may come from official website, official code repository readme (including GitHub), official documentation. If they give different names, any one is fine.
  2. Official name used by the language specification
  3. Title of English Wikipedia article of the language (excluding disambiguation parts)
    • Use last version of the article when question posted
    • Page title may be incorrect due to some reason (e.g. technical restrictions). Use the correct one described in the article.
  4. Title of Esolang article for the language
  5. Any common name but marked as non-competing

TIO is not a good standard for language names. It has only 500 languages. There are lots of languages not included, so it's best to ignore what TIO has. TIO gets its interpreters from github anyway. Just skip the middle man and use the official language page.

If a language is too old to have an official page, hopefully it at least has an official name to use. If not, consider it disallowed.

  • 1
    \$\begingroup\$ The problem is languages such as Fortran or BASIC, which have a number of informally-named dialects. \$\endgroup\$
    – Mark
    Mar 22, 2018 at 22:35

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .