Moien, Habr! Ech presentéieren Iech eng Iwwersetzung vum Stephen Wolfram sengem Post
Viraussetzunge fir d'Konsequenz vun der Wolfram Sprooch
Haut stinn mir zesummen mat der Programméiersprooch um Schwell vu grousse Leeschtungen
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
Zum Beispill enthält de Wolfram Funktiounsrepository scho
Och méi wéi
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.
Et soll hei feststellen, datt wann Veraarbechtung
Ech hoffen dat mat der Ënnerstëtzung
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
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
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
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
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
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
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:
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
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:
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
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
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:
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
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
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
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
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
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
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
Also, wat kéint am Funktiounscode an engem Funktiounsrepository sinn?
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
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
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,
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: "
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
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
Wéi heescht et schaffen?
Bannent de Funktiounen am Wolfram Repository ass dëst méiglech mat genau datselwecht
Bedenkt
Bannen kënnt Dir e puer Informatioune mat der Funktioun gesinn
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:
Wann Dir d'Definitioun gemaach hutt, kënnt Dir d'Ressourcefunktioun benotzen:
Bedenkt datt et eng schwaarz Ikon an dëser Funktioun Blob ass . 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 . An et gëtt eng orange Ikon fir eng offiziell Ressource Feature am Wolfram Feature Repository .
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
Lokal Deployment vun enger Funktioun vun engem Repository op Ärem Computer gëtt mat dem Kommando ausgefouert
Wann Dir op de Submit Knäppchen fir e Funktiounsrepository klickt, wat geschitt drënner
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
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
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
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
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
De Funktiounsrepository ass fir nei Funktiounen ze definéieren. An dës Funktiounen kënnen Optiounen hunn. Oft dës Parameteren (z.B.
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
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
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.
Fir agebaute Funktiounen an der Wolfram Sprooch gëtt et eng sougenannt Detektiounsschicht vun
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
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