Hallo, Habr! Ich präsentiere Ihnen eine Übersetzung des Beitrags von Stephen Wolfram
Voraussetzungen für die Konsistenz der Wolfram-Sprache
Heute stehen wir gemeinsam mit der Programmiersprache an der Schwelle zu großen Erfolgen
Das Wolfram Function Repository wird durch die Einzigartigkeit der Wolfram Language nicht nur als Programmiersprache, sondern auch als Programmiersprache ermöglicht
Das Wolfram-Funktions-Repository enthält beispielsweise bereits
Ebenso mehr als
Um zur Seite zu gelangen, kopieren Sie das obige Objekt (Funktions-BLOB), fügen Sie es in die Eingabezeile ein und führen Sie dann die Funktion aus – sie ist bereits in die Wolfram-Sprache integriert und wird standardmäßig ab unterstützt
Hierbei ist bei der Verarbeitung zu beachten
Das hoffe ich mit der Unterstützung
Funktionen aus dem Repository können kleine oder große Codeteile enthalten, die in der Wolfram Language geschrieben sind. Dies können beispielsweise Anrufe sein
Die Shell- und Programmierstruktur des Wolfram Feature Repository ist so konzipiert, dass jeder auf die für ihn einfachste und bequemste Art und Weise einen Beitrag zur gemeinsamen Sache leisten kann – und zwar einfach
Bei diesem Ansatz gibt es viele Kompromisse und Details, aber unser Ziel ist es, das Wolfram-Feature-Repository sowohl für die Benutzererfahrung zu optimieren als auch sicherzustellen, dass neue Benutzerfunktionen einen sinnvollen Beitrag zur Entwicklung der Sprache leisten. Wenn wir wachsen, habe ich keinen Zweifel daran, dass wir neue Methoden für die Verarbeitung und Validierung der in das Repository integrierten Funktionen erfinden müssen, nicht zuletzt, um eine große Anzahl von Funktionen zu organisieren und diejenigen zu finden, die Benutzer benötigen. Es ist jedoch ermutigend, dass der von uns eingeschlagene Weg ein guter Anfang ist. ich persönlich
Effizienzsteigerung bei gleichzeitiger Kostensenkung
Schon vor dem Internet gab es Möglichkeiten, Wolfram Language-Code zu teilen (unser erstes großes zentralisiertes Projekt war
Seit über 30 Jahren arbeitet unser Unternehmen fleißig daran, die Integrität der Wolfram-Sprachstruktur aufrechtzuerhalten. Dies ist entscheidend, um sicherzustellen, dass die Wolfram-Sprache nicht nur eine Programmiersprache, sondern auch eine Programmiersprache wird
In der Implementierungsstruktur jeder Funktion finden verschiedene Rechenprozesse statt. Hierbei ist zu beachten, dass es notwendig ist, dass die Funktion ein klares und einheitliches Erscheinungsbild und eine visuelle Lesbarkeit für den Benutzer aufweist. In diesem Zusammenhang werden die integrierten Funktionen der Wolfram Language mit mehr als 6000 aufeinanderfolgenden Beispielen für die ordnungsgemäße Programmierung von Funktionen vorgestellt (dies sind unsere
Ein Repository zu erstellen, das tatsächlich gut funktioniert, ist eine interessante Metaprogrammierungsaufgabe. Beispielsweise können zu viele Einschränkungen im Programm nicht die erforderliche Vereinheitlichung und Universalität des Algorithmus erreichen. Ebenso wie bei einer unzureichenden Anzahl funktionaler Einschränkungen ist es nicht möglich, eine ausreichend korrekte Reihenfolge der Algorithmusausführung umzusetzen. Mehrere frühere Beispiele für die Umsetzung eines Kompromisses dieser Ansätze, der von unserem Unternehmen umgesetzt wurde, funktionierten recht stabil – dies sind:
Alle oben genannten Beispiele weisen ein grundlegendes Merkmal auf: Die im Projekt gesammelten Objekte und Funktionen weisen einen sehr hohen Grad an Strukturierung und Verteilung der Prozesse auf. Natürlich können die Details der Struktur dessen, was eine Demo, ein neuronales Netzwerk oder etwas anderes ist, stark variieren, aber die grundlegende Struktur für jedes aktuelle Repository bleibt immer dieselbe. Was halten Sie, lieber Benutzer, von der Erstellung eines solchen Repositorys, das Erweiterungen zur Wolfram-Sprache hinzufügt? Die Wolfram Language ist äußerst flexibel konzipiert, sodass sie beliebig erweitert und geändert werden kann. Dieser Umstand ist äußerst wichtig für die Möglichkeit, schnell verschiedene große Softwareprojekte in der Wolfram Language zu erstellen. Hierbei ist zu beachten, dass mit zunehmender Flexibilität der Sprache zwangsläufig auch die Kosten für Projekte steigen, die in einer solchen Sprache umgesetzt werden. Dies liegt an der Tatsache, dass der Benutzer umso mehr dedizierte Funktionalität erhält, je mehr er eine solche Sprache verwendet. Wir sollten jedoch nicht vergessen, dass dieser Ansatz auch negative Seiten haben kann, da er nicht in der Lage ist, eine konsistente Konsistenz der Programmmodule sicherzustellen.
Bei Bibliotheken in traditionellen Programmiersprachen gibt es ein häufiges Problem: Wenn Sie beispielsweise eine Bibliothek verwenden, funktioniert der Code ordnungsgemäß. Wenn Sie jedoch versuchen, mehrere Bibliotheken zu verwenden, gibt es keine Garantie dafür, dass diese ordnungsgemäß miteinander interagieren . Außerdem gibt es in traditionellen Programmiersprachen – anders als in einer vollwertigen Computersprache – keine Möglichkeit, das Vorhandensein konsistenter integrierter Darstellungen für beliebige Funktionen oder Datentypen außer deren Grundstrukturen zu garantieren. Tatsächlich ist das Problem jedoch noch größer, als es auf den ersten Blick scheint: Wenn man eine große Funktionalitätsvertikale aufbaut, ist dies ohne die enormen Kosten der zentralisierten Projektprogrammierung, die wir in die Wolfram-Sprache stecken, unmöglich Konsistenz erreichen. Daher ist es wichtig, dass alle Softwaremodule stets korrekt zusammenarbeiten.
Die Idee hinter dem Wolfram-Feature-Repository besteht also darin, das oben beschriebene Problem zu vermeiden, indem einfach Erweiterungen der Sprache in relativ kleinen Codeteilen über einzelne Features hinzugefügt werden, die sich einfacher als kohärente Module entwickeln lassen. Allerdings gibt es Programmierfunktionen, die nicht durch einzelne Funktionen komfortabel gestaltet werden können (und unser Unternehmen plant, in naher Zukunft einen optimierten Programmieralgorithmus zu veröffentlichen, um die Implementierung umfangreicher Softwarepakete zu unterstützen). Basierend auf den bereits in der Wolfram Language integrierten Funktionen gibt es jedoch viele Programmiermöglichkeiten, die auf Basis einzelner Funktionen umgesetzt werden. Die Idee dabei ist, dass es möglich ist, mit relativ geringem Programmieraufwand eine Reihe neuer und sehr nützlicher Funktionen zu erstellen, die eine ausreichende Designkonsistenz aufweisen, gut zueinander passen und darüber hinaus auch funktionieren wird in Zukunft einfach und umfassend in der Sprache verwendet werden können.
Dieser Ansatz ist natürlich ein Kompromiss. Wenn ein größeres Paket implementiert würde, könnte man sich eine völlig neue Welt an Funktionen vorstellen, die äußerst leistungsstark und nützlich wären. Wenn Bedarf an neuen Funktionen besteht, die zu allem anderen passen, Sie aber nicht bereit sind, viel Aufwand in die Entwicklung des Projekts zu investieren, kann dies leider zu einer Verringerung des Umfangs Ihres Projekts führen. Die Idee hinter dem Wolfram-Feature-Repository besteht darin, Funktionalität für einen definierenden Teil eines Projekts bereitzustellen; dieser Ansatz fügt leistungsstarke Funktionalität hinzu und erleichtert gleichzeitig die Aufrechterhaltung einer guten Konsistenz in einem Programmierprojekt.
Helfen Sie beim Hinzufügen benutzerdefinierter Funktionen zum Funktions-Repository
Unser Team hat hart daran gearbeitet, es Benutzern zu erleichtern, zu den Funktionen des Wolfram-Repositorys beizutragen. Auf dem Desktop (bereits in
Sie müssen zwei Hauptschritte ausführen: Erstens schreiben Sie den Code für Ihre Funktion auf und zweitens schreiben Sie eine Dokumentation auf, die veranschaulicht, wie Ihre Funktion funktionieren soll.
Klicken Sie oben auf die Schaltfläche „Beispiel öffnen“, um ein Beispiel dafür zu sehen, was Sie tun müssen:
Im Wesentlichen versuchen Sie, etwas zu erstellen, das einer integrierten Funktion in der Wolfram Language ähnelt. Außer, dass es etwas viel Spezifischeres tun kann als eine integrierte Funktion. Gleichzeitig werden die Erwartungen an die Vollständigkeit und Zuverlässigkeit deutlich geringer sein.
Sie müssen Ihrer Funktion einen Namen geben, der den Funktionsbenennungsrichtlinien der Wolfram Language entspricht. Darüber hinaus müssen Sie eine Dokumentation für Ihre Funktion entwickeln, ähnlich den integrierten Funktionen der Sprache. Ich werde später ausführlicher darauf eingehen. Beachten Sie zunächst, dass sich in der Schaltflächenreihe oben in der Definitionsnotizbuchdatei eine Schaltfläche befindet
Wenn Sie sicher sind, dass alles richtig ausgefüllt ist und Sie bereit sind, klicken Sie auf die Schaltfläche „Überprüfen“. Es ist völlig normal, dass Sie noch nicht alle Details herausgefunden haben. Daher wird die Funktion „Prüfen“ automatisch ausgeführt und führt zahlreiche Stil- und Konsistenzprüfungen durch. Häufig werden Sie sofort aufgefordert, die Korrekturen zu bestätigen und zu akzeptieren (Beispiel: „Diese Zeile muss mit einem Doppelpunkt enden“ und Sie werden aufgefordert, einen Doppelpunkt einzugeben). Manchmal wird sie Sie bitten, selbst etwas hinzuzufügen oder zu ändern. Wir werden der automatischen Funktionalität der Schaltfläche „Überprüfen“ ständig neue Funktionen hinzufügen, aber im Grunde besteht ihr Zweck darin, sicherzustellen, dass alles, was Sie an das Feature-Repository senden, bereits so vielen Stilrichtlinien wie möglich entspricht
Nachdem Sie „Prüfen“ ausgeführt haben, können Sie also „Vorschau“ verwenden. „Vorschau“ erstellt eine Vorschau der Dokumentationsseite, die Sie für Ihre Funktion definiert haben. Sie können auch eine Vorschau für eine auf Ihrem Computer erstellte Datei oder für eine im Cloud-Speicher befindliche Datei erstellen. Wenn Sie aus irgendeinem Grund mit dem, was Sie in der Vorschau sehen, nicht zufrieden sind, gehen Sie einfach zurück, nehmen Sie die erforderlichen Korrekturen vor und klicken Sie dann erneut auf die Schaltfläche „Vorschau“.
Jetzt können Sie Ihre Funktion in das Repository übertragen. Die Schaltfläche „Bereitstellen“ bietet Ihnen vier Optionen:
Das Wichtigste bei diesem Schritt ist, dass Sie Ihre Funktion an das Wolfram-Funktions-Repository senden können, damit sie für jedermann verfügbar ist. Gleichzeitig können Sie Ihre Veranstaltung auch für eine begrenzte Anzahl von Benutzern platzieren. Sie können beispielsweise eine Funktion erstellen, die lokal auf Ihrem Computer gehostet wird, sodass sie verfügbar ist, wenn Sie diesen bestimmten Computer verwenden. Oder Sie können es in Ihrem veröffentlichen
Nehmen wir also an, Sie möchten Ihre Funktion tatsächlich an die Wolfram-Funktionswissensdatenbank übermitteln. Klicken Sie dazu auf die Schaltfläche „Senden“ an das Repository. Was passiert also derzeit? Ihr Antrag wird sofort zur Prüfung und Genehmigung durch unser engagiertes Kuratorenteam in die Warteschlange gestellt.
Während Ihr Antrag den Genehmigungsprozess durchläuft (der normalerweise mehrere Tage dauert), erhalten Sie Mitteilungen über den Status und möglicherweise Vorschläge für die zukünftige Verwendung. Sobald Ihr Feature jedoch genehmigt ist, wird es sofort im Wolfram Feature Repository veröffentlicht und steht jedem zur Nutzung zur Verfügung. (Und dies wird in erscheinen
Was soll im Lager sein?
Es ist zu beachten, dass unser Unternehmen sehr hohe Ansprüche an Vollständigkeit, Zuverlässigkeit und Gesamtqualität stellt und dass von den über 6000 Funktionen, die wir in den letzten über 30 Jahren bereits in die Wolfram-Sprache integriert haben, alle die oben genannten Anforderungen erfüllen. Das Ziel des Wolfram Function Repository besteht darin, die gesamte Struktur und Funktionalität zu nutzen, die bereits in der Wolfram Language vorhanden ist, um so viele viel leichtere Funktionen (d. h. Funktionen mit höherer Leistung) wie möglich hinzuzufügen.
Natürlich müssen Funktionen im Wolfram-Funktions-Repository den Designprinzipien der Wolfram Language entsprechen, damit sie vollständig mit anderen Funktionen und den Erwartungen der Benutzer an die ordnungsgemäße Funktionsweise der Funktion interagieren können. Die Funktionen müssen jedoch nicht von gleicher Vollständigkeit oder Zuverlässigkeit sein.
Bei den integrierten Funktionen der Wolfram-Sprache arbeiten wir hart daran, die Programmierfunktionen so allgemein wie möglich zu gestalten. Abgesehen davon ist es nichts Falsches daran, im Wolfram-Funktions-Repository eine Funktion zu haben, die einfach einen sehr spezifischen, aber nützlichen Fall behandelt. Zum Beispiel die Funktion
Ein weiterer Punkt im Zusammenhang mit den integrierten Funktionen besteht darin, dass unser Unternehmen alle Anstrengungen unternimmt, um alle atypischen Fälle zu behandeln, falsche Eingaben korrekt zu behandeln usw. In einem Funktions-Repository ist es völlig normal, dass es eine spezielle Funktion gibt, die die Hauptfälle der Lösung eines Problems abwickelt und alle anderen ignoriert.
Der offensichtliche Punkt ist, dass es besser ist, Funktionen zu haben, die mehr leisten und es besser machen, aber die Optimierung für ein Funktions-Repository sollte – im Gegensatz zu den integrierten Funktionen der Wolfram-Sprache – mehr Funktionen gebündelt mit mehr Funktionen haben, anstatt sich damit zu befassen die Implementierungsprozesse jeder spezifischen Funktion.
Schauen wir uns nun ein Beispiel für das Testen von Funktionen in einem Repository an. Die Konsistenzerwartungen für solche Funktionen sind naturgemäß viel geringer als für integrierte Sprachfunktionen. Dies gilt insbesondere in Fällen, in denen Funktionen von externen Ressourcen wie APIs abhängen. Es ist wichtig, kontinuierlich konsistente Tests durchzuführen, was automatisch innerhalb der Verifizierungsalgorithmen geschieht. In der NB-Datei können Sie explizit Definitionen angeben (im Abschnitt „Zusätzliche Informationen“) und so viele Tests angeben, wie durch Eingabe- und Ausgabezeichenfolgen oder vollständige Zeichenobjekte des Typs definiert sind
Infolgedessen weist das Funktions-Repository eine Reihe von Implementierungskomplexitäten auf. Einige bestehen nur aus einer einzigen Codezeile, andere umfassen möglicherweise Tausende oder Zehntausende Zeilen und verwenden wahrscheinlich viele Hilfsfunktionen. Wann lohnt es sich, eine Funktion hinzuzufügen, für deren Definition nur sehr wenig Code erforderlich ist? Grundsätzlich, wenn es eine Funktion gibt
Der Hauptzweck eines Funktions-Repositorys besteht (wie der Name schon sagt) darin, neue Funktionen in die Sprache einzuführen. Wenn Sie neue Daten hinzufügen möchten oder
Es gibt eigentlich zwei Möglichkeiten. Möglicherweise möchten Sie einen neuen Objekttyp einführen, der in neuen Funktionen im Funktions-Repository verwendet wird. Und in diesem Fall können Sie jederzeit einfach die symbolische Darstellung aufschreiben und sie bei der Eingabe oder Ausgabe von Funktionen in ein Funktions-Repository verwenden.
Aber was ist, wenn Sie ein Objekt darstellen und dann über vorhandene Funktionen in der Wolfram Language definieren möchten, dass Sie damit arbeiten möchten? Die Wolfram Language verfügt hierfür seit jeher über einen leichtgewichtigen Mechanismus namens
Was könnte also im Funktionscode in einem Funktions-Repository enthalten sein?
Sollte der gesamte Code für das Wolfram-Feature-Repository in Wolfram geschrieben werden? Natürlich sollte der Code innerhalb der externen API nicht in der Wolfram-Sprache geschrieben sein, die nicht einmal den Sprachcode erstellt. Tatsächlich können Sie, wenn Sie eine Funktion in fast jeder externen Sprache oder Bibliothek finden, einen Wrapper erstellen, der es Ihnen ermöglicht, sie im Wolfram-Funktions-Repository zu verwenden. (Normalerweise sollten Sie hierfür die integrierten Funktionen verwenden
Was bringt es also, das zu tun? Dies ermöglicht Ihnen im Wesentlichen die Nutzung des gesamten integrierten Wolfram Language-Systems und seiner gesamten einheitlichen Softwarefunktionen. Wenn Sie die Basisimplementierung von einer externen Bibliothek oder Sprache beziehen, können Sie dann die reichhaltige symbolische Struktur der Wolfram Language verwenden, um eine praktische Funktion der obersten Ebene zu erstellen, die es Benutzern ermöglicht, jede bereits implementierte Funktionalität problemlos zu verwenden. Zumindest sollte dies in einer idealen Welt möglich sein, in der alle Bausteine zum Laden von Bibliotheken usw. vorhanden sind. In diesem Fall würden sie automatisch von der Wolfram Language verarbeitet. (Es ist zu beachten, dass es in der Praxis zu Problemen kommen kann
Wenn Sie sich typische externe Bibliotheken zum ersten Mal ansehen, scheinen sie übrigens oft zu komplex, um sie in nur wenigen Funktionen abzudecken. In vielen Fällen entsteht ein Großteil der Komplexität jedoch aus der Erstellung der Infrastruktur, die für die Bibliothek und alle Funktionen erforderlich ist unterstütze es. Bei Verwendung der Wolfram Language ist die Infrastruktur jedoch normalerweise bereits in die Pakete integriert, sodass nicht alle diese Unterstützungsfunktionen im Detail offengelegt werden müssen, sondern nur Funktionen für die „obersten“ anwendungsspezifischen Funktionen in der Bibliothek erstellt werden müssen .
„Ökosystem“ der Wissensbasis
Wenn Sie Funktionen geschrieben haben, die Sie regelmäßig verwenden, senden Sie sie an das Wolfram Function Repository! Wenn dabei nicht mehr herauskommt (Sprachentwicklung), dann wird es für Sie auch dann viel bequemer sein, die Funktionen für den persönlichen Gebrauch zu nutzen. Es ist jedoch logisch anzunehmen, dass die Funktionen bei regelmäßiger Nutzung möglicherweise auch für andere Benutzer nützlich sind.
Natürlich kann es sein, dass Sie sich in einer Situation befinden, in der Sie Ihre Funktionen nicht teilen können oder wollen oder Zugriff auf private Informationsressourcen erhalten. Auch in solchen Fällen können Sie die Funktionen einfach in Ihrem eigenen Cloud-Konto bereitstellen,
Die Funktionen, die Sie an das Wolfram-Funktions-Repository übermitteln, müssen nicht perfekt sein; Sie müssen nur nützlich sein. Dies ähnelt ein wenig dem Abschnitt „Fehler“ in der klassischen Unix-Dokumentation – im Abschnitt „Definitionen“ gibt es einen Abschnitt „Anmerkungen des Autors“, in dem Sie Einschränkungen, Probleme usw. beschreiben können, die Sie bereits über Ihre Funktion kennen. Darüber hinaus können Sie beim Einreichen Ihres Features im Repository Einreichungsnotizen hinzufügen, die von einem engagierten Kuratorenteam gelesen werden.
Sobald ein Feature veröffentlicht ist, enthält die Seite unten immer zwei Links: „
Manchmal möchten Sie einfach Funktionen aus dem Wolfram-Funktions-Repository verwenden, z. B. integrierte Funktionen, ohne sich deren Code anzusehen. Wenn Sie jedoch einen Blick hineinwerfen möchten, gibt es oben immer einen Notepad-Button. Klicken Sie darauf und Sie erhalten Ihre eigene Kopie des ursprünglichen Definitionsnotizbuchs, das an das Feature-Repository übermittelt wurde. Manchmal können Sie es einfach als Beispiel für Ihre Bedürfnisse verwenden. Gleichzeitig können Sie auch Ihre eigene Modifikation dieser Funktion entwickeln. Möglicherweise möchten Sie diese Funktionen, die Sie im Repository auf Ihrem Computer oder in Ihrem Aphid-Cloud-Speicherkonto gefunden haben, veröffentlichen oder sie an die Funktionswissensdatenbank übermitteln, möglicherweise als verbesserte, erweiterte Version der ursprünglichen Funktion.
In Zukunft planen wir, Git-artiges Forking für Feature-Repositories zu unterstützen, aber im Moment versuchen wir, es einfach zu halten, und wir haben immer nur eine akzeptierte Version jedes Features in die Sprache integriert. In den meisten Fällen (es sei denn, Entwickler geben die Wartung der von ihnen entwickelten Funktionen auf und reagieren auf Benutzereingaben) übernimmt der ursprüngliche Autor der Funktion die Kontrolle über Aktualisierungen und reicht neue Versionen ein, die dann überprüft werden und, sofern sie den Überprüfungsprozess bestehen, die Kontrolle darüber haben , in der Sprache veröffentlicht.
Betrachten wir die Frage, wie die „Versionierung“ entwickelter Funktionen funktioniert. Wenn Sie derzeit eine Funktion aus dem Funktions-Repository verwenden, wird deren Definition dauerhaft auf Ihrem Computer gespeichert (oder in Ihrem Cloud-Konto, wenn Sie die Cloud verwenden). Wenn eine neue Version einer Funktion verfügbar ist, erhalten Sie bei Ihrer nächsten Nutzung eine entsprechende Meldung. Und wenn Sie die Funktion auf eine neue Version aktualisieren möchten, können Sie dies mit dem Befehl tun
Eines der schönen Dinge am Wolfram Function Repository ist, dass jedes Wolfram Language-Programm überall Funktionen daraus verwenden kann. Wenn ein Programm in einem Editor erscheint, ist es oft praktisch, die Repository-Funktionen als leicht lesbare „Funktionsbinärobjekt“-Funktionen zu formatieren (vielleicht mit einem geeigneten Versionssatz).
Sie können jederzeit über Text auf jede Funktion im Funktionsrepository zugreifen
Wie funktioniert es?
Innerhalb der Funktionen im Wolfram-Repository ist dies mit genau demselben Prinzip möglich
Betrachten
Im Inneren können Sie mithilfe der Funktion einige Informationen anzeigen
Wie funktioniert das Einrichten einer Ressourcenfunktion? Der einfachste Fall ist ein rein lokaler Fall. Hier ist ein Beispiel, das eine Funktion (in diesem Fall nur eine reine Funktion) nimmt und sie als Ressourcenfunktion für eine bestimmte Programmsitzung definiert:
Sobald Sie die Definition vorgenommen haben, können Sie die Ressourcenfunktion verwenden:
Beachten Sie, dass in diesem Funktionsblob ein schwarzes Symbol vorhanden ist . Dies bedeutet, dass sich die BLOB-Funktion auf die In-Memory-Ressourcenfunktion bezieht, die für die aktuelle Sitzung definiert ist. Eine Ressourcenfunktion, die dauerhaft auf Ihrem Computer oder Cloud-Konto gespeichert ist, hat ein graues Symbol . Und es gibt ein orangefarbenes Symbol für eine offizielle Ressourcenfunktion im Wolfram Feature Repository .
Was passiert also, wenn Sie das Menü „Erweitern“ im Definitionsnotizbuch verwenden? Zunächst werden alle Definitionen im Notizblock übernommen und daraus ein Symbol erstellt
Die lokale Bereitstellung einer Funktion aus einem Repository auf Ihrem Computer erfolgt mit dem Befehl
Was passiert darunter, wenn Sie für ein Funktions-Repository auf die Schaltfläche „Senden“ klicken?
Standardmäßig erfolgen Übermittlungen unter dem Namen, der Ihrer Wolfram-ID zugeordnet ist. Wenn Sie jedoch einen Antrag im Namen eines Entwicklungsteams oder einer Organisation einreichen, ist dies möglich
Nachdem Sie eine Ihrer Funktionen an die Funktionswissensdatenbank übermittelt haben, wird sie zur Überprüfung in die Warteschlange gestellt. Wenn Sie als Antwort Kommentare erhalten, liegen diese in der Regel in Form einer Textdatei mit zusätzlichen „Kommentarzellen“ vor. Sie können den Status Ihrer Bewerbung jederzeit unter überprüfen
Einige Feinheiten bei der Arbeit
Auf den ersten Blick mag es so aussehen, als ob Sie einfach ein Definitionsnotizbuch nehmen und es wörtlich in ein Funktions-Repository einfügen könnten. Tatsächlich sind jedoch eine Menge Feinheiten damit verbunden – und deren Handhabung erfordert eine ziemlich komplexe Metaprogrammierung und symbolische Verarbeitung als Code, der die Funktion definiert, und der Notepad selbst wird definiert. Das meiste davon geschieht intern, hinter den Kulissen, aber es kann einige Auswirkungen haben, die es wert sind, verstanden zu werden, wenn Sie zur Feature-Wissensdatenbank beitragen.
Erste unmittelbare Feinheit: Wenn Sie das Definitionsnotizbuch ausfüllen, können Sie einfach überall auf Ihre Funktion verweisen, indem Sie einen Namen wie verwenden MeineFunktion, der wie ein normaler Name für eine Funktion in der Wolfram Language aussieht, aber für die Dokumentation des Funktions-Repositorys ersetzt wird
Die zweite Feinheit: Wenn Sie eine Ressourcenfunktion aus dem Definitionsnotizbuch erstellen, müssen alle an der Funktionsdefinition beteiligten Abhängigkeiten erfasst und explizit einbezogen werden. Um jedoch sicherzustellen, dass die Definitionen modular bleiben, müssen Sie alles in eine eindeutige Form bringen
Normalerweise werden Sie nie eine Spur des Codes sehen, der zum Konfigurieren dieses Namespace verwendet wurde. Wenn Sie jedoch aus irgendeinem Grund ein nicht ausreichend ausgeführtes Symbol innerhalb Ihrer Funktion aufrufen, werden Sie feststellen, dass sich dieses Symbol im internen Kontext der Funktion befindet. Bei der Verarbeitung des Definitionsnotizblocks wird jedoch zumindest das Symbol angezeigt, das der Funktion selbst entspricht
Das Funktions-Repository dient zum Definieren neuer Funktionen. Und diese Funktionen können Optionen haben. Oftmals sind diese Parameter (zum Beispiel
Die meisten Funktionen tun bei jedem Aufruf einfach das, was sie tun sollen. Einige Funktionen müssen jedoch initialisiert werden, bevor sie in einer bestimmten Sitzung ausgeführt werden können. Um dieses Problem zu lösen, gibt es im Abschnitt „Definition“ einen Abschnitt „Initialisierung“.
Funktionen aus einem Repository können andere Funktionen verwenden, die sich bereits im Repository befinden. Um Definitionen für ein Funktions-Repository einzurichten, die zwei (oder mehr) Funktionen enthalten, die aufeinander verweisen, müssen Sie diese in Ihrer Programmsitzung bereitstellen, damit Sie dies können Referenz wie auf ihnen
Entwicklungsperspektiven. Was soll passieren, wenn das Repository wirklich groß wird?
Heute starten wir gerade das Wolfram Feature Repository, aber wir gehen davon aus, dass seine Größe und Funktionalität im Laufe der Zeit dramatisch zunehmen wird und mit zunehmender Entwicklung verschiedene Probleme auftreten werden, von denen wir bereits vorhersehen, dass sie auftreten können.
Das erste Problem betrifft Funktionsnamen und ihre Eindeutigkeit. Das Funktions-Repository ist so konzipiert, dass Sie, wie die integrierten Funktionen in der Wolfram Language, auf jede bestimmte Funktion verweisen können, indem Sie einfach ihren Namen angeben. Dies bedeutet aber zwangsläufig, dass Funktionsnamen im gesamten Repository global eindeutig sein müssen, sodass es beispielsweise nur einen geben kann
Dies mag auf den ersten Blick wie ein großes Problem erscheinen, aber es lohnt sich zu bedenken, dass es sich im Grunde um dasselbe Problem handelt wie bei Dingen wie Internetdomänen oder Social-Media-Handles. Tatsache ist, dass das System lediglich über einen Registrar verfügen muss – und dies ist eine der Rollen, die unser Unternehmen für die Wissensdatenbank der Wolfram-Funktionen übernehmen wird. (Bei privaten Versionen eines Repositorys können ihre Registrare Administratoren sein.) Natürlich kann eine Internetdomäne registriert werden, ohne dass sich etwas darauf befindet, aber in einem Funktions-Repository kann ein Funktionsname nur registriert werden, wenn es eine tatsächliche Definition von gibt die Funktion.
Ein Teil unserer Rolle bei der Verwaltung der Wolfram-Funktionswissensdatenbank besteht darin, sicherzustellen, dass der für eine Funktion gewählte Name angesichts der Definition der Funktion logisch ist und den Namenskonventionen der Wolfram Language folgt. Wir verfügen über mehr als 30 Jahre Erfahrung in der Benennung integrierter Funktionen in der Wolfram Language, und unser Kuratorenteam wird diese Erfahrung auch in das Funktions-Repository einbringen. Natürlich gibt es immer Ausnahmen. Beispielsweise scheint es vorzuziehen, für eine Funktion einen kurzen Namen zu haben, aber es ist besser, sich mit einem längeren, spezifischeren Namen zu „verteidigen“, da die Wahrscheinlichkeit geringer ist, dass Sie in Zukunft auf jemanden stoßen, der einen ähnlichen Funktionsnamen erstellen möchte .
(An dieser Stelle ist zu beachten, dass das einfache Hinzufügen eines Member-Tags zur Unterscheidung von Funktionen nicht den beabsichtigten Effekt hat. Denn wenn Sie nicht darauf bestehen, immer ein Tag zuzuweisen, müssen Sie für jede bestimmte Funktion ein Standard-Tag definieren und auch Autoren-Tags zuweisen , was wiederum eine globale Koordination erfordern würde.)
Da die Wissensbasis der Wolfram-Funktionen wächst, wird eines der Probleme, die wahrscheinlich auftreten werden, die Auffindbarkeit der Funktionen sein, die das System bereitstellt
Für integrierte Funktionen in der Wolfram Language gibt es eine sogenannte Erkennungsschicht, die von bereitgestellt wird
Das Wolfram-Funktions-Repository ist als persistentes Funktions-Repository konfiguriert, in dem jede darin enthaltene Funktion immer funktioniert. Natürlich können neue Versionen von Funktionen verfügbar werden, und wir gehen davon aus, dass einige Funktionen mit der Zeit natürlich veraltet sein werden. Die Funktionen funktionieren, wenn sie in Programmen verwendet werden, ihre Dokumentationsseiten enthalten jedoch Links zu neuen, erweiterten Funktionen.
Das Wolfram Feature Repository soll Ihnen dabei helfen, schnell neue Funktionen zu entdecken und neue Möglichkeiten zur Verwendung der Wolfram-Sprache zu erlernen. Wir sind sehr optimistisch, dass einiges von dem, was im Feature-Repository erforscht wurde, irgendwann sinnvoll sein wird, um integrierte Teile der Kernsprache von Wolfram zu werden. Im letzten Jahrzehnt hatten wir ein ähnliches Set
Das Wichtigste dabei ist, dass eine Funktion in einem Funktions-Repository für jeden Benutzer sofort verfügbar ist. Es ist möglich, dass eine native Sprachfunktion viel besser und leistungsfähiger ist, aber ein Feature-Repository würde es Benutzern ermöglichen, sofort auf alle neuen Funktionen zuzugreifen. Und was am wichtigsten ist: Dieses Konzept ermöglicht es jedem, beliebige neue Funktionen hinzuzufügen.
Früher in der Geschichte der Wolfram-Sprache hätte diese Idee nicht so gut funktioniert wie sie, aber in diesem Stadium werden so viele Anstrengungen in die Sprache gesteckt und ein so tiefes Verständnis der Prinzipien des Sprachdesigns, dass es jetzt sehr scheint Einer großen Benutzergemeinschaft ist es möglich, Funktionen hinzuzufügen, die die Designkonsistenz wahren und sie für ein breites Spektrum von Benutzern nützlich machen.
In der Wolfram Language-Benutzergemeinschaft herrscht ein unglaublicher Talentgeist. (Natürlich gehören zu dieser Community viele führende Forscher und Entwickler aus den unterschiedlichsten Bereichen.) Ich hoffe, dass das Wolfram Feature Repository eine effektive Plattform zur Erschließung und Verbreitung dieses Talentgeistes bietet. Nur gemeinsam können wir etwas schaffen, das den Anwendungsbereich des Wolfram-Sprachcomputerparadigmas erheblich erweitert.
In mehr als 30 Jahren haben wir mit der Wolfram-Sprache einen langen Weg zurückgelegt. Lassen Sie uns nun gemeinsam noch weiter gehen. Ich ermutige alle angesehenen Benutzer der Wolfram-Sprache auf der ganzen Welt nachdrücklich, dafür das funktionale Repository sowie das neue Softwareprojekt wie die Free Wolfram Engine for Developers als Plattform zu nutzen.
Source: habr.com