Tere, ЄабŃ! Tutvustan teile Steven Wolframi postituse tĂ”lget .

Wolfram Language'i tugevuse eelduseks
TĂ€na seisame suurte saavutuste ÀÀrel koos programmeerimiskeelega . Ainult kolm nĂ€dalat tagasi kĂ€ivitasime , et aidata meie kasutajatel integreerida Wolfram Language'i oma ulatuslikesse tarkvaraprojektidesse. Just tĂ€na kĂ€ivitame , et pakkuda koordineeritud platvormi funktsioonide jaoks, mis on loodud Wolfram Language'i laiendamiseks, ning avame funktsioonide reposti igaĂŒhele, kes saab panustada meie tarkvaratoote arengusse.
Wolframi funktsioonide reposti (Function Repository) vĂ”imaldab seda, mis sai vĂ”imalikuks tĂ€nu Wolfram Languageâi ainulaadsele spetsiifika mitte ainult programmeerimiskeelena, vaid ka . Traditsioonilistes programmeerimiskeeltes hĂ”lmab oluliste uute funktsioonide lisamine tavaliselt tĂ€iendavate raamatukogude loomist, mis vĂ”ivad ĂŒksteisega töötada vĂ”i mitte. Siiski Wolfram Language'is , et selle funktsionaalsust saab oluliselt suurendada, lihtsalt lisades uusi funktsioone, mis integreeruvad viivitamatult kogu keele struktuuri.
NÀiteks sisaldab Wolframi funktsioonide reposti praegu 26 teema kategoorese jÀrgi jaotatud:

Sarnaselt rohkem kui , mis on sisseehitatud Wolfram-keelde, on iga funktsiooni kohta dokumentatsioonileht, kus on ĂŒksikasjalikud kirjeldused ja töötamise nĂ€ited:

Lehe avamiseks kopeerige eespooltoodud objekt (funktsionaalne BLOB), kleepige see sisestusvĂ€lja ja seejĂ€rel kĂ€ivitage funktsioon â see on juba sisseehitatud Wolfram keelde ja toetatakse vaikimisi alates :

Siinkohal tuleb mĂ€rkida, et piltide töötlemisel Te ei pea nĂ€iteks seadistama "piltide töötlemise raamatukogu" â kuna Wolfram Language'is on juba rakendatud jĂ€rjestikune ja hoolikalt algoritmitud meetod , mis vĂ”ivad olla koheselt töödeldud erinevate keele graafiliste funktsioonidega:

Loodan, et koos , mis on kasvanud ja laienenud (Wolfram Language'i baasil) viimase paarikĂŒmne aasta jooksul. Wolframi funktsioonide hoidla vĂ”imaldab lĂ€hitulevikus oluliselt laiendada (potentsiaalselt mĂ€rkimisvÀÀrseid, erinevates teadus- ja tehnika valdkondades spetsialiseeritud) funktsioone, mis on antud keeles saadaval. Seega on vĂ”imalus kasutada nii keele sisu (selle sisseehitatud funktsioonid) kui ka , mis on rakendatud keele baasil. (Siin tuleb mĂ€rkida, et Wolfram Language'il on juba ĂŒle ).
Hoidla funktsioonides vĂ”ivad olla vĂ€ikesed vĂ”i piisavalt suured koodifragmendid, mis on kirjutatud Wolfram Language'i keeles. NĂ€iteks vĂ”ivad need olla vĂ€liste API-de ja teenuste vĂ”i muudes keeltes kirjutatud vĂ€liste teeke kutse. Wolframi funktsioonide hoidla liides ja tarkvarastruktuur on seadistatud nii, et igaĂŒks saaks kaasa aidata ĂŒhisesse projekti vĂ”imalikult lihtsalt ja mugavalt â sisuliselt lihtsalt
tĂ€ites tekstifaili tahvelarvutis (laienemisega nb) WL pĂ”hjalik analĂŒĂŒs konstruktsioonist vĂ”i rangete standardite tĂ€iendavus ja usaldusvÀÀrsus uute kasutajate funktsioonide osas, erinevalt pĂ”hikeele sisse ehitatud funktsioonide pĂ”hjalikest kontrollidest, mida me rakendame.
Selles lĂ€henemises on palju kompromisse ja detaile, kuid meie eesmĂ€rk on optimeerida Wolframi funktsioonide hoidlat nii kasutajate mugavuse kui ka selleks, et uued kasutajate funktsioonid annaksid mĂ€rkimisvÀÀrse panuse keele arengusse. Nagu me kasvame, ei kahtle ma, et peame vĂ€ljamĂ”tlema uusi meetodeid hoidlast funktsioonide töötlemiseks ja kontrolimiseks, mitte vĂ€hem oluline on organizeerida suurt hulka funktsioone ja leida need, mida kasutajad vajavad. Siiski on lohutav, et meie valitud tee on hea algus. Ma isiklikult algse baasiga. Paljud neist pĂ”hinevad koodil, mida ma isiklikult olen piisavalt kaua arendanud. Ja mul kulus vaid mĂ”ned minutid, et need hoidlasse edastada. NĂŒĂŒd, kui need on hoidlas, saan ma lĂ”puks â viivitamata ja igal ajal neid funktsioone kasutada vastavalt vajadusele, muretsemata failide otsimise, pakettide allalaadimise jne pĂ€rast.
TÔhususe suurendamine kulude vÀhendamisega
Juba enne Interneti teket olid olemas viisid Wolframi keele koodi jagamiseks (meie esimene suur tsentraliseeritud projekt oli , mis loodi Mathematica jaoks 1991. aastal CD-ROMâi jms baasil). Kahtlemata on ettepanek rakendada Wolframi funktsioonide hoidla lĂ€henemine vĂ”imekam ja usaldusvÀÀrsem vahend ĂŒlalnimetatud ĂŒlesannete tĂ€itmiseks.
Ăle 30 aasta on meie ettevĂ”te pidevalt töötanud Wolframi keele struktuuri terviklikkuse sĂ€ilitamise nimel, mis on vĂ€ga oluline, et Wolframi keel muutuks mitte ainult programmeerimiskeeleks, vaid ka . Seega on Wolframi funktsioonide hoidla rakendamise lĂ€henemise olemus ĂŒhise programmimise ja uute funktsioonide arendamise meetodi kasutamine, mis jĂ€rk-jĂ€rgult lisatakse ja sobitub keele raamidesse selle edasise arengu ja koostöö evolutsiooni vĂ”imaldamiseks.
Iga funktsiooni rakendamise struktuuris toimuvad erinevad arvutusprotsessid. Siinkohal tuleb mĂ€rkida, et funktsioon peaks kasutajale olema selge ja ĂŒhtlane ning selle loetavus peab olema silmatorkav. Antud kontekstis on Wolframi keele sisseehitatud funktsioonid esitatud enam kui 6000 jĂ€rjestikuse nĂ€itena selle kohta, kuidas funktsioone Ă”igesti programmeerida (need on meie , mis sisaldavad ). See lĂ€henemine vĂ”imaldab lĂ”puks Wolframi funktsioonide hoidlast saavutada head toimimist, mistĂ”ttu on Wolframi keele strukturaalne iseloom koos selle paljude lisade ja mitmekesiste raamatukogudega, mis on keele juba sisse ehitatud. NĂ€iteks, kui teil on funktsioon, mis töötleb pilte vĂ”i , vĂ”i , samuti vĂ”i muid sarnaseid â keeles on juba olemas nende kooskĂ”lastatud sĂŒmboolne esitus, ja seetĂ”ttu muutub teie funktsioon kohe ĂŒhilduvaks teiste funktsioonidega keeles.
TĂ”eliselt hĂ€sti töötava hoidla loomine on huvitav meta-programmeerimise ĂŒlesanne. NĂ€iteks takistab liialt piiravate nĂ”uete olemasolu saavutamast vajalikke ĂŒhtlustamise ja universaalsuse taset algoritmi töös. Nagu ka liiga vĂ€henenud funktsionaalsete piirangute korral ei saa te rakendada piisavalt Ă”iget algoritmi tĂ€itmise jĂ€rjestust. MĂ”ned meie ettevĂ”tte rakendatud lĂ€henemisviiside komponente, mis leidsid kompromisse, on töötanud piisavalt stabiilselt â need on: , mis kĂ€ivitati 2007. aastal ja töötab nĂŒĂŒd interaktiivselt Internetis, sisaldades enam kui 12000 kasutajate interaktiivset demonstratsiooni. Wolframi on rohkem kui 600 valmis andmebaasi, mida saab kasutada Wolframi keeles, ja tĂ€ieneb praktiliselt iga nĂ€dal uute nĂ€rvivĂ”rkudega (praegu on neid juba 118) ja need ĂŒhendatakse kohe funktsiooni kaudu Wolframi keeles.
KĂ”ik ĂŒlaltoodud nĂ€ited jagavad pĂ”himĂ”ttelist omadust: projekti kogutud objektid ja funktsioonid on vĂ€ga kĂ”rge struktureerituse ja protsesside jaotumise astmega. Ilma kahtluseta vĂ”ivad struktuuri detailid selle osas, mis on demonstratsioon vĂ”i nĂ€rvivĂ”rk vĂ”i midagi muud, oluliselt erineda, kuid igasuguse praeguse repo pĂ”histruktuur jÀÀb alati muutumatuks. Milline on Teie arvamus, austatud kasutaja, Wolfram'i keelele laienduste loomise kohta? Wolfram Language on projekteeritud olema ÀÀrmiselt paindlik, mistĂ”ttu seda saab laiendada ja kohandada mistahes viisil. See on ÀÀrmiselt oluline Wolfram Language'il pĂ”hinevate erinevate suurmÔÔtmeliste tarkvaraprojektide kiireks loomiseks. Siinkohal tuleb mĂ€rkida, et keele paindlikkuse suurenemisega kasvab ka nende projektide maksumus, mis on sellisel keelel teostatud. See juhtub seetĂ”ttu, et mida rohkem kasutaja sellist keelt rakendab, seda rohkem ta omandab spetsiaalset funktsionaalsust, kuid ei tohiks unustada, et see lĂ€henemine vĂ”ib sisaldada ka negatiivseid kĂŒlgi, mis on seotud programmimoodulite jĂ€rjestikuse jĂ€rjepidevuse tagamise vĂ”imatusega.
Traditsioonilistes programmikeeltes on levinud probleem raamatukogudega: kui kasutate nĂ€iteks ĂŒhte raamatukogu, töötab kood korralikult, kuid kui proovite kasutada mitut raamatukogu, ei ole garantiid, et need ĂŒksteisega korrektselt koostööd teevad. Samuti puuduvad traditsioonilistes programmikeeltes - erinevalt tĂ€ielikust arvutuste deklareerimisest - tagatud vĂ”imalused sĂŒnkroniseeritud sisseehitatud esinduste jĂ€lgimiseks, mis tahes funktsioonide vĂ”i andmetĂŒĂŒpide jaoks peale nende pĂ”histruktuuride. Kuid tegelikult on probleem veelgi sĂŒgavam, kui esmapilgul tundub: kui keegi loob suures mahus funktsionaalsust, ei ole ilma meie investeeritud tohutute raharessurssideta projekti keskse programmeerimise haru, mis on mĂ€rkide Wolfram'is, vĂ”imalik ĂŒhtsust saavutada. SeetĂ”ttu on oluline, et kĂ”ik programmimoodulid töötaksid alati koos Ă”igesti.
Seega, Wolfram'i funktsioonide repositoriumi idee seisneb ĂŒlaltoodud probleemide lahendamises â lihtsalt lisades keelele laiendusi suhteliselt vĂ€ikeste kooditĂŒkkide kaudu, mille arendamine koordineeritud moodulitena on lihtsam ĂŒlesanne. Samuti on programmeerimise eripĂ€rasid, mida ei saa eraldiseisvate funktsioonide abil mugavaks muuta (ja meie ettevĂ”te plaanib vĂ€ljastada optimeeritud tarkvaraalgoritmi, et aidata suurte programmide rakendamisel). Siiski pakuvad Wolfram Language'i keeles juba sisseehitud funktsioonide pĂ”hjal mitmeid programmeerimisvĂ”imalusi, mis on rakendatud eraldiseisvate funktsioonide pĂ”hjal. Idee on see, et suhteliselt vĂ€ikese programmi tööga saaks luua uue ja vĂ€ga kasuliku funktsioonide rikka kogumi, mis tagab projekti piisava ĂŒhtsuse, samal ajal kui need on omavahel hĂ€sti kooskĂ”las ja need saavad olema ka edaspidi kergesti ja laialdaselt kasutatavad keeles.
See lÀhenemine on kindlasti kompromiss. Suurema paketi rakendamisel vÔib kujutleda tÀiesti uue funktsionaalsuse maailma, mis on ÀÀrmiselt vÔimas ja kasulik. Kui on vajadus saada uusi funktsionaalsusi, mis sobivad kÔikide muude elementidega, kuid samas te ei ole valmis investeerima tohutult pingutusi projekti arendamisse, vÔib see kahjuks viia teie projekti piiratuse vÀhenemiseni. Wolfram'i funktsioonide repositoriumi idee on tagada projektile mÀÀratav funktsionaalsus, see lÀhenemine vÔimaldab lisada vÔimsa funktsionaalsuse, samal ajal hÔlbustades head kooskÔla programmeerimisprojektis.
Abi kohandatud funktsioonide lisamisel funktsioonide repositoriumi
Meie ettevĂ”tte spetsialistid on kĂ”vasti vaeva nĂ€inud, et muuta Wolfram'i funktsioonide repositoriumi panus kasutajatele piisavalt lihtsaks. Lauarvutis (juba ... ), Saate lihtsalt jĂ€rjestikku liikuda peamise menĂŒĂŒ kaudu: Fail > Uus > Repositooriumi ese > Funktsiooni repositooriumi ese ja saate â» (programmiline keskkonnas. Samuti saate kasutada funktsiooni analoog â ):

On kaks peamist tegevust, mida peate tegema: esiteks kirjutama oma funktsiooni koodi ja teiseks kirjutama dokumentatsiooni, mis illustreerib, kuidas teie funktsioon peaks töötama.
KlĂ”psake ĂŒlaosas nuppu âAva nĂ€idisâ, et nĂ€ha nĂ€idet sellest, mida peate tegema:

Tegelikult proovite luua midagi sarnast Wolfram Language integreeritud funktsiooniga. Erinevusega, et see vÔib teha midagi palju konkreetsemat kui integreeritud funktsioon. Sellega seondub, et ootused selle tÀielikkuse ja usaldusvÀÀrsuse osas on oluliselt madalamad.
Te peate andma oma funktsioonile nime, mis vastab Wolfram Language funktsioonide nimede koostamise pĂ”himĂ”tetele. Lisaks peate vĂ€lja töötama oma funktsiooni dokumentatsiooni, jĂ€rgides sisseehitatud funktsioonide dokumentatsiooni keeles. RÀÀgin sellest lĂ€hemalt hiljem. Praegu lihtsalt mĂ€rkige, et mÀÀratlemise mĂ€rkmiku faili ĂŒlaosas nuppude reas on nupp , mis seletab, mida teha, ja nupp âTööriistadâ, mis pakub dokumentatsiooni formatimiseks vajalikke tööriistu teie funktsioonile.
Kui olete kindel, et kĂ”ik on Ă”igesti tĂ€idetud ja olete valmis, klĂ”psake nuppu âKontrolliâ. TĂ€iesti normaalne on, et te pole kĂ”ikides detailides veel orienteerunud. SeetĂ”ttu tĂ€idab funktsioon âKontrolliâ automaatselt ja teeb palju stiili ja jĂ€rjepidevuse kontrolle. Tihti palub see teil kohe kinnitada ja aktsepteerida parandusi (NĂ€iteks: âSee rida peaks lĂ”ppema koolonigaâ ja see pakub kooloni sisestamist). MĂ”nikord palub see teil ise midagi lisada vĂ”i muuta. Me lisame pidevalt uusi funktsioone nuppu âKontrolliâ, kuid selle eesmĂ€rk on tagada, et kĂ”ik, mida te funktsioonide repositooriumisse saadate, vastab vĂ”imalikult paljudele stiilisoovitustele.

Nii, pĂ€rast âKontrolliâ kĂ€ivitamist saate kasutada âEelvaadetâ. âEelvaadeâ loob eelvaate dokumentatsiooni lehelt, mille olete mÀÀranud oma funktsioonile. Samuti saate luua eelvaate failile, mis on loodud teie arvutis vĂ”i failile, mis asub pilves. Kui te ei ole mingil pĂ”hjusel rahul sellega, mida nĂ€ete eelvaates, minge lihtsalt tagasi ja tehke vajalikud parandused, seejĂ€rel klĂ”psake taas nuppu Eelvaade.
NĂŒĂŒd olete valmis oma funktsiooni reposse ĂŒles laadima. Nupp Deploy pakub teile nelja tegevusvĂ”imalust:

Selles etapis on oluline, et saate saata oma funktsiooni Wolframi funktsioonide reposse, et see oleks igaĂŒhele kergesti kĂ€ttesaadav. Samuti vĂ”ite oma funktsiooni ĂŒles laadida piiratud arvule kasutajatele. NĂ€iteks saate luua funktsiooni, mis on kohalikult teie arvutis saadaval, et see oleks kergesti kĂ€ttesaadav, kui kasutate selle konkreetse arvuti. VĂ”i saate selle ĂŒles laadida oma , et see oleks teil kergesti kĂ€ttesaadav, kui olete pilves. Samuti saate oma funktsiooni avalikult ĂŒles laadida (deploy) oma pilvekonto kaudu. Kuid see ei ole Wolframi funktsioonide keskregistris, kuid saate kellelegi anda URL-i, mis vĂ”imaldab tal teie funktsiooni teie kontolt saada. (Tulevikus toetame ka keskregistreid, mis ulatuvad kogu meie ettevĂ”ttesse).
Nii et oletame, et soovite oma funktsiooni tegelikult Wolframi funktsioonide teadmiste baasi edastada. Selleks klĂ”psate nupul âSaadaâ represse. Mis siis juhtub? Teie taotlus saab kohe jĂ€rjekorda meie spetsiaalse kuraatorite meeskonna vaatamiseks ja heakskiitmiseks.
Kui teie taotlus lĂ€bib heakskiitmisprotsessi (mis tavaliselt kestab paar pĂ€eva), saadate teade selle ĂŒlevaate seisundist ning vĂ”imalikke ettepanekuid edasise kasutuse kohta. Kuid kui teie funktsioon on heaks kiidetud, avaldatakse see viivitamatult Wolframi funktsioonide repositorys ja see on kĂ”igile kasutamiseks kergesti kĂ€tte saadav. (Ja see kuvatakse jne.)
Mida peab repository sisaldama?
Oluline on mĂ€rkida, et meie ettevĂ”ttes kehtivad vĂ€ga kĂ”rged tĂ€ielikkuse, usaldusvÀÀrsuse ja ĂŒldise kvaliteedi standardid. 6000+ funktsioonist, mille oleme Wolframi keelde viimase 30+ aasta jooksul lisanud, vastavad kĂ”ik ĂŒlaltoodud nĂ”uetele. Wolframi funktsioonide repository eesmĂ€rk on kasutada kogu struktuuri ja funktsionaalsust, mis juba olemas Wolframi keeles, et lisada vĂ”imalikult palju kergemaid funktsioone (st funktsioone, millel on parem jĂ”udlus).
Muidugi peavad Wolframi funktsioonide repositorys olevad funktsioonid vastama Wolframi keele arendusprintsiipidele â et nad saaksid korralikult suhelda teiste funktsioonide ja kasutajate ootustega selle osas, kuidas funktsioonid peaksid Ă”igesti toimima. Siiski ei pea funktsioonid olema sama tĂ€ielikud vĂ”i usaldusvÀÀrsed.
Wolframi keele sisseehitatud funktsioonides pĂŒĂŒame muuta programmifunktsioonid vĂ”imalikult ĂŒldiseks. Sellegipoolest ei ole Wolframi funktsioonide repositorys midagi halba selle ĂŒle, kui sinna satub funktsioon, mis lihtsalt kĂ€sitleb mĂ”nda vĂ€ga spetsiifilist, kuid kasulikku juhtumit. NĂ€iteks funktsioon vĂ”ib vĂ”tta faile kindlas formaadis ja saata e-kirju kindlal viisil. loo diagramme ainult kindlate vĂ€rvide ja mĂ€rgistuse abil jne.
Veel rÀÀkida on ka sisseehitatud funktsioonidega seotud aspektidest - meie ettevĂ”te teeb kĂ”ik endast oleneva, et tegeleda kĂ”ikide ebatavaliste juhtumitega, et Ă”igesti kĂ€sitleda vale sisendit ja nii edasi. Funktsioonide hoidlas on tĂ€iesti loomulik, et seal eksisteerib spetsiifiline funktsioon, mis kĂ€sitleb peamisi juhtumeid ĂŒlesande lahendamisel ja ignoreerib kĂ”iki teisi.
On ilmselge, et parem on omada funktsioone, mis teevad rohkem ja teevad seda paremini, kuid funktsioonide hoidla optimeerimine - erinevalt Wolfram'i keele sisseehitatud funktsioonidest - peaks sisaldama rohkem funktsioone, mis on seotud suure hulga funktsioonidega, selle asemel et sĂŒveneda iga konkreetse funktsiooni rakendamise protsessidesse.
NĂŒĂŒd vaatame funktsioonide testimise nĂ€idet hoidlas. Selliste funktsioonide ĂŒhtsuse ootused on loomulikult palju madalamad kui keele sisseehitatud funktsioonide puhul. See on eriti oluline, kui funktsioonid sĂ”ltuvad vĂ€listest ressurssidest, nagu API, mille puhul on oluline pidevalt lĂ€bi viia jĂ€rjestikuseid teste, mis toimuvad automaatselt kontrollimise algoritmide raames. Failis nb saate selgelt mÀÀratleda definitsioonid (osas "Lisainformatsioon") ja mÀÀrata nii palju teste, kui peate vajalikuks, olgu need siis sisendi ja vĂ€ljundi ridade vĂ”i tĂ€iskomplektsete sĂŒmboolskeemide pĂ”hjal. , mida peategemisi peate vajalikuks. Lisaks pĂŒĂŒab sĂŒsteem pidevalt muuta teie dokumentatsioonis toodud nĂ€iteid kontrollimisprotsessiks (mĂ”nikord vĂ”ib see olla ĂŒsna ressursimahukas, nĂ€iteks funktsiooni puhul, mille tulemus sĂ”ltub juhuslikest numbritest vĂ”i pĂ€evase ajast).
LĂ”puks toob funktsioonide hoidla kaasa kuhjaga teostuslikke keerukusi. MĂ”ned neist vĂ”ivad olla lihtsalt ĂŒhe koodi rea ulatuses, teised vĂ”ivad sisaldada tuhandeid vĂ”i kĂŒmneid tuhandeid reĂ«le, kĂ”ige tĂ”enĂ€olisemalt koos mitmete abifunktsioonidega. Millal on mĂ”istlik lisada funktsioon, mille mÀÀramiseks on vajalik vĂ€ga vĂ€he koodi? Ăldiselt, kui funktsioonil on , mille kasutajad mĂ”istaksid seda heameelega koodis, siis saab selle juba lisada. Vastasel juhul on tĂ”enĂ€oliselt parem lihtsalt kirjutada oma programmile kood uuesti iga kord, kui teil on seda vaja.
Funktsioonide repositooriumi pĂ”hieesmĂ€rk (nagu nimigi ĂŒtleb) on keele funktsionaalsusesse uusi funktsioone sisse tuua. Kui soovite lisada uusi andmeid vĂ”i , siis kasutage . Aga mis toimib, kui soovite oma arvutustes tutvustada uusi objekti tĂŒĂŒpe?
Tegelikkuses on kaks teed. VĂ”ib-olla soovite tutvustada uut objektitĂŒĂŒpi, mida kasutatakse uutes funktsioonides funktsioonide repositooriumis. Sel juhul saate alati lihtsalt kirjutada selle sĂŒmboolse esinduse ja kasutada seda funktsioonide sisestamisel vĂ”i vĂ€ljastamisel funktsioonide repositooriumis.
Aga mis toimub, kui soovite objekti esindada ja siis mÀÀrata, milliste olemasolevate funktsioonide kaudu töötada Wolfram Language'is, et need omavahel sobiksid? Selleks on Wolfram Language'il alati olnud lihtne mehhanism, mida nimetatakse . Teatud piirangutega (eriti nende funktsioonide puhul, mis ), funktsioonide repositoorium vĂ”imaldab teil lihtsalt funktsiooni esindada ja mÀÀrata vÀÀrtusi selle jaoks. (Uue olulise konstruktsiooni loomise kooskĂ”la ootuse tĂ”stmiseks, mis on pĂ”hjalikult integreeritud igal pool Wolfram Language'is, on see tavaliselt vĂ€ga oluline protseduur, mida ei saa saavutada ainult projekti maksumuse suurendamise abil; see on see, mida meie ettevĂ”te teeb keele pikaajalise arendamise projektide raames, see ĂŒlesanne ei ole eesmĂ€rk, mis on seatud repositooriumi arendamisel).
Nii et mis vĂ”ib olla funktsioonide repositooriumi koodis? , muidugi (vĂ€hemalt, kui see ei ohusta jaoks ja programmi enda töökindlust, nagu arvutuslik keskkond) samamoodi nagu igasugune funktsioon funktsioonide repositooriumist. Samuti on olemas teisi toimimise vĂ”imalusi: funktsioon funktsioonide repositooriumis vĂ”ib kutsuda API-d, kas , vĂ”i . Loomulikult on sellega seotud teatud riskid. Kuna puuduvad garantiid, et API ei muutu ja funktsioon funktsioonide salvestuses lakkab töötamast. Taoliste probleemide tuvastamiseks on dokumentatsioonilehel (jaotises âNĂ”udedâ) mĂ€rkus iga funktsiooni kohta, mis toetub mitte ainult Wolfram Language'i sisseehitatud funktsionaalsusele. (Muidugi, kui rÀÀkida reaalsetest andmetest, vĂ”ivad selliste funktsioonide puhul tekkida probleemid â kuna reaalsed maailma andmed muutuvad pidevalt ja mĂ”nikord isegi nende mÀÀratlemine ja struktuur muutuvad.)
Kas kogu Wolfram funktsioonide hoidla kood peab olema kirjutatud Wolfram keeles? Kindlasti ei pea vĂ€line API kood olema kirjutatud Wolfram keeles, mis ei muuda seda keelekoodiks. Tegelikult, kui leiate funktsiooni praktiliselt igas vĂ€listes keeltes vĂ”i raamatukogudes, saate luua ĂŒmbriku, mis vĂ”imaldab teil seda kasutada Wolframi funktsioonide hoidlas. (Tavaliselt peaks selleks kasutama sisseehitatud funktsioone. vĂ”i Wolframi keele koodis.)
Kuidas see siis mĂ”istlik on? Sisuliselt vĂ”imaldab see kasutada kogu integreeritud Wolfram Language'i sĂŒsteemi ja selle ĂŒhtset tarkvarafunktsioonide komplekti. Kui saate pĂ”hiteostuse vĂ€listest raamatukogudest vĂ”i keeltest, saate seejĂ€rel kasutada Wolfram Language'i rikkalikku sĂŒmboolset struktuuri, et luua kasutajasĂ”bralik tippfunktsioon, mis vĂ”imaldab kasutajatel piisavalt lihtsalt kasutada juba olemasolevat funktsionaalsust. VĂ€hemalt peaks selle ideed olema vĂ”imalik realiseerida ideaalses maailmas, kus kĂ”ik teegid ja muud vajalikud elemendid on kergesti kĂ€tte saadavad, ja antud juhul lahendatakse need automaatselt Wolfram Language'i kaudu. (Oluline on mĂ€rkida, et praktikas vĂ”ivad tekkida probleeme konkreetsetes arvutisĂŒsteemides, ja pilvesalvestuses vĂ”ivad esineda tĂ€iendavad turbeprobleemid).
Muide, kui analĂŒĂŒsite esmakordselt tĂŒĂŒpilisi vĂ€liseid raamatukogusid, nĂ€ivad need sageli liiga keerulised, et neid saaks katta vaid mĂ”ne funktsiooniga, kuid paljude juhtumite korral tuleneb suur osa keerukusest raamatukogu jaoks vajaliku infrastruktuuri loomise ja kĂ”igi selle toetamise funktsioonide tĂ”ttu. Wolfram Language keele kasutamisel on aga infrastruktuur enamasti juba pakettidesse sisseehitatud, seega ei ole vajalik kĂ”iki neid tugifunktsioone pĂ”hjalikult avada, vaid tuleb luua funktsioone mĂ”nele âkĂ”rgeimaleâ rakendusele suunatud funktsioonile raamatukogus.
Teadmistebaasi "ökosĂŒsteem"
Kui olete kirjutanud funktsioone, mida pidevalt kasutate, saatke need Wolframi funktsioonide reposse! Kui sellest lĂ”puks ei sĂŒnnigi midagi suuremat (keele areng), siis on teil ikkagi palju mugavam kasutada funktsioone isiklikuks otstarbeks. Siiski on loogiline eeldada, et kui te kasutate funktsioone pidevalt, siis vĂ”ivad ka teised kasutajad neid kasulikeks pidada.
Muidugi vĂ”ib juhtuda, et te ei saa â vĂ”i ei soovi â oma funktsioone jagada vĂ”i pÀÀseda ligi erasektori teabele. Ka sellistes olukordades vĂ”ite lihtsalt rakendada funktsioone enda pilvekonto kaudu, nendele juurdepÀÀsuks. (Kui teie organisatsioonil on Wolfram Enterprise'i privaatne pilv, siis varsti saab see majutada oma privaatset funktsioonide repot, mida saab administreerida teie organisatsioonist ning kohustuslike vaatamisseisundite loomine vĂ”i mitte kolmandate kasutajate jaoks.) PĂ€rast funktsiooni avaldamist on sellel alati kaks linki allosas:
Funktsioonid, mille saatmisel Wolfram funktsioonide hoidlasse, ei pea olema ideaalsed; need peavad lihtsalt olema kasulikud. See on veidi sarnane Unix klassikalise dokumentatsiooni ''Vigu'' sektsioonile â ''MÀÀratlemise sektsioonis'' on ''Autori mĂ€rkused'', kus saate kirjeldada oma funktsiooni tuntud piiranguid, probleeme jne. Lisaks, kui saadate oma funktsiooni hoidlasse, saate lisada saatemĂ€rkmeid, mida loevad spetsiaalne kuraatorite meeskond.
PÀrast funktsiooni avaldamist on selle lehel alati kaks linki all: "" ja "». Kui te lisate mÀrkuse (nÀiteks teate mulle vigadest), vÔite mÀrkida kasti, kus on öeldud, et soovite, et teie sÔnum ja kontaktandmed edastataks funktsiooni autorile.
MĂ”nikord on vajalik lihtsalt kasutada Wolframi funktsioonide kogu funktsioone, nĂ€iteks sisseehitatud funktsioone, vaatamata nende koodile. Kui soovite aga "vaadata sisse", on ĂŒleval alati nupp "MĂ€rkmik". KlĂ”psake seda ja saate oma koopia originaalsest mÀÀratlemismĂ€rkmikust, mis on saadetud funktsioonide kogu. Vahel vĂ”ite lihtsalt kasutada seda oma vajadustele vastava nĂ€itena. Samuti saate arendada oma kohandatud versiooni sellest funktsioonist. VĂ”ib-olla soovite need funktsioonid, mille leiate kogu, oma arvutisse vĂ”i oma pilvekontole salvestada, vĂ”ib-olla soovite need saata funktsioonide teadmusbaasi, vĂ”ib-olla tĂ€iendatud, tĂ€iustatud versioonina originaalsest funktsioonist.
Tulevikus plaanime toetada Git-stiilis harude loomist funktsioonide kogu, kuid praegu pĂŒĂŒame seda lihtsustada ja meil on alati ainult ĂŒks ĂŒldtuntud versioon igast funktsioonist, mis on keele sisse ehitatud. Enamasti (kui arendajad ei loobu oma arendatud funktsioonide toetamisest ja vastavad kasutajate sĂ”numitele) saab funktsiooni algne autor oma versioonide uuendamise ĂŒle kontrolli ja saadab uusi versioone, mis seejĂ€rel kontrollitakse ja kui need lĂ€bivad kontrolliprotsessi, avaldatakse keeles.
Vaatame, kuidas töötavad arendatud funktsioonide "versioonid". Praegu, kui kasutate funktsiooni funktsioonide kogust, salvestatakse selle mÀÀratlemine pidevalt teie arvutisse (vĂ”i teie pilvekontole, kui kasutate pilve). Kui funktsioonile on saadaval uus versioon, siis jĂ€rgmise kasutuse puhul saate teate selle kohta. Ja kui soovite funktsiooni uuendada uue versioonini, saate seda teha kĂ€su abil. (âFunktsionaalne BLOB-objektâ salvestab tegelikult rohkem teavet versioonide kohta ja tulevikus plaanime seda oma kasutajatele mugavamaks teha.)
Wolframi funktsioonide hoidla ĂŒks fantastilisi omadusi on see, et iga Wolfram Language'i programm vĂ”ib igalt poolt kasutada selle hoidla funktsioone. Kui programm ilmub mĂ€rkmikusse, on sageli mugav vormindada hoidla funktsioone kergesti loetavate âfunktsionaalsete binaarobjektidenaâ (vĂ”imalik, et vastava versioonide kogumiga).
Saate alati pÀÀseda igale funktsioonile hoidlas, kasutades teksti . See on vĂ€ga mugav, kui kirjutate koodi vĂ”i skripte otse Wolfram Engine'i jaoks, nĂ€iteks (tuleb eraldi mĂ€rkida, et funktsioonide hoidla on tĂ€ielikult ĂŒhilduv ).
Kuidas see töötab?
Hoidlas olevate funktsioonide seas on vÔimalik kasutada tÀpselt sama nagu kÔigis meie teistes olemasolevates hoidlates NeuraalvÔrgu hoidla , ResourceFunction ResourceObject .
Vaadake :

Information :

PÀrast mÀÀratlemist saate kasutada ressursifunktsiooni:

Pange tÀhele, et selle BLOB-objekti funktsioonil on must ikoon

. See tĂ€hendab, et BLOB-funktsioon viitab mĂ€lus olevale ressursifunktsioonile, mis on mÀÀratletud kĂ€esoleva seansi jaoks. Ressursifunktsioonile, mis on pĂŒsivalt salvestatud teie arvutisse vĂ”i pilvekontole, on hall ikoon
. Ja Wolframi funktsioonide hoidla ametlikule ressursifunktsioonile on oranĆŸ ikoon
Nii et mis juhtub, kui kasutate defineerimise mĂ€rkmiku âKasutamineâ menĂŒĂŒd? Esmalt vĂ”tab see kĂ”ik mÀÀratlemised mĂ€rkmikust ja loob neist sĂŒmboolse
.
Nii et mis juhtub, kui kasutate mÀÀratlemise plokis menĂŒĂŒd ''Paigaldamine''? Esiteks, see vĂ”tab kĂ”ik mÀÀratlused plokist ja loob neist sĂŒmboolse ). (Ja kui kasutate tekstipĂ”hist IDE-d vĂ”i programmi, siis saate ka selgelt luua )
Funktsiooni kohalik juurutamine repository's teie arvutis toimub kĂ€su abil ressursi objekti jaoks, et salvestada see teie failisĂŒsteemi. Juurutamine pilvekontole toimub kĂ€su kaudu ressursi objekti jaoks, samas kui avalik juurutamine pilves â . KĂ”igil juhtudel kasutatakse ka funktsiooni ressursi nime registreerimiseks, nii et toimib.
Kui vajutate nuppu Submit funktsioonirepository jaoks, siis, mis selle all toimub kutsub ressursi objekti. (Ja kui te kasutate tekstipÔhist sisendi liidest, saate ka kutse otseselt.)
Vaikimisi toimub esitamine nimega, mis on seotud teie Wolfram ID-ga. Kuid kui esitame taotluse arendajate rĂŒhma vĂ”i organisatsiooni nimel, saate ja kasutada seda nimena, et suhelda oma esitlusega.
PĂ€rast seda, kui olete esitanud oma funktsiooni funktsioonide teadmistebaasi, satuvad nad kontrollimise jĂ€rjekorda. Kui saate vastuseks kommentaare, on need tavaliselt tekstifaili kujul koos lisatud âkommentaari lahtritegaâ. Saate alati kontrollida oma taotluse staatust, kĂŒlastades . Kuid niipea, kui teie funktsioon on heakskiidetud, saate teavituse (e-posti teel) ja teie funktsioon paigutatakse Wolframi funktsioonide repository'sse.
MĂ”ned nĂŒansid ĂŒlesandes
Esmapilgul vĂ”ib tunduda, et saate lihtsalt vĂ”tta mÀÀratluse mĂ€rkmiku ja ingliskeelsena paigutada selle funktsioonide repository'sse, kuid tegelikult on seal palju nĂŒansse â ja nende lahendamiseks on vajalik teostada ĂŒsna keeruline meta-programmeerimine, töötades sĂŒmboolselt nii koodi, mis mÀÀratleb funktsiooni, kui ka mÀÀratlemismĂ€rgiseid. Suur osa sellest toimub seespidiselt, st âkaamera tagaâ, kuid see vĂ”ib kaasa tuua teatud tagajĂ€rgi, mida on oluline mĂ”ista, kui kavatsete panustada funktsioonide teadmistebaasi.
Esimene peen nĂŒanss: Kui tĂ€idate âMĂ”isted mĂ€rkmikâ, saate lihtsalt viidata oma funktsioonile igal pool, kasutades nime, mis on sarnane MyFunction, mis nĂ€eb vĂ€lja nagu tavaline funktsiooni nimi Wolfram keele sĂŒntaksis, kuid dokumentatsiooni funktsioonide hoidlas asendatakse see â see on see, mida kasutajad tegelikult kasutavad funktsiooniga töötades.
Teine nĂŒanss: kui loote ressursifunktsiooni mÀÀratlemisblokist, peavad kĂ”ik funktsiooni mÀÀratlemisse kaasatud sĂ”ltuvused olema fikseeritud ja selgelt kaasatud. Kuid tagamaks, et mÀÀratlused jÀÀvad modulaarseteks, tuleb kĂ”ik paigutada unikaalsesse . (Muidugi, et , asuvad funktsioonide hoidlas.)
Tavaliselt ei nĂ€e te kunagi mingeid jĂ€lgi koodist, mida kasutatakse selle nimekirja seadistamiseks. Kuid kui mingil pĂ”hjusel kutsute oma funktsiooni sees tĂ€itmata sĂŒmboli, nĂ€ete, et see sĂŒmbol on funktsiooni sisemises kontekstis. Kuid mÀÀratlemismĂ€rkmiku töötlemisel konfigureeritakse vĂ€hemalt sĂŒmbol, mis vastab funktsiooni enda funktsionaalse BLOBina, mitte toore sĂŒmbolina sisemises kontekstis.
Funktsioonide hoidla on mĂ”eldud uute funktsioonide mÀÀratlemiseks. Ja need funktsioonid vĂ”ivad omada valikuid. Sageli vĂ”ivad need parameetrid (nt vĂ”i ) olla kasutatavad nii sisseehitatud funktsioonide kui ka nende jaoks, mille jaoks on juba olemas sisseehitatud sĂŒmbolid. Kuid mĂ”nikord vĂ”ivad uutel funktsioonidel olla vajalikud ka uued valikud. Modulaarsete omaduste sĂ€ilitamiseks peavad need parameetrid olema sĂŒmbolid, mis on mÀÀratud unikaalses siseĂ”hkkonnas (vĂ”i sellised, mis on kui terviklikud ressursifunktsioonid, st iseenesest). Lihtsuse huvides vĂ”imaldab funktsioonide hoidla mÀÀrata uusi valikuid mÀÀratlemisel stringidena. Ja mugavuse huvides töötlevad need mÀÀratlused (tingimusel, et nad on kasutatud ja ) ka nii, et funktsioonide kasutamisel saab parameetreid mÀÀrata mitte ainult stringidena, vaid ka globaalsete sĂŒmbolitega samade nimedega.
Enamik funktsioone tĂ€idab lihtsalt seda, mida nad peavad tegema, iga kord, kui neid kutsutakse, kuid mĂ”nedfunktsioonid vajavad eelnevat initsialiseerimist, enne kui nad saavad teatud sessioonis töötada â ja selle probleemi lahendamiseks on jaotises âMÀÀratlemineâ jaotis âInitsialiseerimineâ.
Repoositoris olevad funktsioonid vÔivad kasutada teisi funktsioone, mis juba repositoriis on, et konfigureerida funktsioonide mÀÀratlemisi, mis hÔlmavad kahte (vÔi enamat) vastastikku viitavat funktsiooni, mis tuleb nende sessioonis vÀlja arendada, et saaksite neid viidata nagu , seejÀrel vÔite luua vajalikke funktsioonide kombinatsioone ja lisada repositorisse uusi funktsioone, mis on pÔhjal juba olemasolevate.
ArenguvÔimalused. Mis peaks juhtuma, kui repositorist saab tÔeliselt suur?
TÀna kÀivitame just Wolframi funktsioonide repositori, kuid aja jooksul ootame, et selle maht ja funktsionaalsus vÔivad tÔsiselt suureneda, ja selle kasvu kÀigus tekivad mitmesugused probleemid, mille loomist me juba ette ennustame.
Esimene probleem puudutab funktsioonide nimesid ja nende unikaalsust. Funktsioonide repositor on kavandatud nii, et nii nagu Wolfram Language'i sisseehitatud funktsioonide puhul, on vĂ”imalik viidata mis tahes antud funktsioonile, lihtsalt nimetades selle nime. Kuid see tĂ€hendab, et funktsioonide nimed peavad olema globaalselt unikaalsed kogu repositoris, nii et nĂ€iteks repositoris vĂ”ib olla ainult ĂŒks .
Esmapilgul vĂ”ib see tunduda suure probleemina, kuid tuleb mĂ”ista, et see on pĂ”himĂ”tteliselt sama probleem, mis on selliste asjade, nagu interneti domeenid vĂ”i sotsiaalmeedia mĂ€rgid. Ja asi on selles, et sĂŒsteemis peab lihtsalt olema registreerija â ja see on ĂŒks rollidest, mida meie ettevĂ”te tĂ€idab Wolframi funktsioonide teadmistebaasi jaoks. (Privaatsete repositorite versioonide korral vĂ”ivad nende registreerijateks olla administraatorid.) Loomulikult vĂ”ib interneti domeeni registreerida, isegi kui sellel ei ole midagi, kuid funktsioonide repositoris vĂ”ib funktsiooni nimi olla registreeritud ainult juhul, kui sellel on tĂ”eline funktsiooni mÀÀratlemine.
Osana meie rollist Wolfram'i funktsioonide teadmusbaasi haldamisel on tagada, et funktsioonile valitud nimi oleks loogiline funktsiooni mÀÀratlemise kontekstis ning vastaks Wolfram Language'i nimetamisreeglitele. Meil on juba ĂŒle 30 aasta kogemust Wolfram Language'is sisseehitatud funktsioonide nimede mÀÀramisel ning meie kureerimismeeskond toob selle kogemuse ka funktsioonide reposse. Loomulikult on alati erandeid. NĂ€iteks vĂ”ib tunduda, et teatud funktsiooni jaoks on eelistatum lĂŒhike nimi, kuid parem on âkaitstaâ end pikema, spetsiifilisema nimega, kuna sel juhul on vĂ€iksem tĂ”enĂ€osus, et keegi soovib tulevikus luua sarnase nimega funktsiooni.
(Siinkohal tuleb mÀrkida, et lihtsalt mÔne osalise mÀrgi lisamine funktsioonide ambigude kÔrvaldamiseks ei too oodatud tulemust. Sest kui ei nÔuta, et mÀrk oleks alati mÀÀratud, tuleb mÀÀrata vaikimisi mÀrk igale antud funktsioonile ning ka autorite mÀrgid, mis nÔuab taas globaalset koordineerimist.)
Wolfram'i funktsioonide teadmusbaasi mahu suurenedes on kindlasti ĂŒks probleeme, millega silmitsi seistakse â funktsioonide avastatavus, mille jaoks on sĂŒsteemis ette nĂ€htud (-ja mÀÀratlemisfailid vĂ”ivad sisaldada mĂ€rksĂ”nu jne). Wolfram Language'i sisseehitatud funktsioonide osas on dokumentatsioonis kĂ”ikvĂ”imalikke ristviiteid, mis aitavad funktsioone âreklaamidaâ. Funktsioonid funktsioonide repos saavad viidata sisseehitatud funktsioonidele. Aga kuidas on vastupidi? Selleks kavatseme katsetada erinevaid skeeme, et tutvustada funktsioonide repos dokumentatsioonile sisseehitatud funktsioonide lehtedel.
Wolfram Language'i sisseehitatud funktsioonide puhul eksisteerib nn avastusaste, mille tagab , mis pakuvad korraldatud funktsioonide loendeid, mis on seotud konkreetsete valdkondadega. Alati on keeruline Ă”igesti tasakaalustada kĂ€siraamatu lehti ning kui Wolfram keele populaarsus kasvab, tuleb kĂ€siraamatulehed tihti tĂ€ielikult ĂŒmber korraldada. Funktsioonide paigutamine laiasse kategooriasse ning nende jĂ€rjestamine on ĂŒsna lihtne, kuid palju vÀÀrtuslikum on omada korraldatud Wolfram keele kĂ€siraamatu lehti. On ebaselge, kuidas on parim neid luua kogu funktsioonide teadmistebaasi jaoks. NĂ€iteks funktsioonide repod on igaĂŒhel vĂ”imalus jagada veebilehte, mis sisaldab tema valikuid repost:

Wolfram funktsioonide repo on seadistatud kui pĂŒsiv funktsioonide hoone, kus igasugused funktsioonid töötavad alati. Kindlasti vĂ”ivad tekkida uued versioonid funktsioonidest ja me ootame, et mĂ”ned funktsioonid ajaga vananevad. Funktsioonid töötavad, kui neid kasutatakse programmides, kuid nende dokumentatsiooni lehed suunavad uutele, arenenumatele funktsioonidele.
Wolfram funktsioonide repo on mĂ”eldud uute funktsioonide kiireks tuvastamiseks ja Wolfram keele uute rakenduste avastamiseks. Suure optimistlikkusega loodame, et osa rummust, mis on uuritud funktsioonide repos, saab lĂ”puks peamise Wolfram Language'i integreeritud osaks. Viimase kĂŒmnendi jooksul on meil olnud sarnane komplekt . Ja ĂŒks Ă”ppetund, mis tuleneb sellest kogemusest, on see, et kvaliteedi- ja ĂŒhtsustaseme saavutamiseks, millele me keskendume kĂ”ikides Wolfram keele integreeritud aspektides, on vajalik palju tööd, mis on sageli keerulisem kui algsed jĂ”upingutused idee rakendamiseks. Kuid isegi sel juhul vĂ”ib funktsioon funktsioonide teadmusbaasis olla vĂ€ga kasulik tulevase funktsiooni kontseptsiooni tĂ”end, mis vĂ”ib lĂ”puks Wolfram keelde integreerida.
Siin on kĂ”ige olulisem see, et funktsioonide reposte vaatamine on see, mis on kĂ”igile kasutajatele kohe saadaval. VĂ”ib-olla on keele sisseehitatud funktsioon oluliselt parem ja tĂ”husam, kuid funktsioonide reposte vĂ”imaldab kasutajatel kohe pÀÀseda juurde kĂ”ikidele uutele funktsioonidele. Ja mis on eriti oluline, see kontseptsioon vĂ”imaldab igaĂŒhel lisada oma uusi funktsioone.
Varasematel aegadel ei oleks see idee Wolframi keele ajaloos nii hĂ€sti toimunud, nagu see praegu on, kuid praegusel etapil on keelde juba investeeritud nii palju pingutusi ja nii sĂŒgavat arusaama keele kujundamise printsiipidest, et nĂŒĂŒd tundub tĂ€iesti vĂ”imalik, et suur kasutajate kogukond lisab funktsioone, mis toetavad projekti jĂ€rjepidevust, et muuta need kasulikuks laiale kasutajate ringile.
Wolfram Language'i kasutajate kogukonnas on uskumatu talentide vaim. (Muidugi kuuluvad sellesse kogukonda paljud juhtivad teadusuuringute ja arenduse spetsialistid mitmesugustes valdkondades.) Loodan, et Wolframi funktsioonide reposte pakub tÔhusat platvormi selle talentide vaimu avamiseks ja levitamiseks. Ainult koos suudame luua midagi, mis ulatub mÀrkimisvÀÀrselt ulatust, kuhu Wolframi keele arvutuslik paradigma vÔib rakenduda.
Ăle 30 aasta jooksul oleme teinud pikka teed Wolframi keeles. NĂŒĂŒd, koos, liikuge edasi veelgi kaugemale. Kutse annan kĂ”igile Wolframi keele austajatele ĂŒle kogu maailma kasutada seda funktsionaalset reposte platvormina, samuti sellist uut tarkvaraprojekti nagu Free Wolfram Engine arendajatele.
Allikas: habr.com
