Ahoj Habr! Predkladám vám preklad príspevku Stephena Wolframa
Predpoklady konzistentnosti jazyka Wolfram
Dnes stojíme na prahu veľkých úspechov spolu s programovacím jazykom
Úložisko funkcií Wolfram je niečo, čo umožňuje jedinečná povaha jazyka Wolfram nielen ako programovacieho jazyka, ale aj ako
Napríklad úložisko funkcií Wolfram už obsahuje
Rovnako viac ako
Ak chcete prejsť na stránku, skopírujte vyššie uvedený objekt (funkcia BLOB), vložte ho do vstupného riadku a potom spustite funkciu - je už zabudovaná do jazyka Wolfram a štandardne podporovaná počnúc od
Tu treba poznamenať, že pri spracovaní
Dúfam, že s podporou
Funkcie z úložiska môžu obsahovať malé alebo veľké časti kódu napísané v jazyku Wolfram. Môžu to byť napríklad hovory
Štruktúra shellu a programovania úložiska funkcií Wolfram je navrhnutá tak, aby každý mohol prispieť k spoločnej veci tým najjednoduchším a najpohodlnejším spôsobom pre neho – v skutočnosti len
V tomto prístupe je veľa kompromisov a detailov, ale naším cieľom je optimalizovať úložisko funkcií Wolfram tak pre používateľskú skúsenosť, ako aj zabezpečiť, aby nové používateľské funkcie zmysluplne prispievali k vývoju jazyka. Ako rastieme, nepochybujem o tom, že budeme musieť vynájsť nové metódy na spracovanie a overenie funkcií zabudovaných do úložiska, v neposlednom rade na organizovanie veľkého množstva funkcií a vyhľadávanie tých, ktoré používatelia potrebujú. Je však povzbudzujúce, že cesta, ktorú sme si zvolili, je dobrým začiatkom. ja osobne
Zvýšená efektivita pri znížení nákladov
Ešte pred internetom existovali spôsoby zdieľania kódu Wolfram Language (náš prvý veľký centralizovaný projekt bol
Už viac ako 30 rokov naša spoločnosť usilovne pracuje na zachovaní integrity jazykovej štruktúry Wolfram, čo je rozhodujúce pre zabezpečenie toho, aby sa jazyk Wolfram stal nielen programovacím jazykom, ale aj
V implementačnej štruktúre každej funkcie sa vyskytujú rôzne výpočtové procesy. Tu je potrebné poznamenať, že je potrebné, aby funkcia mala pre používateľa jasný a jednotný vzhľad a vizuálnu čitateľnosť. V tejto súvislosti sú vstavané funkcie jazyka Wolfram prezentované s viac ako 6000 XNUMX postupnými príkladmi, ako správne programovať funkcie (toto sú naše
Vytvorenie úložiska, ktoré skutočne funguje dobre, je zaujímavá úloha metaprogramovania. Napríklad prebytok obmedzení v programe neumožní získať požadované zjednotenie a univerzálnosť algoritmu. Rovnako ako pri nedostatočnom počte funkčných obmedzení, nebudete môcť implementovať dostatočne správnu postupnosť vykonávania algoritmu. Niekoľko predchádzajúcich príkladov implementácie kompromisu týchto prístupov, implementovaných našou spoločnosťou, fungovalo pomerne stabilne - sú to:
Všetky vyššie uvedené príklady majú základnú vlastnosť – objekty a funkcie zhromaždené v projekte majú veľmi vysoký stupeň štruktúrovania a distribúcie procesov. Samozrejme, detaily štruktúry toho, čo je demo alebo neurónová sieť alebo niečo iné, sa môžu značne líšiť, ale základná štruktúra každého súčasného úložiska zostáva vždy rovnaká. Aký je teda váš názor, milý používateľ, na vytvorenie takéhoto úložiska, ktoré pridáva rozšírenia do jazyka Wolfram? Jazyk Wolfram je navrhnutý tak, aby bol mimoriadne flexibilný, takže ho možno ľubovoľným spôsobom rozširovať a upravovať. Táto okolnosť je mimoriadne dôležitá pre schopnosť rýchlo vytvárať rôzne rozsiahle softvérové projekty v jazyku Wolfram. Tu je potrebné poznamenať, že so zvyšujúcou sa flexibilitou jazyka sa nevyhnutne zvýšia náklady na projekty realizované v takomto jazyku. Je to spôsobené tým, že čím viac používateľ používa takýto jazyk, tým viac dedikovanej funkcionality dostáva, no nemali by sme zabúdať, že tento prístup môže mať aj negatívne stránky v podobe neschopnosti zabezpečiť konzistentnú konzistenciu programových modulov.
Bežný problém s knižnicami v tradičných programovacích jazykoch - ak napríklad použijete jednu knižnicu, kód bude fungovať správne, ale ak sa pokúsite použiť viacero knižníc, nie je zaručené, že budú navzájom správne interagovať. . Taktiež v tradičných programovacích jazykoch – na rozdiel od plnohodnotného výpočtového jazyka – neexistuje žiadny spôsob, ako zaručiť prítomnosť konzistentných vstavaných reprezentácií pre akékoľvek funkcie alebo dátové typy iné ako ich základné štruktúry. Ale v skutočnosti je problém ešte väčší, ako sa na prvý pohľad zdá: ak sa buduje rozsiahla vertikála funkčnosti, potom bez obrovských nákladov na centralizované projektové programovanie, ktoré vložíme do jazyka Wolfram, nie je možné dosiahnuť konzistenciu. Preto je dôležité, aby všetky softvérové moduly vždy správne spolupracovali.
Myšlienkou úložiska funkcií Wolfram je teda vyhnúť sa vyššie načrtnutému problému jednoduchým pridávaním rozšírení do jazyka v relatívne malých kúskoch kódu prostredníctvom jednotlivých funkcií, ktoré sa ľahšie vyvíjajú ako koherentné moduly. Ako už bolo povedané, existujú programovacie funkcie, ktoré nie je možné spríjemniť pomocou jednotlivých funkcií (a naša spoločnosť plánuje v blízkej budúcnosti vydať optimalizovaný programovací algoritmus, ktorý pomôže implementovať rozsiahle softvérové balíky). Na základe funkcií už zabudovaných do jazyka Wolfram však existuje veľa možností programovania, ktoré sú implementované na základe jednotlivých funkcií. Ide o to, že s relatívne malým programátorským úsilím je možné vytvoriť množstvo nových a veľmi užitočných funkcií, ktoré poskytnú dostatočnú koherenciu dizajnu, budú navzájom dobre zladené a navyše budú môcť v budúcnosti ľahko a široko používať v jazyku.
Tento prístup je, samozrejme, kompromisom. Ak by sa implementoval väčší balík, dalo by sa predstaviť úplne nový svet funkčnosti, ktorý by bol mimoriadne výkonný a užitočný. Ak je potrebné získať novú funkcionalitu, ktorá bude ladiť so všetkým ostatným, ale nie ste ochotní vynaložiť veľa úsilia na vývoj projektu, môže to, žiaľ, viesť k zníženiu rozsahu vášho projektu. Myšlienkou úložiska funkcií Wolfram je poskytnúť funkčnosť definujúcej časti projektu; tento prístup pridá výkonnú funkčnosť a zároveň uľahčí udržanie dobrej konzistencie v programovacom projekte.
Pomoc pri pridávaní vlastných funkcií do úložiska funkcií
Náš tím tvrdo pracoval na tom, aby používateľom uľahčil prispievanie do funkcií úložiska Wolfram. Na pracovnej ploche (už v
Existujú dva hlavné kroky, ktoré budete musieť vykonať: po prvé si skutočne zapíšte kód svojej funkcie a po druhé si zapíšte dokumentáciu znázorňujúcu, ako by mala vaša funkcia fungovať.
Kliknutím na tlačidlo „Otvoriť vzorku“ v hornej časti zobrazíte príklad toho, čo musíte urobiť:
V podstate sa snažíte vytvoriť niečo podobné vstavanej funkcii v jazyku Wolfram. Až na to, že dokáže niečo oveľa špecifickejšie ako vstavaná funkcia. Očakávania týkajúce sa jeho úplnosti a spoľahlivosti budú zároveň oveľa nižšie.
Musíte dať svojej funkcii názov, ktorý sa riadi pokynmi pre pomenovanie funkcií v jazyku Wolfram. Okrem toho budete musieť vypracovať dokumentáciu pre vašu funkciu, podobnú vstavaným funkciám jazyka. Podrobnejšie o tom budem hovoriť neskôr. Zatiaľ si všimnite, že v rade tlačidiel v hornej časti súboru definície poznámkového bloku je tlačidlo
Keď ste si istí, že je všetko správne vyplnené a ste pripravení, kliknite na tlačidlo „Skontrolovať“. Je úplne normálne, že ste ešte neprišli na všetky detaily. Funkcia „Kontrola“ sa teda automaticky spustí a vykoná veľa kontroly štýlu a konzistencie. Často vás okamžite vyzve na potvrdenie a prijatie opráv (Napríklad: „Tento riadok musí končiť dvojbodkou“ a vyzve vás na zadanie dvojbodky). Niekedy vás požiada, aby ste sami niečo pridali alebo zmenili. Do automatickej funkčnosti tlačidla Skontrolovať budeme neustále pridávať nové funkcie, ale v podstate jeho účelom je zabezpečiť, aby všetko, čo odošlete do úložiska funkcií, už presne dodržiavalo čo najviac smerníc štýlu.
Takže po spustení "Skontrolovať" môžete použiť "Ukážka". "Ukážka" vytvorí ukážku stránky dokumentácie, ktorú ste definovali pre svoju funkciu. Môžete tiež vytvoriť náhľad pre súbor vytvorený v počítači alebo pre súbor umiestnený v cloudovom úložisku. Ak z nejakého dôvodu nie ste spokojní s tým, čo vidíte v náhľade, jednoducho sa vráťte späť a vykonajte potrebné opravy a potom znova kliknite na tlačidlo Náhľad.
Teraz ste pripravení vložiť svoju funkciu do úložiska. Tlačidlo Nasadiť vám ponúka štyri možnosti:
Dôležité v tomto kroku je, že svoju funkciu môžete odoslať do úložiska funkcií Wolfram, aby bola dostupná komukoľvek. Zároveň môžete svoju funkciu umiestniť aj pre obmedzený počet používateľov. Môžete napríklad vytvoriť funkciu, ktorá je hosťovaná lokálne na vašom počítači, takže je dostupná, keď používate daný počítač. Alebo to môžete uverejniť vo svojom
Povedzme teda, že chcete svoju funkciu skutočne odoslať do znalostnej databázy funkcií Wolfram. Ak to chcete urobiť, kliknite na tlačidlo „Odoslať“ do úložiska. Čo sa teda momentálne deje? Vaša žiadosť je okamžite zaradená do poradia na posúdenie a schválenie našim špecializovaným tímom kurátorov.
Keď vaša žiadosť prejde schvaľovacím procesom (ktorý zvyčajne trvá niekoľko dní), budete dostávať správy týkajúce sa jej stavu a prípadne návrhy na budúce použitie. Ale akonáhle bude vaša funkcia schválená, bude okamžite zverejnená v úložisku funkcií Wolfram a bude k dispozícii pre každého. (A toto sa objaví v
Čo by malo byť v sklade?
Je potrebné poznamenať, že naša spoločnosť má veľmi vysoké štandardy na úplnosť, spoľahlivosť a celkovú kvalitu a z viac ako 6000 funkcií, ktoré sme do jazyka Wolfram zabudovali za posledných viac ako 30 rokov, všetky spĺňajú vyššie uvedené požiadavky. Cieľom úložiska funkcií Wolfram je využiť všetku štruktúru a funkčnosť, ktorá už v jazyku Wolfram existuje, aby bolo možné pridať čo najviac ľahších funkcií (t. j. funkcií s vyšším výkonom).
Samozrejme, funkcie v úložisku funkcií Wolfram musia zodpovedať princípom návrhu jazyka Wolfram – aby mohli plne interagovať s ostatnými funkciami a očakávaniami používateľov, ako má funkcia správne fungovať. Funkcie však nemusia byť rovnako úplné alebo spoľahlivé.
Vo vstavaných funkciách jazyka Wolfram tvrdo pracujeme na tom, aby boli programovacie funkcie čo najvšeobecnejšie. Ako už bolo povedané, keď ste v úložisku funkcií Wolfram, nie je nič zlé na tom, že v ňom máte funkciu, ktorá jednoducho rieši nejaký veľmi špecifický, ale užitočný prípad. Napríklad funkcia
Ďalším bodom, ktorý súvisí so zabudovanými funkciami, je, že naša spoločnosť vynakladá maximálne úsilie na zvládnutie všetkých atypických prípadov, na správne spracovanie nesprávneho zadania a pod. V úložisku funkcií je úplne normálne, že existuje špeciálna funkcia, ktorá rieši hlavné prípady riešenia problému a ignoruje všetky ostatné.
Zjavným bodom je, že je lepšie mať funkcie, ktoré robia viac a robia to lepšie, ale optimalizácia pre úložisko funkcií – na rozdiel od vstavaných funkcií jazyka Wolfram – by mala mať viac funkcií spojených s viacerými funkciami, a nie ponárať sa do implementačné procesy každej konkrétnej funkcie.
Teraz sa pozrime na príklad testovania funkcií v úložisku. Očakávania konzistencie pre takéto funkcie sú prirodzene oveľa nižšie ako pre vstavané jazykové funkcie. To platí najmä v prípadoch, keď funkcie závisia od externých zdrojov, ako sú API, je dôležité neustále vykonávať konzistentné testy, ktoré sa automaticky dejú v rámci overovacích algoritmov. V súbore nb môžete explicitne špecifikovať definície (v sekcii Ďalšie informácie) a špecifikovať toľko testov, koľko je definovaných buď vstupnými a výstupnými reťazcami, alebo úplnými znakovými objektmi typu
V dôsledku toho bude mať úložisko funkcií množstvo zložitostí pri implementácii. Niektoré budú iba jedným riadkom kódu, iné môžu zahŕňať tisíce alebo desaťtisíce riadkov, pravdepodobne pomocou mnohých pomocných funkcií. Kedy sa oplatí pridať funkciu, ktorej definovanie vyžaduje veľmi málo kódu? V podstate, ak pre funkciu existuje
Hlavným účelom úložiska funkcií (ako naznačuje jeho názov) je zavádzanie nových funkcií do jazyka. Ak chcete doplniť nové údaje resp
Sú vlastne dva spôsoby. Možno budete chcieť zaviesť nový typ objektu, ktorý sa bude používať v nových funkciách v úložisku funkcií. A v tomto prípade si vždy môžete jednoducho zapísať jeho symbolickú reprezentáciu a použiť ju pri zadávaní alebo výstupe funkcií v úložisku funkcií.
Ale čo ak chcete reprezentovať objekt a potom definovať prostredníctvom existujúcich funkcií v jazyku Wolfram, že s ním chcete pracovať? Wolframský jazyk mal na to vždy ľahký mechanizmus, tzv
Takže, čo môže byť v kóde funkcie v úložisku funkcií?
Mal by byť celý kód pre úložisko funkcií Wolfram napísaný vo Wolfram? Samozrejme, kód vo vnútri externého API by nemal byť napísaný v jazyku Wolfram, ktorý ani nevytvára jazykový kód. V skutočnosti, ak nájdete funkciu v takmer akomkoľvek externom jazyku alebo knižnici, môžete vytvoriť obal, ktorý vám umožní použiť ju v úložisku funkcií Wolfram. (Na to by ste mali zvyčajne použiť vstavané funkcie
Tak aký má zmysel to robiť? V podstate vám to umožňuje používať celý integrovaný systém Wolfram Language a celý jeho jednotný súbor softvérových schopností. Ak získate základnú implementáciu z externej knižnice alebo jazyka, môžete potom použiť bohatú symbolickú štruktúru jazyka Wolfram na vytvorenie pohodlnej funkcie najvyššej úrovne, ktorá používateľom umožňuje jednoducho používať akúkoľvek už implementovanú funkčnosť. Prinajmenšom by to malo byť uskutočniteľné v ideálnom svete, kde existujú všetky stavebné bloky načítavacích knižníc atď., v takom prípade by ich automaticky spracoval jazyk Wolfram. (Treba poznamenať, že v praxi môžu nastať problémy s
Mimochodom, keď sa prvýkrát pozriete na typické externé knižnice, často sa zdajú byť príliš zložité na to, aby boli pokryté len niekoľkými funkciami, ale v mnohých prípadoch veľká časť zložitosti pochádza z vytvorenia infraštruktúry potrebnej pre knižnicu a všetkých funkcií podporte to. Pri používaní jazyka Wolfram je však infraštruktúra zvyčajne už zabudovaná do balíkov, a preto nie je potrebné podrobne vysvetľovať všetky tieto podporné funkcie, ale iba vytvárať funkcie pre „najvyššie“ funkcie špecifické pre aplikáciu v knižnici. .
„Ekosystém“ vedomostnej základne
Ak ste napísali funkcie, ktoré pravidelne používate, odošlite ich do úložiska funkcií Wolfram! Ak z toho nevyplýva niečo viac (vývoj jazyka), aj tak bude pre vás oveľa pohodlnejšie používať funkcie na osobné použitie. Je však logické predpokladať, že ak funkcie používate pravidelne, možno sa budú hodiť aj iným používateľom.
Prirodzene sa môžete ocitnúť v situácii, keď nemôžete – alebo nechcete – zdieľať svoje funkcie alebo v prípade získania prístupu k súkromným informačným zdrojom. Aj v takýchto prípadoch môžete funkcie jednoducho nasadiť vo svojom vlastnom cloudovom účte,
Funkcie, ktoré odošlete do úložiska funkcií Wolfram, nemusia byť dokonalé; len musia byť užitočné. Je to trochu ako sekcia „Chyby“ v klasickej unixovej dokumentácii – v sekcii „Definície“ je sekcia „Poznámky autora“, kde môžete popísať obmedzenia, problémy atď., ktoré už o svojej funkcii poznáte. Okrem toho, keď odošlete svoju funkciu do úložiska, môžete pridať poznámky k odoslaniu, ktoré si prečíta špecializovaný tím kurátorov.
Po zverejnení funkcie má jej stránka v spodnej časti vždy dva odkazy: "
Niekedy len chcete použiť funkcie z úložiska funkcií Wolfram, ako sú vstavané funkcie, bez toho, aby ste sa pozerali na ich kód. Ak však chcete nahliadnuť dovnútra, v hornej časti je vždy tlačidlo Poznámkový blok. Kliknite naň a získate vlastnú kópiu pôvodného poznámkového bloku s definíciami, ktorý bol odoslaný do úložiska funkcií. Niekedy ho môžete použiť len ako príklad pre vaše potreby. Zároveň si môžete vyvinúť aj vlastnú modifikáciu tejto funkcie. Možno budete chcieť zverejniť tieto funkcie, ktoré ste našli z úložiska vo svojom počítači alebo vo svojom účte cloudového úložiska vošiek, možno ich budete chcieť odoslať do databázy znalostí funkcií, možno ako vylepšenú, rozšírenú verziu pôvodnej funkcie.
V budúcnosti plánujeme podporovať forkovanie v štýle Git pre repozitáre funkcií, ale zatiaľ sa snažíme, aby to bolo jednoduché a vždy máme v jazyku zabudovanú iba jednu akceptovanú verziu každej funkcie. Častejšie (pokiaľ sa vývojári nevzdajú údržby funkcií, ktoré vyvinuli a nereagujú na príspevky používateľov), pôvodný autor funkcie prevezme kontrolu nad jej aktualizáciami a odošle nové verzie, ktoré sa potom skontrolujú a ak prejdú procesom kontroly , uverejnené v jazyku.
Zamyslime sa nad otázkou, ako funguje „verzovanie“ vyvinutých funkcií. Práve teraz, keď použijete funkciu z úložiska funkcií, jej definícia bude natrvalo uložená vo vašom počítači (alebo vo vašom cloudovom účte, ak používate cloud). Ak je k dispozícii nová verzia funkcie, pri ďalšom použití dostanete správu s upozornením. A ak chcete aktualizovať funkciu na novú verziu, môžete to urobiť pomocou príkazu
Jednou z krásnych vecí na úložisku funkcií Wolfram je, že funkcie z neho môže používať akýkoľvek program Wolfram Language, kdekoľvek. Ak sa program objaví v poznámkovom bloku, je často vhodné naformátovať funkcie úložiska ako ľahko čitateľné funkcie „binárneho objektu funkcií“ (možno s príslušnou nastavenou verziou).
K akejkoľvek funkcii v úložisku funkcií môžete vždy pristupovať pomocou textu
Ako to funguje?
V rámci funkcií v úložisku Wolfram je to možné pomocou presne toho istého
Zvážiť
Vo vnútri môžete vidieť niektoré informácie pomocou funkcie
Ako funguje nastavenie funkcie zdrojov? Najjednoduchší je čisto lokálny prípad. Tu je príklad, ktorý berie funkciu (v tomto prípade iba čistú funkciu) a definuje ju ako zdrojovú funkciu pre danú reláciu programu:
Po vytvorení definície môžete použiť funkciu zdroja:
Všimnite si, že v tomto blobe funkcie je čierna ikona . To znamená, že funkcia BLOB odkazuje na funkciu zdroja v pamäti definovanú pre aktuálnu reláciu. Funkcia prostriedkov, ktorá je natrvalo uložená vo vašom počítači alebo cloudovom účte, má sivú ikonu . A v úložisku funkcií Wolfram je oranžová ikona pre oficiálnu funkciu zdroja .
Čo sa teda stane, keď použijete ponuku Rozbaliť v Zápisníku definícií? Najprv preberie všetky definície v poznámkovom bloku a z nich vytvorí symbol
Lokálne nasadenie funkcie z úložiska na vašom počítači sa vykonáva pomocou príkazu
Ak kliknete na tlačidlo Odoslať pre úložisko funkcií, čo sa stane pod ním
V predvolenom nastavení sa príspevky odosielajú pod menom priradeným k vášmu Wolfram ID. Ak však podávate žiadosť v mene vývojového tímu alebo organizácie, môžete
Po odoslaní ktorejkoľvek z vašich funkcií do databázy znalostí funkcií bude táto zaradená do frontu na kontrolu. Ak ako odpoveď dostanete komentáre, zvyčajne budú vo forme textového súboru s pridanými ďalšími „bunkami komentárov“. Stav svojej aplikácie môžete kedykoľvek skontrolovať na stránke
Niektoré jemnosti v práci
Na prvý pohľad sa môže zdať, že stačí vziať definičný zápisník a vložiť ho doslovne do úložiska funkcií, no v skutočnosti je v tom zahrnutých pomerne veľa jemností – a ich manipulácia si vyžaduje pomerne zložité metaprogramovanie, manipuláciu so symbolickým spracovaním. ako kód, ktorý definuje funkciu a je definovaný samotný Poznámkový blok. Väčšina z toho sa deje interne, v zákulisí, ale môže to mať určité dôsledky, ktoré sa oplatí pochopiť, ak sa chystáte prispieť k znalostnej báze funkcií.
Prvá okamžitá jemnosť: Keď vyplníte Zápisník definícií, môžete jednoducho všade odkazovať na svoju funkciu pomocou názvu ako MyFunction, ktorý vyzerá ako bežný názov funkcie v jazyku Wolfram, ale v dokumentácii k úložisku funkcií je nahradený
Druhá jemnosť: keď vytvoríte zdrojovú funkciu z Definition Notebooku, musia byť zachytené a explicitne zahrnuté všetky závislosti zahrnuté v definícii funkcie. Aby ste však zabezpečili, že definície zostanú modulárne, musíte dať všetko do jedinečného
Zvyčajne nikdy neuvidíte žiadnu stopu kódu použitého na konfiguráciu tohto priestoru názvov. Ak však z nejakého dôvodu vo svojej funkcii zavoláte nedostatočne vykonaný symbol, uvidíte, že tento symbol je vo vnútornom kontexte funkcie. Pri spracovaní Definition Notepad je však aspoň symbol zodpovedajúci samotnej funkcii
Úložisko funkcií slúži na definovanie nových funkcií. A tieto funkcie môžu mať možnosti. Často tieto parametre (napr.
Väčšina funkcií jednoducho robí to, čo majú robiť vždy, keď sú zavolané, ale niektoré funkcie je potrebné inicializovať predtým, ako sa spustia v konkrétnej relácii – a na vyriešenie tohto problému existuje časť „Inicializácia“ v časti Definícia.
Funkcie z úložiska môžu používať iné funkcie, ktoré sa už v úložisku nachádzajú; ak chcete nastaviť definície pre úložisko funkcií, ktoré obsahujú dve (alebo viac) funkcií, ktoré sa navzájom odkazujú, musíte ich nasadiť vo svojej relácii programu, aby ste mohli odkaz ako na nich
Perspektívy rozvoja. Čo by sa malo stať, keď bude úložisko naozaj veľké?
Dnes práve spúšťame úložisko funkcií Wolfram, no v priebehu času očakávame, že jeho veľkosť a funkčnosť sa môže dramaticky zväčšiť a ako bude rásť vo vývoji, vyskytnú sa rôzne problémy, o ktorých už predpokladáme, že môžu nastať.
Prvý problém sa týka názvov funkcií a ich jedinečnosti. Úložisko funkcií je navrhnuté tak, že podobne ako vstavané funkcie v jazyku Wolfram môžete odkazovať na akúkoľvek danú funkciu jednoducho zadaním jej názvu. To však nevyhnutne znamená, že názvy funkcií musia byť globálne jedinečné v rámci úložiska, takže napríklad môže existovať iba jeden
Na prvý pohľad sa to môže zdať ako veľký problém, no treba si uvedomiť, že ide v podstate o rovnaký problém ako pri veciach, ako sú internetové domény alebo kľučky sociálnych médií. A faktom je, že systém jednoducho potrebuje mať registrátora – a to je jedna z úloh, ktoré bude naša spoločnosť vykonávať pre znalostnú bázu funkcií Wolfram. (V prípade súkromných verzií úložiska môžu byť ich registrátormi správcovia.) Internetovú doménu je samozrejme možné zaregistrovať aj bez toho, aby na nej bolo čokoľvek, ale v úložisku funkcií možno názov funkcie zaregistrovať iba vtedy, ak existuje skutočná definícia funkcia.
Súčasťou našej úlohy pri správe znalostnej bázy funkcií Wolfram je zabezpečiť, aby názov zvolený pre funkciu bol logický vzhľadom na definíciu funkcie a aby sa riadil konvenciami pomenovania jazyka Wolfram. Máme viac ako 30 rokov skúseností s pomenovávaním vstavaných funkcií v jazyku Wolfram a náš tím kurátorov prinesie tieto skúsenosti aj do úložiska funkcií. Samozrejme, vždy sa nájdu výnimky. Napríklad sa môže zdať vhodnejšie mať pre nejakú funkciu krátky názov, ale je lepšie „brániť sa“ dlhším, konkrétnejším názvom, pretože je menej pravdepodobné, že narazíte na niekoho, kto bude chcieť v budúcnosti vytvoriť podobný názov funkcie. .
(Tu je potrebné poznamenať, že jednoduché pridanie nejakého členského tagu na zjednotenie funkcií nebude mať zamýšľaný efekt. Pretože pokiaľ netrváte na tom, že tag je vždy priradený, budete musieť definovať predvolený tag pre danú funkciu a tiež prideliť autora tagy, čo by si opäť vyžadovalo globálnu koordináciu.)
Ako sa znalostná báza funkcií Wolfram rozrastá, jedným z problémov, ktoré pravdepodobne nastanú, je objaviteľnosť funkcií, pre ktoré systém poskytuje
Pre vstavané funkcie v jazyku Wolfram je poskytovaná takzvaná detekčná vrstva
Úložisko funkcií Wolfram je nakonfigurované ako úložisko trvalých funkcií, kde akákoľvek funkcia v ňom bude vždy fungovať. Samozrejme, môžu byť dostupné nové verzie funkcií a očakávame, že niektoré funkcie budú časom samozrejme zastarané. Funkcie budú fungovať, ak sa používajú v programoch, ale ich dokumentačné stránky budú odkazovať na nové, pokročilejšie funkcie.
Úložisko funkcií Wolfram je navrhnuté tak, aby vám pomohlo rýchlo objaviť nové funkcie a naučiť sa nové spôsoby používania jazyka Wolfram. Sme veľmi optimistickí, že niektoré z toho, čo bolo preskúmané v úložisku funkcií, bude mať nakoniec zmysel stať sa vstavanými súčasťami základného jazyka Wolfram. Za posledné desaťročie sme mali podobný súbor
Najdôležitejšia vec je, že funkcia v úložisku funkcií je niečo, čo môže práve teraz používať každý používateľ. Je možné, že funkcia v natívnom jazyku by mohla byť oveľa lepšia a výkonnejšia, ale úložisko funkcií by používateľom umožnilo okamžite prístup ku všetkým novým funkciám. A čo je najdôležitejšie, tento koncept umožňuje každému pridať nové funkcie, ktoré chce.
Predtým v histórii wolframského jazyka by táto myšlienka nefungovala tak dobre, ako fungovala, ale v tejto fáze je do jazyka vložené toľko úsilia a také hlboké pochopenie princípov jazykového dizajnu, že sa teraz zdá veľmi Pre veľkú komunitu používateľov je možné pridať funkcie, ktoré zachovajú konzistentnosť dizajnu, aby boli užitočné pre široký okruh používateľov.
V komunite používateľov Wolfram Language je neuveriteľný duch talentu(?). (Samozrejme, táto komunita zahŕňa mnoho popredných ľudí z oblasti výskumu a vývoja v rôznych oblastiach.) Dúfam, že úložisko funkcií Wolfram poskytne efektívnu platformu na odomknutie a šírenie tohto ducha talentu. Len spoločnými silami môžeme vytvoriť niečo, čo výrazne rozšíri oblasť, na ktorú sa dá aplikovať výpočtová paradigma jazyka Wolfram.
Za viac ako 30 rokov sme s jazykom Wolfram prešli dlhú cestu. Teraz spolu poďme ešte ďalej. Dôrazne vyzývam všetkých rešpektovaných používateľov jazyka Wolfram na celom svete, aby na to používali funkčný repozitár ako platformu, ako aj nový softvérový projekt, akým je Free Wolfram Engine for Developers.
Zdroj: hab.com