Tere, Habr! Esitan teie tähelepanu Stephen Wolframi postituse tõlkele
Wolframi keele järjepidevuse eeldused
Täna seisame koos programmeerimiskeelega suurte saavutuste lävel
Wolframi funktsioonide hoidla on midagi võimalikuks tänu Wolframi keele ainulaadsele olemusele mitte ainult programmeerimiskeelena, vaid ka keelena.
Näiteks Wolframi funktsioonide hoidla juba sisaldab
Samuti rohkem kui
Lehele jõudmiseks kopeerige ülaltoodud objekt (funktsioon BLOB), kleepige see sisestusreale ja seejärel käivitage funktsioon – see on juba Wolframi keelde sisse ehitatud ja vaikimisi toetatud, alustades
Siinkohal tuleb märkida, et töötlemisel
Loodan, et koos toetusega
Hoidlast pärinevad funktsioonid võivad sisaldada väikseid või suuri Wolframi keeles kirjutatud koodilõike. Näiteks võivad need olla kõned
Wolfram Feature Repository kest ja programmeerimisstruktuur on loodud nii, et igaüks saaks oma ühise eesmärgi nimel panustada kõige lihtsamal ja mugavamal viisil – tegelikult lihtsalt
Selles lähenemisviisis on palju kompromisse ja üksikasju, kuid meie eesmärk on optimeerida Wolframi funktsioonide hoidlat nii kasutajakogemuse huvides kui ka tagada, et uued kasutajafunktsioonid aitaksid keele arendamisse tähendusrikkalt kaasa. Kasvades ei kahtle ma, et peame leiutama uusi meetodeid hoidlasse sisseehitatud funktsioonide töötlemiseks ja valideerimiseks, eriti suure hulga funktsioonide korraldamiseks ja kasutajatele vajalike leidmiseks. Siiski on julgustav, et meie valitud tee on hea algus. Mina isiklikult
Tõhususe suurendamine kulude vähendamisel
Juba enne Internetti oli võimalusi Wolframi keele koodi jagamiseks (meie esimene suurem tsentraliseeritud projekt oli
Meie ettevõte on üle 30 aasta usinalt töötanud Wolframi keelestruktuuri terviklikkuse säilitamise nimel ning see on ülioluline tagamaks, et Wolframi keelest ei saaks mitte ainult programmeerimiskeel, vaid ka
Iga funktsiooni rakendusstruktuuris toimuvad erinevad arvutusprotsessid. Siinkohal tuleb märkida, et on vajalik, et funktsioon oleks kasutaja jaoks selge ja ühtse välimusega ning visuaalselt loetav. Selles kontekstis on Wolframi keele sisseehitatud funktsioonid esitatud enam kui 6000 järjestikuse näitega funktsioonide korrektse programmeerimise kohta (need on meie
Tegelikult hästi toimiva hoidla loomine on huvitav metaprogrammeerimise ülesanne. Näiteks ei võimalda programmis sisalduvate piirangute ülemäärane kasutamine saavutada algoritmi nõutavat ühtlust ja universaalsust. Nii nagu ebapiisava arvu funktsionaalsete piirangute korral, ei saa te rakendada piisavalt õiget algoritmi täitmise jada. Mitmed varasemad näited nende lähenemisviiside kompromissi rakendamisest, mida meie ettevõte on rakendanud, töötasid üsna stabiilselt - need on järgmised:
Kõigil ülaltoodud näidetel on üks fundamentaalne tunnusjoon – projektis kogutud objektid ja funktsioonid on väga kõrge protsesside struktureerimise ja jaotusega. Muidugi võib demo või närvivõrgu või millegi muu struktuuri üksikasjad vägagi varieeruda, kuid iga praeguse hoidla põhistruktuur jääb alati samaks. Mida arvate siis, kallis kasutaja, sellise hoidla loomisest, mis lisab Wolframi keelele laiendusi? Wolframi keel on loodud äärmiselt paindlikuks, nii et seda saab igal viisil laiendada ja muuta. See asjaolu on äärmiselt oluline selleks, et saaks kiiresti luua Wolframi keeles mitmesuguseid suuremahulisi tarkvaraprojekte. Siinkohal tuleb märkida, et keele paindlikkuse kasvades tõuseb paratamatult sellises keeles elluviidavate projektide maksumus. See on tingitud asjaolust, et mida rohkem kasutaja sellist keelt kasutab, seda rohkem saab ta spetsiaalseid funktsioone, kuid ei tasu unustada, et sellisel lähenemisel võib olla ka negatiivseid külgi, mis seisneb suutmatuses tagada programmimoodulite järjepidevust.
Traditsioonilistes programmeerimiskeeltes on raamatukogudega tavaline probleem - kui kasutate näiteks ühte teeki, töötab kood õigesti, kuid kui proovite kasutada mitut teeki, pole garantiid, et need omavahel õigesti suhtlevad. . Samuti ei saa traditsioonilistes programmeerimiskeeltes - erinevalt täisväärtuslikust andmetöötluskeelest - tagada järjekindlate sisseehitatud esituste olemasolu mis tahes funktsioonide või andmetüüpide jaoks, välja arvatud nende põhistruktuurid. Kuid tegelikult on probleem veelgi suurem, kui esmapilgul tundub: kui ehitame suuremahulist funktsionaalsuse vertikaali, siis ilma tsentraliseeritud projektide programmeerimise tohutute kuludeta, mille me Wolframi keelde paneme, on võimatu seda teha. saavutada järjepidevus. Seetõttu on oluline, et kõik tarkvaramoodulid töötaksid alati õigesti koos.
Seega on Wolframi funktsioonide hoidla idee vältida ülalkirjeldatud probleemi, lisades keelele laiendusi suhteliselt väikestes kooditükkides üksikute funktsioonide kaudu, mida on lihtsam sidusate moodulitena arendada. Nagu öeldud, on programmeerimisfunktsioone, mida ei saa üksikute funktsioonide abil mugavaks muuta (ja meie ettevõte plaanib lähiajal välja anda optimeeritud programmeerimisalgoritmi, mis aitab suuremahulisi tarkvarapakette juurutada). Kuid juba Wolfram Language'i sisseehitatud funktsioonide põhjal on palju programmeerimisvõimalusi, mida rakendatakse üksikute funktsioonide põhjal. Mõte seisneb siin selles, et suhteliselt vähese programmeerimispingutusega on võimalik luua mitmeid uusi ja väga kasulikke funktsioone, mis tagavad disainile piisava sidususe, on omavahel hästi kooskõlastatud ning lisaks sellele on need saab tulevikus hõlpsasti ja laialdaselt kasutada.
Selline lähenemine on loomulikult kompromiss. Suurema paketi rakendamisel võiks ette kujutada täiesti uut funktsionaalsusmaailma, mis oleks ülimalt võimas ja kasulik. Kui teil on vaja hankida uusi funktsioone, mis sobiksid kõige muuga, kuid te ei ole nõus projekti arendamiseks palju vaeva nägema, võib see kahjuks kaasa tuua teie projekti ulatuse vähenemise. Wolframi funktsioonide hoidla idee on pakkuda funktsionaalsust projekti määratlevale osale; see lähenemisviis lisab võimsa funktsionaalsuse, hõlbustades samal ajal programmeerimisprojekti hea järjepidevuse säilitamist.
Aidake funktsioonihoidlasse kohandatud funktsioone lisada
Meie meeskond on teinud kõvasti tööd, et kasutajatel oleks Wolframi hoidla funktsioonidesse panustamine lihtne. Töölaual (juba sees
Peate tegema kaks peamist sammu: esiteks kirjutage üles oma funktsiooni kood ja teiseks kirjutage üles dokumentatsioon, mis illustreerib teie funktsiooni toimimist.
Klõpsake ülaosas nuppu "Ava näidis", et näha näidet selle kohta, mida peate tegema.
Põhimõtteliselt proovite luua midagi sarnast Wolframi keele sisseehitatud funktsiooniga. Välja arvatud see, et see suudab teha midagi palju spetsiifilisemat kui sisseehitatud funktsioon. Samal ajal on ootused selle täielikkuse ja usaldusväärsuse suhtes palju madalamad.
Peate andma funktsioonile nime, mis järgib Wolfram Language'i funktsioonide nimetamise juhiseid. Lisaks peate oma funktsiooni jaoks välja töötama dokumendid, mis on sarnased keele sisseehitatud funktsioonidega. Sellest räägin hiljem lähemalt. Praegu pange tähele, et definitsioonimärkmiku faili ülaosas olevate nuppude real on nupp
Kui olete kindel, et kõik on õigesti täidetud ja olete valmis, klõpsake nuppu "Kontrolli". See on täiesti normaalne, et sa pole veel kõiki detaile selgeks saanud. Nii et funktsioon "Kontrolli" käivitub automaatselt ja teeb palju stiili ja järjepidevuse kontrolle. Sageli palub see teil kohe parandused kinnitada ja nõustuda (näiteks: "See rida peab lõppema kooloniga" ja see palub teil sisestada koolon). Mõnikord palub ta teil ise midagi lisada või muuta. Lisame nupu Kontrolli automaatsele funktsionaalsusele pidevalt uusi funktsioone, kuid põhimõtteliselt on selle eesmärk tagada, et kõik, mida te funktsioonide hoidlasse esitate, järgiks juba täpselt nii paljusid stiilijuhiseid kui võimalik.
Niisiis, pärast "Check" käivitamist saate kasutada "Eelvaadet". "Eelvaade" loob teie funktsiooni jaoks määratletud dokumentatsioonilehe eelvaate. Samuti saate luua eelvaate arvutis loodud failile või pilvesalvestuses asuvale failile. Kui te ei ole mingil põhjusel eelvaates nähtuga rahul, minge lihtsalt tagasi ja tehke vajalikud parandused ning seejärel klõpsake uuesti nuppu Eelvaade.
Nüüd olete valmis oma funktsiooni hoidlasse lükkama. Nupp juurutamine annab teile neli võimalust.
Selles etapis on oluline, et saate oma funktsiooni esitada Wolframi funktsioonihoidlasse, et see oleks kõigile kättesaadav. Samal ajal saate oma funktsiooni paigutada ka piiratud arvu kasutajate jaoks. Näiteks saate luua funktsiooni, mis on teie arvutis kohapeal hostitud, nii et see on saadaval, kui seda konkreetset arvutit kasutate. Või postitada selle oma
Oletame, et soovite oma funktsiooni esitada Wolframi funktsioonide teadmistebaasi. Selleks klõpsake hoidlas nuppu "Esita". Mis siis hetkel toimub? Teie taotlus pannakse kohe järjekorda, et meie kuraatorite meeskond läbi vaadata ja kinnitada.
Kui teie taotlus kulgeb heakskiitmisprotsessi käigus (mis kestab tavaliselt mitu päeva), saate selle oleku kohta teateid ja võib-olla soovitusi edaspidiseks kasutamiseks. Kuid kui teie funktsioon on heaks kiidetud, avaldatakse see kohe Wolframi funktsioonide hoidlas ja see on kõigile kasutamiseks saadaval. (Ja see ilmub
Mis peaks laos olema?
Tuleb märkida, et meie ettevõttel on väga kõrged täielikkuse, töökindluse ja üldise kvaliteedi standardid ning 6000+ funktsioonist, mille oleme Wolframi keelde viimase 30+ aasta jooksul juba sisse ehitanud, vastavad kõik ülaltoodud nõuetele. Wolframi funktsioonide hoidla eesmärk on kasutada kogu Wolframi keeles juba olemasolevat struktuuri ja funktsionaalsust, et lisada võimalikult palju kergemaid funktsioone (st suurema jõudlusega funktsioone).
Muidugi peavad Wolframi funktsioonihoidlas olevad funktsioonid vastama Wolframi keele disainipõhimõtetele – et nad saaksid täielikult suhelda teiste funktsioonide ja kasutajate ootustega selle kohta, kuidas funktsioon peaks korralikult töötama. Funktsioonid ei pea aga olema võrdse terviklikkuse ega usaldusväärsusega.
Wolframi keele sisseehitatud funktsioonides töötame kõvasti selle nimel, et programmeerimisfunktsioonid oleksid võimalikult üldised. Sellegipoolest pole Wolframi funktsioonihoidlas midagi halba selles, et seal on funktsioon, mis lihtsalt käsitleb mõnda väga spetsiifilist, kuid kasulikku juhtumit. Näiteks funktsioon
Veel üks sisseehitatud funktsioonidega seotud punkt on see, et meie ettevõte teeb kõik endast oleneva, et käsitleda kõiki ebatüüpilisi juhtumeid, käsitleda õigesti valesid sisestusi jne. Funktsioonide hoidlas on täiesti normaalne, et seal on spetsiaalne funktsioon, mis tegeleb probleemi lahendamise põhijuhtumitega ja ignoreerib kõiki teisi.
Ilmselge on see, et parem on omada funktsioone, mis teevad rohkem ja teevad seda paremini, kuid funktsioonihoidla optimeerimisel – erinevalt Wolframi keele sisseehitatud funktsioonidest – peaks olema rohkem funktsioone, mis on komplekteeritud rohkemate funktsioonidega, selle asemel, et süveneda. iga konkreetse funktsiooni rakendusprotsessid.
Vaatame nüüd näidet hoidlas funktsioonide testimise kohta. Selliste funktsioonide järjepidevuse ootused on loomulikult palju madalamad kui sisseehitatud keelefunktsioonide puhul. See kehtib eriti juhtudel, kui funktsioonid sõltuvad välistest ressurssidest, näiteks API-dest, on oluline pidevalt läbi viia järjepidevaid teste, mis toimub automaatselt kinnitusalgoritmide raames. nb-failis saate selgesõnaliselt määrata definitsioonid (jaotises Täiendav teave) ja määrata nii palju teste, mis on määratud kas sisend- ja väljundstringidega või täismärgiobjektidega.
Selle tulemusena on funktsioonihoidlal mitmeid rakendamise keerukusi. Mõned neist on vaid üks koodirida, teised võivad hõlmata tuhandeid või kümneid tuhandeid ridu, kasutades tõenäoliselt paljusid abifunktsioone. Millal tasub lisada funktsioon, mille defineerimiseks on vaja väga vähe koodi? Põhimõtteliselt, kui funktsioon on olemas
Funktsioonihoidla põhieesmärk (nagu nimigi ütleb) on tuua keelde uusi funktsioone. Kui soovid lisada uusi andmeid või
Tegelikult on kaks võimalust. Võib-olla soovite kasutusele võtta uue objektitüübi, mida kasutatakse funktsioonihoidla uutes funktsioonides. Ja sel juhul võite alati lihtsalt üles kirjutada selle sümboolse esituse ja kasutada seda funktsioonide hoidlas funktsioonide sisestamisel või väljastamisel.
Aga mis siis, kui soovite esitada objekti ja seejärel määratleda Wolframi keele olemasolevate funktsioonide kaudu, et soovite sellega töötada? Wolframi keelel on selleks alati olnud kerge mehhanism, nn
Niisiis, mis võib olla funktsioonide hoidlas olevas funktsioonikoodis?
Kas kogu Wolframi funktsioonihoidla kood tuleks kirjutada Wolframis? Kindlasti ei tohiks välise API sees olev kood olla kirjutatud Wolframi keeles, mis ei tee isegi keelekoodi. Tegelikult, kui leiate funktsiooni peaaegu igast väliskeelest või teegist, saate luua ümbrise, mis võimaldab teil seda kasutada Wolframi funktsioonihoidlas. (Tavaliselt peaksite selleks kasutama sisseehitatud funktsioone
Mis mõte siis seda teha on? Põhimõtteliselt võimaldab see kasutada kogu integreeritud Wolfram Language süsteemi ja kogu selle ühtset tarkvaravõimaluste komplekti. Kui hankite baasrakenduse välisest teegist või keelest, saate seejärel kasutada Wolframi keele rikkalikku sümboolset struktuuri, et luua mugav tipptaseme funktsioon, mis võimaldab kasutajatel hõlpsalt kasutada kõiki juba rakendatud funktsioone. Vähemalt peaks see olema teostatav ideaalses maailmas, kus on olemas kõik teekide laadimise ehitusplokid jne. Sel juhul käsitleks neid automaatselt Wolframi keel. (Tuleb märkida, et praktikas võib esineda probleeme
Muide, kui vaatate esmalt tüüpilisi väliseid teeke, tunduvad need sageli liiga keerulised, et neid vaid mõne funktsiooniga hõlmata, kuid paljudel juhtudel tuleneb suur osa keerukusest raamatukogu jaoks vajaliku infrastruktuuri ja kõigi funktsioonide loomisest. toeta seda. Kuid Wolframi keele kasutamisel on infrastruktuur tavaliselt juba pakettidesse sisse ehitatud ja seega pole vaja kõiki neid tugifunktsioone üksikasjalikult paljastada, vaid luuakse ainult funktsioonid teegi "ülemiste" rakendusespetsiifiliste funktsioonide jaoks. .
Teadmistebaasi "ökosüsteem".
Kui olete kirjutanud funktsioone, mida kasutate regulaarselt, esitage need Wolframi funktsioonide hoidlasse! Kui sellest (keelearendus) midagi enamat välja ei tule, siis on sul ka siis palju mugavam funktsioone isiklikuks tarbeks kasutada. Siiski on loogiline eeldada, et kui kasutate funktsioone regulaarselt, on ehk ka teistele kasutajatele need kasulikud.
Loomulikult võite leida end olukorrast, kus te ei saa või ei taha oma funktsioone jagada või pääsete ligi privaatsetele teabeallikatele. Isegi sellistel juhtudel saate funktsioonid lihtsalt juurutada oma pilvekontol,
Wolframi funktsioonihoidlasse esitatavad funktsioonid ei pea olema täiuslikud; need peavad lihtsalt kasulikud olema. See sarnaneb pisut klassikalise Unixi dokumentatsiooni jaotisega "Errors" - jaotises "Definitsioonid" on jaotis "Autori märkused", kus saate kirjeldada piiranguid, probleeme jms, mida oma funktsiooni kohta juba teate. Lisaks saate oma funktsiooni hoidlasse saatmisel lisada esitamismärkmeid, mida loeb spetsiaalne kuraatorite meeskond.
Kui funktsioon on avaldatud, on selle lehe allosas alati kaks linki: "
Mõnikord soovite lihtsalt kasutada Wolframi funktsioonihoidla funktsioone, näiteks sisseehitatud funktsioone, ilma nende koodi vaatamata. Kui aga tahad sissepoole pilku heita, siis üleval on alati Notepadi nupp. Klõpsake sellel ja saate oma koopia algse määratluse märkmikust, mis esitati funktsioonide hoidlasse. Mõnikord saate seda lihtsalt oma vajaduste näitena kasutada. Samal ajal saate selle funktsiooni jaoks ka oma modifikatsiooni välja töötada. Võib-olla soovite postitada need funktsioonid, mille leidsite oma arvutis või lehetäide pilvesalvestuskontol, postitada need funktsioonide teadmistebaasi, võib-olla algse funktsiooni täiustatud ja laiendatud versioonina.
Tulevikus kavatseme funktsioonihoidlate jaoks toetada Git-stiilis harutamist, kuid praegu püüame seda lihtsana hoida ja meil on alati ainult üks aktsepteeritud versioon igast funktsioonist keelde sisse ehitatud. Enamasti (välja arvatud juhul, kui arendajad loobuvad oma väljatöötatud funktsioonide hooldamisest ja reageerivad kasutajate esildistele) võtab funktsiooni algne autor kontrolli selle värskenduste üle ja esitab uued versioonid, mis seejärel üle vaadatakse ja kui need läbivad ülevaatusprotsessi. , avaldatud keeles.
Vaatleme küsimust, kuidas töötab väljatöötatud funktsioonide "versioon". Praegu, kui kasutate funktsiooni funktsioonihoidlast, salvestatakse selle definitsioon jäädavalt teie arvutisse (või pilve kasutamisel teie pilvekontole). Kui funktsiooni uus versioon on saadaval, saate selle järgmisel kasutamisel teate, mis teavitab teid sellest. Ja kui soovite funktsiooni uuele versioonile värskendada, saate seda teha käsuga
Üks kauneid asju Wolframi funktsioonihoidla juures on see, et mis tahes Wolframi keele programm saab selle funktsioone kasutada kõikjal. Kui programm ilmub märkmikusse, on sageli mugav vormindada hoidla funktsioonid hõlpsasti loetavate funktsioonide binaarobjekti funktsioonidena (võib-olla sobiva versioonikomplektiga).
Saate alati teksti abil juurde pääseda mis tahes funktsioonihoidlas olevale funktsioonile
Kuidas see toimib?
Wolframi hoidlas olevate funktsioonide sees on see võimalik täpselt sama kasutades
Arvestama
Sees näete funktsiooni kasutades teavet
Kuidas ressursifunktsiooni seadistamine töötab? Lihtsaim on puhtalt kohalik juhtum. Siin on näide, mis võtab funktsiooni (antud juhul lihtsalt puhta funktsiooni) ja määratleb selle antud programmiseansi ressursifunktsioonina:
Kui olete määratluse teinud, saate kasutada ressursi funktsiooni:
Pange tähele, et selles funktsiooniplokis on must ikoon . See tähendab, et funktsioon BLOB viitab praeguse seansi jaoks määratletud mälus olevale ressursifunktsioonile. Teie arvutisse või pilvekontole püsivalt salvestatud ressursifunktsioonil on hall ikoon . Ja Wolframi funktsioonide hoidlas on ametliku ressursifunktsiooni jaoks oranž ikoon .
Mis siis juhtub, kui kasutate Definition Notebook menüüd Laienda? Esiteks võtab see kõik märkmikus olevad määratlused ja loob neist sümboolse
Funktsiooni kohalik juurutamine arvuti hoidlast toimub käsu abil
Kui klõpsate funktsioonihoidla nupul Esita, siis mis toimub selle all
Vaikimisi esitatakse esildised teie Wolframi ID-ga seotud nime all. Kui aga esitate avalduse arendusmeeskonna või organisatsiooni nimel, saate seda teha
Kui olete mõne oma funktsiooni funktsioonide teadmistebaasi esitanud, pannakse see ülevaatuse järjekorda. Kui saate vastuseks kommentaare, on need tavaliselt tekstifailina, millele on lisatud täiendavaid "kommentaarilahtrid". Saate alati oma rakenduse olekut kontrollida, külastades veebilehte
Mõned peensused tööl
Esmapilgul võib tunduda, et võite lihtsalt võtta definitsioonimärkmiku ja panna selle sõna-sõnalt funktsioonihoidlasse, kuid tegelikult on sellega seotud üsna palju nüansse – ja nende käsitlemine nõuab üsna keerukat metaprogrammeerimist ja sümboolse töötlemise käsitsemist. koodina, mis määrab funktsiooni , ja Notepad ise on määratletud. Enamik sellest toimub sisemiselt, kulisside taga, kuid sellel võib olla mõningaid tagajärgi, mida tasub mõista, kui kavatsete funktsioonide teadmistebaasi täiendada.
Esimene kohene peensus: kui täidate definitsioonimärkmiku, saate lihtsalt viidata oma funktsioonile kõikjal, kasutades sellist nime nagu Minu funktsioon, mis näeb välja nagu Wolframi keele funktsiooni tavaline nimi, kuid funktsioonihoidla dokumentatsiooni puhul on see asendatud
Teine nüanss: kui loote definitsioonimärkmikust ressursifunktsiooni, tuleb kõik funktsiooni definitsiooniga seotud sõltuvused jäädvustada ja selgesõnaliselt kaasata. Kuid selleks, et definitsioonid jääksid modulaarseks, peate kõik ainulaadseks muutma
Tavaliselt ei näe te kunagi selle nimeruumi seadistamiseks kasutatud koodi jälgi. Kui aga kutsute mingil põhjusel oma funktsiooni sees alatäidetud sümbolit, näete, et see sümbol on funktsiooni sisemises kontekstis. Definition Notepadi töötlemisel on aga vähemalt funktsioonile endale vastav sümbol
Funktsioonide hoidla on mõeldud uute funktsioonide määratlemiseks. Ja nendel funktsioonidel võib olla valikuid. Sageli need parameetrid (näiteks
Enamik funktsioone lihtsalt teeb seda, mida nad peaksid tegema iga kord, kui neid kutsutakse, kuid mõned funktsioonid tuleb enne konkreetse seansi jooksul käivitamist initsialiseerida – ja selle probleemi lahendamiseks on jaotises Määratlus jaotis "Initsialiseerimine".
Hoidlast pärinevad funktsioonid võivad kasutada muid funktsioone, mis on juba hoidlas; selleks, et seadistada funktsioonihoidla definitsioone, mis sisaldavad kahte (või enamat) üksteisele viitavat funktsiooni, peate need oma programmiseansil juurutama, et saaksite viide nagu neil
Arenguväljavaated. Mis peaks juhtuma, kui hoidla muutub tõeliselt suureks?
Täna käivitame just Wolframi funktsioonide hoidla, kuid aja jooksul eeldame, et selle suurus ja funktsionaalsus võivad järsult suureneda ning arenduse kasvades võivad tekkida mitmesugused probleemid, mida me juba eeldame.
Esimene probleem puudutab funktsioonide nimesid ja nende unikaalsust. Funktsioonide hoidla on loodud nii, et sarnaselt Wolframi keele sisseehitatud funktsioonidele saate viidata mis tahes funktsioonile lihtsalt selle nime määrates. Kuid see tähendab paratamatult, et funktsioonide nimed peavad olema kogu hoidlas globaalselt ainulaadsed, nii et neid saab olla näiteks ainult üks
See võib esmapilgul tunduda suure probleemina, kuid tasub mõista, et see on põhimõtteliselt sama probleem nagu Interneti-domeenid või sotsiaalmeedia käepidemed. Ja tõsiasi on see, et süsteemil peab lihtsalt olema registripidaja – ja see on üks rollidest, mida meie ettevõte Wolframi funktsioonide teadmistebaasi jaoks täidab. (Hoidla privaatversioonide puhul võivad nende registripidajad olla administraatorid.) Muidugi saab Interneti-domeeni registreerida ka ilma, et sellel midagi oleks, kuid funktsioonihoidlas saab funktsiooni nime registreerida ainult siis, kui sellel on tegelik definitsioon. funktsiooni.
Üks osa meie rollist Wolframi funktsiooni teadmistebaasi haldamisel on tagada, et funktsioonile valitud nimi oleks funktsiooni definitsiooni arvestades loogiline ja järgiks Wolframi keele nimetamise tavasid. Meil on üle 30-aastane kogemus sisseehitatud funktsioonide nimetamisel Wolframi keeles ja meie kuraatorite meeskond toob selle kogemuse ka funktsioonide hoidlasse. Muidugi on alati erandeid. Näiteks võib tunduda eelistatavam mõne funktsiooni jaoks lühike nimi, kuid parem on "kaitsta" pikema ja täpsema nimega, sest on vähem tõenäoline, et tulevikus satute kellegagi, kes soovib sarnast funktsiooni nime teha. .
(Siinkohal tuleb märkida, et lihtsalt mõne liikmesildi lisamine funktsioonide ühemõtteliseks muutmiseks ei anna soovitud tulemust. Kui te ei nõua alati märgendi määramist, peate määrama iga funktsiooni jaoks vaikemärgendi ja eraldama ka autorisildid , mis nõuaks taas ülemaailmset koordineerimist.)
Kui Wolframi funktsioonide teadmistebaas kasvab, on üheks tõenäoliselt esilekerkivaks probleemiks funktsioonide leitavus, mille jaoks süsteem pakub
Wolframi keele sisseehitatud funktsioonide jaoks on nn tuvastuskiht, mille pakub
Wolframi funktsioonihoidla on konfigureeritud püsiva funktsioonihoidlana, kus kõik selle funktsioonid töötavad alati. Muidugi võivad saada saadavale funktsioonide uued versioonid ja eeldame, et mõned funktsioonid aeguvad aja jooksul. Funktsioonid töötavad, kui neid kasutatakse programmides, kuid nende dokumentatsioonilehed lingivad uutele täiustatud funktsioonidele.
Wolframi funktsioonide hoidla on loodud selleks, et aidata teil kiiresti uusi funktsioone avastada ja õppida uusi viise Wolframi keele kasutamiseks. Oleme väga optimistlikud, et osa funktsioonide hoidlas uuritust on lõpuks mõttekas muutuma Wolframi põhikeele sisseehitatud osadeks. Viimase kümnendi jooksul on meil olnud sarnane komplekt
Siin on kõige olulisem see, et funktsioonihoidlas olev funktsioon on praegu iga kasutaja jaoks saadaval. Võimalik, et emakeele funktsioon võib olla palju parem ja toimivam, kuid funktsioonide hoidla võimaldaks kasutajatel kohe juurdepääsu kõigile uutele funktsioonidele. Ja mis kõige tähtsam, see kontseptsioon võimaldab igaühel lisada soovitud uusi funktsioone.
Varem ei oleks see idee Wolframi keele ajaloos nii hästi toiminud, kuid praegusel etapil on keele nimel nii palju vaeva nähtud ja keelekujunduse põhimõtete mõistmine on nii sügav, et praegu tundub see väga. suurel kasutajate kogukonnal on võimalik lisada funktsioone, mis säilitavad disaini järjepidevuse, et muuta need kasulikuks paljudele kasutajatele.
Wolfram Language'i kasutajate kogukonnas valitseb uskumatu talent(?). (Loomulikult hõlmab see kogukond palju juhtivaid teadus- ja arendustegevuse inimesi erinevates valdkondades.) Loodan, et Wolframi funktsioonide hoidla on tõhus platvorm selle talentide vaimu avamiseks ja levitamiseks. Ainult koos saame luua midagi, mis laiendab oluliselt valdkonda, millele saab rakendada Wolframi keele arvutiparadigmat.
Rohkem kui 30 aasta jooksul oleme Wolframi keelega kaugele jõudnud. Nüüd koos, lähme veelgi kaugemale. Julgustan tungivalt kõiki Wolframi keele lugupeetud kasutajaid üle maailma kasutama selle platvormina funktsionaalset hoidlat, aga ka uut tarkvaraprojekti, nagu näiteks Free Wolfram Engine for Developers.
Allikas: www.habr.com