Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Moien, Habr! Ech presentéieren Iech eng Iwwersetzung vum Stephen Wolfram sengem Post "De Wolfram Function Repository: Launch eng Open Plattform fir d'Wolfram Sprooch ze verlängeren".

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Viraussetzunge fir d'Konsequenz vun der Wolfram Sprooch

Haut stinn mir zesummen mat der Programméiersprooch um Schwell vu grousse Leeschtungen Wolfram Sprooch. Virun just dräi Wochen hu mir lancéiert fräi Wolfram Motor fir Entwécklerfir eise Benotzer ze hëllefen d'Wolfram Sprooch an hir grouss Softwareprojeten z'integréieren. Haut lancéiere mir Wolfram Funktioun Repository, fir eng koordinéiert Plattform ze bidden fir Funktiounen erstallt fir d'Wolfram Sprooch ze verlängeren, a mir maachen och e Repository vu Funktiounen op fir jiddereen deen zur Entwécklung vun eisem Softwareprodukt bäidroe kann.

De Wolfram Function Repository ass eppes méiglech gemaach duerch déi eenzegaarteg Natur vun der Wolfram Sprooch net nëmmen als Programméierungssprooch, awer och als Voll-Skala Rechensprooch. An traditionelle Programméierungssproochen, bedeitend nei Funktionalitéit bäizefügen, beinhalt normalerweis ganz zousätzlech Bibliothéiken ze kreéieren déi vläicht oder net funktionnéieren wann se zesumme benotzt ginn. Wéi och ëmmer, an der Wolfram Sprooch esou vill ass schonn an der Sprooch selwer agebaut, datt et méiglech ass, seng Funktionalitéit wesentlech auszebauen andeems se einfach nei Fonctiounen derbäisetzen, déi direkt an d'gesamt Struktur vun der ganzer Sprooch integréiert sinn.

Zum Beispill enthält de Wolfram Funktiounsrepository scho 532 nei Fonctiounen strukturéiert an 26 thematesch Kategorien:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Och méi wéi 6000 Standard Funktiounen, agebaut an der Wolfram Sprooch, all Funktioun aus dem Repository huet eng Dokumentatiounssäit mat enger detailléierter Beschreiwung vun hinnen a Beispiller vun der Aarbecht:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Fir op d'Säit ze kommen, kopéiert den uewe genannten Objet (Funktioun BLOB), paste se an d'Input Linn a lafen dann d'Funktioun - et ass schonn an d'Wolfram Sprooch agebaut a gëtt als Standard ënnerstëtzt. Versioun 12.0:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Et soll hei feststellen, datt wann Veraarbechtung LogoQRCode Dir braucht zum Beispill net eng "Bildveraarbechtungsbibliothéik" opzestellen - well mir schonn eng konsequent a virsiichteg algorithmesch Manéier an der Wolfram Sprooch implementéiert hunn Bildveraarbechtung, déi direkt duerch verschidde grafesch Sproochfunktiounen veraarbecht kënne ginn:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Ech hoffen dat mat der Ënnerstëtzung wonnerbar an talentéiert Communautéit, déi an de leschte Joerzéngte gewuess an ausgebaut (baséiert op der Wolfram Sprooch). De Wolfram Funktiounsrepository erlaabt fir absehbar Zukunft d'Gamme vu (méiglecherweis potenziell bedeitend, spezialiséiert a verschiddene Wëssenschafts- an Technologieberäicher) Funktiounen, déi an der Sprooch verfügbar sinn, wesentlech auszebauen. Sou gëtt et méiglech souwuel den Inhalt vun der Sprooch (seng agebaute Funktiounen) an Entwécklung Prinzipien, déi op Basis vun der Sprooch ëmgesat ginn. (Et sollt hei bemierkt ginn datt d'Wolfram Sprooch scho méi wéi 30-Joer Geschicht vun Entwécklung a stabile Wuesstem).
Funktiounen aus dem Repository kënne kleng oder grouss Stécker Code enthalen, déi an der Wolfram Sprooch geschriwwe sinn. Zum Beispill kënnen dës Uriff sinn extern APIen a Servicer oder extern Bibliothéiken an anere Sproochen. Déi eenzegaarteg Feature vun dëser Approche ass datt wann Dir op d'Funktionalitéit vum Benotzerniveau erofgeet, et keng potenziell Inkonsistenz gëtt, well d'Approche op der konsequent Struktur vun der Wolfram Sprooch gebaut ass - an all Funktioun funktionnéiert automatesch korrekt - genau wéi geduecht.si soll.
D'Schuel an d'Programméierungsstruktur vum Wolfram Feature Repository ass entworf sou datt jidderee kann op déi einfachst a praktesch Manéier fir si bäidroe fir déi gemeinsam Ursaach - tatsächlech, just andeems Dir d'Notizblock Textdatei ausfëllt (mat nb Extensioun) WL. Built-in automatesch Funktiounen erlaben Iech nei Funktiounen am Repository ze iwwerpréiwen fir hir Integratioun an d'Sprooch ze garantéieren. Eis Firma wetten op déi breet Palette vu Benotzer, déi hir Funktiounen an d'Sprooch integréiere kënnen, anstatt op déi grouss Komplexitéit vun neie Funktiounen - an och wann et e Bewäertungsprozess gëtt, insistéiere mir net op eppes wéi ustrengend Design Analyse oder strikt Norme fir d'Vollständegkeet an d'Zouverlässegkeet vun neie Benotzerfeatures, am Géigesaz zu de méi rigoréisen Testen vun Features, déi an der Kärsprooch agebaut sinn, déi mir beschäftegen.

Et gi vill Ofhandlungen an Detailer an dëser Approche, awer eist Zil ass de Wolfram Feature Repository souwuel fir d'Benotzererfarung ze optimiséieren an ze garantéieren datt nei Benotzer Feature sënnvoll zur Entwécklung vun der Sprooch bäidroen. Wéi mir wuessen, hunn ech keen Zweiwel datt mir nei Methoden erfannen fir d'Veraarbechtung an d'Validatioun vu Funktiounen an de Repository ze validéieren, net zulescht fir eng grouss Zuel vu Funktiounen ze organiséieren an déi ze fannen déi d'Benotzer brauchen. Et ass awer encouragéierend datt de Wee dee mir gewielt hunn e gudde Start ass. Ech perséinlech bäigefüügt verschidde Funktiounen an d'Original Datebank. Vill vun hinnen baséieren op Code deen ech perséinlech fir eng laang Zäit entwéckelt hunn. An et huet mech nëmmen e puer Minutten gedauert fir se an de Repository ze drécken. Elo datt se am Repository sinn, kann ech endlech - direkt an zu all Moment - dës Funktiounen benotzen wéi néideg, ouni mech Suergen iwwer Dateien ze sichen, Paketen erofzelueden, etc.

D'Effizienz erhéijen wärend d'Käschte reduzéieren

Och virum Internet goufen et Weeër fir Wolfram Sproochcode ze deelen (eisen éischte grousse zentraliséierte Projet war MathSource, erstallt fir Mathematica 1991 baséiert op CD-ROM, etc.). Natierlech ass d'Approche proposéiert fir d'Ëmsetzung baséiert op dem Wolfram Funktiounsrepository e méi mächtegt an zouverléissegt Tool fir déi uewe genannten Aufgaben ëmzesetzen.

Fir iwwer 30 Joer huet eis Firma fläisseg geschafft fir d'Integritéit vun der Wolfram Sproochstruktur z'erhalen, an dëst ass kritesch fir sécherzestellen datt d'Wolfram Sprooch net nëmmen eng Programméierungssprooch gëtt, mee och eng vollwäerteg Rechensprooch. An dofir ass d'Essenz vun der Approche fir d'Ëmsetzung vum Wolfram Funktiounsrepository eng vereenegt Approche ze benotzen fir nei Funktiounen ze programméieren an z'entwéckelen, déi sequenziell bäigefüügt ginn an an de Kader vun der Sprooch passen, sou datt se sech entwéckelen a co-entwéckele kënnen.

Verschidde computational Prozesser geschéien an der Implementatiounsstruktur vun all Funktioun. Et soll hei bemierkt ginn datt et néideg ass datt d'Funktioun e klore an eenheetleche Erscheinungsbild a visuell Liesbarkeet fir de Benotzer huet. An dësem Kontext ginn déi agebaute Funktiounen vun der Wolfram Sprooch mat méi wéi 6000 sequenziell Beispiller presentéiert wéi Dir Funktiounen richteg programméiere kann (dëst sinn eis Live Programméierungsvideoendéi enthalen Honnerte vu Stonnen Prozess fir Standardprogrammer ze kreéieren). Wat dës Approche schlussendlech de Wolfram Feature Repository fäeg mécht gutt ze leeschten ass déi strukturell Natur vun der Wolfram Sprooch, mat senger grousser Zuel vun zousätzlechen a variéierte Bibliothéiken déi scho an d'Sprooch agebaut sinn. Zum Beispill, wann Dir eng Funktioun hutt déi Biller veraarbecht, oder spatzen Arraysoder molekulare Strukturen, wéi och geographesch Donnéeën oder e puer anerer - hir konsequent symbolesch Representatioun existéiert schonn an der Sprooch, an duerch dës gëtt Är Funktioun direkt mat anere Funktiounen an der Sprooch kompatibel.

E Repository erstellen deen tatsächlech gutt funktionnéiert ass eng interessant Metaprogramméierungs Aufgab. Zum Beispill, iwwerschësseg Restriktiounen am Programm erlaabt net déi erfuerderlech Unifikatioun an d'Universalitéit vum Algorithmus ze kréien. Just wéi mat enger net genuch Zuel vu funktionnelle Restriktiounen, kënnt Dir net fäeg sinn eng genuch korrekt Sequenz vun der Algorithmus Ausféierung ëmzesetzen. Verschidde fréier Beispiller fir e Kompromiss vun dësen Approchen ëmzesetzen, vun eiser Firma ëmgesat, hunn zimlech stabil geschafft - dëst sinn: Projet Wolfram Demonstratiounen, lancéiert 2007 a leeft elo online online mat iwwer 12000 User-interaktiven Demos. IN Wolfram Datebank et gi méi wéi 600 fäerdeg Datenbanken déi am Wolfram Sprooch benotzt kënne, an Wolfram neural Netzwierklagerung gëtt bal all Woch mat neien neuralen Netzwierker ersat (et gi schonn 118 vun hinnen elo) a si sinn direkt duerch d'Funktioun ugeschloss NetModel an der Wolfram Sprooch.

All déi uewe genannte Beispiller hunn eng fundamental Feature - d'Objeten a Funktiounen, déi am Projet gesammelt ginn, hunn e ganz héije Grad vun der Strukturéierung an der Verdeelung vu Prozesser. Natierlech kann den Detail vun der Struktur vun deem wat eng Demo oder en neuralt Netzwierk oder soss eppes ass immens variéieren, awer d'fundamental Struktur fir all aktuell Repository bleift ëmmer déiselwecht. Also wat ass Är Meenung, léif Benotzer, iwwer d'Schafe vun esou engem Repository deen Extensiounen op d'Wolfram Sprooch bäidréit? D'Wolfram Sprooch ass entwéckelt fir extrem flexibel ze sinn, sou datt et op all Manéier verlängert a geännert ka ginn. Dës Situatioun ass extrem wichteg fir d'Fäegkeet fir séier verschidde grouss Softwareprojeten an der Wolfram Sprooch ze kreéieren. Hei muss ee feststellen, datt wann d'Flexibilitéit vun der Sprooch eropgeet, d'Käschte vun de Projeten, déi an esou enger Sprooch ëmgesat ginn, onweigerlech eropgoen. Dëst ass wéinst der Tatsaach, datt de Benotzer méi esou eng Sprooch benotzt, dest méi engagéiert Funktionalitéit kritt hien, awer mir sollten net vergiessen datt dës Approche och negativ Säiten am Sënn vun der Onméiglechkeet fir eng konsequent Konsistenz vu Programmmoduler ze garantéieren.

Et gëtt e gemeinsame Problem mat Bibliothéiken an traditionelle Programméierungssproochen - wann Dir eng Bibliothéik benotzt, zum Beispill, funktionnéiert de Code richteg, awer wann Dir probéiert verschidde Bibliothéiken ze benotzen, gëtt et keng Garantie datt se richteg matenee interagéieren . Och an traditionelle Programméierungssproochen - am Géigesaz zu enger vollwäerteger Rechensprooch - gëtt et kee Wee fir d'Präsenz vu konsequent agebaute Representatioune fir all Funktiounen oder Datentypen anescht wéi hir Basisstrukturen ze garantéieren. Awer tatsächlech ass de Problem nach méi grouss wéi et op den éischte Bléck schéngt: wann een e grousst Vertikal vu Funktionalitéit baut, dann ouni déi enorm Käschte vun zentraliséierter Projektprogramméierung, déi mir an d'Wolfram Sprooch setzen, ass et onméiglech Konsequenz erreechen. Et ass also wichteg datt all Software Moduler ëmmer richteg zesumme schaffen.

Also d'Iddi hannert dem Wolfram Feature Repository ass de Problem uewe beschriwwen ze vermeiden andeems se einfach Extensiounen op d'Sprooch a relativ kleng Stécker Code iwwer individuell Features addéieren, déi méi einfach sinn als kohärent Moduler z'entwéckelen. Wann dat gesot gëtt, ginn et Programméierungsfeatures déi net bequem kënne gemaach ginn mat individuellen Funktiounen (an eis Firma plangt an der nächster Zukunft en optimiséierte Programméierungsalgorithmus ze verëffentlechen fir ze hëllefen grouss-Skala Software Packagen ëmzesetzen). Wéi och ëmmer, baséiert op de Funktiounen déi schonn an der Wolfram Sprooch agebaut sinn, ginn et vill Programméierungsméiglechkeeten, déi op Basis vun eenzelne Funktiounen ëmgesat ginn. D'Iddi hei ass, datt et mat relativ wéineg Programméierungseffort méiglech ass eng Rei vun neien a ganz nëtzlech Funktiounen ze kreéieren déi genuch Kohärenz fir den Design bidden, si wäerte gutt matenee koordinéiert sinn, an och zousätzlech zu dësem wäert fäeg sinn an Zukunft einfach a wäit an der Sprooch ze benotzen.

Dës Approche ass natierlech e Kompromiss. Wann e gréissere Package ëmgesat wier, kéint eng ganz nei Welt vu Funktionalitéit virgestallt ginn, déi extrem mächteg an nëtzlech wier. Wann et e Besoin ass fir nei Funktionalitéit ze kréien, déi mat alles anescht passt, awer Dir sidd net gewëllt vill Effort ze verbréngen fir de Projet z'entwéckelen, dëst kann leider zu enger Reduktioun vum Ëmfang vun Ärem Projet féieren. D'Iddi hannert dem Wolfram Feature Repository ass d'Funktionalitéit un engem definéierende Bestanddeel vun engem Projet ze bidden; Dës Approche wäert mächteg Funktionalitéit addéieren wärend et méi einfach gëtt eng gutt Konsistenz an engem Programméierungsprojet ze halen.

Hëlleft personaliséiert Funktiounen un de Funktiounsrepository ze addéieren

Eis Team huet haart geschafft fir et einfach ze maachen fir d'Benotzer zu de Wolfram Repository Features bäizedroen. Um Desktop (schon an Versioun 12.0), Dir kënnt einfach duerch d'Haaptmenü Tabs sequenziell goen: Datei > Nei > RepositoryItem > Funktioun Repository Item an Dir kritt "Definitioun Notizbuch" (programmatesch an der Workbench. Dir kënnt och d'analog Funktioun benotzen - Erstelle Notizbuch["Funktioun Ressource"]):

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Et ginn zwee Haaptschrëtt déi Dir maache musst: éischtens, schreiwt tatsächlech de Code fir Är Funktioun op an zweetens, schreift Dokumentatioun op, déi illustréiert wéi Är Funktioun soll funktionnéieren.
Klickt op de "Open Sample" Knäppchen uewen fir e Beispill ze gesinn wat Dir maache musst:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Wesentlech probéiert Dir eppes ze kreéieren ähnlech wéi eng agebauter Funktioun an der Wolfram Sprooch. Ausser datt et eppes vill méi spezifesch maache kann wéi eng agebaute Funktioun. Zur selwechter Zäit wäerten d'Erwaardungen iwwer seng Vollständegkeet an Zouverlässegkeet vill méi niddereg sinn.
Dir musst Är Funktioun en Numm ginn, deen d'Wolfram Language's Funktiounsbezeechnungsrichtlinnen entsprécht. Zousätzlech musst Dir Dokumentatioun fir Är Funktioun entwéckelen, ähnlech wéi déi agebaute Funktiounen vun der Sprooch. Ech wäert méi spéit doriwwer am Detail schwätzen. Fir de Moment, bemierkt just datt an der Zeil vu Knäpper uewen an der Definitioun Notizbuch Datei e Knäppchen ass "Styl Richtlinnen", deen erkläert wat ze maachen, an e Tools Knäppchen, deen Tools ubitt fir d'Dokumentatioun vun Ärer Funktioun ze formatéieren.
Wann Dir sécher sidd datt alles richteg ausgefëllt ass an Dir sidd prett, klickt op de "Check" Knäppchen. Et ass ganz normal datt Dir nach net all Detailer erausfonnt hutt. Also wäert d'"Check" Funktioun automatesch lafen a vill Stil- a Konsistenzkontrollen maachen. Dacks freet et Iech direkt d'Korrekturen ze bestätegen an ze akzeptéieren (Zum Beispill: "Dës Zeil muss mat engem Doppelpunkt ophalen", an et freet Iech fir e Colon anzeginn). Heiansdo wäert hatt Iech froen eppes selwer ze addéieren oder z'änneren. Mir wäerte dauernd nei Fonctiounen un déi automatesch Funktionalitéit vum Check Button bäidroen, awer am Fong ass säin Zweck fir sécherzestellen datt alles wat Dir an de Feature Repository ofginn scho sou vill Stil Richtlinnen wéi méiglech follegt

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Also, nodeems Dir "Check" leeft, kënnt Dir "Preview" benotzen. "Preview" erstellt eng Virschau vun der Dokumentatiounssäit déi Dir fir Är Funktioun definéiert hutt. Dir kënnt och eng Virschau fir e Fichier erstellen op Ärem Computer oder fir eng Datei an der Cloud Storage. Wann Dir aus irgendege Grënn net zefridden sidd mat deem wat Dir an der Virschau gesitt, gitt einfach zréck a maacht déi néideg Korrekturen, a klickt dann nach eng Kéier op de Preview Knäppchen.
Elo sidd Dir prett Är Funktioun an de Repository ze drécken. Den Deploy Knäppchen gëtt Iech véier Optiounen:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Déi wichteg Saach op dësem Schrëtt ass datt Dir Är Funktioun an de Wolfram Funktiounsrepository ofginn kënnt, sou datt et fir jiddereen verfügbar ass. Zur selwechter Zäit kënnt Dir Är Funktioun och fir eng limitéiert Zuel vu Benotzer setzen. Zum Beispill kënnt Dir eng Funktioun erstellen déi lokal op Ärem Computer gehost gëtt, sou datt se verfügbar ass wann Dir dee bestëmmte Computer benotzt. Oder Dir kënnt et an Ärer Post Post Cloud Kont, sou datt et Iech verfügbar ass wann Dir mat der Wollek verbonne sidd. Dir kënnt och d'Feature ëffentlech hosten (deployéieren) iwwer Äre Cloud Kont. Et wäert net am zentrale Wolfram Feature Repository sinn, awer Dir wäert fäeg sinn een eng URL ze ginn, déi hinnen erlaabt Är Feature vun Ärem Kont ze kréien. (An Zukunft wäerte mir och zentral Repositories uechter eis Firma ënnerstëtzen.)

Also loosst eis soen datt Dir Är Funktioun tatsächlech un d'Wolfram Funktioun Wëssensbasis ofginn wëllt. Fir dëst ze maachen, klickt op de "Submit" Knäppchen an de Repository. Also wat geschitt dann am Moment? Är Applikatioun ass direkt an der Schlaang fir Iwwerpréiwung an Genehmegung vun eisem engagéierten Team vu Curatoren.

Wéi Är Demande duerch den Genehmegungsprozess weidergeet (deen normalerweis e puer Deeg dauert), kritt Dir Kommunikatiounen iwwer säi Status an eventuell Virschléi fir zukünfteg Benotzung. Awer wann Är Feature guttgeheescht ass, gëtt se direkt an de Wolfram Feature Repository publizéiert a wäert verfügbar sinn fir jiddereen ze benotzen. (An dëst wäert erschéngen an news digests vun neie Fonctiounen an sou weider)

Wat soll am Stockage sinn?

Et sollt bemierkt datt eis Firma ganz héich Norme fir Vollständegkeet, Zouverlässegkeet an allgemeng Qualitéit huet, a vun de 6000+ Funktiounen, déi mir schonn an der Wolfram Sprooch an de leschten 30+ Joer agebaut hunn, all déi uewe genannten Ufuerderungen erfëllen. D'Zil vum Wolfram Function Repository ass all d'Struktur an d'Funktionalitéit ze benotzen, déi schonn an der Wolfram Sprooch existéiert, fir esou vill méi hell Funktiounen (dat ass méi héich Leeschtungsfunktiounen) wéi méiglech ze addéieren.

Natierlech musse Funktiounen am Wolfram Funktiounsrepository mat den Designprinzipien vun der Wolfram Sprooch entspriechen - sou datt se voll mat anere Funktiounen an Erwaardunge vun de Benotzer interagéiere kënnen wéi d'Funktioun richteg funktionnéiert. Wéi och ëmmer, d'Funktioune mussen net vun der selwechter Vollständegkeet oder Zouverlässegkeet sinn.

An den agebaute Funktiounen vun der Wolfram Sprooch schaffe mir haart fir Programméierungsfunktiounen esou allgemeng wéi méiglech ze maachen. Wann dat gesot gëtt, wann et am Wolfram Funktiounsrepository näischt falsch ass mat enger Funktioun dran ze sinn déi einfach e ganz spezifeschen awer nëtzlechen Fall handhabt. Zum Beispill, d'Funktioun SendMail FromNotebook kann Dateien an engem spezifesche Format kréien a Mail op eng spezifesch Manéier erstellen. Polygonal Diagramm erstellt Charts mat nëmme bestëmmte Faarwen a Label, etc.

En anere Punkt am Zesummenhang mat den agebaute Funktiounen ass datt eis Firma all Effort mécht fir all atypesch Fäll ze behandelen, falsch Input korrekt ze behandelen, asw. An engem Funktiounsrepository ass et ganz normal datt et eng speziell Funktioun gëtt déi d'Haaptfäll vun der Léisung vun engem Problem behandelt an all aner ignoréiert.

Den offensichtleche Punkt ass datt et besser ass Funktiounen ze hunn déi méi maachen an et besser maachen, awer d'Optimiséierung fir e Funktiounsrepository - am Géigesaz zu den agebaute Funktiounen vun der Wolfram Sprooch - sollt méi Funktiounen mat méi Funktiounen gebündelt hunn anstatt sech ze verdéiwen d'Ëmsetzungsprozesser vun all spezifesche Funktioun.

Loosst eis elo e Beispill kucken fir Funktiounen an engem Repository ze testen. Konsistenz Erwaardungen fir esou Funktiounen sinn natierlech vill méi niddreg wéi fir agebaut-an Sprooch Funktiounen. Dëst ass besonnesch wouer a Fäll wou d'Funktioune vun externen Ressourcen ofhängeg sinn wéi APIen, ass et wichteg konstant konsequent Tester ze maachen, wat automatesch an de Verifizéierungsalgorithmen geschitt. An der nb-Datei kënnt Dir explizit Definitioune spezifizéieren (an der Sektioun Zousätzlech Informatioun) an esou vill Tester spezifizéieren wéi definéiert duerch entweder Input- an Output Strings oder voll Charakterobjekter vum Typ Verifikatiounstest, sou vill wéi Dir passt. Zousätzlech probéiert de System dauernd d'Dokumentatiounsbeispiller, déi Dir ubitt, an e Verifizéierungsprozess ëmzewandelen (an heiansdo kann dëst zimmlech Ressourceintensiv sinn, zum Beispill fir eng Funktioun där hir Resultat vun zoufälleg Zuelen oder der Zäit vum Dag hänkt).

Als Resultat wäert de Funktiounsrepository eng Zuel vun Implementéierungskomplexitéiten hunn. E puer wäerten nëmmen eng eenzeg Zeil vum Code sinn, anerer kënnen Dausende oder Zéngdausende vu Linnen involvéieren, méiglecherweis vill Hëllefsfunktiounen benotzen. Wéini ass et derwäert eng Funktioun ze addéieren déi ganz wéineg Code erfuerdert fir ze definéieren? Prinzipiell, wann fir eng Funktioun do ass gudden mnemoneschen Numm, déi d'Benotzer einfach verstinn, wa se et an engem Stéck Code gesinn, da kann et scho bäigefüügt ginn. Soss ass et méiglecherweis besser de Code just an Ärem Programm ze addéieren all Kéier wann Dir se benotze musst.

Den Haaptzweck vun engem Funktiounsrepository (wéi säin Numm et scho seet) ass nei Features an d'Sprooch aféieren. Wann Dir wëllt nei Donnéeën derbäi oder nei Entitéite, benotzen Wolfram Data Repository. Awer wat wann Dir nei Aarte vun Objete fir Är Berechnunge wëllt aféieren?

Et ginn eigentlech zwou Méiglechkeeten. Dir wëllt vläicht en neien Objekttyp aféieren, deen an neie Funktiounen am Funktiounsrepository benotzt gëtt. An an dësem Fall kënnt Dir ëmmer just seng symbolesch Representatioun opschreiwen an et benotzen wann Dir Funktiounen an engem Funktiounsrepository aginn oder ausgëtt.

Awer wat wann Dir en Objet representéiere wëllt an dann duerch existéierend Funktiounen an der Wolfram Sprooch definéieren datt Dir mat deem wëllt schaffen? D'Wolfram Sprooch huet ëmmer e liichte Mechanismus fir dëst, genannt UpWäerter. Mat e puer Restriktiounen (besonnesch fir Funktiounen déi kënnen hir Argumenter net evaluéieren), e Funktiounsrepository erlaabt Iech einfach eng Funktioun ze representéieren an Wäerter dofir ze definéieren. (Fir d'Erwaardung vu Konsistenz z'erhéijen wann Dir en neie groussen Design erstellt, dee ganz an der Wolfram Sprooch integréiert ass, ass allgemeng eng ganz wichteg Prozedur déi net erreecht ka ginn duerch einfach d'Erhéijung vum Käschte vum Projet an ass eppes wat eis Firma als Deel vu Projete mécht fir eng laangfristeg Entwécklung vun der Sprooch ass dës Aufgab net en Zil, deen am Kader vun der Entwécklung vum Repository gesat gëtt).

Also, wat kéint am Funktiounscode an engem Funktiounsrepository sinn? Alles agebaut an der Wolfram Sprooch, natierlech (op d'mannst wann et net duerstellt Bedrohungen fir Sécherheet an d'Leeschtung vum Programm selwer, als Informatikëmfeld) souwéi all Funktioun aus dem Funktiounsrepository. Wéi och ëmmer, et ginn aner Funktionalitéiten: eng Funktioun an engem Funktiounsrepository kann eng API nennen, oder an Wolfram Cloud, oder aus enger anerer Quell. Natierlech ginn et e puer Risiken mat dësem. Wéinst der Tatsaach datt et keng Garantien gëtt datt d'API net ännert, an d'Funktioun am Funktiounsgeschäft wäert ophalen ze schaffen. Fir ze hëllefen Themen wéi dëst z'identifizéieren, gëtt et eng Notiz op der Dokumentatiounssäit (an der Ufuerderungssektioun) fir all Feature déi op méi wéi nëmmen agebauter Wolfram Language Funktionalitéit hänkt. (Natierlech, wann et ëm richteg Donnéeë kënnt, kann et och Problemer mat dëser Funktionalitéit ginn - well d'real Weltdaten dauernd änneren, an heiansdo souguer hir Definitiounen a Struktur änneren.)

Sollt all Code fir de Wolfram Feature Repository a Wolfram geschriwwe ginn? Bestëmmt soll de Code an der externer API net an der Wolfram Sprooch geschriwwe ginn, wat net emol de Sproochecode mécht. Tatsächlech, wann Dir eng Funktioun an bal all extern Sprooch oder Bibliothéik fannt, kënnt Dir e Wrapper erstellen deen Iech erlaabt et am Wolfram Funktiounsrepository ze benotzen. (Normalerweis sollt Dir déi agebaute Funktiounen dofir benotzen Extern Evaluéieren oder Extern Funktioun am Wolfram Sproochcode.)

Also wat ass de Sënn dëst ze maachen? Wesentlech erlaabt dëst Iech de ganzen integréierte Wolfram Language System a seng ganz vereenegt Set vu Softwarefäegkeeten ze benotzen. Wann Dir d'Basisimplementatioun vun enger externer Bibliothéik oder Sprooch kritt, kënnt Dir dann déi räich symbolesch Struktur vun der Wolfram Sprooch benotzen fir eng praktesch Top-Level Funktioun ze kreéieren déi d'Benotzer erlaabt all Funktionalitéit ze benotzen déi scho implementéiert ass. Op d'mannst soll dat machbar sinn an enger idealer Welt, wou all d'Bausteng vu Luede Bibliothéiken etc. (Et sollt bemierkt datt et an der Praxis Probleemer kënne ginn mat extern Sproochen opzestellen spezifesche Computersystem, a Cloud Storage kënnen zousätzlech Sécherheetsprobleemer stellen).

Iwwregens, wann Dir fir d'éischt typesch extern Bibliothéike kuckt, schéngen se dacks ze komplex fir an e puer Funktiounen ofgedeckt ze ginn, awer a ville Fäll kënnt vill vun der Komplexitéit vun der Schafung vun der Infrastruktur déi néideg ass fir d'Bibliothéik an all d'Funktiounen ënnerstëtzen et. Wéi och ëmmer, wann Dir d'Wolfram Sprooch benotzt, ass d'Infrastruktur typesch schonn an de Packagen agebaut, an dofir ass et net néideg all dës Ënnerstëtzungsfunktiounen am Detail auszesetzen, awer nëmmen Funktiounen fir déi "iewescht" Applikatiounsspezifesch Funktiounen an der Bibliothéik ze kreéieren. .

"Ökosystem" vun der Wëssensbasis

Wann Dir Funktiounen geschriwwen hutt, déi Dir regelméisseg benotzt, gitt se an de Wolfram Function Repository of! Wann eppes méi net aus dësem kënnt (Sproochentwécklung), dann och dann ass et vill méi bequem fir Iech d'Funktioune fir perséinlech Benotzung ze benotzen. Wéi och ëmmer, et ass logesch ze iwwerhuelen datt wann Dir d'Funktioune regelméisseg benotzt, vläicht aner Benotzer se och nëtzlech fannen.

Natierlech kënnt Dir Iech an enger Situatioun fannen, wou Dir net fäeg sidd - oder net wëllt - Är Funktiounen deelen oder am Fall wou Dir Zougang zu privaten Informatiounsressourcen kritt. Och an esou Fäll kënnt Dir einfach d'Funktiounen an Ärem eegene Cloud Kont ofsetzen, spezifizéieren Rechter Zougang zu hinnen. (Wann Är Organisatioun huet Wolfram Enterprise private cloud, da wäert et geschwënn fäeg sinn säin eegene private Feature Repository ze hosten, dee vu bannent Ärer Organisatioun verwalt ka ginn a festgeluegt ob d'Meenungen ze forcéieren fir vun Drëtt Partei Benotzer gekuckt ze ginn.)

D'Funktiounen déi Dir an de Wolfram Funktiounsrepository ofginn, mussen net perfekt sinn; si musse just nëtzlech sinn. Dëst ass e bësse wéi d'Sektioun "Feeler" an der klassescher Unix Dokumentatioun - an der "Definitioun Sektioun" gëtt et eng Rubrik "Author's Notes" wou Dir Aschränkungen, Problemer, etc. Zousätzlech, wann Dir Är Feature an de Repository ofgitt, kënnt Dir Soumissiounsnotizen derbäisetzen, déi vun engem engagéierten Team vu Curatoren gelies ginn.

Wann eng Feature publizéiert gëtt, huet seng Säit ëmmer zwee Linken um Buedem: "Schéckt e Message iwwer dës Fonktioun"An"Diskutéieren an der Wolfram Gemeinschaft" Wann Dir eng Notiz befestegt (z.B. Sot mir iwwer Bugs), kënnt Dir d'Këscht auswielen, déi seet, datt Dir wëllt datt Är Noriicht a Kontaktinformatioun mam Feature Auteur gedeelt ginn.

Heiansdo wëllt Dir just Funktiounen aus dem Wolfram Funktiounsrepository benotzen, sou wéi agebaute Funktiounen, ouni op hire Code ze kucken. Wéi och ëmmer, wann Dir wëllt bannen kucken, gëtt et ëmmer en Notizblock Knäppchen uewen. Klickt op et an Dir kritt Är eege Kopie vum ursprénglechen Definitiounsnotizbuch dat an de Feature Repository presentéiert gouf. Heiansdo kënnt Dir et just als Beispill fir Är Besoinen benotzen. Zur selwechter Zäit kënnt Dir och Är eege Ännerung vun dëser Funktioun entwéckelen. Dir wëllt dës Funktiounen posten, déi Dir aus dem Repository op Ärem Computer oder an Ärem Blatlais Cloud Storage Kont fonnt hutt, vläicht wëllt Dir se op d'Funktiounswëssenbasis ofginn, vläicht als eng verbessert, erweidert Versioun vun der ursprénglecher Funktioun.

An Zukunft plangen mir Git-Stil Forking fir Feature Repositories z'ënnerstëtzen, awer fir de Moment probéieren mir et einfach ze halen, a mir hunn ëmmer nëmmen eng akzeptéiert Versioun vun all Feature an d'Sprooch agebaut. Méi dacks wéi net (ausser d'Entwéckler opginn d'Features z'erhalen déi se entwéckelt hunn an op d'Benotzervirstellunge reagéieren), iwwerhëlt den ursprénglechen Auteur vun der Feature d'Kontroll iwwer d'Aktualiséierunge vun der a stellt nei Versiounen of, déi dann iwwerpréift ginn a wa se den Iwwerpréiwungsprozess passéieren , publizéiert an der Sprooch.

Loosst eis d'Fro betruecht wéi "Versionéierung" vun entwéckelte Funktiounen funktionnéiert. De Moment, wann Dir eng Funktioun aus dem Funktiounsrepository benotzt, gëtt seng Definitioun permanent op Ärem Computer gespäichert (oder an Ärem Cloudkonto wann Dir d'Wollek benotzt). Wann eng nei Versioun vun enger Feature verfügbar ass, kritt Dir déi nächst Kéier wann Dir se benotzt e Message deen Iech doriwwer informéiert. A wann Dir d'Funktioun op eng nei Versioun aktualiséieren wëllt, kënnt Dir et mam Kommando maachen RessourceUpdate. (De "Funktiounsblob" späichert tatsächlech méi Versiounsinformatioun, a mir plangen dëst an Zukunft méi zougänglech fir eis Benotzer ze maachen.)

Ee vun de schéine Saachen iwwer de Wolfram Function Repository ass datt all Wolfram Language Programm, iwwerall Funktiounen dovunner benotze kann. Wann e Programm an engem Notizblock erschéngt, ass et dacks bequem d'Repositoryfunktiounen als einfach ze liesen "Funktioun binär Objet" Funktiounen ze formatéieren (vläicht mat engem passenden Versiounsset).

Dir kënnt ëmmer Zougang zu all Funktioun am Funktiounsrepository mat Text benotzen Ressource Funktioun [...]. An dëst ass ganz bequem wann Dir Code oder Scripten direkt fir de Wolfram Engine schreift, zum Beispill, mat mat engem IDE oder Textcode Editor (et sollt besonnesch bemierkt ginn datt de Funktiounsrepository voll kompatibel ass mat Gratis Wolfram Engine fir Entwéckler).

Wéi heescht et schaffen?

Bannent de Funktiounen am Wolfram Repository ass dëst méiglech mat genau datselwecht Ressource Systemer Basen, wéi an all eis aner bestehend Repositories (Datebank, Neural Net Repository, Sammlung vun Demo Projeten etc.), wéi all aner Wolfram Systemressourcen, Ressource Funktioun schlussendlech baséiert op Funktioun RessourceObject.

Bedenkt Ressource Funktioun:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Bannen kënnt Dir e puer Informatioune mat der Funktioun gesinn Informatiounen:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Wéi funktionéiert d'Opstelle vun enger Ressourcefunktioun? Déi einfachst ass e reng lokale Fall. Hei ass e Beispill dat eng Funktioun hëlt (an dësem Fall just eng reng Funktioun) an definéiert se als Ressourcefunktioun fir eng bestëmmte Programmsessioun:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Wann Dir d'Definitioun gemaach hutt, kënnt Dir d'Ressourcefunktioun benotzen:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

Bedenkt datt et eng schwaarz Ikon an dëser Funktioun Blob ass Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen. Dëst bedeit datt d'BLOB Funktioun op d'In-Memory Ressource Funktioun bezitt, déi fir déi aktuell Sessioun definéiert ass. Eng Ressource Feature déi permanent op Ärem Computer oder Cloud Kont gespäichert ass huet eng gro Ikon Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen. An et gëtt eng orange Ikon fir eng offiziell Ressource Feature am Wolfram Feature Repository Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen.

Also wat geschitt wann Dir de Expand Menu am Definitioun Notizbuch benotzt? Éischtens, et hëlt all Definitiounen am Notizblock an aus hinnen schaaft eng symbolesch RessourceObject). (A wann Dir eng textbaséiert IDE oder Programm benotzt, da kënnt Dir och explizit erstellen RessourceObject)

Lokal Deployment vun enger Funktioun vun engem Repository op Ärem Computer gëtt mat dem Kommando ausgefouert LocalCache fir eng Ressource Objet ze retten als LocalObject op Ärem Dateiesystem. Deployment op e Cloud Kont gëtt mam Kommando gemaach CloudDeploy fir eng Ressource Objet, an eng ëffentlech Wollek Détachement ass CloudPublish. An alle Fäll RessourceRegister och benotzt der Ressource Funktioun Numm ze registréieren, also Ressource Funktioun ["Numm"] wäert schaffen.

Wann Dir op de Submit Knäppchen fir e Funktiounsrepository klickt, wat geschitt drënner RessourceSubmit op eng Ressource Objet genannt. (A wann Dir en Textinput-Interface benotzt, kënnt Dir och uruffen RessourceSubmit direkt.)

Par défaut ginn Soumissioun ënner dem Numm mat Ärer Wolfram ID assoziéiert gemaach. Awer wann Dir eng Demande am Numm vun engem Entwécklungsteam oder Organisatioun ofgitt, kënnt Dir separat Verëffentlecher ID setzen a benotzt et amplaz als Numm fir mat Äre Meenungen ze interagéieren.

Nodeems Dir eng vun Äre Funktiounen an d'Funktiounskenntnisser ofginn hutt, gëtt et fir Iwwerpréiwung an der Schlaang gesat. Wann Dir Kommentarer als Äntwert kritt, wäerte se normalerweis a Form vun enger Textdatei mat zousätzlech "Kommentarzellen" dobäi sinn. Dir kënnt ëmmer de Status vun Ärer Demande kontrolléieren andeems Dir besicht Ressource System Member Portal. Awer wann Är Feature guttgeheescht ass, gitt Dir matgedeelt (via E-Mail) an Är Feature gëtt an de Wolfram Feature Repository gepost.

E puer Subtilitéiten op der Aarbecht

Op den éischte Bléck kann et schéngen wéi wann Dir just en Definitiounsnotizbuch kënnt huelen an et wuertwiertlech an e Funktiounsrepository setzen, awer et sinn tatsächlech zimlech vill Subtletien involvéiert - an d'Handhabung erfuerdert e puer zimlech komplex Metaprogramméierung, Handhabung vun symbolesche Veraarbechtung wéi de Code deen d'Funktioun definéiert, an den Notizblock selwer ass definéiert. Déi meescht vun dësem geschitt intern, hannert de Kulissen, awer et kann e puer Implikatioune hunn, déi et wäert sinn ze verstoen wann Dir zu der Feature Wëssensbasis bäidréit.

Éischt direkt Subtilitéit: Wann Dir d'Definitioun Notizbuch ausfëllt, kënnt Dir einfach iwwerall op Är Funktioun referenzéieren mat engem Numm wéi MyFunction, wat ausgesäit wéi e normale Numm fir eng Funktioun an der Wolfram Sprooch, awer fir Funktiounsrepository Dokumentatioun gëtt dëst ersat Ressource Funktioun ["MyFunction"] ass wat d'Benotzer tatsächlech benotze wann se mat der Funktioun schaffen.

Déi zweet Subtilitéit: wann Dir eng Ressourcefunktioun aus dem Definitiounsnotizbuch erstellt, mussen all Ofhängegkeeten, déi an der Funktiounsdefinitioun involvéiert sinn, erfaasst an explizit mat abegraff ginn. Wéi och ëmmer, fir sécherzestellen datt d'Definitioune modulär bleiwen, musst Dir alles an eng eenzegaarteg setzen Nummraum. (Natierlech, Funktiounen déi alles maachen, sinn am Funktiounsrepository.)

Normalerweis gesitt Dir ni Spuer vum Code benotzt fir dësen Nummraum ze konfiguréieren. Awer wann Dir aus iergendengem Grond en ënner-ausgefouert Symbol an Ärer Funktioun nennt, da gesitt Dir datt dëst Symbol am internen Kontext vun der Funktioun ass. Wéi och ëmmer, wann Dir d'Definitioun Notizblock veraarbecht, ass op d'mannst d'Symbol entsprécht der Funktioun selwer justierbar fir bescht Display als funktionell BLOB anstatt e roude Charakter am internen Kontext.

De Funktiounsrepository ass fir nei Funktiounen ze definéieren. An dës Funktiounen kënnen Optiounen hunn. Oft dës Parameteren (z.B. Method oder Bildgréisst) wäert fäeg sinn fir agebaute Funktiounen ze benotzen, wéi och fir déi fir déi agebaute Symboler scho existéieren. Awer heiansdo kann eng nei Feature nei Optiounen erfuerderen. Fir d'Modularitéit ze erhalen, mussen dës Parameteren Symboler sinn an engem eenzegaartegen internen Kontext definéiert (oder eppes wéi ganz Ressourcefunktiounen, dat heescht selwer). Fir Einfachheet erlaabt de Funktiounsrepository Iech nei Optiounen an Stringdefinitiounen ze definéieren. A fir d'Kamoudheet vum Benotzer, dës Definitiounen (ugeholl datt se benotzt hunn Optioun Wäert и Optiounen Muster) ginn och veraarbecht sou datt wann Dir Funktiounen benotzt, Parameteren net nëmmen als Strings spezifizéiert kënne ginn, awer och als global Symboler mat de selwechten Nimm.

Déi meescht Funktiounen maachen einfach wat se solle maachen all Kéier wann se genannt ginn, awer e puer Funktiounen musse initialiséiert ginn ier se an enger bestëmmter Sessioun lafen kënnen - a fir dëse Problem ze léisen, gëtt et eng "Initialiséierung" Sektioun an der Definitioun Sektioun.

Fonctiounen aus engem Repository kënnen aner Funktiounen benotzen déi schonn am Repository sinn; fir Definitioune fir e Funktiounsrepository opzestellen deen zwee (oder méi) Funktiounen enthält, déi sech openee referenzéieren, musst Dir se an Ärer Programmsessioun ofsetzen fir datt Dir kënnt Referenz wéi op hinnen Ressource Funktioun ["Numm"], da kënnt Dir d'Kombinatioune vun dëse Funktiounen erstellen, déi Dir braucht, Beispiller (ech hunn net verstanen) an eng nei Funktioun an de Repository bäizefügen op Basis vun deenen, déi scho virdru gepost goufen. (oder scho oder virdru - béid Wierder si knaschteg)

Entwécklung Perspektiven. Wat soll geschéien wann de Repository wierklech grouss gëtt?

Haut lancéiere mir just de Wolfram Feature Repository, awer mat der Zäit erwaarden mir datt seng Gréisst a Funktionalitéit dramatesch eropgoe kënnen, a wéi et an der Entwécklung wäerte wäerte verschidde Probleemer ginn, déi mir scho viraussoe kënnen entstoe kënnen.

Den éischte Problem betrëfft Funktiounsnimm an hir Eenzegaartegkeet. De Funktiounsrepository ass sou entworf datt, wéi déi agebaute Funktiounen an der Wolfram Sprooch, Dir kënnt all bestëmmte Funktioun bezeechnen andeems Dir einfach säin Numm spezifizéiert. Awer dëst bedeit zwangsleefeg datt Funktiounsnimm weltwäit eenzegaarteg musse sinn iwwer de Repository, sou datt et zum Beispill nëmmen een Ressource Funktioun ["MyFavorite Function"].

Dëst kann am Ufank wéi e grousse Problem schéngen, awer et ass derwäert ze realiséieren datt et am Fong dee selwechte Problem ass wéi fir Saachen wéi Internet Domainen oder Social Media Handle. An de Fakt ass datt de System einfach e Registrar muss hunn - an dëst ass eng vun de Rollen déi eis Firma fir d'Wolfram Funktioun Wëssenbasis ausféiert. (Fir privat Versioune vun engem Repository kënnen hir Registraren Administrateuren sinn.) Natierlech kann en Internet Domain registréiert ginn ouni eppes dran ze hunn, awer an engem Funktiounsrepository kann e Funktiounsnumm nëmmen registréiert ginn wann et eng tatsächlech Definitioun vu d'Funktioun.

En Deel vun eiser Roll bei der Gestioun vun der Wolfram Funktioun Wëssensbasis ass sécherzestellen datt den Numm dee fir eng Funktioun gewielt gëtt logesch ass mat der Definitioun vun der Funktioun an datt et Wolfram Sprooch Nummkonventiounen follegt. Mir hunn iwwer 30 Joer Erfarung mat agebaute Funktiounen an der Wolfram Sprooch ze benennen, an eist Team vu Curatoren bréngt dës Erfahrung och an d'Funktiounsrepository. Natierlech ginn et ëmmer Ausnahmen. Zum Beispill kann et léiwer schéngen e kuerzen Numm fir eng Funktioun ze hunn, awer et ass besser mat engem méi laangen, méi spezifesche Numm ze "verdeedegen" well Dir manner wahrscheinlech op een erakënnt deen an Zukunft en ähnlechen Funktiounsnumm wëllt maachen .

(Et sollt hei bemierkt ginn datt einfach e Member Tag derbäisetzen fir Funktiounen ze disambiguéieren net den virgesinn Effekt huet. Well ausser Dir insistéiert ëmmer en Tag ze zouzeschreiwen, musst Dir e Standardtag fir all bestëmmte Funktioun definéieren, an och Auteur Tags zoudeelen , wat erëm eng global Koordinatioun erfuerdert.)

Wéi d'Wëssenbasis vu Wolfram Funktiounen wiisst, ass ee vun de Probleemer, déi méiglecherweis optrieden, d'Entdeckbarkeet vu Funktiounen, fir déi de System ubitt. Sich Funktioun (an Definitiounsdateien kënnen Schlësselwieder enthalen, etc.). Fir agebaute Funktiounen an der Wolfram Sprooch ginn et all Zorte vu Kräizreferenzen an der Dokumentatioun fir d'Funktiounen ze "Annoncéieren". Funktiounen an engem Funktiounsrepository kënnen agebaute Funktiounen referenzéieren. Mä wat iwwer de Géigendeel? Fir dëst ze maachen, wäerte mir mat verschiddenen Designen experimentéieren fir Repositoryfunktiounen an Dokumentatiounssäiten fir agebaute Funktiounen auszesetzen.

Fir agebaute Funktiounen an der Wolfram Sprooch gëtt et eng sougenannt Detektiounsschicht vun Netz vun "Hëllef Säiten", déi organiséiert Lëschte vun Features am Zesummenhang mat spezifesche Beräicher ubidden. Et ass ëmmer schwéier Mann Säiten richteg ze balanséieren, a wéi d'Wolfram Sprooch wiisst, mussen Mann Säiten dacks komplett nei organiséiert ginn. Et ass zimmlech einfach Funktiounen aus engem Repository a breet Kategorien ze setzen, a souguer dës Kategorien konsequent ofzebriechen, awer et ass vill méi wäertvoll fir richteg organiséiert Sproochreferenzsäiten ze hunn. Et ass nach net kloer wéi se am beschten fir d'ganz Funktiounswëssenbasis erstallt ginn. Zum Beispill, CreateResourceObjectGallery am Feature Repository kann jidderee eng Websäit posten mat hiren "Picks" aus dem Repository:

Wolfram Function Repository: Open Access Plattform fir Wolfram Sproochextensiounen

De Wolfram Funktiounsrepository ass als persistent Funktiounsrepository konfiguréiert, wou all Funktioun dran ëmmer funktionnéiert. Natierlech kënnen nei Versioune vu Fonctiounen verfügbar sinn, a mir erwaarden datt e puer Fonctiounen natierlech mat der Zäit verouderd ginn. D'Funktioune funktionnéieren wa se a Programmer benotzt ginn, awer hir Dokumentatiounssäite verlinken op nei, méi fortgeschratt Funktiounen.

De Wolfram Feature Repository ass entwéckelt fir Iech ze hëllefen séier nei Features z'entdecken an nei Weeër ze léieren fir d'Wolfram Sprooch ze benotzen. Mir si ganz optimistesch datt e puer vun deem wat am Feature Repository exploréiert gouf schlussendlech Sënn mécht fir agebaute Deeler vun der Kern Wolfram Sprooch ze ginn. An de leschte Jorzéngt hu mir en ähnleche Set Features déi ursprénglech am Wolfram agefouert goufen | Alpha. An ee vun de Lektioune vun dëser Erfahrung geléiert ass, datt d'Erreeche vun de Standarden vun Qualitéit a Konsequenz, op déi mir konzentréieren an alles an der Wolfram Sprooch agebaut vill Aarbecht erfuerdert, wat oft méi schwéier ass wéi den initialen Effort fir d'Ëmsetzung vun der Iddi. Trotzdem kann eng Funktioun an der Funktiounswëssenbasis als e ganz nëtzleche Beweis vum Konzept fir eng zukünfteg Funktioun déngen, déi eventuell an d'Wolfram Sprooch agebaut ka ginn.

Déi wichtegst Saach hei ass datt eng Funktioun an engem Funktiounsrepository eppes ass dat fir all Benotzer verfügbar ass fir elo ze benotzen. Et ass méiglech datt eng Mammesprooch Feature vill besser a méi performant ka sinn, awer e Feature Repository erlaabt d'Benotzer direkt Zougang zu all nei Features ze hunn. An, am wichtegsten, dëst Konzept erlaabt jidderengem all nei Features ze addéieren déi se wëllen.

Virdrun an der Geschicht vun der Wolfram Sprooch wier dës Iddi net esou gutt geschafft wéi se huet, awer op dëser Etapp gëtt et sou vill Effort an d'Sprooch geluecht, an esou en déiwe Verständnis vun de Sproochgestaltungsprinzipien, datt et elo zimlech schéngt. méiglech fir eng grouss Communautéit vu Benotzer Fonctiounen dobäi datt Design Konsequenz erhalen wäert hinnen fir eng breet Palette vun Benotzer nëtzlech ze maachen.

Et gëtt en onheemleche Geescht vum Talent(?) an der Wolfram Language User Gemeinschaft. (Natierlech enthält dës Gemeinschaft vill führend R&D Experten a ville Beräicher.) Ech hoffen, datt de Wolfram Feature Repository eng efficace Plattform ubitt fir dëse Geescht vum Talent ze spären an ze verbreeden. Nëmmen zesummen kënne mir eppes erstellen, wat d'Gebitt wesentlech ausbaue wäert, op deem de Wolfram Sproochrechenparadigma ka applizéiert ginn.

A méi wéi 30 Joer si mir mat der Wolfram Sprooch wäit komm. Elo zesummen, loosst eis nach méi wäit goen. Ech encouragéieren staark all respektéiert Benotzer vun der Wolfram Sprooch ronderëm d'Welt fir de funktionnelle Repository als Plattform fir dëst ze benotzen, wéi och den neie Softwareprojet wéi de Free Wolfram Engine for Developers.

Source: will.com

Setzt e Commentaire