Erweiterung:WikiLambda/Genehmigung von Implementierungen und Tests
Jeder Mitwirkende an einer WikiLambda-Installation wie Wikifunctions kann eine neue Implementierung oder einen neuen Test für eine Funktion erstellen. Implementierungen und Tester befinden sich beide auf eigenen Wikiseiten. Beide Typen müssen jedoch von jemandem mit den entsprechenden Benutzerrechten genehmigt werden, bevor sie von den Objekten verwendet werden können, mit denen sie verbunden sind, um Vandalismusangriffe zu erschweren.
Tests und Implementierungen sollten nur genehmigt werden, wenn sie der Semantik der Funktion entsprechen, die sie testen oder implementieren. Dies ist eine Form der Codeprüfung.
Tests und Implementierungen können von Benutzern mit denselben Rechten wieder deaktiviert werden, falls sich herausstellt, dass sie falsch sind. Dies sollte der einzige Grund sein, sie zu deaktivieren. Mit allen anderen Gründen sollte Wikifunctions robust umgehen können. (Im frühen Stadium des Projekts kann es jedoch Fälle geben, in denen dies nicht zutrifft. Diese sollten als Fehler gemeldet und manuell behandelt werden, bis sie behoben sind.)
Häufig gestellte Fragen
- Welche Konsequenzen hat es, wenn eine Implementierung genehmigt wird, obwohl sie falsch ist?
- Funktionsaufrufe dieser Funktion können falsche Ergebnisse zurückgeben. Außerdem sollten die verschiedenen Implementierungen einer Funktion alle miteinander übereinstimmen. Eine Implementierung, die dies nicht tut, kann zu Verwirrung führen. Wenn zwei verschiedene Implementierungen derselben Funktion unterschiedliche Ergebnisse liefern, ist dies tatsächlich ein Hinweis darauf, dass eine der beiden Implementierungen falsch ist. Schließlich kann es sein, dass das System Implementierungen herabstuft, die nicht mit anderen Implementierungen übereinstimmen. Dies ist noch nicht implementiert.
- Welche Konsequenzen hat es, wenn ein Test genehmigt wird, obwohl er falsch ist?
- Implementierungen, die die vorgegebenen Tests nicht bestehen, werden herabgestuft und es ist weniger wahrscheinlich, dass sie aufgerufen werden. Dies kann dazu führen, dass eine vollkommen korrekte Implementierung nicht mehr ausgeführt wird, was die Leistung des Systems beeinträchtigen oder zu falschen Ergebnissen führen kann. Dies ist noch nicht implementiert.