Wikifunctions:Status-Updates/2024-03-13

From Wikifunctions
This page is a translated version of the page Wikifunctions:Status updates/2024-03-13 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

Zur Identität

Eine Banane mit der QID für Bananen. Beachte, dass Wikidata derzeit keine einzelne Banane beschrieben hat.

Im Wikifunctions-Datenmodell verwenden wir den Begriff "Identität" in großem Umfang. Beispielsweise haben Typen, Funktionen und auch die beiden booleschen Werte gemeinsam, dass sie eine Identität haben.

Bisher war das Konzept der Identität allerdings kein expliziter Bestandteil des Datenmodells, weshalb wir es nicht einfach verwenden konnten, beispielsweise bei bestimmten neuen Typen mit begrenzten Werten, oder es nicht einfach in eine bessere Benutzererfahrung integrieren konnten.

Wir möchten dieses Problem für Wikifunctions beheben und dem Datenmodell einen expliziten Identitätsbegriff hinzufügen. Wir haben ein Dokument mit vier verschiedenen Vorschlägen geschrieben und möchten auch Rückmeldungen aus der Community sammeln: Haben wir Vor- oder Nachteile bestimmter Vorschläge übersehen, gibt es noch bessere Ideen, die wir stattdessen umsetzen könnten? Was haben wir übersehen, was könnten wir besser machen?

Das Dokument zur Darstellung der Identität findest du hier. Darin wird auch darauf eingegangen, wie optionale Schlüssel bei Typen dargestellt werden (was möglicherweise auch Vorabinformationen darüber beinhaltet, wie optionale Argumente bei Funktionen dargestellt werden).

Wir hoffen, auf deine Gedanken eingehen und in den kommenden Wochen und Monaten eine Entscheidung umsetzen zu können.

Letzte Änderungen an der Software

Multiplizieren römischer Zahlen mit der lateinischen Benutzeroberfläche. Beta-Wikifunctions.

Unser Hauptaugenmerk in diesem Quartal lag auf der Verbesserung von Typen, damit du sie einfach verwenden kannst, auf dem Weg zum Zugriff auf und zur Verwendung von Lexemen und anderen Inhalten von Wikidata. Diese Woche haben wir einen großen Meilenstein in dem Bereich erreicht, wie Typen Funktionen verwenden können, um Eingaben während des Eingabeprozesses zu überprüfen und basierend auf ihrem Wert anzuzeigen (T358041). Wir werden dies mit Demonstrationen im Wiki und in einem späteren Update diskutieren, wenn neue Typen entwickelt werden. Du kannst es bereits in der Beta-Version von Wikifunctions ausprobieren, um beispielsweise zu sehen, wie die Multiplikation von römische Zahlen funktioniert (siehe Bildschirmfoto). Bitte probiere es in der Beta-Version aus und melde Probleme, wenn du welche bemerkst.

Wir haben auch einige Verbesserungen im Zusammenhang mit der Bearbeitung von Typen vorgenommen (T358136 & T358135); wir hoffen, die Oberfläche so gut zu machen, dass sie von der Community verwendet werden kann und dass wir so den Zugriff öffnen können, ohne die Integrität der Seite in Zukunft zu gefährden. Bisher war beim Bearbeiten einer alten Version eines Objekts (z. B. zum manuellen Zurücksetzen) die Schaltfläche 'Veröffentlichen' nicht aktiv, bis du eine Änderung vorgenommen hast, wie bei normalen Bearbeitungen; jetzt erkennen wir diese Situation und aktivieren sie sofort (T343654). Letzte Woche haben wir die Überschrift auf jeder Objektseite optimiert, damit der Typ zwischen Titel und Untertitel nicht wiederholt wird; diese Woche haben wir auch die ZID des Typs aus dem Untertitel entfernt, um die Oberfläche einfacher zu gestalten (T357805).

Wir haben an den Back-End-Diensten einige Korrekturen und interne Änderungen vorgenommen, um den Rückgabewert bei Verwendung generischer Typen zu vereinfachen (T324661) und um keinen englischen Wert für den Metadaten-Wert der ausgeführten Implementierung fest zu codieren (T358571). Wir haben eine alte, jetzt nicht mehr verwendete API deaktiviert, die erstellt wurde, um die Verfügbarkeit der Back-End-Dienste zu überwachen (T359179). Einige Funktionen haben Implementierungen oder Tests aufgrund ihrer Erstellung und eines Fehlers in unserem Code falsch gemeldet. Wir haben eine Anpassung an unserem Code vorgenommen, die diese Situation möglicherweise behebt, wenn die betroffenen Objekte bearbeitet werden, werden dies jedoch weiter untersuchen.

Wir haben eine Reparatur vorgenommen, um das Laden vieler Kopien der Style-Dateien auf einer Seite zu verhindern, was das Laden und den Betrieb der Seite für alle etwas beschleunigen sollte (T355919). Letzte Woche haben wir den Funktionsauswerter optimiert, um die Nachricht 'Keine genehmigten Implementierungen' auszublenden. Wir haben eine nachfolgende Korrektur vorgenommen, damit du ihn wieder konsistent verwenden kannst (T346852). Wir bitten um Entschuldigung!

Der gesamte von Wikimedia bereitgestellte Code, einschließlich Wikifunctions, verwendet seit dieser Woche die neueste Version der Codex UX-Bibliothek, v1.3.4. Wir erwarten keine für den Benutzer sichtbaren Änderungen. Kommentiere also wie üblich in der Projektdiskussion oder erstelle eine Phabricator-Aufgabe, wenn du ein Problem bemerkst oder Bedenken hast.

Aufzeichnung von Wiki Mentor Afrika verfügbar

Die Aufzeichnung der Veranstaltung von Wiki Mentor Afrika, auf die wir in unserem letzten wöchentlichen Update hingewiesen haben, ist auf Zoom verfügbar (Passwort: w%mj$Yp3).

Funktion der Woche: Gleichheit natürlicher Zahlen (equality of natural numbers (Z13522))

Freiwilligentreffen März 2024

Seit wir letzte Woche natürliche Zahlen eingeführt haben, wurden 140 Funktionen mit natürlichen Zahlen erstellt. Und da wir oben über Identität sprechen, können wir uns einen formal verwandten Begriff ansehen, nämlich Gleichheit. Aus diesem Grund habe ich diese Woche die Gleichheit natürlicher Zahlen gewählt. Diese Funktion wurde letzte Woche beim Freiwilligentreffen erstellt und ist daher eine der Funktionen, von denen wir ein Video ihrer Erstellung haben.

Wenn wir über Menschen sprechen, gibt es einen großen Unterschied zwischen Identität und Gleichheit. Aber wenn wir über Zahlen sprechen, ist das nicht so sehr der Fall. Wenn eine Zahl einer anderen Zahl gleicht, dann sind diese beiden Zahlen doch eigentlich dieselbe Zahl, oder? Vielleicht, vielleicht auch nicht. Diese Frage geht sehr tief in die Philosophie der Mathematik und die Frage, was eine Zahl eigentlich ist. Bei anderen Typen als natürlichen Zahlen kann die Frage, ob zwei Instanzen dieses Typs dieselben sind, ob sie gleich sind und ob es einen Unterschied zwischen diesen beiden Fragen gibt, interessanter werden und ist wirklich Teil der Definition des Typs.

Die gleiche Diskussion über Gleichheit und Identität wird für die JavaScript-Implementierung relevant. JavaScript unterscheidet auch zwischen Gleichheit und Identität: Erstere wird mit zwei Gleichheitszeichen, ==, getestet, während Letztere mit drei Gleichheitszeichen, ===, getestet wird. Solange wir zwei BigInt-Werte vergleichen, macht das keinen Unterschied. Aber wenn wir einen BigInt-Wert mit einem Zahlen-Wert mit === vergleichen würden, würde dies immer fehlschlagen. Und wenn wir uns entschieden hätten, BigInt in JavaScript-Objekte statt in BigInt-Werte umzuwandeln, würde === auch immer fehlschlagen. Es ist das Zusammenspiel zwischen dem von uns verwendeten Umwandler zu BigInt und der Implementierung von Gleichheit mit ===, das es funktionieren lässt.

In Python müssen wir diese Entscheidung nicht treffen und können einfach eine Implementierung mit dem Operator == verwenden.

Die Komposition wendet die integrierte Zeichenketten-Gleichheit auf die Zeichenketten an, die sich aus der Umwandlung beider Werte in Zeichenketten ergeben.

Die Funktion hat vier Tests:

  1. Zwei ist gleich zwei
  2. Zwei ist nicht gleich null
  3. 9007199254740992 und 9007199254740993 sind nicht gleich
  4. Eine führende Null macht zwei Werte nicht ungleich

Die ersten beiden Tests sind ziemlich offensichtlich, aber was ist mit den anderen beiden Tests?

Test 3 sieht aus wie zwei zufällige große Zahlen, von denen eine größer als die andere ist. Aber wenn du in JavaScript den folgenden Code in eine JavaScript-Konsole eingibst:

 9007199254740992 == 9007199254740993

oder

 9007199254740992 === 9007199254740993

wirst du die überraschende Antwort erhalten:

 true

Dies ist einer der Fälle, in denen der menschliche Leser normalerweise besser in Mathematik ist als der Computer. Wikifunctions hingegen macht das richtig, da es für die Verarbeitung beliebig großer natürlicher Zahlen ausgelegt ist, wie wir letzte Woche besprochen haben.

(Der Grund, warum JavaScript das nicht richtig hinbekommt, liegt darin, dass JavaScript eigentlich keine ganzen Zahlen hat, sondern alle Zahlen Gleitkommazahlen sind und Gleitkommazahlen eine wohldefinierte, aber begrenzte Genauigkeit haben. Aus demselben Grund ergibt in JavaScript 0.8 minus 0.1 nicht 0.7, sondern 0.7000000000000001. Vor Kurzem hat JavaScript den Typ BigInt für präzise Arithmetik mit beliebig großen ganzen Zahlen eingeführt. Aus diesem Grund verwenden wir ihn als Wert, in den der Typ natürliche Zahl in JavaScript umgewandelt wird.)

Der letzte Test zeigt, dass wir den Prüfer noch nicht richtig mit dem Typ verbunden haben. Wie wir in der letzten Funktion der Woche besprochen haben, sollte der Prüfer keine führenden Nullen zulassen.