Sveiki, Habr! Jūsų dėmesiui pristatau Stepheno Wolframo įrašo vertimą
Būtinos sąlygos Wolfram kalbos nuoseklumui
Šiandien kartu su programavimo kalba stovime ant didelių pasiekimų slenksčio
„Wolfram Function Repository“ tapo įmanoma dėl unikalios Wolfram kalbos prigimties ne tik kaip programavimo kalbos, bet ir kaip
Pavyzdžiui, Wolfram funkcijų saugykloje jau yra
Taip pat daugiau nei
Norėdami patekti į puslapį, nukopijuokite aukščiau esantį objektą (funkcija BLOB), įklijuokite jį į įvesties eilutę ir paleiskite funkciją – ji jau integruota į Wolfram kalbą ir palaikoma pagal numatytuosius nustatymus, pradedant nuo
Čia reikėtų pažymėti, kad apdorojant
Tikiuosi, kad su parama
Funkcijose iš saugyklos gali būti mažų arba didelių kodo dalių, parašytų Wolfram kalba. Pavyzdžiui, tai gali būti skambučiai
„Wolfram Feature Repository“ apvalkalas ir programavimo struktūra yra sukurti taip, kad kiekvienas galėtų prisidėti prie bendro reikalo paprasčiausiu ir jam patogiausiu būdu – iš tikrųjų tiesiog
Šiame požiūryje yra daug kompromisų ir detalių, tačiau mūsų tikslas yra optimizuoti „Wolfram“ funkcijų saugyklą, kad būtų patogiau vartotojas, ir užtikrinti, kad naujos vartotojo funkcijos reikšmingai prisidėtų prie kalbos kūrimo. Neabejoju, kad mums augant teks išrasti naujus saugykloje įmontuotų funkcijų apdorojimo ir patvirtinimo metodus, taip pat norint organizuoti daugybę funkcijų ir surasti tas, kurių reikia vartotojams. Tačiau džiugina tai, kad mūsų pasirinktas kelias yra gera pradžia. as asmeniskai
Padidėjęs efektyvumas, tuo pačiu sumažinant išlaidas
Dar prieš internetą buvo būdų dalytis Wolfram kalbos kodu (mūsų pirmasis didelis centralizuotas projektas buvo
Daugiau nei 30 metų mūsų įmonė uoliai dirbo, kad išlaikytų Wolfram kalbos struktūros vientisumą, o tai labai svarbu siekiant užtikrinti, kad Wolfram kalba taptų ne tik programavimo kalba, bet ir
Kiekvienos funkcijos įgyvendinimo struktūroje vyksta įvairūs skaičiavimo procesai. Pažymėtina, kad būtina, kad funkcija būtų aiški ir vienoda, o vartotojas skaito ją vizualiai. Šiame kontekste įtaisytosios Wolfram kalbos funkcijos pateikiamos su daugiau nei 6000 nuoseklių pavyzdžių, kaip tinkamai programuoti funkcijas (tai yra mūsų
Sukurti saugyklą, kuri iš tikrųjų gerai veikia, yra įdomi metaprogramavimo užduotis. Pavyzdžiui, apribojimų perteklius programoje neleis gauti reikiamo algoritmo suvienodinimo ir universalumo. Kaip ir esant nepakankamam funkcinių apribojimų skaičiui, taip ir nepavyks įgyvendinti pakankamai teisingos algoritmo vykdymo sekos. Keli ankstesni šių požiūrių kompromiso įgyvendinimo pavyzdžiai, kuriuos įgyvendino mūsų įmonė, veikė gana stabiliai – šie:
Visi minėti pavyzdžiai turi esminę savybę – projekte surinkti objektai ir funkcijos turi labai aukštą procesų struktūrizavimo ir paskirstymo laipsnį. Žinoma, demonstracinės versijos, neuroninio tinklo ar kažko kito struktūros detalės gali labai skirtis, tačiau pagrindinė bet kurios dabartinės saugyklos struktūra visada išlieka ta pati. Taigi, kokia jūsų nuomonė, gerbiamas naudotojau, apie tokios saugyklos sukūrimą, kuri prideda prie Wolfram kalbos plėtinių? „Wolfram“ kalba sukurta itin lanksti, todėl ją galima bet kokiu būdu išplėsti ir modifikuoti. Ši aplinkybė itin svarbi norint greitai sukurti įvairius didelio masto programinės įrangos projektus Wolfram kalba. Čia reikia pastebėti, kad didėjant kalbos lankstumui tokia kalba vykdomų projektų kaina neišvengiamai didės. Taip yra dėl to, kad kuo daugiau vartotojas naudoja tokią kalbą, tuo daugiau jam skirtų funkcijų jis gauna, tačiau nereikėtų pamiršti, kad toks požiūris gali turėti ir neigiamų pusių – nesugebėjimo užtikrinti nuoseklaus programos modulių nuoseklumo.
Yra dažna tradicinių programavimo kalbų bibliotekų problema – pavyzdžiui, jei naudojate vieną biblioteką, kodas veiks tinkamai, tačiau jei bandysite naudoti kelias bibliotekas, nėra garantijos, kad jos tinkamai sąveikaus viena su kita. . Be to, tradicinėse programavimo kalbose, skirtingai nei visavertėje skaičiavimo kalboje, nėra jokio būdo garantuoti nuoseklių integruotų bet kokių funkcijų ar duomenų tipų atvaizdų, išskyrus jų pagrindines struktūras. Tačiau iš tikrųjų problema yra dar didesnė, nei atrodo iš pirmo žvilgsnio: jei kuriama didelio masto funkcionalumo vertikalė, tai be didžiulių centralizuoto projektų programavimo išlaidų, kurias įdedame į Wolfram kalbą, neįmanoma. pasiekti nuoseklumą. Todėl svarbu, kad visi programinės įrangos moduliai visada tinkamai veiktų kartu.
Taigi „Wolfram“ funkcijų saugyklos idėja yra išvengti aukščiau aprašytos problemos, tiesiog pridedant plėtinius į kalbą santykinai mažose kodo dalyse naudojant atskiras funkcijas, kurias lengviau sukurti kaip nuoseklius modulius. Be to, yra programavimo funkcijų, kurių neįmanoma padaryti patogiai naudojant atskiras funkcijas (ir artimiausiu metu mūsų įmonė planuoja išleisti optimizuotą programavimo algoritmą, padėsiantį diegti didelės apimties programinės įrangos paketus). Tačiau remiantis „Wolfram“ kalboje jau įdiegtomis funkcijomis, yra daug programavimo galimybių, kurios įgyvendinamos atsižvelgiant į atskiras funkcijas. Idėja yra ta, kad su palyginti nedidelėmis programavimo pastangomis galima sukurti daugybę naujų ir labai naudingų funkcijų, kurios užtikrins pakankamą dizaino darną, jos bus gerai derinamos viena su kita, be to, jos ateityje galės lengvai ir plačiai vartoti kalboje.
Šis požiūris, žinoma, yra kompromisas. Jei būtų įdiegtas didesnis paketas, būtų galima įsivaizduoti visiškai naują funkcionalumo pasaulį, kuris būtų itin galingas ir naudingas. Jei reikia įsigyti naujų funkcijų, kurios derėtų prie viso kito, bet nenorite skirti daug pastangų projekto plėtrai, tai, deja, gali sumažinti jūsų projekto apimtį. „Wolfram“ funkcijų saugyklos idėja yra suteikti funkcionalumą apibrėžtai projekto daliai; šis metodas pridės galingų funkcijų ir palengvins programavimo projekto nuoseklumą.
Padėkite pridėti pasirinktines funkcijas į funkcijų saugyklą
Mūsų komanda sunkiai dirbo, kad naudotojai galėtų lengvai prisidėti prie „Wolfram“ saugyklos funkcijų. Darbalaukyje (jau yra
Turite atlikti du pagrindinius veiksmus: pirma, iš tikrųjų užsirašykite savo funkcijos kodą ir, antra, užsirašykite dokumentus, iliustruojančius, kaip jūsų funkcija turėtų veikti.
Spustelėkite viršuje esantį mygtuką „Atidaryti pavyzdį“, kad pamatytumėte pavyzdį, ką reikia padaryti:
Iš esmės jūs bandote sukurti kažką panašaus į įtaisytąją Wolfram kalbos funkciją. Išskyrus tai, kad jis gali atlikti kažką daug konkretesnio nei įmontuota funkcija. Tuo pačiu metu lūkesčiai dėl jo išsamumo ir patikimumo bus daug mažesni.
Turite suteikti savo funkcijai pavadinimą, atitinkantį Wolfram kalbos funkcijų pavadinimo gaires. Be to, turėsite parengti savo funkcijos dokumentaciją, panašią į įtaisytąsias kalbos funkcijas. Apie tai plačiau pakalbėsiu vėliau. Kol kas tiesiog atkreipkite dėmesį, kad apibrėžimo bloknoto failo viršuje esančioje mygtukų eilutėje yra mygtukas
Įsitikinę, kad viskas užpildyta tinkamai ir esate pasiruošę, spustelėkite mygtuką „Tikrinti“. Visiškai normalu, kad dar nesuvokei visų smulkmenų. Taigi funkcija „Patikrinti“ veiks automatiškai ir atliks daugybę stiliaus ir nuoseklumo patikrų. Dažnai jis iš karto paragins patvirtinti ir priimti pataisymus (pvz.: „Ši eilutė turi baigtis dvitaškiu“ ir paragins įvesti dvitaškį). Kartais ji paprašys jūsų ką nors pridėti ar pakeisti. Nuolat papildysime automatinio mygtuko Tikrinti funkcionalumo naujomis funkcijomis, tačiau iš esmės jo tikslas yra užtikrinti, kad viskas, ką pateikiate į funkcijų saugyklą, jau tiksliai atitiktų kuo daugiau stiliaus gairių.
Taigi, paleidę „Patikrinti“, galite naudoti „Peržiūra“. „Peržiūra“ sukuria dokumentacijos puslapio, kurį nustatėte savo funkcijai, peržiūrą. Taip pat galite sukurti kompiuteryje sukurto failo arba debesies saugykloje esančio failo peržiūrą. Jei dėl kokių nors priežasčių nesate patenkinti tuo, ką matote peržiūroje, tiesiog grįžkite ir atlikite reikiamus pataisymus, tada dar kartą spustelėkite mygtuką Peržiūra.
Dabar esate pasirengę perkelti savo funkciją į saugyklą. Mygtukas Deploy suteikia keturias parinktis:
Šiame žingsnyje svarbu, kad savo funkciją galėtumėte pateikti Wolfram funkcijų saugyklai, kad ji būtų prieinama visiems. Tuo pačiu metu savo funkciją taip pat galite pritaikyti ribotam vartotojų skaičiui. Pavyzdžiui, galite sukurti funkciją, kuri yra jūsų kompiuteryje, kad ji būtų pasiekiama, kai naudojate tą konkretų kompiuterį. Arba galite paskelbti jį savo
Tarkime, kad iš tikrųjų norite pateikti savo funkciją Wolfram funkcijų žinių bazei. Norėdami tai padaryti, spustelėkite mygtuką „Pateikti“ saugykloje. Taigi, kas tada vyksta šiuo metu? Jūsų paraiška nedelsiant yra eilėje, kad ją peržiūrėtų ir patvirtintų mūsų speciali kuratorių komanda.
Vykstant jūsų paraiškos patvirtinimo procesui (paprastai trunkantis kelias dienas), gausite pranešimus apie jos būseną ir galbūt pasiūlymus dėl naudojimo ateityje. Tačiau kai jūsų funkcija bus patvirtinta, ji bus nedelsiant paskelbta „Wolfram Feature Repository“ ir bus prieinama visiems. (Ir tai pasirodys
Kas turėtų būti saugykloje?
Reikėtų pažymėti, kad mūsų įmonė turi labai aukštus išsamumo, patikimumo ir bendros kokybės standartus, o iš daugiau nei 6000 funkcijų, kurias per pastaruosius 30 ir daugiau metų jau įdiegėme į Wolfram kalbą, visos atitinka aukščiau nurodytus reikalavimus. „Wolfram Function Repository“ tikslas – panaudoti visą „Wolfram“ kalboje jau egzistuojančią struktūrą ir funkcionalumą, kad būtų galima pridėti kuo daugiau lengvesnių (ty didesnio našumo funkcijų) funkcijų.
Žinoma, funkcijos Wolfram funkcijų saugykloje turi atitikti Wolfram kalbos projektavimo principus – kad jos galėtų visiškai sąveikauti su kitomis funkcijomis ir vartotojų lūkesčiais, kaip funkcija turėtų tinkamai veikti. Tačiau funkcijos neturi būti vienodo išsamumo ar patikimumo.
Integruotose Wolfram kalbos funkcijose mes sunkiai dirbame, kad programavimo funkcijos būtų kuo bendresnės. Be to, kai Wolfram funkcijų saugykloje nėra nieko blogo, jei joje yra funkcija, kuri tiesiog tvarko labai specifinį, bet naudingą atvejį. Pavyzdžiui, funkcija
Kitas dalykas, susijęs su įmontuotomis funkcijomis, yra tai, kad mūsų įmonė deda visas pastangas, kad sutvarkytų visus netipinius atvejus, teisingai tvarkytų neteisingą įvestį ir pan. Funkcijų saugykloje visiškai normalu, kad yra speciali funkcija, kuri tvarko pagrindinius problemos sprendimo atvejus ir nepaiso visų kitų.
Akivaizdu, kad geriau turėti funkcijas, kurios atlieka daugiau ir daro tai geriau, tačiau funkcijų saugyklos optimizavimas, priešingai nei integruotos Wolfram kalbos funkcijos, turėtų turėti daugiau funkcijų, sujungtų su daugiau funkcijų, o ne gilintis į kiekvienos konkrečios funkcijos įgyvendinimo procesus.
Dabar pažvelkime į funkcijų testavimo saugykloje pavyzdį. Natūralu, kad tokių funkcijų nuoseklumo lūkesčiai yra daug mažesni nei įtaisytųjų kalbos funkcijų. Tai ypač aktualu tais atvejais, kai funkcijos priklauso nuo išorinių išteklių, tokių kaip API, svarbu nuolat atlikti nuoseklius testus, kurie automatiškai vyksta tikrinimo algoritmuose. nb faile galite aiškiai nurodyti apibrėžimus (skiltyje Papildoma informacija) ir nurodyti tiek testų, kiek apibrėžia įvesties ir išvesties eilutės arba viso tipo simbolių objektai.
Dėl to funkcijų saugykla turės daugybę įgyvendinimo sudėtingumo. Kai kurie iš jų bus tik viena kodo eilutė, kiti gali apimti tūkstančius ar dešimtis tūkstančių eilučių, greičiausiai naudojant daugybę pagalbinių funkcijų. Kada verta pridėti funkciją, kuriai apibrėžti reikia labai mažai kodo? Iš esmės, jei funkcija yra
Pagrindinis funkcijų saugyklos tikslas (kaip rodo jos pavadinimas) yra įtraukti į kalbą naujų funkcijų. Jei norite pridėti naujų duomenų arba
Tiesą sakant, yra du būdai. Galbūt norėsite pristatyti naują objekto tipą, kuris bus naudojamas naujose funkcijų saugyklose. Ir šiuo atveju visada galite tiesiog užsirašyti simbolinį jo vaizdą ir naudoti jį įvesdami arba išvesdami funkcijas funkcijų saugykloje.
Bet ką daryti, jei norite pavaizduoti objektą ir tada per esamas Wolfram kalbos funkcijas apibrėžti, kad norite su juo dirbti? Wolfram kalba visada turėjo lengvą mechanizmą, vadinamą
Taigi, kas gali būti funkcijų kode funkcijų saugykloje?
Ar visas Wolfram funkcijų saugyklos kodas turėtų būti parašytas Wolfram? Žinoma, kodas išorinėje API neturėtų būti parašytas Wolfram kalba, kuri net nesudaro kalbos kodo. Tiesą sakant, jei randate funkciją beveik bet kurioje išorinėje kalboje ar bibliotekoje, galite sukurti paketą, leidžiantį naudoti ją Wolfram funkcijų saugykloje. (Paprastai tam turėtumėte naudoti įtaisytąsias funkcijas
Taigi kokia prasmė tai daryti? Iš esmės tai leidžia naudoti visą integruotą Wolfram Language sistemą ir visą jos vieningą programinės įrangos galimybių rinkinį. Jei bazinį diegimą gaunate iš išorinės bibliotekos ar kalbos, galite naudoti turtingą simbolinę Wolfram kalbos struktūrą, kad sukurtumėte patogią aukščiausio lygio funkciją, leidžiančią vartotojams lengvai naudotis bet kuria jau įdiegta funkcija. Bent jau tai turėtų būti įmanoma idealiame pasaulyje, kuriame egzistuoja visi bibliotekų įkėlimo blokai ir pan., tokiu atveju juos automatiškai tvarkytų Wolfram kalba. (Reikėtų pažymėti, kad praktikoje gali kilti problemų su
Beje, pirmą kartą pažvelgus į įprastas išorines bibliotekas, jos dažnai atrodo per sudėtingos, kad jas būtų galima atlikti tik keliomis funkcijomis, tačiau daugeliu atvejų daug sudėtingumo kyla dėl infrastruktūros, reikalingos bibliotekai ir visoms funkcijoms, sukūrimas. palaikyti tai. Tačiau naudojant Wolfram kalbą, infrastruktūra paprastai jau yra integruota į paketus, todėl nereikia išsamiai atskleisti visų šių palaikymo funkcijų, o kurti funkcijas tik „aukščiausioms“ konkrečios programos funkcijoms bibliotekoje. .
Žinių bazės „ekosistema“.
Jei parašėte funkcijas, kurias naudojate reguliariai, pateikite jas į „Wolfram Function Repository“! Jei iš to (kalbos tobulinimas) neišeina kažkas daugiau, net ir tada jums bus daug patogiau naudotis funkcijomis asmeniniam naudojimui. Tačiau logiška manyti, kad jei funkcijomis naudositės reguliariai, galbūt jos bus naudingos ir kitiems vartotojams.
Natūralu, kad galite atsidurti tokioje situacijoje, kai negalite arba nenorite pasidalyti savo funkcijomis arba gauti prieigą prie privačių informacijos šaltinių. Net ir tokiais atvejais galite tiesiog įdiegti funkcijas savo debesies paskyroje,
Funkcijos, kurias pateikiate Wolfram funkcijų saugykloje, nebūtinai turi būti tobulos; jie tiesiog turi būti naudingi. Tai šiek tiek panašu į skyrių „Klaidos“ klasikinėje „Unix“ dokumentacijoje – „Apibrėžimų skiltyje“ yra skyrius „Autoriaus pastabos“, kuriame galite aprašyti apribojimus, problemas ir pan., kuriuos jau žinote apie savo funkciją. Be to, kai pateikiate savo funkciją saugykloje, galite pridėti pateikimo pastabų, kurias perskaitys speciali kuratorių komanda.
Kai funkcija paskelbiama, jos puslapio apačioje visada yra dvi nuorodos: "
Kartais tiesiog norite naudoti funkcijas iš Wolfram funkcijų saugyklos, pvz., integruotas funkcijas, nežiūrėdami į jų kodą. Tačiau, jei norite pažvelgti į vidų, viršuje visada yra užrašų knygelės mygtukas. Spustelėkite jį ir gausite savo originalaus apibrėžimo bloknoto, kuris buvo pateiktas į funkcijų saugyklą, kopiją. Kartais galite naudoti jį kaip pavyzdį savo poreikiams. Tuo pačiu metu taip pat galite sukurti savo šios funkcijos modifikaciją. Galbūt norėsite paskelbti šias funkcijas, kurias radote iš saugyklos savo kompiuteryje arba debesų saugyklos paskyroje, galbūt norite pateikti jas funkcijų žinių bazei, galbūt kaip patobulintą, išplėstą pradinės funkcijos versiją.
Ateityje planuojame palaikyti „Git“ stiliaus šakotį funkcijų saugyklose, tačiau kol kas stengiamės, kad tai būtų paprasta, ir visada turime tik vieną priimtiną kiekvienos funkcijos versiją, integruotą į kalbą. Dažniausiai (nebent kūrėjai atsisako prižiūrėti savo sukurtas funkcijas ir reaguoja į naudotojų pateiktus duomenis), pradinis funkcijos autorius perima jos atnaujinimų kontrolę ir pateikia naujas versijas, kurios vėliau peržiūrimos ir, jei jos praeina peržiūros procesą. , išleista kalba.
Panagrinėkime klausimą, kaip veikia sukurtų funkcijų „versija“. Šiuo metu, kai naudojate funkciją iš funkcijų saugyklos, jos apibrėžimas bus visam laikui saugomas jūsų kompiuteryje (arba debesies paskyroje, jei naudojate debesį). Jei yra nauja funkcijos versija, kitą kartą ją naudodami gausite apie tai pranešantį pranešimą. Ir jei norite atnaujinti funkciją į naują versiją, galite tai padaryti naudodami komandą
Vienas iš gražių „Wolfram Function Repository“ dalykų yra tai, kad bet kuri „Wolfram“ kalbos programa gali naudoti jos funkcijas. Jei programa atsiranda užrašų knygelėje, dažnai patogu suformatuoti saugyklos funkcijas kaip lengvai skaitomas „funkcijų dvejetainio objekto“ funkcijas (galbūt su atitinkamu versijų rinkiniu).
Naudodami tekstą visada galite pasiekti bet kurią funkcijų saugyklos funkciją
Kaip tai veikia?
„Wolfram“ saugyklos funkcijose tai įmanoma naudojant lygiai tą patį
Apsvarstyti
Viduje galite pamatyti tam tikrą informaciją naudodami funkciją
Kaip veikia išteklių funkcijos nustatymas? Paprasčiausias yra grynai vietinis atvejis. Štai pavyzdys, kuris paima funkciją (šiuo atveju tik gryną funkciją) ir apibrėžia ją kaip tam tikros programos seanso išteklių funkciją:
Sudarę apibrėžimą, galite naudoti išteklių funkciją:
Atminkite, kad šioje funkcijų dėmėje yra juoda piktograma . Tai reiškia, kad funkcija BLOB nurodo atmintyje esančią išteklių funkciją, apibrėžtą dabartinei sesijai. Išteklių funkcija, kuri nuolat saugoma jūsų kompiuteryje arba debesies paskyroje, turi pilką piktogramą . Oficialios išteklių funkcijos „Wolfram Feature Repository“ yra oranžinė piktograma .
Taigi, kas nutinka, kai naudojate Apibrėžčių bloknoto meniu Išplėsti? Pirma, jis paima visus užrašų knygelėje esančius apibrėžimus ir iš jų sukuria simbolinį
Vietinis funkcijos diegimas iš jūsų kompiuteryje esančios saugyklos atliekamas naudojant komandą
Jei spustelėsite funkcijų saugyklos mygtuką Pateikti, kas vyksta po juo
Pagal numatytuosius nustatymus paraiškos pateikiamos pavadinimu, susietu su jūsų Wolfram ID. Bet jei paraišką teikiate kūrimo komandos ar organizacijos vardu, galite
Kai pateiksite bet kurią iš savo funkcijų į funkcijų žinių bazę, ji bus įtraukta į peržiūros eilę. Jei atsakydami gausite komentarų, jie paprastai bus teksto failo forma su papildomais „komentarų langeliais“. Visada galite patikrinti savo paraiškos būseną apsilankę
Kai kurios darbo subtilybės
Iš pirmo žvilgsnio gali atrodyti, kad galite tiesiog paimti apibrėžimų bloknotą ir pažodžiui įdėti jį į funkcijų saugyklą, tačiau iš tikrųjų yra daug subtilybių – ir norint jas tvarkyti reikia atlikti gana sudėtingą metaprogramavimą, tvarkyti simbolinį apdorojimą. kaip kodą, apibrėžiantį funkciją , o pats užrašų knygelė yra apibrėžta. Dažniausiai tai vyksta viduje, užkulisiuose, tačiau tai gali turėti tam tikrų pasekmių, kurias verta suprasti, jei ketinate prisidėti prie funkcijų žinių bazės.
Pirmas subtilumas: kai užpildote apibrėžimų bloknotą, galite tiesiog visur nurodyti savo funkciją naudodami pavadinimą, pvz. Mano funkcija, kuris atrodo kaip įprastas funkcijos pavadinimas Wolfram kalboje, tačiau funkcijų saugyklos dokumentacijoje jis pakeičiamas
Antrasis subtilumas: kai kuriate išteklių funkciją iš apibrėžimų bloknoto, visos su funkcijos apibrėžimu susijusios priklausomybės turi būti užfiksuotos ir aiškiai įtrauktos. Tačiau norėdami užtikrinti, kad apibrėžimai išliktų moduliniai, turite viską išdėstyti unikaliai
Paprastai niekada nematysite kodo, naudojamo šiai vardų erdvei konfigūruoti, pėdsakų. Bet jei dėl kokių nors priežasčių savo funkcijos viduje iškviečiate nepakankamai įvykdytą simbolį, pamatysite, kad šis simbolis yra vidiniame funkcijos kontekste. Tačiau apdorojant Definition Notepad yra bent jau pačią funkciją atitinkantis simbolis
Funkcijų saugykla skirta naujoms funkcijoms apibrėžti. Ir šios funkcijos gali turėti parinkčių. Dažnai šie parametrai (pvz.
Daugelis funkcijų kiekvieną kartą iškviečiamos tiesiog atlieka tai, ką turėtų daryti, tačiau kai kurias funkcijas reikia inicijuoti, kad jos galėtų paleisti tam tikroje sesijoje – ir šiai problemai išspręsti, skyrelyje „Apibrėžimas“ yra skyrius „Inicijavimas“.
Funkcijos iš saugyklos gali naudoti kitas funkcijas, kurios jau yra saugykloje; norėdami nustatyti funkcijų saugyklos apibrėžimus, apimančius dvi (ar daugiau) funkcijas, kurios nurodo viena kitą, turite jas įdiegti savo programos sesijoje, kad galėtumėte nuoroda kaip ant jų
Plėtros perspektyvos. Kas turėtų nutikti, kai saugykla tampa tikrai didelė?
Šiandien mes tik paleidžiame „Wolfram Feature Repository“, tačiau tikimės, kad laikui bėgant jos dydis ir funkcionalumas gali smarkiai padidėti, o jai augant, kils įvairių problemų, kurių, kaip jau tikėjomės, gali kilti.
Pirmoji problema yra susijusi su funkcijų pavadinimais ir jų unikalumu. Funkcijų saugykla sukurta taip, kad, kaip ir įtaisytosios Wolfram kalbos funkcijos, galite nurodyti bet kurią funkciją, tiesiog nurodydami jos pavadinimą. Tačiau tai neišvengiamai reiškia, kad funkcijų pavadinimai turi būti visuotinai unikalūs visoje saugykloje, kad, pavyzdžiui, gali būti tik vienas
Iš pradžių tai gali atrodyti kaip didelė problema, tačiau verta suprasti, kad tai iš esmės ta pati problema, kaip ir su interneto domenais ar socialinės žiniasklaidos rankenomis. Faktas yra tas, kad sistemoje tiesiog reikia turėti registratorių – ir tai yra vienas iš funkcijų, kurias mūsų įmonė atliks Wolfram funkcijų žinių bazėje. (Privačioms saugyklos versijoms jų registratoriai gali būti administratoriai.) Žinoma, interneto domeną galima užregistruoti nieko jame neturint, tačiau funkcijų saugykloje funkcijos pavadinimą galima užregistruoti tik tuo atveju, jei yra tikrasis apibrėžimas. funkcija.
Dalis mūsų vaidmens valdant Wolfram funkcijos žinių bazę yra užtikrinti, kad funkcijos pavadinimas būtų logiškas, atsižvelgiant į funkcijos apibrėžimą ir kad jis atitiktų Wolfram kalbos pavadinimų suteikimo taisykles. Turime daugiau nei 30 metų patirtį pavadindami įtaisytąsias Wolfram kalbos funkcijas, o mūsų kuratorių komanda šią patirtį taip pat perkels į funkcijų saugyklą. Žinoma, visada yra išimčių. Pavyzdžiui, gali atrodyti, kad pageidautina turėti trumpą kai kurios funkcijos pavadinimą, tačiau geriau „gintis“ ilgesniu, konkretesniu pavadinimu, nes mažesnė tikimybė, kad ateityje susidursite su žmogumi, kuris norės sukurti panašų funkcijos pavadinimą. .
(Pažymėtina, kad tiesiog pridėjus tam tikrą nario žymą funkcijoms išaiškinti nebus norimo efekto. Nes nebent reikalausite, kad žyma būtų visada priskirta, turėsite apibrėžti numatytąją bet kurios funkcijos žymą ir priskirti autorių žymų, kurioms vėlgi reikėtų visuotinio koordinavimo.)
Augant „Wolfram“ funkcijų žinių bazei, viena iš problemų, kuri gali kilti, yra funkcijų, kurias sistema suteikia, aptinkamumas.
Integruotoms Wolfram kalbos funkcijoms yra numatytas vadinamasis aptikimo sluoksnis
„Wolfram“ funkcijų saugykla sukonfigūruota kaip nuolatinė funkcijų saugykla, kurioje bet kuri joje esanti funkcija veiks visada. Žinoma, gali atsirasti naujų funkcijų versijų ir tikimės, kad laikui bėgant kai kurios funkcijos pasens. Funkcijos veiks, jei jos bus naudojamos programose, tačiau jų dokumentacijos puslapiuose bus nuorodos į naujas, pažangesnes funkcijas.
„Wolfram Feature Repository“ sukurta taip, kad padėtų greitai atrasti naujas funkcijas ir išmokti naujų „Wolfram“ kalbos naudojimo būdų. Esame labai optimistiškai nusiteikę, kad kai kurie iš funkcijų saugyklos ištirtų dalykų galiausiai taps įtaisytomis pagrindinės Wolfram kalbos dalimis. Per pastarąjį dešimtmetį turėjome panašų rinkinį
Svarbiausias dalykas yra tai, kad funkcija funkcijų saugykloje yra tai, ką dabar gali naudoti kiekvienas vartotojas. Gali būti, kad gimtosios kalbos funkcija galėtų būti daug geresnė ir našesnė, tačiau funkcijų saugykla leistų vartotojams iš karto pasiekti visas naujas funkcijas. Ir, svarbiausia, ši koncepcija leidžia kiekvienam pridėti bet kokių norimų naujų funkcijų.
Anksčiau Volframo kalbos istorijoje ši idėja nebūtų taip gerai pasiteisinusi, bet šiuo metu kalbai dedama tiek daug pastangų ir taip giliai suprantami kalbos dizaino principai, kad dabar atrodo labai didelė vartotojų bendruomenė gali pridėti funkcijų, kurios išlaikys dizaino nuoseklumą, kad jos būtų naudingos daugeliui vartotojų.
Wolfram kalbos vartotojų bendruomenėje tvyro neįtikėtina talento (?) dvasia. (Žinoma, šioje bendruomenėje yra daug įvairių sričių MTTP vadovaujančių žmonių.) Tikiuosi, kad „Wolfram Feature Repository“ bus veiksminga platforma šiai talento dvasiai atskleisti ir skleisti. Tik kartu galime sukurti tai, kas žymiai praplės sritį, kuriai galima pritaikyti Wolfram kalbos skaičiavimo paradigmą.
Per daugiau nei 30 metų mes nuėjome ilgą kelią su Wolfram kalba. Dabar kartu eikime dar toliau. Labai raginu visus gerbiamus Wolfram kalbos vartotojus visame pasaulyje naudoti funkcinę saugyklą kaip platformą, taip pat naują programinės įrangos projektą, pvz., „Free Wolfram Engine for Developers“.
Šaltinis: www.habr.com