Wikifunctions:Status-Updates/2024-03-28

From Wikifunctions
This page is a translated version of the page Wikifunctions:Status updates/2024-03-28 and the translation is 100% complete.
Wikifunctions Status-Updates Translate

<translate> Abstract Wikipedia via mailing list</translate> <translate> Abstract Wikipedia on IRC</translate> <translate> Wikifunctions on Telegram</translate> <translate> Wikifunctions on Mastodon</translate> <translate> Wikifunctions on Twitter</translate> <translate> Wikifunctions on Facebook</translate> <translate> Wikifunctions on YouTube</translate> <translate> Wikifunctions website</translate> Translate

Das Erstellen von Tests ist nun viel einfacher!

Automatisch ausgefüllter Test für die Funktion in Kleinbuchstaben

Tests sind ein entscheidender Teil der Definition der Bedeutung von Funktionen und der Sicherstellung, dass alle Implementierungen dieser Definition entsprechen. Dennoch war die Erstellung eines guten Tests eine gewisse Herausforderung:

  1. Gehe zur Funktion und klicke im Kasten mit den Tests auf das Plus
  2. Wähle mithilfe der Suche den Funktionsaufruf aus, den du testen möchtest
  3. Gib die Argumente für den Aufruf ein
  4. Wähle mithilfe der Suche die Funktion aus, um das Ergebnis zu überprüfen
  5. Gib die Argumente für die Prüfung ein

Die Idee ist, dass der Test funktioniert, indem der Aufruf ausgeführt wird, den du in den Schritten 2 und 3 erstellt hast, und dann das Ergebnis mit der in den Schritten 4 und 5 erstellten Funktion überprüft wird. Wenn die letztere Überprüfung wahr zurückgibt, war der Test erfolgreich. Wenn sie falsch zurückgibt, ist der Test fehlgeschlagen.

Die Auswahl der richtigen Funktion zur Überprüfung des Ergebnisses ist nicht immer einfach: Du musst den Ergebnistyp der Funktion kennen und entweder nach der richtigen Funktion suchen oder sie einfach kennen, um den resultierenden Wert zu überprüfen.

Vor einigen Wochen haben wir Typen um die Fähigkeit erweitert, ihre Gleichheitsfunktion zu kennen, d. h., welche Funktion (sofern vorhanden) zum Testen dient, ob zwei Werte dieses Typs gleich sind oder nicht.

Mit der in dieser Woche veröffentlichten Version wurde der Prozess der Erstellung von Tests erheblich vereinfacht: Du klickst auf die Plus-Schaltfläche und sowohl die Funktion zum Testen als auch die Funktion zum Überprüfen des Ergebnisses werden automatisch für dich ausgewählt und ausgefüllt. Du kannst sie immer noch ändern – beispielsweise, wenn die vorab ausgewählte Prüffunktion nicht geeignet ist und du etwas anderes benötigst. Aber du kannst jetzt einfach auf das Plus klicken, alle relevanten Argumente eingeben und den Test veröffentlichen.

Vielen Dank an Geno, den Entwickler hinter dieser Verbesserung der Lebensqualität! Wir hoffen, dass dadurch das Schreiben von Tests für alle schneller wird und dass es insbesondere für neuere Community-Mitglieder einfacher und leichter wird, zu verstehen, wie man das Richtige tut.

Letzte Änderungen an der Software

Ein großer Teil unserer Arbeit in dieser Woche war die Erstellung einer gut dokumentierten API, die für Helferleins, Werkzeuge und Drittanbieter konzipiert ist, um Wikifunctions auszuführen. Weitere Details folgen in Kürze! Darüber hinaus haben wir einige Funktionsverbesserungen vorgenommen, um die Verwendung von Wikifunctions zu vereinfachen.

Zunächst füllen wir, wie oben erwähnt, beim Erstellen eines neuen Tests jetzt automatisch den Testaufruf der zu testenden Zielfunktion und, sofern möglich, den Aufruf des Prüfers an die Gleichheitsfunktion des zurückgegebenen Typs aus (T358214).

Zweitens verwenden wir jetzt eine neue Funktion der Codex-UX-Bibliothek, um bei der Auswahl eines Typs oder einer natürlichen Sprache Optionen vorzuschlagen, anstatt zu erwarten, dass du den Namen einer Sprache bereits kennst (T350037). Wenn du bei Typen in das Feld klickst, werden Zeichenketten und boolesche Werte vorgeschlagen; bei natürlichen Sprachen werden die "Sechs Sprachen der Vereinten Nationen" vorgeschlagen. In Zukunft werden möglicherweise weitere Typen unterstützt und es wird eine On-Wiki-Kontrolle der angezeigten Optionen ermöglicht; diskutiere bitte im Wiki, wenn du Ideen hast.

In Bezug auf Fehler haben wir ein Problem behoben, bei dem wir neue Elemente in Listen immer erweitert haben, unabhängig von ihrem Typ (T359576). Wir haben die Spezialseite mit der Objektliste so korrigiert, dass sie, sofern verfügbar, die primäre Bezeichnung verwendet, anstatt eines Alias ​​(T358805). Wir haben die Logik korrigiert, die entschieden hat, ob im Seitenkopf ein 'Chip' für die Objektbezeichnung und der Untertitel für ihren Typ angezeigt werden soll, wobei für jede Bezeichnung die entsprechende Sprachkette verwendet wird (T360000).

Der gesamte von Wikimedia bereitgestellte Code verwendet seit dieser Woche die neueste Version der Codex-UX-Bibliothek, v1.3.5. Obwohl wir nicht glauben, dass die Aktualisierung der Bibliothek für den Benutzer sichtbare Änderungen in unserer Verwendung von Wikifunctions mit sich bringen wird, kommentiere bitte in der Projektdiskussion oder erstelle eine Phabricator-Aufgabe, wenn du ein Problem entdeckst. Wir haben auch die Ace-Bibliothek (von 1.14.0 auf 1.32.7) aktualisiert, die den Editor und die Syntaxhervorhebung beim Schreiben von Codeimplementierungen bereitstellt (die auch beim Bearbeiten von JS/CSS-Seiten, Benutzerskripten und Helferleins verwendet wird). Auch hier sollte die Aktualisierung keine wesentlichen Änderungen mit sich bringen, aber weise uns bitte darauf hin, wenn du Probleme bemerkst.

Anstehendes Freiwilligentreffen am 8. April

Das nächste Freiwilligentreffen findet am 9. April 2024 um 00:30-01:30 MESZ statt. Wir haben es zu einer anderen Zeit geplant, um anderen Leuten als üblich die Teilnahme zu ermöglichen. Die Uhrzeit ist vorerst einmalig. Wir arbeiten noch an der Uhrzeit, um so vielen Leuten wie möglich die Teilnahme zu ermöglichen und erwägen einen rotierenden Uhrzeiten, möglicherweise drei verschiedene Zeiten pro Quartal. Wir freuen uns über Rückmeldungen und werden die Teilnahmen dokumentieren.

Die Agenda des Freiwilligentreffens ist wie üblich:

  1. Zeit vor Beginn der Aufzeichnung zum Stellen von Fragen
  2. Beginn der Aufzeichnung
  3. Neuigkeiten zum Projekt (anschließend online geteilt)
  4. Zeit für Fragen
  5. Gemeinsame Arbeit an einer Funktion
  6. Zeit für Fragen
  7. Ende der Aufzeichnung
  8. Zeit nach der Aufzeichnung zum Stellen von Fragen

Wir freuen uns auf dich! Teile uns mit, wenn du gerne dabei sein möchtest, aber die bisherigen Uhrzeiten nicht gepasst haben und welche Uhrzeiten für dich in Frage kommen.

Gast-Autor in der nächsten Woche

Ich nehme mir eine Woche frei, aber wir haben nächste Woche einen Gast-Autor!

Funktion der Woche: nicht-oder (Z10231)

Ich habe mich schon seit einiger Zeit darauf gefreut, über die Funktion nicht-oder (Wikipedia-Artikel, Wikifunctions-Funktion) zu schreiben. Tatsächlich habe ich aus diesem Grund zuvor die Funktionen Verneinung und oder vorgestellt.

Nicht-oder ist das Gegenteil der Funktion oder. Genau wie die Funktion oder ist auch nicht-oder eine binäre boolesche Funktion: Sie nimmt zwei boolesche Argumente und gibt eines zurück. Da oder wahr zurückgibt, wenn eines der Argumente wahr ist, gibt nicht-oder nur dann wahr zurück, wenn weder das eine noch das andere Argument wahr ist.

Genau wie die anderen binären booleschen Funktionen verfügt nicht-oder über vier Tests (entsprechend der Wahrheitstabelle von nicht-oder):

  1. Wahr nicht-oder wahr ist falsch
  2. Wahr nicht-oder falsch ist falsch
  3. Falsch nicht-oder wahr ist falsch
  4. Falsch nicht-oder falsch ist wahr

Diese Tests sind in Wikifunctions vollständig, was bedeutet, dass jede mögliche Kombination von Eingaben mit den Tests abgedeckt ist. Diesen Luxus haben wir bei vielen anderen Typen nicht!

Was ist also das Besondere an nicht-oder, das mich so begeistert? Das Interessante an nicht-oder ist, dass jede andere boolesche Funktion nur durch die Verwendung der Funktion nicht-oder implementiert werden kann. Egal wie viele Argumente, du brauchst nur die Funktion nicht-oder, möglicherweise mehrere Male, und sonst nichts. Von den sechzehn binären booleschen Funktionen haben nur zwei diese besondere Eigenschaft.

Ich sage nicht, dass es eine gute Idee ist, nur nicht-oder zu verwenden, aber es ist möglich! Wir könnten alle unsere booleschen Funktionen nur mit nicht-oder implementieren, was eine interessante Lernressource sein kann. Dasselbe gilt für nicht-und. Beispielsweise kann die Funktion Verneinung implementiert werden, indem nicht-oder mit demselben Wert in beiden Argumenten verwendet wird.

Die Funktion nicht-oder hat vier Implementierungen:

  1. In JavaScript mit den Operatoren ! (nicht) und || (oder)
  2. In Python Mut den Schlüsselwörtern not und or
  3. Eine Komposition mit Verneinung und oder
  4. Eine andere Komposition mit zwei wenn-Funktionen

Es kann eine interessante Übung sein, über die letzte Komposition nachzudenken und zu verstehen, warum sie zur Funktion nicht-oder führt.

Ich habe immer gedacht, dass der Name der Funktion “nicht-oder” aus der Kombination der Wörter “nicht” und “oder” stammt, ähnlich wie die Funktion “nicht-und” nach der Kombination von “nicht” und “und” benannt ist, aber anscheinend habe ich mich geirrt: nicht-oder kommt einfach vom englischen Wort “nor” und wurde dann als “nicht oder” neu interpretiert, um ein Muster für “nicht-und” zu sein.