Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Hallo, Habr! Ich präsentiere Ihnen die Übersetzung des Beitrags von Stephen Wolfram „Das Wolfram Funktionsrepository: Eine offene Plattform zur Erweiterung der Wolfram-Sprache starten“.

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Voraussetzungen für die Leistungsfähigkeit der Wolfram-Sprache

Heute stehen wir am Beginn großartiger Errungenschaften mit der Programmiersprache Wolfram Language. Vor nur drei Wochen haben wir die kostenlose Wolfram-Engine für Entwickler, um unseren Nutzern zu helfen, die Wolfram Language in ihre umfangreichen Softwareprojekte zu integrieren. Heute starten wir das Wolfram Funktionsrepository, um eine koordinierte Plattform für Funktionen bereitzustellen, die zur Erweiterung der Wolfram-Sprache erstellt wurden. Außerdem öffnen wir das Funktionsrepository für alle, die zur Weiterentwicklung unseres Softwareprodukts beitragen können.

Das Wolfram Funktionsrepository ist das, was durch die einzigartige Spezifik von Wolfram Language als nicht nur Programmiersprache, sondern auch vollumfänglicher Computingsprache möglich geworden ist.. In traditionellen Programmiersprachen erfordert das Hinzufügen bedeutender neuer Funktionen häufig die Erstellung ganzer zusätzlicher Bibliotheken, die möglicherweise nicht miteinander kompatibel sind. Im Gegensatz dazu ist die Wolfram Language bereits so sehr in die Sprache selbst integriert,, dass es möglich ist, ihre Funktionalität erheblich zu erweitern, indem einfach neue Funktionen hinzugefügt werden, die sich nahtlos in die Gesamtstruktur der Sprache einfügen.

Derzeit enthält das Repository für Wolfram-Funktionen 532 neue Funktionen , die in 26 thematischen Kategorien strukturiert sind:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Ähnlich wie mehr als 6000 Standardfunktionen, die in die Wolfram-Sprache integriert sind, hat jede Funktion im Repository eine Dokumentationsseite mit detaillierten Beschreibungen und Anwendungsbeispielen:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Um zur Seite zu gelangen, kopieren Sie das oben angegebene Objekt (funktionaler BLOB), fügen Sie es in das Eingabefeld ein und starten Sie dann die Funktion – sie ist bereits in die Wolfram-Sprache integriert und wird standardmäßig ab Version 12.0:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

unterstützt. LogoQRCode Sie müssen zum Beispiel nicht eine "Bibliothek zur Bildverarbeitung" einrichten – denn in der Wolfram Language haben wir bereits eine sequenzielle und sorgfältig algorithmisierte Methode implementiert. Bildbearbeitung, die sofort von verschiedenen grafischen Funktionen der Sprache bearbeitet werden können:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Ich hoffe, dass mit der Unterstützung einer großartigen und talentierten Community, die über die letzten Jahrzehnte (auf Basis der Wolfram Language) gewachsen und sich erweitert hat. Das Funktionsrepository von Wolfram wird in naher Zukunft den Umfang der verfügbaren Funktionen erheblich erweitern (möglicherweise mit potenziell bedeutenden, spezialisierten Funktionen aus verschiedenen Wissensbereichen der Wissenschaft und Technik). Damit wird es möglich, sowohl die Inhalte der Sprache (ihre integrierten Funktionen) als auch Entwicklungsprinzipien, die auf der Sprache basieren, zu nutzen. (Hier sei erwähnt, dass die Wolfram Language bereits über eine mehr als 30-jährige Entwicklungsgeschichte und stabilen Wachstum verfügt.).
Innerhalb der Funktionen aus dem Repository können kleine oder umfangreiche Codefragmente in der Wolfram Language enthalten sein. Zum Beispiel können das Aufrufe von externen APIs und Diensten oder externen Bibliotheken in anderen Sprachen sein.Ein einzigartiges Merkmal dieses Ansatzes ist, dass beim Wechsel zur Benutzerfunktionalität keine möglichen Inkonsistenzen auftreten, weil dieser Ansatz auf einer konsistenten Struktur der Wolfram Language basiert – und jede Funktion automatisch richtig funktioniert – genau so, wie es vorgesehen ist.
Die Benutzeroberfläche und die Programmstruktur des Wolfram-Funktionsrepositories sind so konzipiert, dass jeder seinen Beitrag so einfach und bequem wie möglich leisten kann – im Grunde genommen, indem er einfach eine Textdatei im Notizbuchformat (mit der Erweiterung nb) der Wolfram Language ausfüllt.. Eingebaute automatische Funktionen ermöglichen die Überprüfung neuer, dem Repository hinzugefügter Funktionen, um ihre garantierte Integration in die Sprache sicherzustellen. Unser Unternehmen setzt auf eine breite Nutzerbasis, die ihre Funktionen in die Sprache integrieren kann, anstatt auf komplexe neue Funktionen zu setzen. Obwohl hier ein Überprüfungsprozess implementiert ist, bestehen wir nicht auf etwas wie einer akribischen Analyse der Struktur oder strengen Standards für die Vollständigkeit und Zuverlässigkeit neuer Benutzerfunktionen, im Gegensatz zu den gründlicheren Prüfungen von Funktionen, die im Kern der Sprache verankert sind und die wir anwenden.

Dieser Ansatz beinhaltet zahlreiche Kompromisse und Details, aber unser Ziel ist es, das Wolfram-Funktionsrepository sowohl für die Benutzerfreundlichkeit als auch für den signifikanten Beitrag neuer Benutzerfunktionen zur Weiterentwicklung der Sprache zu optimieren. Mit zunehmendem Wachstum bin ich mir sicher, dass wir neue Methoden zur Verarbeitung und Prüfung der im Repository enthaltenen Funktionen entwickeln müssen, insbesondere um eine große Anzahl von Funktionen zu organisieren und die benötigten Funktionen für die Nutzer zu finden. Es ist jedoch ermutigend, dass der von uns gewählte Weg ein guter Anfang ist. Ich habe persönlich einige Funktionen zum ursprünglichen Repository hinzugefügt. Viele davon basieren auf dem Code, den ich persönlich über einen längeren Zeitraum entwickelt habe. Ich habe nur wenige Minuten gebraucht, um sie in das Repository zu übertragen. Jetzt, da sie im Repository sind, kann ich diese Funktionen endlich – jederzeit und ohne Verzögerung – nach Bedarf nutzen, ohne mir Gedanken über das Suchen von Dateien, das Laden von Paketen usw. machen zu müssen.

Effizienzsteigerung bei Kostensenkung

Bereits vor dem Internet gab es Möglichkeiten, Code in der Wolfram Language auszutauschen (unser erstes großes zentrales Projekt war MathSource, das 1991 für Mathematica auf CD-ROM und ähnlichem erstellt wurde). Der vorgeschlagene Ansatz zur Implementierung eines Wolfram-Funktionsrepositoriums ist zweifellos ein leistungsfähigeres und zuverlässigeres Mittel zur Erreichung dieser Ziele.

Seit über 30 Jahren arbeitet unser Unternehmen engagiert daran, die Integrität der Wolfram-Sprache zu wahren, was entscheidend dafür ist, dass die Wolfram-Sprache nicht nur eine Programmiersprache, sondern auch eine vollwertige Computersprachewird. Der Kernansatz für die Implementierung des Wolfram-Funktionsrepositoriums basiert auf der Verwendung eines einheitlichen Programmierschemas zur Entwicklung neuer Funktionen, die schrittweise hinzugefügt werden, um die Entwicklung und gemeinsame Evolution der Sprache zu ermöglichen.

In der Struktur der Implementierung jeder Funktion finden unterschiedliche Berechnungsprozesse statt. Dabei ist es wichtig, dass die Funktion für den Nutzer klar und einheitlich aussieht und gut lesbar ist. In diesem Kontext werden die integrierten Funktionen der Wolfram-Sprache durch mehr als 6000 aufeinanderfolgende Beispiele präsentiert, die zeigen, wie man Funktionen richtig programmiert (das sind unsere Live-Programmierungsvideos, die umfassen Hunderte Stunden an Programmierprozess zur Erstellung typischer Programme). Dieser Ansatz ermöglicht es letztendlich, das Wolfram-Funktionen-Repository leistungsfähig zu machen. Der strukturelle Charakter der Wolfram-Sprache mit ihrer Vielzahl an zusätzlichen und unterschiedlichen Bibliotheken, die bereits integriert sind, spielt dabei eine entscheidende Rolle. Wenn Sie beispielsweise eine Funktion zur Bildverarbeitung haben oder sparse Arrays, oder molekulare Strukturen, sowie geografische Daten oder andere Arten, gibt es bereits eine konsistente symbolische Darstellung in der Sprache, wodurch Ihre Funktion sofort mit anderen Funktionen in der Sprache kompatibel wird.

Die Erstellung eines Repositories, das tatsächlich gut funktioniert, ist eine interessante Aufgabe im Bereich des Metaprogrammings. Ein Übermaß an Einschränkungen im Programm wird die gewünschte Vereinheitlichung und Universalisierung der Algorithmusarbeit nicht ermöglichen. Ebenso werden Sie mit unzureichenden funktionalen Einschränkungen keine hinreichend korrekte Ausführungsreihenfolge des Algorithmus realisieren können. Einige vorherige Beispiele für den Kompromiss dieser Ansätze, die von unserem Unternehmen umgesetzt wurden, haben ausreichend stabil funktioniert — das sind: Wolfram Demonstrationen Projekt, das 2007 gestartet wurde und nun im interaktiven Modus im Internet läuft und mehr als 12000 benutzerinteraktive Demonstrationen enthält. In der Wolfram-Datenbank gibt es mehr als 600 fertige Datenbanken, die in der Wolfram Language verwendet werden können, und das Wolfram-Neuronennetzwerk wird praktisch wöchentlich mit neuen neuronalen Netzwerken ergänzt (derzeit sind es bereits 118) und diese werden sofort über die Funktion NetModel in der Wolfram Language eingebunden.

Alle oben genannten Beispiele haben einen wesentlichen Charakter – die in einem Projekt gesammelten Objekte und Funktionen weisen ein sehr hohes Maß an Strukturierung und Prozessverteilung auf. Zweifellos kann die Detaillierung der Struktur dessen, was eine Demonstration, ein neuronales Netzwerk oder etwas anderes darstellt, stark variieren, aber die grundlegende Struktur für jedes aktuelle Repository bleibt immer gleich. Was halten Sie, geschätzter Nutzer, von der Idee, ein solches Repository zu schaffen, das Erweiterungen zur Wolfram-Sprache hinzufügt? Die Wolfram Language ist so konzipiert, dass sie äußerst flexibel ist, wodurch sie in jeder gewünschten Weise erweiterbar und anpassbar ist. Diese Tatsache ist von entscheidender Bedeutung für die Möglichkeit, schnell verschiedene großangelegte Softwareprojekte in der Wolfram Language zu erstellen. Hier ist zu beachten, dass mit zunehmender Flexibilität der Sprache auch die Kosten der Projekte, die in dieser Sprache realisiert werden, zwangsläufig steigen werden. Dies liegt daran, dass je mehr ein Nutzer diese Sprache anwendet, desto mehr spezialisierte Funktionalitäten erhält; jedoch sollte man nicht vergessen, dass dieser Ansatz auch negative Aspekte hinsichtlich der Möglichkeit der Gewährleistung konsistenter Übereinstimmung der Programmmodule haben kann.

In traditionellen Programmiersprachen gibt es ein weit verbreitetes Problem mit Bibliotheken: Wenn Sie beispielsweise eine einzige Bibliothek verwenden, funktioniert der Code korrekt. Versuchen Sie jedoch, mehrere Bibliotheken zu nutzen, gibt es keine Garantie dafür, dass sie reibungslos miteinander interagieren. Darüber hinaus fehlt es in traditionellen Programmiersprachen – im Gegensatz zu einem vollwertigen Berechnungsdienst – an Möglichkeiten, verlässliche zugrunde liegende Darstellungen für Funktionen oder Datentypen zu gewährleisten, abgesehen von ihren grundlegenden Strukturen. Doch das Problem ist in Wirklichkeit sogar größer, als es auf den ersten Blick scheint: Wenn jemand eine umfangreiche Funktionalitätsdomäne aufbaut, ist es ohne erhebliche Investitionen in die zentralisierte Projektprogrammierung, die wir in die Wolfram-Sprache investiert haben, unmöglich, Konsistenz zu erreichen. Daher ist es entscheidend, dass alle Softwaremodule stets korrekt zusammenarbeiten.

Die Idee des Wolfram-Funktionsrepositories besteht darin, das oben genannte Problem zu umgehen – indem es dem Programmierern ermöglicht wird, Erweiterungen in Form von vergleichsweise kleinen Codeelementen durch separate Funktionen hinzuzufügen. Die Entwicklung dieser Funktionen als modulare Teile ist deutlich einfacher. Dennoch gibt es Programmieraspekte, die nicht durch separate Funktionen komfortabel gelöst werden können (und unser Unternehmen plant in naher Zukunft, einen optimierten Algorithmus anzubieten, der bei der Implementierung umfangreicher Softwarepakete unterstützt). Allerdings bieten die bereits in die Wolfram Language integrierten Funktionen zahlreiche Programmiermöglichkeiten, die auf einzelnen Funktionen basieren. Der Gedanke dahinter ist, dass mit relativ geringem Programmieraufwand eine Vielzahl neuer und äußerst nützlicher Funktionen geschaffen werden kann, die genügend Kohärenz im Projekt gewährleisten, gut aufeinander abgestimmt sind und darüber hinaus leicht und weitreichend in der Sprache zukünftig eingesetzt werden können.

Dieser Ansatz stellt zweifellos einen Kompromiss dar. Mit einer umfassenderen Implementierung könnte man sich eine ganz neue Welt der Funktionalität vorstellen, die äußerst leistungsstark und nützlich ist. Wenn Sie neue Funktionen benötigen, die sich in alles andere einfügen, aber gleichzeitig nicht bereit sind, enorme Anstrengungen für die Projektentwicklung aufzuwenden, könnte dies leider dazu führen, dass Ihr Projekt an Umfang verliert. Die Idee des Wolfram-Funktionsrepositories besteht darin, die bestimmenden Funktionen des Projekts bereitzustellen; dieser Ansatz ermöglicht es, leistungsstarke Funktionen hinzuzufügen, während gleichzeitig die gute Konsistenz des Programmierprojekts vereinfacht wird.

Hilfe beim Hinzufügen benutzerdefinierter Funktionen zum Funktionsrepository

Die Spezialisten unseres Unternehmens haben intensiv daran gearbeitet, ihren Beitrag zu den Funktionen des Wolfram-Repositories für die Benutzer so einfach wie möglich zu gestalten. Auf dem Desktop (bereits in Version 12.0), können Sie einfach auf die Registerkarten des Hauptmenüs folgen: Datei > Neu > RepositoryItem > Funktionsrepository-Element und Sie erhalten „Definition Notebook» (softwaremäßig innerhalb der Arbeitsumgebung. Sie können auch die ähnliche Funktion verwenden — CreateNotebook[«FunctionResource»]):

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Es gibt zwei grundlegende Schritte, die Sie ausführen müssen: Erstens, den tatsächlichen Code Ihrer Funktion zu schreiben, und zweitens, die Dokumentation zu erstellen, die beschreibt, wie Ihre Funktion funktionieren sollte.
Klicken Sie oben auf die Schaltfläche «Beispiel öffnen», um ein Beispiel dafür zu sehen, was Sie tun müssen:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Tatsächlich versuchen Sie, etwas Ähnliches wie eine integrierte Funktion in der Wolfram-Sprache zu erstellen. Nur dass sie etwas viel spezifischeres tun kann als eine integrierte Funktion. Dabei werden die Erwartungen an ihre Vollständigkeit und Zuverlässigkeit jedoch viel geringer sein.
Sie müssen Ihrer Funktion einen Namen geben, der den Benennungsrichtlinien der Wolfram-Sprache entspricht. Darüber hinaus müssen Sie Dokumentation für Ihre Funktion entwickeln, ähnlich der integrierten Funktionen der Sprache. Dazu werde ich später näher erläutern. Beachten Sie jetzt einfach, dass es in der Reihe von Schaltflächen oben in der Definitionsnotizbuch-Datei eine Schaltfläche gibt «Stilrichtlinien», in der erläutert wird, was zu tun ist, sowie die Schaltfläche „Werkzeuge“, die eine Sammlung zur Formatierung der Dokumentation Ihrer Funktion bereitstellt.
Wenn Sie sicher sind, dass alles korrekt ausgefüllt ist und Sie bereit sind, klicken Sie auf die Schaltfläche „Check“ („Überprüfen“). Es ist völlig normal, dass Sie sich noch nicht in allen Einzelheiten auskennen. Daher wird die Funktion „Check“ automatisch ausgeführt und viele Stil- und Konsistenzprüfungen vornehmen. Oft wird sie Ihnen sofort vorschlagen, Korrekturen zu bestätigen und anzunehmen (zum Beispiel: „Diese Zeile sollte mit einem Doppelpunkt enden“, und sie schlägt vor, einen Doppelpunkt einzugeben). Manchmal wird sie Sie auffordern, selbst etwas hinzuzufügen oder zu ändern. Wir werden ständig neue Funktionen zur automatischen Funktionalität der Schaltfläche „Check“ hinzufügen, aber in erster Linie dient sie dazu, sicherzustellen, dass alles, was Sie in das Funktionsrepository einspeisen, so weit wie möglich mit den Stilrichtlinien übereinstimmt.

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Nachdem Sie auf „Check“ geklickt haben, können Sie die Funktion „Preview“ verwenden. „Preview“ erstellt eine Vorschau auf die Dokumentationsseite, die Sie für Ihre Funktion festgelegt haben. Sie können auch eine Vorschau für eine Datei erstellen, die auf Ihrem Computer oder in einem Cloud-Speicher gespeichert ist. Sollten Sie aus irgendeinem Grund mit der Vorschau nicht zufrieden sein, kehren Sie einfach zurück, nehmen Sie die erforderlichen Anpassungen vor und klicken Sie erneut auf die Schaltfläche „Preview“.
Jetzt sind Sie bereit, Ihre Funktion im Repository zu veröffentlichen. Die Schaltfläche „Deploy“ bietet Ihnen vier Handlungsmöglichkeiten:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

In diesem Schritt ist es wichtig, dass Sie Ihre Funktion im Wolfram-Funktionsrepository einreichen, damit sie für jeden Benutzer zugänglich ist. Gleichzeitig können Sie Ihre Funktion auch für eine begrenzte Anzahl von Benutzern bereitstellen. Zum Beispiel können Sie eine lokal auf Ihrem Computer gehostete Funktion erstellen, die nur verfügbar ist, wenn Sie diesen speziellen Computer verwenden. Alternativ können Sie sie auch in Ihrer Cloud-Konto, damit es für Sie verfügbar ist, wenn Sie mit der Cloud verbunden sind. Sie können auch eine Funktion öffentlich über Ihr Cloud-Konto bereitstellen (deployen). Diese wird nicht im zentralen Funktionsrepository von Wolfram angezeigt, aber Sie können jemandem eine URL geben, die es ihnen ermöglicht, Ihre Funktion aus Ihrem Konto abzurufen. (In Zukunft werden wir auch zentrale Repositories auf Unternehmensebene unterstützen).

Angenommen, Sie möchten Ihre Funktion tatsächlich im Wissensbereich der Wolfram-Funktionen einreichen. Dazu klicken Sie auf die Schaltfläche „Einreichen“ im Repository. Was passiert dann genau? Ihre Anfrage wird sofort in die Warteschlange zur Prüfung und Genehmigung durch unser spezielles Kuratorenteam aufgenommen.

Während Ihre Anfrage den Genehmigungsprozess durchläuft (der in der Regel mehrere Tage dauert), erhalten Sie Benachrichtigungen über den Status ihrer Prüfung sowie möglicherweise Vorschläge für deren künftige Nutzung. Sobald Ihre Funktion jedoch genehmigt ist, wird sie sofort im Wolfram-Funktionsrepository veröffentlicht und für jegliche Nutzung verfügbar sein. (Und das wird angezeigt in den Nachrichtenübersichten über neue Funktionen usw.)

Was sollte im Repository enthalten sein?

Es ist wichtig zu beachten, dass unser Unternehmen sehr hohe Standards in Bezug auf Vollständigkeit, Zuverlässigkeit und allgemeine Qualität hat. Aus den über 6000 Funktionen, die wir in den letzten 30 Jahren bereits in die Wolfram-Sprache integriert haben, entsprechen alle diesen Anforderungen. Das Ziel des Wolfram-Funktionsrepositorys besteht darin, die gesamte Struktur und Funktionalität, die bereits in der Wolfram-Sprache existiert, zu nutzen, um so viele leichtere Funktionen (d.h. Funktionen mit höherer Leistungsfähigkeit) hinzuzufügen.

Natürlich müssen die Funktionen im Wolfram-Funktionsrepository den Entwicklungsprinzipien der Wolfram Language folgen, damit sie reibungslos mit anderen Funktionen interagieren können und den Erwartungen der Benutzer entsprechen, wie Funktionen korrekt arbeiten sollten. Dennoch dürfen diese Funktionen nicht die gleiche Vollständigkeit oder Zuverlässigkeit aufweisen.

Bei den integrierten Funktionen der Wolfram-Sprache arbeiten wir intensiv daran, die Programmfunktionen so allgemein wie möglich zu gestalten. Gleichzeitig gibt es nichts Falsches daran, wenn im Wolfram-Funktionsrepository eine Funktion aufgenommen wird, die einen sehr spezifischen, aber nützlichen Anwendungsfall behandelt. Zum Beispiel kann die Funktion SendMailFromNotebook Dateien in einem bestimmten Format empfangen und E-Mails auf eine bestimmte Weise erstellen. PolygonalDiagram erstellt Diagramme nur mit bestimmten Farben und Markierungen usw.

Ein weiterer Aspekt der integrierten Funktionen ist, dass unser Unternehmen alle Anstrengungen unternimmt, um alle atypischen Fälle zu bearbeiten, um falsche Eingaben korrekt zu bearbeiten usw. In der Funktionsbibliothek ist es völlig normal, dass dort eine spezielle Funktion existiert, die die grundlegenden Fälle zur Lösung eines Problems behandelt und alle anderen ignoriert.

Es ist offensichtlich, dass es besser ist, Funktionen zu haben, die mehr leisten und dies besser tun, aber die Optimierung für die Funktionsbibliothek – im Gegensatz zu den integrierten Funktionen der Programmiersprache Wolfram – sollte mehr Funktionen beinhalten, die stärker miteinander verknüpft sind, als sich in die Implementierungsprozesse jeder einzelnen Funktion zu vertiefen.

Lassen Sie uns nun ein Beispiel für Funktionstests im Repository betrachten. Die Erwartungen an die Konsistenz solcher Funktionen sind natürlich viel geringer als bei integrierten Sprachfunktionen. Dies ist besonders relevant, wenn Funktionen von externen Ressourcen wie APIs abhängen. Daher ist es wichtig, kontinuierlich konsistente Tests durchzuführen, was automatisch in den Überprüfungsalgorithmen geschieht. In der nb-Datei können Sie explizit Definitionen angeben (im Abschnitt „Zusätzliche Informationen“) und so viele Tests definieren, wie Sie für notwendig erachten, entweder anhand von Eingabe- und Ausgabesträngen oder vollständigen symbolischen Objekten vom Typ. VerificationTest, die Sie für notwendig erachten. Darüber hinaus versucht das System ständig, die von Ihnen bereitgestellten Dokumentationsbeispiele in den Verifizierungsprozess zu integrieren (dies kann manchmal recht ressourcenintensiv sein, insbesondere für Funktionen, deren Ergebnisse von Zufallszahlen oder Tageszeiten abhängen).

Am Ende wird das Funktionsrepository eine Reihe von Implementierungsproblemen aufweisen. Einige werden nur aus einer Zeile Code bestehen, während andere Tausende oder sogar Zehntausende von Zeilen enthalten könnten, wahrscheinlich unter Verwendung vieler Hilfsfunktionen. In welchen Fällen sollte eine Funktion hinzugefügt werden, deren Definition nur sehr wenig Code erfordert? Prinzipiell, wenn es für die Funktion einen guten einprägsamen Namen gibt, den die Benutzer sofort verstehen würden, wenn sie ihn im Code sehen, dann kann sie bereits hinzugefügt werden. Andernfalls ist es wahrscheinlich besser, einfach erneut den Code in Ihr Programm zu schreiben, jedes Mal, wenn Sie ihn verwenden müssen.

Das Hauptziel des Funktionsrepositories (wie der Name schon sagt) besteht darin, dem Sprachkonzept neue Funktionen hinzuzufügen. Wenn Sie neue Daten oder neue Entitätenhinzufügen möchten, verwenden Sie den Wolfram Data Repository. Aber was ist, wenn Sie neue Objekttypen für Ihre Berechnungen einführen möchten?

Es gibt tatsächlich zwei Wege. Möglicherweise möchten Sie einen neuen Objekttyp einführen, der in neuen Funktionen im Funktionsrepository verwendet wird. In diesem Fall können Sie einfach seine symbolische Darstellung aufschreiben und sie beim Ein- oder Ausgeben von Funktionen im Funktionsrepository verwenden.

Aber was ist, wenn Sie ein Objekt darstellen und dann über vorhandene Funktionen in der Wolfram Sprache definieren möchten, die damit zusammenarbeiten sollen? Dafür hatte die Wolfram Sprache schon immer einen einfachen Mechanismus, der genannt wird UpValues. Mit einigen Einschränkungen (insbesondere für Funktionen, die ihre Argumente nicht bewerten können)), das Funktionsrepository ermöglicht es Ihnen, eine Funktion einfach zu präsentieren und Werte dafür festzulegen. (Um die Konsistenz bei der Erstellung einer neuen, wichtigen Struktur zu erhöhen, die vollständig in die Wolfram Language integriert ist — dies ist in der Regel ein sehr wichtiger Prozess, der nicht nur durch eine Erhöhung der Projektkosten erreicht werden kann, und genau das ist, was unser Unternehmen im Rahmen von langfristigen Entwicklungsprojekten für die Sprache tut. Diese Aufgabe ist kein Ziel, das im Rahmen der Entwicklung des Repositories gesetzt wird).

Also, was könnte im Funktionscode des Funktionsrepositories enthalten sein? Alles, was in die Wolfram Language integriert ist, selbstverständlich (sofern es nicht Sicherheits für und Betriebsfähigkeit der Software selbst, wie der Berechnungsumgebung, gefährdet) ebenso wie jede Funktion aus dem Funktionsrepository. Dabei gibt es auch andere Funktionsmöglichkeiten: Eine Funktion im Funktionsrepository kann APIs aufrufen, entweder in der Wolfram Cloud, oder aus einer anderen Quelle. Natürlich gibt es einige Risiken, die damit verbunden sind. Da es keine Garantien dafür gibt, dass die API sich nicht ändert und die Funktion im Funktionsspeicher dadurch nicht mehr funktioniert. Um solche Probleme zu erkennen, gibt es einen Hinweis auf der Dokumentationsseite (im Abschnitt „Anforderungen“) für jede Funktion, die nicht nur auf die integrierte Funktionalität der Wolfram Language angewiesen ist. (Natürlich können bei realen Daten selbst bei dieser Funktionalität Probleme auftreten – denn die realen Daten über die Welt ändern sich ständig und manchmal ändern sich sogar deren Definitionen und Strukturen.)

Muss der gesamte Code für das Wolfram-Funktionsrepository in der Wolfram-Sprache geschrieben sein? Definitiv, der Code innerhalb einer externen API muss nicht in der Wolfram-Sprache verfasst sein, was den Code der Sprache tatsächlich nicht beeinflusst. Tatsächlich, wenn Sie eine Funktion in praktisch jeder externen Sprache oder Bibliothek finden, können Sie eine Hülle erstellen, die es ermöglicht, sie im Wolfram-Funktionsrepository zu verwenden. (Normalerweise sollten dafür die integrierten Funktionen verwendet werden ExternalEvaluate oder ExternalFunction im Code der Wolfram-Sprache.)

Warum ist dies also sinnvoll? Im Wesentlichen ermöglicht es die Nutzung des gesamten integrierten Systems der Wolfram Language und dessen einheitlichem Spektrum an Softwarefunktionen. Wenn Sie eine Basisimplementierung aus einer externen Bibliothek oder Sprache erhalten, können Sie die reichhaltige symbolische Struktur der Wolfram Language nutzen, um eine benutzerfreundliche Oberflächenfunktion zu erstellen, die es den Nutzern ermöglicht, bereits implementierte Funktionalitäten relativ einfach zu verwenden. Zumindest sollte dies in einer idealen Welt umsetzbar sein, in der alle Komponenten für das Laden von Bibliotheken usw. vorhanden sind; in diesem Fall würden sie automatisch über die Wolfram Language gelöst. (Es sei angemerkt, dass in der Praxis Probleme mit der Konfiguration externer Sprachen in einem bestimmten Computersystem auftreten können, während in Cloud-Umgebungen zusätzliche Sicherheitsprobleme auftreten können).

Übrigens, wenn Sie zum ersten Mal gängige externe Bibliotheken analysieren, erscheinen sie oft zu kompliziert, um sie nur mit einigen Funktionen abzudecken. In vielen Fällen entsteht ein Großteil der Komplexität durch die Erstellung der Infrastruktur, die für die Bibliothek erforderlich ist, sowie durch alle unterstützenden Funktionen. Bei der Verwendung der Wolfram Language ist jedoch die Infrastruktur in der Regel bereits in den Paketen integriert, sodass es nicht notwendig ist, all diese unterstützenden Funktionen im Detail zu erläutern. Stattdessen sollten Sie lediglich Funktionen für einige „oberste“ anwendungsorientierte Funktionen in der Bibliothek erstellen.

„Ökosystem“ der Wissensdatenbank

Wenn Sie Funktionen geschrieben haben, die Sie ständig verwenden, senden Sie diese an das Wolfram-Funktionsrepository! Selbst wenn daraus nichts Größeres (Entwicklung der Sprache) wird, wird es Ihnen viel leichter fallen, diese Funktionen für den persönlichen Gebrauch zu nutzen. Es ist jedoch naheliegend, dass, wenn Sie diese Funktionen regelmäßig nutzen, möglicherweise auch andere Benutzer deren Nutzen entdecken.

Es ist selbstverständlich, dass Sie sich in einer Situation befinden können, in der Sie nicht in der Lage – oder nicht bereit – sind, Ihre Funktionen zu teilen oder im Falle des Zugriffs auf private Informationsressourcen. Selbst in solchen Fällen können Sie einfach die Funktionen in Ihrem eigenen Cloud-Konto bereitstellen, indem Sie die Rechte für den Zugriff darauf angeben. (Wenn Ihre Organisation über eine private Wolfram Enterprise-Cloud, wird sie bald in der Lage sein, ein eigenes privates Funktionsrepository zu hosten, das aus Ihrer Organisation verwaltet werden kann und die Möglichkeit bietet, die Ansichten für Dritte vorzuschreiben oder nicht.)

Die Funktionen, die Sie in das Wolfram-Funktionsrepository senden, müssen nicht perfekt sein; sie sollten lediglich nützlich sein. Das ist ein bisschen wie der Bereich "Fehler" in der klassischen Unix-Dokumentation – im "Definitionsbereich" gibt es einen Abschnitt "Autorenhinweise", in dem Sie Einschränkungen, Probleme usw. beschreiben können, die Sie bereits über Ihre Funktion wissen. Außerdem können Sie beim Senden Ihrer Funktion Anmerkungen hinzufügen, die von einem speziellen Kuratorenteam gelesen werden.

Nach der Veröffentlichung hat die Seite der Funktion immer zwei Links am Ende: „Ein Feedback zu dieser Funktion senden» und «Im Wolfram-Community diskutieren“. Wenn Sie eine Markierung (z. B. um mich über Fehler zu informieren) anbringen, können Sie ein Kästchen aktivieren, das angibt, dass Ihre Nachricht und Ihre Kontaktdaten dem Autor der Funktion übermittelt werden sollen.

Manchmal besteht die Notwendigkeit, einfach die Funktionen aus dem Wolfram-Funktions-Repository zu verwenden, zum Beispiel die integrierten Funktionen, ohne in ihren Code zu schauen. Wenn Sie jedoch einen "Blick hineinwerfen" möchten, finden Sie im oberen Bereich immer die Schaltfläche "Notizbuch". Klicken Sie darauf, und Sie erhalten eine eigene Kopie des ursprünglichen Definitionsnotizbuchs, das im Funktionsrepository gespeichert wurde. Manchmal können Sie es einfach als Beispiel für Ihre Bedürfnisse verwenden. Dabei können Sie auch Ihre eigene Modifikation dieser Funktion entwickeln. Vielleicht möchten Sie diese gefundenen Funktionen aus dem Repository auf Ihrem Computer oder in Ihrem Cloud-Speicher ablegen, oder vielleicht möchten Sie sie in die Wissensdatenbank der Funktionen senden, möglicherweise als verbesserte, erweiterte Version der ursprünglichen Funktion.

In Zukunft planen wir, eine Git-ähnliche Verzweigung für Funktions-Repositories zu unterstützen. Derzeit konzentrieren wir uns jedoch darauf, es einfacher zu machen, und haben immer nur eine allgemein akzeptierte Version jeder Funktion, die in die Sprache integriert ist. In der Regel erhält der ursprüngliche Autor der Funktion die Kontrolle über Aktualisierungen, sofern die Entwickler nicht aufhören, die von ihnen erstellten Funktionen zu unterstützen und auf Benutzeranfragen zu reagieren. Diese neuen Versionen werden dann überprüft und, wenn sie den Prüfprozess bestehen, in die Sprache integriert.

Lassen Sie uns betrachten, wie die 'Versionsverwaltung' für entwickelte Funktionen funktioniert. Im Moment, wenn Sie eine Funktion aus dem Funktionsrepository verwenden, wird ihre Definition ständig auf Ihrem Computer gespeichert (oder in Ihrem Cloud-Konto, falls Sie die Cloud nutzen). Wenn eine neue Version der Funktion verfügbar wird, erhalten Sie bei der nächsten Verwendung eine Benachrichtigung darüber. Und wenn Sie die Funktion auf die neue Version aktualisieren möchten, können Sie dies mit dem Befehl ResourceUpdate. (Ein „funktionaler BLOB-Objekt“ speichert tatsächlich mehr Informationen über Versionen, und in Zukunft planen wir, dies für unsere Nutzer zugänglicher zu machen.)

Eine der großartigen Eigenschaften des Wolfram-Funktionsrepositories ist, dass jedes Wolfram Language-Programm Funktionen daraus verwenden kann. Wenn ein Programm in einem Notizbuch erscheint, ist es oft praktisch, die Funktionen des Repositories in leicht lesbare „funktionale binäre Objekte“ zu formatieren (möglicherweise mit dem entsprechenden Versionssatz).

Sie können jederzeit auf jede Funktion im Funktionsrepository zugreifen, indem Sie den Text ResourceFunction []] verwenden. Das ist besonders praktisch, wenn Sie Code oder Skripte direkt für die Wolfram Engine schreiben, zum Beispiel mit einem IDE oder Texteditor . (Es ist besonders zu beachten, dass das Funktionsrepository vollständig kompatibel ist mit der kostenlosen Wolfram Engine für Entwickler.).

Wie funktioniert das?

Innerhalb der Funktionen im Wolfram-Repository ist dies durch dasselbe Ressourcensystem möglich, wie in allen unseren anderen bestehenden Repositories, (Datenlager, Neural Net Repository,, Sammlung von Demoprojekten) und andere Systemressourcen von Wolfram, ResourceFunction basiert letztendlich auf der Funktion ResourceObject.

Lassen Sie uns betrachten ResourceFunction:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Innerhalb können Sie einige Informationen sehen, indem Sie die Funktion verwenden Information:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Wie funktioniert die Konfiguration der Ressourcenfunktion? Der einfachste Fall ist reiner lokal. Hier ist ein Beispiel, das eine Funktion (in diesem Fall einfach eine reine Funktion) nimmt und sie als Ressourcenfunktion für die aktuelle Sitzung in der Anwendung definiert:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Nachdem Sie die Definition vorgenommen haben, können Sie die Ressourcenfunktion verwenden:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Bitte beachten Sie, dass in diesem BLOB-Objekt der Funktion ein schwarzes Symbol vorhanden ist Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen. Das bedeutet, dass die BLOB-Funktion auf eine im Speicher definierte Ressourcenfunktion für die aktuelle Sitzung verweist. Für die Ressourcenfunktion, die dauerhaft auf Ihrem Computer oder in Ihrem Cloud-Konto gespeichert ist, gibt es ein graues Symbol Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen. Und für die offizielle Ressourcenfunktion im Wolfram-Funktionsrepository gibt es ein oranges Symbol Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen.

Was passiert also, wenn Sie im Notizbuch, das die Definitionen enthält, das Menü "Bereitstellung" verwenden? Zunächst nimmt es alle Definitionen im Notizbuch und erstellt daraus symbolische ResourceObject). Wenn Sie eine Text-IDE oder ein Programm verwenden, können Sie auch explizit ResourceObject)

die lokale Bereitstellung der Funktion aus dem Repository auf Ihrem Computer mit dem Befehl LocalCache für das Ressourcenobjekt verwenden, um es als LocalObject in Ihrem Dateisystem zu speichern. Die Bereitstellung in Ihrem Cloud-Konto erfolgt mit dem Befehl CloudDeploy für das Ressourcenobjekt, während die öffentliche Bereitstellung in der Cloud — CloudPublish. In allen Fällen wird ResourceRegister auch zur Registrierung des Namens der Ressourcenfunktion verwendet, sodass ResourceFunction[«name»] funktionieren wird.

Wenn Sie die Schaltfläche Übermitteln für das Funktionsrepository drücken, passiert Folgendes: ResourceSubmit wird für das Ressourcenobjekt aufgerufen. (Und wenn Sie ein textbasiertes Eingabesystem verwenden, können Sie dies auch direkt aufrufen.) ResourceSubmit direkt.)

Standardmäßig erfolgt die Einreichung unter dem Namen, der mit Ihrer Wolfram-ID verknüpft ist. Wenn Sie jedoch im Namen einer Entwicklergruppe oder Organisation ein Angebot einreichen, können Sie eine separate Herausgeber-ID festlegen und stattdessen als Namen für die Interaktion mit Ihren Ansichten verwenden.

Nachdem Sie eine Ihrer Funktionen in die Wissensdatenbank eingefügt haben, wird sie zur Prüfung eingereicht. Falls Sie Kommentare erhalten, werden diese in der Regel in Form einer Textdatei mit zusätzlichen „Kommentarfeldern“ bereitgestellt. Sie können den Status Ihres Antrags jederzeit überprüfen, indem Sie auf das Teilnehmerportal der Ressourcen zugreifen. Sobald Ihre Funktion genehmigt wurde, werden Sie benachrichtigt (per E-Mail), und Ihre Funktion wird im Funktionsrepository von Wolfram veröffentlicht.

Einige Feinheiten im Betrieb

Auf den ersten Blick könnte es den Anschein haben, dass man einfach das Definitionsnotizbuch nehmen und wörtlich in das Funktionsrepository einfügen kann; tatsächlich gibt es jedoch viele Feinheiten – und um diese zu behandeln, ist eine ziemlich komplexe Metaprogrammierung erforderlich, die sowohl den Code für die Funktion als auch das Definitionsnotizbuch als Symbol behandelt. Ein Großteil dieses Prozesses geschieht intern, also „im Hintergrund“, aber es kann einige Folgen haben, die es wert sind, verstanden zu werden, wenn Sie zur Wissensdatenbank der Funktionen beitragen möchten.

Die erste wichtige Nuance: Wenn Sie das "Notizbuch für Definitionen" ausfüllen, können Sie überall auf Ihre Funktion verweisen, indem Sie einen solchen Namen verwenden, MyFunction, der aussieht wie ein gewöhnlicher Funktionsname in der Wolfram Language. Allerdings wird für die Dokumentation des Funktionsrepositories dies ersetzt durch ResourceFunction["MyFunction"] , das ist genau das, was die Benutzer tatsächlich verwenden werden, wenn sie mit der Funktion arbeiten.

Die zweite Nuance: Wenn Sie eine Ressourcenfunktion aus dem Definitionsnotizbuch erstellen, müssen alle Abhängigkeiten, die in die Funktionsdefinition einfließen, fixiert und ausdrücklich hinzugefügt werden. Um jedoch sicherzustellen, dass die Definitionen modular bleiben, sollten Sie alles in einen einzigartigen Namensraumpacken. (Selbstverständlich befinden sich die Funktionen, die all dies tun,, im Funktionsrepository.)

In der Regel werden Sie nie Spuren des Codes sehen, der zur Konfiguration dieses Namensraums verwendet wird. Sollte es jedoch aus irgendeinem Grund zu einem unvollendeten Symbol innerhalb Ihrer Funktion kommen, werden Sie feststellen, dass dieses Symbol im internen Kontext der Funktion vorhanden ist. Bei der Verarbeitung des Notizbuchs zur Definition sollte jedoch mindestens das Symbol, das der Funktion selbst entspricht, erhalten bleiben. wird für die optimale Darstellung konfiguriert als funktionales BLOB und nicht als rohes Symbol im internen Kontext.

Das Funktionsrepository dient dazu, neue Funktionen zu definieren. Und diese Funktionen können Optionen haben. Oft sind diese Parameter (zum Beispiel Methode oder Bildgröße) stehen für integrierte Funktionen zur Verfügung, sowie für solche, für die bereits integrierte Symbole existieren. Manchmal kann jedoch eine neue Funktion auch neue Optionen benötigen. Um die Modularität zu gewährleisten, müssen diese Parameter als in einem einzigartigen internen Kontext definierte Symbole vorliegen (oder etwas wie vollständige Ressourcenfunktionen, nämlich für sich selbst). Der Funktions-Repository ermöglicht es zur Vereinfachung, neue Optionen in Form von Zeichenfolgen in den Definitionen zu setzen. Und zur Benutzerfreundlichkeit können diese Definitionen (vorausgesetzt, sie wurden verwendet OptionValue und OptionsPattern) ebenfalls so verarbeitet werden, dass bei Verwendung von Funktionen die Parameter nicht nur als Zeichenfolgen, sondern auch als globale Symbole mit den gleichen Namen angegeben werden können.

Die meisten Funktionen tun einfach das, was sie jedes Mal tun sollen, wenn sie aufgerufen werden, aber einige Funktionen benötigen eine Initialisierung, bevor sie in einer bestimmten Sitzung arbeiten können – und um dieses Problem zu lösen, gibt es im Abschnitt „Definition“ einen Teil „Initialisierung“.

Funktionen aus dem Repository können andere Funktionen nutzen, die bereits im Repository vorhanden sind, um Definitionen für das Funktionsrepository zu erstellen, die zwei (oder mehr) Funktionen umfassen, die sich gegenseitig referenzieren. Diese müssen in Ihrer Programmierumgebung implementiert werden, damit Sie auf sie verweisen können wie ResourceFunction[«name»], dann können Sie die gewünschten Kombinationen dieser Funktionen erstellen und ein Beispiel hinzufügen (nicht verstanden) und eine neue Funktion auf Basis bereits vorhandener Funktionen in das Repository einfügen.

Entwicklungsperspektiven. Was wird geschehen, wenn das Repository wirklich groß wird?

Heute starten wir lediglich das Wolfram-Funktionsrepository, aber im Laufe der Zeit erwarten wir, dass sein Umfang und seine Funktionalität stark ansteigen könnten. Mit diesem Wachstum werden verschiedene Herausforderungen auftreten, die wir bereits voraussehen.

Das erste Problem betrifft die Funktionsnamen und deren Einzigartigkeit. Das Funktionsrepository ist so konzipiert, dass man wie bei den eingebetteten Funktionen der Wolfram Language auf jede beliebige Funktion verweisen kann, indem man einfach ihren Namen angibt. Das bedeutet jedoch zwangsläufig, dass Funktionsnamen global und einmalig im gesamten Repository sein müssen, sodass beispielsweise nur ein ResourceFunction[„MyFavoriteFunction“].

Auf den ersten Blick mag dies wie ein großes Problem erscheinen, aber es ist wichtig zu verstehen, dass es hauptsächlich dasselbe Problem wie bei Internetdomänen oder sozialen Medienmarken ist. Das Kernproblem ist, dass es in dem System einfach einen Registrator geben muss – und das ist eine der Rollen, die unser Unternehmen für die Wissensdatenbank der Wolfram-Funktionen übernehmen wird. (Für private Versionen des Repositories können die Administratoren als Registratoren fungieren.) Natürlich kann eine Internetdomäne registriert werden, ohne dass sich etwas darauf befindet, aber im Funktionsrepository kann ein Funktionsname nur registriert werden, wenn eine tatsächliche Funktionsdefinition vorhanden ist.

Ein Teil unserer Rolle bei der Verwaltung der Wissensdatenbank von Wolfram-Funktionen besteht darin, sicherzustellen, dass der Name, der für eine Funktion gewählt wird, logisch in Bezug auf die Definition der Funktion ist und den Namenskonventionen der Wolfram Language entspricht. Wir haben über 30 Jahre Erfahrung in der Benennung integrierter Funktionen in der Wolfram Language, und unser Kuratorenteam wird diese Erfahrung auch in das Funktionenspeicher überführen. Es gibt sicherlich immer Ausnahmen. Zum Beispiel kann es bevorzugt erscheinen, einen kurzen Namen für eine Funktion zu wählen, aber es ist besser, sich mit einem längeren, spezifischeren Namen „abzusichern“, da so die Wahrscheinlichkeit geringer ist, dass jemand in Zukunft einen ähnlichen Funktionsnamen wählen möchte.

(Hier sei darauf hingewiesen, dass das einfache Hinzufügen eines Teilnehmers für die Eliminierung von Mehrdeutigkeiten bei Funktionen nicht den erwarteten Effekt haben wird. Denn wenn nicht darauf bestanden wird, dass immer ein Tag zugewiesen wird, muss für jede gegebene Funktion ein Standard-Tag festgelegt werden, und die Autorentags müssen auch herausgestellt werden, was erneut globale Koordination erfordert.)

Mit dem Wachstum des Wissensstands der Wolfram-Funktionen wird eines der Probleme, das sicherlich auftreten wird, die Auffindbarkeit der Funktionen sein. Dafür ist im System vorgesehen, eine Suchfunktion (und die Definitionsdateien können Schlüsselwörter usw. enthalten). Für eingebaute Funktionen in der Wolfram Language-Dokumentation gibt es zahlreiche Querverweise, die dazu beitragen, die Funktionen "sichtbar" zu machen. Funktionen im Funktionsrepository können auf eingebaute Funktionen verweisen. Aber wie ist es andersherum? Dafür wollen wir mit verschiedenen Ansätzen experimentieren, um die Funktionen des Repositories auf den Dokumentationsseiten für eingebaute Funktionen darzustellen.

Für eingebaute Funktionen in der Wolfram Language gibt es eine sogenannte Auffindbarkeitsstufe, die gewährleistet wird durch ein Netzwerk von "Hilfeseiten", die organisierte Listen von Funktionen bereitstellen, die sich auf bestimmte Bereiche beziehen. Es ist immer eine Herausforderung, Verzeichnisseiten angemessen auszugleichen, und mit dem Wachstum der Wolfram-Sprache müssen diese Seiten oft vollständig reorganisiert werden. Es ist relativ einfach, Funktionen aus dem Repository in breite Kategorien zu platzieren und diese letztlich weiter zu unterteilen, aber es ist weitaus wertvoller, richtig organisierte Seiten für die Sprache zu haben. Es ist noch unklar, wie man sie am besten für den gesamten Funktionswissensbestand erstellt. Zum Beispiel, CreateResourceObjectGallery kann jeder im Funktionsrepository eine Webseite veröffentlichen, die seine „Auswahlen“ aus dem Repository enthält:

Wolfram Function Repository: Offener Zugang zur Plattform für Wolfram-Sprache Erweiterungen

Das Wolfram-Funktionsrepository ist als dauerhaftes Speicher für Funktionen eingerichtet, in dem jede Funktion immer verfügbar sein wird. Sicherlich können auch neue Versionen von Funktionen erscheinen, und wir erwarten, dass einige Funktionen im Laufe der Zeit veralten. Funktionen funktionieren, wenn sie in Programmen verwendet werden, aber ihre Dokumentationsseiten verweisen auf neue, weiterentwickelte Funktionen.

Das Wolfram-Funktionsrepository dient dazu, neue Funktionen schnell zu erhalten und Neuentwicklungen der Wolfram-Sprache zu erkunden. Mit hoher Zuversicht hoffen wir, dass einige der im Funktionsrepository erforschten Konzepte letztendlich als integrierte Bestandteile der Wolfram Language eine sinnvolle Verwendung finden werden. In den letzten zehn Jahren hatten wir ein ähnliches Set von Funktionen, die ursprünglich in Wolfram | Alpha präsentiert wurden.Eine der Lektionen aus dieser Erfahrung ist, dass es viel Arbeit erfordert, um die Qualitäts- und Konsistenzstandards zu erreichen, auf die wir bei allem, was in die Wolfram-Sprache integriert ist, Wert legen. Diese Arbeit ist oft komplexer als die ursprünglichen Bemühungen zur Implementierung der Idee. Aber selbst in diesem Fall kann eine Funktion in der Funktionsdatenbank als nützlicher Beweis für das Konzept einer künftigen Funktion dienen, die schließlich in die Wolfram-Sprache integriert werden könnte.

Das Wichtigste ist, dass die Funktion im Funktionsrepository für jeden Benutzer sofort zugänglich ist. Möglicherweise könnte eine eingebaute Sprachefunktion weitaus besser und leistungsfähiger sein, aber das Funktionsrepository ermöglicht es den Benutzern, sofort auf alle neuen Funktionen zuzugreifen. Besonders hervorzuheben ist, dass dieses Konzept es jedem ermöglicht, eigene neue Funktionen hinzuzufügen.

Früher hätte diese Idee in der Geschichte der Wolfram-Sprache nicht so gut funktioniert wie heute. Doch zu diesem Zeitpunkt sind bereits so viele Anstrengungen und ein tiefes Verständnis der Entwurfsprinzipien in die Sprache eingeflossen, dass es nun durchaus möglich erscheint, dass eine große Gemeinschaft von Benutzern Funktionen hinzufügt, die die Konsistenz des Projekts unterstützen und sie für eine breitere Benutzergruppe nützlich machen.

In der Gemeinschaft der Nutzer von Wolfram Language herrscht ein bemerkenswerter Geist des Talents. (Natürlich gehören viele führende Fachleute aus Forschung und Entwicklung in unterschiedlichsten Bereichen zu dieser Gemeinschaft.) Ich hoffe, dass das Wolfram-Funktionsrepository eine effektive Plattform bieten wird, um diesen Geist des Talents zu entfalten und zu verbreiten. Nur gemeinsam können wir etwas schaffen, das den Anwendungsbereich der Rechenparadigmen der Wolfram-Sprache erheblich erweitert.

In mehr als 30 Jahren haben wir einen langen Weg mit der Wolfram-Sprache zurückgelegt. Lassen Sie uns nun gemeinsam noch weiter gehen. Ich rufe alle geschätzten Nutzer der Wolfram-Sprache weltweit dazu auf, dieses funktionale Repository sowie neue Softwareprojekte wie die Free Wolfram Engine für Entwickler als Plattform zu nutzen.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster