22
\$\begingroup\$

I was hoping to answer a question using a particular cellular automaton that was defined 17 years ago (before the question was asked) but for which I am unable to find a free interpreter on the internet.

If I made an implementation that followed the specifications formally laid out in the paper that introduced this cellular automata would I mark my answer as non-competing?

It has been agreed upon that answers languages made after a challenge must be marked as non-competing. It is also agreed upon that a language is dependent on its implementation and not its specification.

The implication of these two existing rules is that I would. However the intention of the former is to keep people from making up new languages to beat a challenge while that is certainly not what is going on here. There was no way that either myself or the person that designed this language could have had any knowledge of a PPCG challenge 17 years ago.

Are answers in languages that were specified prior to a challenge and had no extant implementations at the time the question was asked considered competing?

\$\endgroup\$
  • \$\begingroup\$ Extremely closely related. It's not technically a duplicate, but the sprit of the questions are the exact same. \$\endgroup\$ – AdmBorkBork Mar 2 '17 at 20:18
  • 12
    \$\begingroup\$ Evidence #312 that this non-competing policy of ours is doing more harm than good... \$\endgroup\$ – Martin Ender Mar 2 '17 at 20:19
  • 2
    \$\begingroup\$ At this point it might be worth drawing a distinction between questions which ask what the rules on languages are (which are all answered "the interpreter defines the language, languages with no interpreter don't exist"), and questions which are aware of the policy but want to argue in favour of changing it. There's plenty of cases where the current rules lead to an absurd result, but it's hard to argue for a change without having the question closed as duplicate. \$\endgroup\$ – user62131 Mar 9 '17 at 1:04
13
\$\begingroup\$

As the rules currently stand, no.

From Doorknob's answer about non-competing answers:

The interpreter(/compiler) defines the language

A spec is not a language. For the purposes of PPCG, a programming language is defined by its implementation.

If the interpreter is fixed after the challenge is posted, the answer must be marked as non-competing—just like any other answer in a language that was created after the challenge

"A spec is not a language."

This is pretty much it. The spec can exist, but it's not a language (by our definition) until it's implemented. Your answer would have to be non-competing. (However, as Martin noted, this policy is doing a bit more harm than good)

I personally think that these non-competing rules should be tweaked a little bit, but that's its own meta post. Under the current rules, that's not allowed.

\$\endgroup\$
  • \$\begingroup\$ I don't think this answers the question. Doorknob's answer is about the behavior of the language. I am asking if the date of creation is the same as the interpreter. \$\endgroup\$ – Wheat Wizard Mar 2 '17 at 20:47
  • 4
    \$\begingroup\$ "The interpreter defines the language" basically implies that without an interpreter, it's not a language. \$\endgroup\$ – Rɪᴋᴇʀ Mar 2 '17 at 20:52
3
\$\begingroup\$

We should make an exception allowing this.

The idea that you can't use languages created after a challenge was posted is to prevent people from creating languages specifically to solve a challenge. If you write an implementation of a language that follows the language spec exactly, then no one can say that it was designed for the purpose of solving the challenge, so yes, you should be able to use that implementation.

Technically we consider that the implementation, not the specification, defines a language, but if the implementation matches the specification we should consider the creation of the spec when determining when a language was created.

Note that if there turn out to be any inconsistencies between the spec and implementation, or parts of the spec that are unclear, you cannot use these features in any challenge as they would be considered to post-date the challenge, similarly to our way of treating a language which was created before, but last updated after, the challenge. The specification is the "Version 1" of a language, in that sense.

\$\endgroup\$
  • 3
    \$\begingroup\$ As much as I dislike the non-competing rule I'm strongly against making exceptions like this. The reason why we don't consider specifications to be languages is specifically because it's near impossible to tell whether specifications are unambiguous and whether they are correctly implemented unless the specification is written with mathematical rigour. Implementing an old specification only hides this problem. I'd say either we talk about whether we really need the non-competing rule in a separate meta post or we follow it as Riker says. But exceptions only make things worse. \$\endgroup\$ – Martin Ender Mar 2 '17 at 23:38
  • 2
    \$\begingroup\$ (especially since you're essentially making an exception to the much more fundamental rule that languages are defined by implementations, not an exception to the non-competing rule) \$\endgroup\$ – Martin Ender Mar 2 '17 at 23:39
  • 1
    \$\begingroup\$ Another problem is that the submission is untestable without an interpreter \$\endgroup\$ – Nathan Merrill Mar 3 '17 at 1:28

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