Szia Habr! Bemutatom a figyelmedbe Stephen Wolfram bejegyzésének fordítását
A Wolfram nyelv konzisztenciájának előfeltételei
Ma a programnyelvvel együtt a nagy eredmények küszöbén állunk
A Wolfram függvénytárat a Wolfram nyelv egyedülálló természete tette lehetővé, nemcsak mint programozási nyelv, hanem mint programozási nyelv is.
Például a Wolfram függvénytár már tartalmazza
Ugyanígy több mint
Az oldal eléréséhez másolja ki a fenti objektumot (BLOB függvény), illessze be a beviteli sorba, majd futtassa a függvényt - ez már be van építve a Wolfram nyelvbe, és alapértelmezés szerint támogatja
Itt kell megjegyezni, hogy a feldolgozás során
Remélem a támogatással
A tárolóból származó függvények kisebb vagy nagyobb kódrészleteket tartalmazhatnak Wolfram nyelven. Például ezek lehetnek hívások
A Wolfram Feature Repository héja és programozási struktúrája úgy van kialakítva, hogy mindenki a számára legegyszerűbb és legkényelmesebb módon tudjon hozzájárulni a közös ügyhöz - valójában csak
Ebben a megközelítésben sok kompromisszum és részlet van, de célunk a Wolfram szolgáltatástár optimalizálása mind a felhasználói élmény érdekében, mind annak biztosítása érdekében, hogy az új felhasználói funkciók érdemben járuljanak hozzá a nyelv fejlesztéséhez. Ahogy fejlődünk, nincs kétségem afelől, hogy új módszereket kell kitalálnunk a repository-ba épített függvények feldolgozására és érvényesítésére, nem utolsósorban a nagyszámú függvény rendszerezésére és a felhasználóknak szükségesek megtalálására. Azonban biztató, hogy az általunk választott út jó kezdet. én, személyesen
Növeli a hatékonyságot, miközben csökkenti a költségeket
Már az internet előtt is voltak módok a Wolfram nyelvi kód megosztására (az első nagyobb központosított projektünk az volt
Cégünk több mint 30 éve szorgalmasan dolgozik a Wolfram nyelvi szerkezet integritásának megőrzésén, és ez kritikus fontosságú annak biztosításában, hogy a Wolfram nyelv ne csak programozási nyelv legyen, hanem
Az egyes funkciók megvalósítási struktúrájában különféle számítási folyamatok fordulnak elő. Itt meg kell jegyezni, hogy szükséges, hogy a funkció világos és egységes megjelenésű és vizuálisan olvasható legyen a felhasználó számára. Ebben az összefüggésben a Wolfram nyelv beépített funkcióit több mint 6000 szekvenciális példával mutatjuk be a függvények megfelelő programozására (ezek a mi
Érdekes meta-programozási feladat egy valóban jól működő adattár létrehozása. Például a túl sok korlátozás a programban nem teszi lehetővé az algoritmus szükséges egységesítését és egyetemességét. Csakúgy, mint elégtelen számú funkcionális korlátozás esetén, az algoritmus végrehajtásának kellően helyes sorrendjét sem lehet megvalósítani. Számos korábbi példa e megközelítések kompromisszumos megvalósítására, amelyeket cégünk alkalmazott, meglehetősen stabilan működött – ezek a következők:
A fenti példák mindegyikének van egy alapvető jellemzője - a projektben összegyűjtött objektumok és funkciók nagyon magas fokú strukturálással és folyamatelosztással rendelkeznek. Természetesen a demó, a neurális hálózat vagy valami más szerkezetének részletei nagyban változhatnak, de az alapvető struktúra minden aktuális adattár esetében mindig ugyanaz marad. Tehát mi a véleménye, kedves felhasználó, egy ilyen tár létrehozásáról, amely kiterjeszti a Wolfram nyelvet? A Wolfram nyelvet rendkívül rugalmasra tervezték, így bármilyen módon bővíthető és módosítható. Ez a körülmény rendkívül fontos ahhoz, hogy gyorsan lehessen létrehozni különféle nagyszabású szoftverprojekteket Wolfram nyelven. Itt meg kell jegyezni, hogy a nyelv rugalmasságának növekedésével az ilyen nyelven megvalósított projektek költségei elkerülhetetlenül növekedni fognak. Ez annak köszönhető, hogy minél többet használ a felhasználó egy ilyen nyelvet, annál több dedikált funkcionalitást kap, de nem szabad elfelejteni, hogy ennek a megközelítésnek lehetnek negatív oldalai is, mivel nem tudják biztosítani a programmodulok konzisztens konzisztenciáját.
Gyakori probléma van a hagyományos programozási nyelvek könyvtáraival - ha például egy könyvtárat használ, akkor a kód megfelelően fog működni, de ha több könyvtárat próbál meg használni, nincs garancia arra, hogy megfelelően fognak kölcsönhatásba lépni egymással. . Ezenkívül a hagyományos programozási nyelvekben - a teljes értékű számítástechnikai nyelvtől eltérően - nincs mód arra, hogy az alapvető struktúrákon kívül minden funkcióhoz vagy adattípushoz konzisztens beépített reprezentációk legyenek. Valójában azonban a probléma még nagyobb, mint amilyennek első pillantásra tűnik: ha valaki egy nagyszabású funkcionalitási vertikumot épít fel, akkor a centralizált projektprogramozás óriási költségei nélkül, amelyet a Wolfram nyelvbe helyezünk, lehetetlen. következetességet elérni. Ezért fontos, hogy minden szoftvermodul mindig megfelelően működjön együtt.
Tehát a Wolfram szolgáltatástár mögött az az ötlet, hogy elkerüljük a fent vázolt problémát azáltal, hogy viszonylag kis kódrészletekben egyszerűen bővítményeket adunk a nyelvhez, egyedi funkciókon keresztül, amelyeket könnyebb koherens modulokként fejleszteni. Ennek ellenére vannak olyan programozási funkciók, amelyeket nem lehet egyedi funkciókkal kényelmessé tenni (és cégünk a közeljövőben egy optimalizált programozási algoritmus kiadását tervezi nagyszabású szoftvercsomagok megvalósításához). A Wolfram nyelvbe már beépített funkciók alapján azonban számos programozási lehetőség kínálkozik, amelyek egyedi függvények alapján valósulnak meg. Itt az ötlet az, hogy viszonylag kis programozási ráfordítással számos új és nagyon hasznos funkciót lehet létrehozni, amelyek kellő koherenciát biztosítanak a tervezésben, jól összehangolhatók egymással, és ezen túlmenően a jövőben könnyen és széles körben használható lesz a nyelvben.
Ez a megközelítés természetesen kompromisszum. Ha egy nagyobb csomagot implementálnának, a funkcionalitás egy teljesen új világa képzelhető el, amely rendkívül hatékony és hasznos lenne. Ha olyan új funkcionalitásra van szükség, amely minden máshoz illeszkedik, de nem hajlandó sok erőfeszítést fordítani a projekt fejlesztésére, ez sajnos a projekt hatókörének csökkenéséhez vezethet. A Wolfram szolgáltatástár mögött meghúzódó ötlet az, hogy funkcionalitást biztosítson a projekt egy meghatározó részének; ez a megközelítés erőteljes funkcionalitást ad hozzá, miközben megkönnyíti a megfelelő konzisztencia fenntartását a programozási projektekben.
Segítség egyéni funkciók hozzáadásához a függvénytárhoz
Csapatunk keményen dolgozott azon, hogy megkönnyítse a felhasználók számára a Wolfram adattár funkcióihoz való hozzájárulást. Az asztalon (már be
Két fő lépést kell végrehajtania: először is írja le a funkció kódját, másodszor pedig írja le a dokumentációt, amely bemutatja, hogyan kell működnie a funkciónak.
Kattintson a felül található "Minta megnyitása" gombra, hogy példát lásson a teendőkre:
Lényegében valami hasonlót próbál létrehozni, mint egy beépített funkció a Wolfram nyelvben. Kivéve, hogy valami sokkal specifikusabbra képes, mint egy beépített funkció. Ugyanakkor a teljességével és megbízhatóságával kapcsolatos elvárások sokkal alacsonyabbak lesznek.
A függvénynek olyan nevet kell adnia, amely követi a Wolfram nyelv függvényelnevezési irányelveit. Ezenkívül a nyelv beépített funkcióihoz hasonló dokumentációt kell kidolgoznia a funkciójához. Erről később részletesebben szólok. Egyelőre csak vegye figyelembe, hogy a definíciós jegyzetfüzet fájl tetején lévő gombsorban van egy gomb
Ha biztos benne, hogy minden megfelelően van kitöltve, és készen áll, kattintson az „Ellenőrzés” gombra. Teljesen normális, hogy még nem jöttél rá minden részletre. Így az "Ellenőrzés" funkció automatikusan lefut, és számos stílus- és konzisztenciaellenőrzést végez. Gyakran azonnal felszólítja Önt a javítások megerősítésére és elfogadására (például: „Ennek a sornak kettősponttal kell végződnie”, és kettőspont beírását kéri). Néha meg fogja kérni, hogy saját maga adjon hozzá vagy változtasson meg valamit. Folyamatosan új funkciókkal bővítjük az Ellenőrzés gomb automatikus funkcionalitását, de alapvetően az a célja, hogy minden, amit a funkciótárba beküld, a lehető legtöbb stílusirányelvet követje.
Tehát a "Check" futtatása után használhatja az "Előnézet" funkciót. Az „Előnézet” a funkciójához meghatározott dokumentációs oldal előnézetét hozza létre. Létrehozhat előnézetet a számítógépén létrehozott fájlhoz vagy a felhőalapú tárolóban található fájlhoz is. Ha valamilyen oknál fogva nem elégedett azzal, amit az előnézetben lát, egyszerűen lépjen vissza, és végezze el a szükséges javításokat, majd kattintson ismét az Előnézet gombra.
Most készen áll arra, hogy a függvényt a tárolóba helyezze. A Telepítés gomb négy lehetőséget kínál:
Ennél a lépésnél az a fontos, hogy a függvényt elküldhesd a Wolfram függvénytárba, hogy az bárki számára elérhető legyen. Ugyanakkor korlátozott számú felhasználó számára is elhelyezheti funkcióját. Létrehozhat például egy olyan funkciót, amely helyileg a számítógépén található, így az adott számítógép használatakor elérhető. Vagy közzéteheti a sajátjában
Tehát tegyük fel, hogy ténylegesen be szeretné küldeni a függvényt a Wolfram függvény tudásbázisba. Ehhez kattintson a „Küldés” gombra a tárolóba. Tehát mi történik jelenleg? Pályázatát azonnal sorba állítja a kurátorokból álló csapatunk általi felülvizsgálatra és jóváhagyásra.
Amint jelentkezése a jóváhagyási folyamaton keresztül halad (amely általában több napot vesz igénybe), értesítést kap az állapotáról, és esetleg javaslatokat tesz a jövőbeni felhasználásra. De amint a funkciót jóváhagyják, azonnal közzétesszük a Wolfram Feature Repository-ban, és bárki számára elérhető lesz. (És ez meg fog jelenni
Mi legyen a tárolóban?
Megjegyzendő, hogy cégünk a teljesség, a megbízhatóság és az általános minőség tekintetében nagyon magas követelményeket támaszt, és az elmúlt 6000+ év során a Wolfram nyelvbe már beépített 30+ funkció közül mindegyik megfelel a fenti követelményeknek. A Wolfram Function Repository célja, hogy a Wolfram nyelvben már meglévő összes struktúrát és funkcionalitást használja annak érdekében, hogy minél több könnyebb funkciót (azaz nagyobb teljesítményű funkciókat) adjon hozzá.
Természetesen a Wolfram függvénytárban lévő funkcióknak meg kell felelniük a Wolfram nyelv tervezési elveinek – hogy teljes mértékben kölcsönhatásba léphessenek más funkciókkal és a felhasználók elvárásaival a funkció megfelelő működésével kapcsolatban. A funkcióknak azonban nem kell egyforma teljességűnek vagy megbízhatónak lenniük.
A Wolfram nyelv beépített funkcióiban keményen dolgozunk azon, hogy a programozási funkciók minél általánosabbak legyenek. Ennek ellenére, amikor a Wolfram függvénytárban tartózkodik, nincs semmi baj, ha van benne olyan függvény, amely egyszerűen kezel egy nagyon speciális, de hasznos esetet. Például a függvény
További szempont a beépített funkciókkal kapcsolatban, hogy cégünk mindent megtesz az atipikus esetek kezelésére, a hibás bevitelek helyes kezelésére stb. Egy függvénytárban teljesen normális, hogy van egy speciális függvény, amely a probléma megoldásának fő eseteit kezeli, és figyelmen kívül hagyja az összes többit.
A nyilvánvaló lényeg az, hogy jobb, ha vannak olyan függvények, amelyek többet és jobban csinálnak, de a függvénytár optimalizálásához - a Wolfram nyelv beépített funkcióival szemben - több funkciót kell több funkcióval kötegelni, ahelyett, hogy belemerülne. az egyes funkciók megvalósítási folyamatait.
Most nézzünk meg egy példát a funkciók tesztelésére egy adattárban. Az ilyen függvényekkel szembeni konzisztencia-elvárások természetesen sokkal alacsonyabbak, mint a beépített nyelvi függvényeknél. Ez különösen igaz azokra az esetekre, amikor a funkciók külső erőforrásoktól, például API-któl függenek, ezért fontos, hogy folyamatosan konzisztens teszteket végezzenek, ami automatikusan megtörténik az ellenőrző algoritmusokon belül. Az nb fájlban kifejezetten megadhat definíciókat (a További információk részben), és annyi tesztet adhat meg, amennyit bemeneti és kimeneti karakterláncok vagy teljes karakteres típusú objektumok határoznak meg.
Ennek eredményeként a függvénytárnak számos megvalósítási bonyolultsága lesz. Egyesek csak egyetlen kódsorból állnak, mások több ezer vagy tízezer sort foglalhatnak magukban, valószínűleg sok segédfunkciót használnak. Mikor érdemes olyan függvényt hozzáadni, amelynek definiálása nagyon kevés kódot igényel? Alapvetően, ha egy funkcióhoz létezik
A függvénytár fő célja (ahogy a neve is sugallja), hogy új funkciókat vigyen be a nyelvbe. Ha új adatokat szeretne hozzáadni, ill
Valójában két út létezik. Érdemes lehet egy új objektumtípust bevezetni, amelyet a függvénytár új függvényeiben használunk. És ebben az esetben mindig felírhatja a szimbolikus ábrázolását, és használhatja függvények bevitelére vagy kimenetére egy függvénytárban.
De mi van akkor, ha egy objektumot szeretne ábrázolni, majd a Wolfram nyelv meglévő függvényei segítségével meghatározni, hogy szeretne dolgozni vele? A Wolfram nyelvnek mindig volt erre egy könnyű mechanizmusa, az ún
Tehát mi lehet a függvénykódban egy függvénytárban?
A Wolfram szolgáltatástárhoz tartozó összes kódot Wolframban kell írni? Természetesen a külső API-n belüli kódot nem szabad Wolfram nyelven írni, ami még a nyelvi kódot sem készíti el. Valójában, ha szinte bármilyen külső nyelvben vagy könyvtárban talál egy függvényt, létrehozhat egy burkolóanyagot, amely lehetővé teszi annak használatát a Wolfram függvénytárban. (Általában ehhez a beépített funkciókat kell használni
Szóval mi értelme van ennek? Ez lényegében lehetővé teszi a teljes integrált Wolfram Language rendszer és annak teljes egységes szoftverképességeinek használatát. Ha az alapimplementációt egy külső könyvtárból vagy nyelvből szerzi be, akkor a Wolfram nyelv gazdag szimbolikus struktúrájával létrehozhat egy kényelmes legfelső szintű funkciót, amely lehetővé teszi a felhasználók számára a már megvalósított funkciók egyszerű használatát. Legalábbis ennek megvalósíthatónak kell lennie egy ideális világban, ahol a betöltési könyvtárak stb. összes építőköve létezik, amely esetben ezeket automatikusan a Wolfram nyelv kezelné. (Megjegyzendő, hogy a gyakorlatban problémák adódhatnak
Mellesleg, ha először megnézzük a tipikus külső könyvtárakat, gyakran túl bonyolultnak tűnnek ahhoz, hogy csak néhány funkciót lefedjenek, de sok esetben a bonyolultság nagy része a könyvtárhoz és az összes funkcióhoz szükséges infrastruktúra létrehozásából fakad. támogassa. A Wolfram nyelv használatakor azonban az infrastruktúra jellemzően már be van építve a csomagokba, így nem kell ezeket a támogatási funkciókat részletesen bemutatni, hanem csak a könyvtár "legfelső" alkalmazás-specifikus funkcióihoz kell függvényeket létrehozni. .
A tudásbázis "ökoszisztémája".
Ha olyan függvényeket írt, amelyeket rendszeresen használ, küldje el azokat a Wolfram Function Repository-ba! Ha ebből nem jön ki valami több (nyelvfejlesztés), akkor is sokkal kényelmesebb lesz a funkciókat személyes használatra használni. Logikus azonban feltételezni, hogy ha rendszeresen használja a funkciókat, talán más felhasználók is hasznosnak találják azokat.
Természetesen előfordulhat, hogy olyan helyzetbe kerül, amikor nem tudja – vagy nem akarja – megosztani a funkcióit, vagy ha hozzáfér személyes információforrásokhoz. Ilyen esetekben is egyszerűen telepítheti a funkciókat saját felhőfiókjában,
A Wolfram függvénytárba beküldött függvényeknek nem kell tökéletesnek lenniük; csak hasznosnak kell lenniük. Ez egy kicsit olyan, mint a "Hibák" szakasz a klasszikus Unix dokumentációban - a "Definíciók részben" van egy "Szerzői megjegyzések" rész, ahol leírhatja a funkciójával kapcsolatban már ismert korlátozásokat, problémákat stb. Ezen túlmenően, amikor elküldi a funkciót az adattárba, hozzáadhat beküldési megjegyzéseket, amelyeket a kurátorok elkötelezett csapata olvas majd el.
Egy funkció közzététele után az oldal alján mindig két link található: "
Néha egyszerűen csak a Wolfram függvénytárból szeretne függvényeket használni, például beépített függvényeket anélkül, hogy megnézné a kódjukat. Ha viszont bele akarunk nézni, akkor a tetején mindig van egy Jegyzettömb gomb. Kattintson rá, és megkapja a saját másolatát az eredeti definíciós jegyzetfüzetről, amelyet elküldtek a szolgáltatástárba. Néha csak példaként használhatja az igényeinek kielégítésére. Ezzel egyidejűleg saját módosítást is kidolgozhat erre a funkcióra. Ezeket a lerakatból talált függvényeket érdemes közzétenni a számítógépén vagy a levéltetű felhőtároló fiókjában, esetleg el szeretné küldeni őket a függvény tudásbázisba, esetleg az eredeti funkció továbbfejlesztett, bővített változataként.
A jövőben azt tervezzük, hogy támogatni fogjuk a Git-stílusú forking funkciót a funkciótáraknál, de egyelőre igyekszünk az egyszerűségre törekedni, és minden funkcióból mindig csak egy elfogadott verzió van beépítve a nyelvbe. Leggyakrabban (kivéve, ha a fejlesztők lemondanak az általuk kifejlesztett szolgáltatások fenntartásáról, és nem reagálnak a felhasználók beadványaira), a funkció eredeti szerzője átveszi az irányítást a frissítések felett, és új verziókat küld be, amelyeket ezután felülvizsgálnak, és ha átmennek a felülvizsgálati folyamaton. nyelven megjelent.
Nézzük meg azt a kérdést, hogyan működik a kifejlesztett függvények „verziója”. Jelenleg, amikor egy függvényt használ a függvénytárból, a definíciója véglegesen tárolásra kerül a számítógépén (vagy a felhőfiókjában, ha a felhőt használja). Ha egy funkciónak új verziója érhető el, a következő használat alkalmával erről értesítő üzenetet fog kapni. Ha pedig új verzióra szeretné frissíteni a függvényt, ezt a paranccsal megteheti
A Wolfram Function Repository egyik legszebb tulajdonsága, hogy bármely Wolfram nyelvi program bárhol használhat függvényeket. Ha egy program megjelenik egy jegyzettömbben, akkor gyakran célszerű a tárolófunkciókat könnyen olvasható "bináris függvény" függvényként formázni (talán megfelelő verziókészlettel).
Szöveg használatával bármikor elérheti a függvénytár bármely funkcióját
Hogyan működik?
A Wolfram repository funkcióin belül ez pontosan ugyanazzal lehetséges
Fontolja
Belül néhány információ látható a funkció használatával
Hogyan működik az erőforrás-függvény beállítása? A legegyszerűbb tisztán helyi eset. Íme egy példa, amely egy függvényt (ebben az esetben csak egy tiszta függvényt) vesz fel, és erőforrásfüggvényként határozza meg egy adott programmenethez:
Miután elkészítette a definíciót, használhatja az erőforrás függvényt:
Vegye figyelembe, hogy ebben a funkcióblobban egy fekete ikon található . Ez azt jelenti, hogy a BLOB függvény az aktuális munkamenethez definiált memórián belüli erőforrás függvényre utal. A számítógépén vagy a felhőalapú fiókjában állandóan tárolt erőforrás-funkció szürke ikonnal rendelkezik . És van egy narancssárga ikon egy hivatalos erőforrás-funkcióhoz a Wolfram Feature Repository-ban .
Tehát mi történik, ha a Definíciós Jegyzetfüzet Kibontás menüjét használja? Először is átveszi a jegyzettömb összes definícióját, és létrehoz egy szimbolikus képet
Egy funkció helyi telepítése a számítógép lerakatából a parancs segítségével történik
Ha rákattint a Beküldés gombra egy függvénytárnál, mi történik alatta
Alapértelmezés szerint a beküldések az Ön Wolfram azonosítójához társított név alatt készülnek. De ha egy fejlesztőcsapat vagy szervezet nevében nyújt be kérelmet, megteheti
Miután elküldte bármelyik függvényét a függvény tudásbázisba, az ellenőrzési sorba kerül. Ha megjegyzéseket kap válaszként, azok általában szöveges fájl formájában lesznek, további „megjegyzéscellákkal”. Bármikor ellenőrizheti jelentkezése állapotát a weboldalon
Néhány finomság a munkában
Első pillantásra úgy tűnhet, hogy egyszerűen csak elővesz egy definíciós jegyzetfüzetet, és szó szerint elhelyezi egy függvénytárba, azonban valójában nagyon sok finomságról van szó – és ezek kezelése meglehetősen bonyolult metaprogramozást, szimbolikus feldolgozást igényel. függvényt meghatározó kódként, és maga a Jegyzettömb is definiálva van. Ennek nagy része belül, a színfalak mögött történik, de lehetnek olyan következményei, amelyeket érdemes megérteni, ha hozzá kívánunk járulni a funkciók tudásbázisához.
Az első azonnali finomság: Amikor kitölti a Definíciós Jegyzetfüzetet, egyszerűen hivatkozhat a funkciójára mindenhol egy olyan név használatával, mint MyFunction, amely úgy néz ki, mint egy függvény szokásos neve a Wolfram nyelvben, de a függvénytár dokumentációjában ez lecserélődik
A második finomság: amikor erőforrásfüggvényt hoz létre a Definíciós Jegyzetfüzetből, a függvénydefinícióban szereplő összes függőséget rögzíteni kell és kifejezetten bele kell foglalni. Ahhoz azonban, hogy a definíciók modulárisak maradjanak, mindent egyedivé kell tenni
Általában soha nem fogja látni a névtér konfigurálásához használt kód nyomát. De ha valamilyen oknál fogva alulvégrehajtott szimbólumot hív meg a függvényen belül, akkor látni fogja, hogy ez a szimbólum a függvény belső kontextusában van. A Definition Notepad feldolgozása során azonban legalább magának a függvénynek megfelelő szimbólum az
A függvénytár új függvények meghatározására szolgál. És ezeknek a funkcióknak lehetnek opciói. Gyakran ezek a paraméterek (pl.
A legtöbb függvény egyszerűen azt csinálja, amit tennie kell, minden alkalommal, amikor meghívják őket, de néhány függvényt inicializálni kell, mielőtt egy adott munkamenetben futhatnának – és a probléma megoldására a Definíció részben található az „Inicializálás” szakasz.
A lerakatból származó függvények használhatnak más függvényeket is, amelyek már a lerakatban vannak; ha olyan függvénytárhoz szeretne definíciókat beállítani, amely két (vagy több) egymásra hivatkozó függvényt tartalmaz, telepítenie kell őket a programmunkamenetben, hogy hivatkozás, mint rajtuk
Fejlődési kilátások. Mi történjen, ha a tárhely nagyon nagy lesz?
Ma még csak elindítjuk a Wolfram Feature Repository-t, de idővel arra számítunk, hogy mérete és funkcionalitása drámaian növekedhet, és ahogy a fejlesztés során növekszik, különféle problémák merülhetnek fel, amelyekről már előre gondoltunk.
Az első probléma a függvénynevekkel és azok egyediségével kapcsolatos. A függvénytárat úgy alakították ki, hogy a Wolfram nyelv beépített függvényeihez hasonlóan bármely adott függvényre egyszerűen a nevének megadásával hivatkozhat. Ez azonban elkerülhetetlenül azt jelenti, hogy a függvényneveknek globálisan egyedinek kell lenniük a tárolóban, így például csak egy lehet.
Ez elsőre nagy problémának tűnhet, de érdemes belátni, hogy alapvetően ugyanaz a probléma, mint például az internetes domainek vagy a közösségi média kezelői. A tény pedig az, hogy a rendszernek egyszerűen kell lennie egy regisztrátornak – és ez az egyik szerep, amelyet cégünk ellát a Wolfram funkció tudásbázisa számára. (A repozitórium privát verzióinál ezek regisztrátorai lehetnek adminisztrátorok.) Természetesen egy internetes tartomány regisztrálható anélkül, hogy bármi is lenne rajta, de a függvénytárban csak akkor lehet funkciónevet regisztrálni, ha van tényleges definíció a funkció.
A Wolfram-függvény tudásbázis kezelésében játszott szerepünk része annak biztosítása, hogy a függvényhez választott név logikus legyen a függvény definíciójában, és kövesse a Wolfram nyelv elnevezési konvencióit. Több mint 30 éves tapasztalattal rendelkezünk a beépített függvények elnevezésében a Wolfram nyelvben, és kurátoraink csapata ezt a tapasztalatot a függvénytárba is beviszi. Persze kivételek mindig vannak. Előnyösnek tűnhet például egy rövid név megadása bizonyos függvényeknek, de jobb, ha hosszabb, pontosabb névvel "védekezzünk", mert kevésbé valószínű, hogy a jövőben összefut valakivel, aki hasonló függvénynevet szeretne létrehozni. .
(Itt meg kell jegyezni, hogy a függvények egyértelművé tétele érdekében néhány tagcímke egyszerű hozzáadásával nem lesz a kívánt hatás. Mert hacsak nem ragaszkodsz a címke mindig hozzárendeléséhez, minden adott függvényhez meg kell határoznod az alapértelmezett címkét, és ki kell osztanod a szerzői címkéket is. , ami ismét globális koordinációt igényelne.)
Ahogy a Wolfram-függvények tudásbázisa növekszik, az egyik valószínűleg felmerülő probléma a függvények felfedezhetősége, amelyre a rendszer gondoskodik.
A Wolfram nyelv beépített funkcióihoz egy úgynevezett észlelési réteget biztosít
A Wolfram függvénytár perzisztens függvénytárként van konfigurálva, ahol a benne lévő bármely funkció mindig működik. Természetesen a funkciók új verziói is elérhetővé válhatnak, és arra számítunk, hogy bizonyos funkciók idővel természetesen elavulnak. A funkciók működni fognak, ha programokban használják őket, de a dokumentációs oldalaik új, fejlettebb funkciókra hivatkoznak.
A Wolfram Feature Repository célja, hogy segítsen gyorsan felfedezni az új funkciókat és megtanulni a Wolfram nyelv használatának új módjait. Nagyon bizakodóak vagyunk a tekintetben, hogy a szolgáltatástárban feltártak egy része végül értelmet nyer, hogy az alapvető Wolfram nyelv beépített részévé váljon. Az elmúlt évtizedben volt egy hasonló készletünk
A legfontosabb dolog itt az, hogy egy függvénytárban lévő függvény minden felhasználó számára elérhető. Lehetséges, hogy egy anyanyelvi szolgáltatás sokkal jobb és teljesítményesebb lehet, de egy szolgáltatástár lehetővé tenné, hogy a felhasználók azonnal hozzáférjenek az összes új funkcióhoz. És ami a legfontosabb, ez a koncepció lehetővé teszi, hogy mindenki bármilyen új funkciót adjon hozzá.
Korábban a Wolfram nyelv történetében ez az ötlet nem működött volna olyan jól, mint most, de ebben a szakaszban annyi erőfeszítést tesznek a nyelvbe, és olyan mélyen megértik a nyelvtervezési elveket, hogy most nagyon úgy tűnik. a felhasználók nagy közössége számára lehetőség nyílik olyan funkciók hozzáadására, amelyek megőrzik a tervezés konzisztenciáját, hogy hasznosak legyenek a felhasználók széles köre számára.
A Wolfram nyelv felhasználói közösségében hihetetlen tehetség(?) van. (Természetesen ebbe a közösségbe számos vezető K+F szakértő tartozik a legkülönbözőbb területeken.) Remélem, hogy a Wolfram Feature Repository hatékony platformot biztosít a tehetség szellemének felszabadításához és terjesztéséhez. Csak együtt tudunk létrehozni valamit, ami jelentősen kibővíti azt a területet, amelyre a Wolfram nyelv számítási paradigmája alkalmazható.
Több mint 30 év alatt nagy utat tettünk meg a Wolfram nyelvvel. Most együtt menjünk még tovább. Határozottan bátorítom a Wolfram nyelv minden elismert felhasználóját szerte a világon, hogy a funkcionális adattárat használják platformként ehhez, valamint az új szoftverprojekthez, például a Free Wolfram Engine for Developershez.
Forrás: will.com