Sveiks, Habr! Es piedÄvÄju jÅ«su uzmanÄ«bai StÄ«vena Volframa ziÅas tulkojumu
PriekŔnosacījumi Volframa valodas konsekvencei
Å odien kopÄ ar programmÄÅ”anas valodu stÄvam uz lielu sasniegumu sliekÅ”Åa
Wolfram Function Repository ir kaut kas iespÄjams, pateicoties Wolfram valodas unikÄlajam raksturam ne tikai kÄ programmÄÅ”anas valodai, bet arÄ« kÄ
PiemÄram, Wolfram funkciju krÄtuve jau satur
TÄpat vairÄk nekÄ
Lai nokļūtu lapÄ, kopÄjiet iepriekÅ” minÄto objektu (funkciju BLOB), ielÄ«mÄjiet to ievades rindÄ un pÄc tam palaidiet funkciju ā tÄ jau ir iebÅ«vÄta Wolfram valodÄ un tiek atbalstÄ«ta pÄc noklusÄjuma, sÄkot ar
Å eit jÄatzÄ«mÄ, ka apstrÄdÄjot
Ceru, ka ar atbalstu
Repozitorija funkcijÄs var bÅ«t mazi vai lieli koda fragmenti, kas rakstÄ«ti Wolfram valodÄ. PiemÄram, tie varÄtu bÅ«t zvani
Wolfram Feature Repository apvalks un programmÄÅ”anas struktÅ«ra ir izstrÄdÄta tÄ, lai ikviens varÄtu sniegt savu ieguldÄ«jumu kopÄjÄ mÄrÄ·a Ä«stenoÅ”anÄ viÅam visvienkÄrÅ”ÄkajÄ un ÄrtÄkajÄ veidÄ - patiesÄ«bÄ vienkÄrÅ”i
Å ajÄ pieejÄ ir daudz kompromisu un detaļu, taÄu mÅ«su mÄrÄ·is ir optimizÄt Wolfram lÄ«dzekļu krÄtuvi gan lietotÄja pieredzei, gan nodroÅ”inÄt, lai jaunÄs lietotÄja funkcijas sniegtu nozÄ«mÄ«gu ieguldÄ«jumu valodas attÄ«stÄ«bÄ. Mums augot, man nav Å”aubu, ka mums bÅ«s jÄizgudro jaunas metodes repozitorijÄ iebÅ«vÄto funkciju apstrÄdei un apstiprinÄÅ”anai, ne tikai liela skaita funkciju organizÄÅ”anai un lietotÄjiem nepiecieÅ”amo atraÅ”anai. TomÄr ir iepriecinoÅ”i, ka mÅ«su izvÄlÄtais ceļŔ ir labs sÄkums. Es personÄ«gi
PalielinÄt efektivitÄti, vienlaikus samazinot izmaksas
Pat pirms interneta bija veidi, kÄ koplietot Wolfram valodas kodu (mÅ«su pirmais lielais centralizÄtais projekts bija
VairÄk nekÄ 30 gadus mÅ«su uzÅÄmums ir rÅ«pÄ«gi strÄdÄjis, lai saglabÄtu Wolfram valodas struktÅ«ras integritÄti, un tas ir ļoti svarÄ«gi, lai nodroÅ”inÄtu, ka Wolfram valoda kļūst ne tikai par programmÄÅ”anas valodu, bet arÄ« par
Katras funkcijas ievieÅ”anas struktÅ«rÄ notiek dažÄdi skaitļoÅ”anas procesi. Å eit jÄatzÄ«mÄ, ka ir nepiecieÅ”ams, lai funkcijai bÅ«tu skaidrs un vienveidÄ«gs izskats un lietotÄjam vizuÄli salasÄms. Å ajÄ kontekstÄ Wolfram valodas iebÅ«vÄtÄs funkcijas ir parÄdÄ«tas ar vairÄk nekÄ 6000 secÄ«giem piemÄriem, kÄ pareizi programmÄt funkcijas (tie ir mÅ«su
Interesants metaprogrammÄÅ”anas uzdevums ir izveidot repozitoriju, kas faktiski darbojas labi. PiemÄram, pÄrmÄrÄ«gs ierobežojumu daudzums programmÄ neļaus iegÅ«t nepiecieÅ”amo algoritma unifikÄciju un universÄlumu. TÄpat kÄ ar nepietiekamu funkcionÄlo ierobežojumu skaitu, jÅ«s nevarÄsit ieviest pietiekami pareizu algoritma izpildes secÄ«bu. VairÄki iepriekÅ”Äjie piemÄri par Å”o pieeju kompromisa ievieÅ”anu, ko ieviesa mÅ«su uzÅÄmums, darbojÄs diezgan stabili - tie ir:
Visiem augstÄk minÄtajiem piemÄriem ir kÄda fundamentÄla iezÄ«me ā projektÄ apkopotajiem objektiem un funkcijÄm ir ļoti augsta procesu strukturÄÅ”anas un sadales pakÄpe. Protams, demonstrÄcijas vai neironu tÄ«kla vai kaut kÄ cita struktÅ«ras detaļas var ievÄrojami atŔķirties, taÄu jebkuras paÅ”reizÄjÄs repozitorija pamatstruktÅ«ra vienmÄr paliek nemainÄ«ga. TÄtad, kÄds ir jÅ«su viedoklis, dÄrgais lietotÄj, par tÄdas repozitorija izveidi, kas pievieno paplaÅ”inÄjumus Volframa valodai? Wolfram valoda ir izstrÄdÄta tÄ, lai tÄ bÅ«tu ÄrkÄrtÄ«gi elastÄ«ga, tÄpÄc to var jebkurÄ veidÄ paplaÅ”inÄt un modificÄt. Å is apstÄklis āāir ÄrkÄrtÄ«gi svarÄ«gs, lai varÄtu Ätri izveidot dažÄdus liela mÄroga programmatÅ«ras projektus Wolfram valodÄ. Te gan jÄatzÄ«mÄ, ka, pieaugot valodas elastÄ«bai, Å”ÄdÄ valodÄ Ä«stenoto projektu izmaksas neizbÄgami pieaugs. Tas ir saistÄ«ts ar faktu, ka, jo vairÄk lietotÄjs izmanto Å”Ädu valodu, jo vairÄk viÅÅ” saÅem funkcionalitÄti, taÄu nevajadzÄtu aizmirst, ka Å”ai pieejai var bÅ«t arÄ« negatÄ«vÄs puses, jo nespÄja nodroÅ”inÄt konsekventu programmu moduļu konsekvenci.
PastÄv izplatÄ«ta problÄma ar bibliotÄkÄm tradicionÄlajÄs programmÄÅ”anas valodÄs - ja izmantojat, piemÄram, vienu bibliotÄku, kods darbosies pareizi, bet, ja mÄÄ£inÄt izmantot vairÄkas bibliotÄkas, nav garantijas, ka tÄs pareizi mijiedarbosies viena ar otru. . ArÄ« tradicionÄlajÄs programmÄÅ”anas valodÄs - atŔķirÄ«bÄ no pilnvÄrtÄ«gas skaitļoÅ”anas valodas - nav iespÄjams garantÄt konsekventu iebÅ«vÄtu attÄlojumu klÄtbÅ«tni jebkurÄm funkcijÄm vai datu tipiem, izÅemot to pamatstruktÅ«ras. Bet patiesÄ«bÄ problÄma ir vÄl lielÄka, nekÄ Å”Ä·iet no pirmÄ acu uzmetiena: ja tiek veidota liela mÄroga funkcionalitÄtes vertikÄle, tad bez milzÄ«gajÄm centralizÄtÄs projektu programmÄÅ”anas izmaksÄm, ko mÄs ievietojam Wolfram valodÄ, nav iespÄjams. panÄkt konsekvenci. TÄpÄc ir svarÄ«gi, lai visi programmatÅ«ras moduļi vienmÄr pareizi darbotos kopÄ.
TÄtad Wolfram lÄ«dzekļu repozitorija ideja ir izvairÄ«ties no iepriekÅ” aprakstÄ«tÄs problÄmas, vienkÄrÅ”i pievienojot valodai paplaÅ”inÄjumus salÄ«dzinoÅ”i mazos koda fragmentos, izmantojot atseviŔķas funkcijas, kuras ir vieglÄk izstrÄdÄt kÄ saskaÅotus moduļus. TomÄr ir programmÄÅ”anas funkcijas, kuras nevar padarÄ«t Ärtu, izmantojot atseviŔķas funkcijas (un mÅ«su uzÅÄmums tuvÄkajÄ nÄkotnÄ plÄno izlaist optimizÄtu programmÄÅ”anas algoritmu, lai palÄ«dzÄtu ieviest liela mÄroga programmatÅ«ras pakotnes). TomÄr, pamatojoties uz Wolfram valodÄ jau iebÅ«vÄtajÄm funkcijÄm, ir daudz programmÄÅ”anas iespÄju, kas tiek ieviestas, pamatojoties uz atseviŔķÄm funkcijÄm. Å eit doma ir tÄda, ka ar salÄ«dzinoÅ”i nelielu programmÄÅ”anas piepÅ«li ir iespÄjams izveidot vairÄkas jaunas un ļoti noderÄ«gas funkcijas, kas nodroÅ”inÄs pietiekamu dizaina saskaÅotÄ«bu, tÄs bÅ«s labi saskaÅotas viena ar otru, kÄ arÄ«, papildus tam, turpmÄk varÄs viegli un plaÅ”i lietot valodÄ.
Å Ä« pieeja, protams, ir kompromiss. Ja tiktu ieviesta lielÄka pakete, varÄtu iedomÄties pilnÄ«gi jaunu funkcionalitÄtes pasauli, kas bÅ«tu ÄrkÄrtÄ«gi jaudÄ«ga un noderÄ«ga. Ja ir nepiecieÅ”ams iegÅ«t jaunu funkcionalitÄti, kas iederÄsies ar visu pÄrÄjo, bet jÅ«s nevÄlaties tÄrÄt daudz pūļu projekta izstrÄdei, tas diemžÄl var novest pie jÅ«su projekta apjoma samazinÄÅ”anÄs. Wolfram lÄ«dzekļu krÄtuves ideja ir nodroÅ”inÄt funkcionalitÄti noteiktai projekta daļai; Ŕī pieeja pievienos jaudÄ«gu funkcionalitÄti, vienlaikus atvieglojot programmÄÅ”anas projekta labas konsekvences uzturÄÅ”anu.
PalÄ«dziet pievienot pielÄgotas funkcijas funkciju krÄtuvei
MÅ«su komanda ir smagi strÄdÄjusi, lai lietotÄjiem bÅ«tu vieglÄk sniegt ieguldÄ«jumu Wolfram repozitorija lÄ«dzekļos. DarbvirsmÄ (jau ir
Jums bÅ«s jÄveic divas galvenÄs darbÄ«bas: pirmkÄrt, faktiski pierakstiet savas funkcijas kodu un, otrkÄrt, pierakstiet dokumentÄciju, kas ilustrÄ, kÄ jÅ«su funkcijai jÄdarbojas.
NoklikŔķiniet uz pogas "AtvÄrt paraugu" augÅ”pusÄ, lai redzÄtu piemÄru, kas jums jÄdara:
BÅ«tÄ«bÄ jÅ«s mÄÄ£inÄt izveidot kaut ko lÄ«dzÄ«gu Wolfram valodas iebÅ«vÄtajai funkcijai. IzÅemot to, ka tas var darÄ«t kaut ko daudz specifiskÄku nekÄ iebÅ«vÄta funkcija. TajÄ paÅ”Ä laikÄ cerÄ«bas uz tÄ pilnÄ«gumu un uzticamÄ«bu bÅ«s daudz mazÄkas.
Funkcijai ir jÄpieŔķir nosaukums, kas atbilst Wolfram Language funkciju nosaukÅ”anas vadlÄ«nijÄm. TurklÄt jums bÅ«s jÄizstrÄdÄ dokumentÄcija savai funkcijai, kas ir lÄ«dzÄ«ga valodas iebÅ«vÄtajÄm funkcijÄm. Par to sÄ«kÄk pastÄstÄ«Å”u vÄlÄk. PagaidÄm Åemiet vÄrÄ, ka pogu rindÄ definÄ«cijas piezÄ«mju grÄmatiÅas faila augÅ”daÄ¼Ä ir poga
Kad esat pÄrliecinÄts, ka viss ir pareizi aizpildÄ«ts un esat gatavs, noklikŔķiniet uz pogas āPÄrbaudÄ«tā. Tas ir pilnÄ«gi normÄli, ka tu vÄl neesi izdomÄjis visas detaļas. TÄtad funkcija "PÄrbaudÄ«t" darbosies automÄtiski un veiks daudzas stila un konsekvences pÄrbaudes. Bieži vien tas nekavÄjoties liks jums apstiprinÄt un pieÅemt labojumus (piemÄram: āÅ ai rindai jÄbeidzas ar koluā, un tas liks ievadÄ«t kolu). Dažreiz viÅa lÅ«gs jums paÅ”am kaut ko pievienot vai mainÄ«t. MÄs pastÄvÄ«gi pievienosim jaunas funkcijas pogas PÄrbaudÄ«t automÄtiskajai funkcionalitÄtei, taÄu pamatÄ tÄs mÄrÄ·is ir nodroÅ”inÄt, lai viss, ko jÅ«s iesniedzat lÄ«dzekļu krÄtuvÄ, jau precÄ«zi atbilstu pÄc iespÄjas vairÄk stila vadlÄ«nijÄm.
TÄtad, pÄc "Check" palaiÅ”anas varat izmantot "PriekÅ”skatÄ«jums". "PriekÅ”skatÄ«jums" izveido dokumentÄcijas lapas priekÅ”skatÄ«jumu, ko definÄjÄt savai funkcijai. Varat arÄ« izveidot priekÅ”skatÄ«jumu failam, kas izveidots jÅ«su datorÄ, vai failam, kas atrodas mÄkoÅkrÄtuvÄ. Ja kÄda iemesla dÄļ neesat apmierinÄts ar to, ko redzat priekÅ”skatÄ«jumÄ, vienkÄrÅ”i atgriezieties un veiciet nepiecieÅ”amos labojumus un pÄc tam vÄlreiz noklikŔķiniet uz pogas PriekÅ”skatÄ«jums.
Tagad esat gatavs ievietot savu funkciju repozitorijÄ. Poga Izvietot piedÄvÄ Äetras iespÄjas:
Å ajÄ darbÄ«bÄ svarÄ«gi ir tas, ka varat iesniegt savu funkciju Wolfram funkciju repozitorijÄ, lai tÄ bÅ«tu pieejama ikvienam. TajÄ paÅ”Ä laikÄ varat arÄ« izvietot savu funkciju ierobežotam lietotÄju skaitam. PiemÄram, varat izveidot funkciju, kas tiek viesota lokÄli jÅ«su datorÄ, lai tÄ bÅ«tu pieejama, kad lietojat konkrÄto datoru. Vai arÄ« varat to ievietot savÄ
TÄtad pieÅemsim, ka vÄlaties faktiski iesniegt savu funkciju Wolfram funkciju zinÄÅ”anu bÄzei. Lai to izdarÄ«tu, repozitorijÄ noklikŔķiniet uz pogas āIesniegtā. Kas tad notiek Å”obrÄ«d? JÅ«su pieteikums nekavÄjoties tiek ievietots rindÄ, lai to izskatÄ«tu un apstiprinÄtu mÅ«su Ä«paÅ”Ä kuratoru komanda.
Kad jÅ«su pieteikums turpinÄs apstiprinÄÅ”anas procesÄ (kas parasti ilgst vairÄkas dienas), jÅ«s saÅemsit paziÅojumus par tÄ statusu un, iespÄjams, ieteikumus turpmÄkai izmantoÅ”anai. Bet, tiklÄ«dz jÅ«su lÄ«dzeklis tiks apstiprinÄts, tas nekavÄjoties tiks publicÄts Wolfram funkciju krÄtuvÄ un bÅ«s pieejams ikvienam. (Un tas parÄdÄ«sies
Kam vajadzÄtu bÅ«t noliktavÄ?
JÄatzÄ«mÄ, ka mÅ«su uzÅÄmumam ir ļoti augsti standarti attiecÄ«bÄ uz pilnÄ«gumu, uzticamÄ«bu un vispÄrÄjo kvalitÄti, un no vairÄk nekÄ 6000 funkcijÄm, kuras esam jau iestrÄdÄjuÅ”i Wolfram valodÄ pÄdÄjo 30+ gadu laikÄ, visas atbilst iepriekÅ” minÄtajÄm prasÄ«bÄm. Wolfram Function Repository mÄrÄ·is ir izmantot visu Wolfram valodÄ jau esoÅ”o struktÅ«ru un funkcionalitÄti, lai pievienotu pÄc iespÄjas daudz vieglÄku funkciju (tas ir, augstÄkas veiktspÄjas funkcijas).
Protams, funkcijÄm Wolfram funkciju repozitorijÄ ir jÄatbilst Wolfram valodas dizaina principiem, lai tÄs varÄtu pilnÄ«bÄ mijiedarboties ar citÄm funkcijÄm un lietotÄju cerÄ«bÄm par to, kÄ funkcijai vajadzÄtu darboties pareizi. TomÄr funkcijÄm nav jÄbÅ«t vienlÄ«dz pilnÄ«gÄm vai uzticamÄm.
Wolfram valodas iebÅ«vÄtajÄs funkcijÄs mÄs smagi strÄdÄjam, lai programmÄÅ”anas funkcijas padarÄ«tu pÄc iespÄjas vispÄrÄ«gÄkas. TomÄr Wolfram funkciju repozitorijÄ nav nekas nepareizs, ja tajÄ ir funkcija, kas vienkÄrÅ”i apstrÄdÄ kÄdu ļoti specifisku, bet noderÄ«gu gadÄ«jumu. PiemÄram, funkcija
VÄl viens jautÄjums, kas saistÄ«ts ar iebÅ«vÄtajÄm funkcijÄm, ir tas, ka mÅ«su uzÅÄmums pieliek visas pÅ«les, lai apstrÄdÄtu visus netipiskos gadÄ«jumus, pareizi apstrÄdÄtu nepareizu ievadi utt. Funkciju repozitorijÄ ir pilnÄ«gi normÄli, ja ir Ä«paÅ”a funkcija, kas apstrÄdÄ galvenos problÄmas risinÄÅ”anas gadÄ«jumus un ignorÄ visus citus.
AcÄ«mredzams ir tas, ka ir labÄk, ja ir funkcijas, kas dara vairÄk un dara to labÄk, bet funkciju repozitorija optimizÄcijai - atŔķirÄ«bÄ no Wolfram valodas iebÅ«vÄtajÄm funkcijÄm - vajadzÄtu bÅ«t vairÄk funkciju, kas apvienotas ar vairÄkÄm funkcijÄm, nevis iedziļinÄties. katras konkrÄtÄs funkcijas Ä«stenoÅ”anas procesi.
Tagad apskatÄ«sim piemÄru par funkciju testÄÅ”anu repozitorijÄ. Konsekvences cerÄ«bas Å”ÄdÄm funkcijÄm, protams, ir daudz zemÄkas nekÄ iebÅ«vÄtajÄm valodas funkcijÄm. Tas jo Ä«paÅ”i attiecas uz gadÄ«jumiem, kad funkcijas ir atkarÄ«gas no ÄrÄjiem resursiem, piemÄram, API, ir svarÄ«gi pastÄvÄ«gi veikt konsekventus testus, kas automÄtiski notiek verifikÄcijas algoritmu ietvaros. nb failÄ varat skaidri norÄdÄ«t definÄ«cijas (sadaÄ¼Ä PapildinformÄcija) un norÄdÄ«t tik daudz testu, ko nosaka ievades un izvades virknes vai pilni rakstzÄ«mju objekti.
TÄ rezultÄtÄ funkciju krÄtuvei bÅ«s vairÄkas ievieÅ”anas sarežģītÄ«bas. Dažas no tÄm bÅ«s tikai viena koda rindiÅa, citas var ietvert tÅ«kstoÅ”iem vai desmitiem tÅ«kstoÅ”u rindiÅu, iespÄjams, izmantojot daudzas palÄ«gfunkcijas. Kad ir vÄrts pievienot funkciju, kuras definÄÅ”anai nepiecieÅ”ams ļoti maz koda? BÅ«tÄ«bÄ, ja funkcijai ir
Funkciju repozitorija galvenais mÄrÄ·is (kÄ norÄda tÄs nosaukums) ir ieviest valodÄ jaunas funkcijas. Ja vÄlaties pievienot jaunus datus vai
PatiesÄ«bÄ ir divi veidi. IespÄjams, vÄlÄsities ieviest jaunu objekta tipu, kas tiks izmantots jaunajÄs funkcijÄs funkciju repozitorijÄ. Un Å”ajÄ gadÄ«jumÄ jÅ«s vienmÄr varat vienkÄrÅ”i pierakstÄ«t tÄ simbolisko attÄlojumu un izmantot to, ievadot vai izvadot funkcijas funkciju repozitorijÄ.
Bet ko darÄ«t, ja vÄlaties attÄlot objektu un pÄc tam, izmantojot esoÅ”Äs Wolfram valodas funkcijas, definÄt, ka vÄlaties ar to strÄdÄt? Wolfram valodai vienmÄr ir bijis viegls mehÄnisms, ko sauc par to
TÄtad, kas varÄtu bÅ«t funkcijas kodÄ funkciju repozitorijÄ?
Vai viss Wolfram lÄ«dzekļu repozitorija kods ir jÄraksta Wolfram? Protams, ÄrÄjÄ API iekÅ”Äjais kods nedrÄ«kst bÅ«t rakstÄ«ts Wolfram valodÄ, kas pat neveido valodas kodu. Faktiski, ja atrodat funkciju gandrÄ«z jebkurÄ ÄrÄjÄ valodÄ vai bibliotÄkÄ, varat izveidot iesaiÅojumu, kas ļauj to izmantot Wolfram funkciju repozitorijÄ. (Parasti Å”im nolÅ«kam jÄizmanto iebÅ«vÄtÄs funkcijas
KÄda jÄga to darÄ«t? BÅ«tÄ«bÄ tas ļauj izmantot visu integrÄto Wolfram Language sistÄmu un visu tÄs vienoto programmatÅ«ras iespÄju komplektu. Ja bÄzes ievieÅ”anu iegÅ«stat no ÄrÄjas bibliotÄkas vai valodas, varat izmantot Wolfram valodas bagÄtÄ«go simbolisko struktÅ«ru, lai izveidotu Ärtu augstÄkÄ lÄ«meÅa funkciju, kas lietotÄjiem ļauj viegli izmantot jebkuru jau ieviesto funkcionalitÄti. Vismaz tam vajadzÄtu bÅ«t iespÄjamam ideÄlÄ pasaulÄ, kur pastÄv visi bibliotÄku ielÄdes bloki utt., un tÄdÄ gadÄ«jumÄ tos automÄtiski apstrÄdÄtu Volframa valoda. (JÄatzÄ«mÄ, ka praksÄ var rasties problÄmas ar
Starp citu, pirmo reizi aplÅ«kojot tipiskas ÄrÄjÄs bibliotÄkas, tÄs bieži Ŕķiet pÄrÄk sarežģītas, lai tÄs aptvertu tikai dažas funkcijas, taÄu daudzos gadÄ«jumos lielu daļu sarežģītÄ«bas rada bibliotÄkai nepiecieÅ”amÄs infrastruktÅ«ras izveide un visas funkcijas. atbalstÄ«t to. TomÄr, izmantojot Wolfram valodu, infrastruktÅ«ra parasti jau ir iebÅ«vÄta pakotnÄs, un tÄpÄc nav nepiecieÅ”ams detalizÄti atklÄt visas Ŕīs atbalsta funkcijas, bet tikai jÄveido funkcijas "augstÄkajÄm" lietojumprogrammas funkcijÄm bibliotÄkÄ. .
ZinÄÅ”anu bÄzes "ekosistÄma".
Ja esat uzrakstÄ«jis funkcijas, kuras izmantojat regulÄri, iesniedziet tÄs Wolfram funkciju repozitorijÄ! Ja kaut kas vairÄk no tÄ neiznÄks (valodas attÄ«stÄ«ba), tad arÄ« tad jums bÅ«s daudz ÄrtÄk izmantot funkcijas personÄ«gai lietoÅ”anai. TomÄr ir loÄ£iski pieÅemt, ka, regulÄri lietojot funkcijas, iespÄjams, ka tÄs noderÄs arÄ« citiem lietotÄjiem.
Protams, jÅ«s varat nonÄkt situÄcijÄ, kad nevarat vai nevÄlaties koplietot savas funkcijas vai iegÅ«t piekļuvi privÄtiem informÄcijas resursiem. Pat Å”Ädos gadÄ«jumos varat vienkÄrÅ”i izvietot funkcijas savÄ mÄkoÅa kontÄ,
FunkcijÄm, ko iesniedzat Wolfram funkciju repozitorijÄ, nav jÄbÅ«t perfektÄm; tiem vienkÄrÅ”i ir jÄbÅ«t noderÄ«giem. Å Ä« ir nedaudz lÄ«dzÄ«ga sadaļai "Kļūdas" klasiskajÄ Unix dokumentÄcijÄ - sadaÄ¼Ä "DefinÄ«cijas" ir sadaļa "Autora piezÄ«mes", kurÄ varat aprakstÄ«t ierobežojumus, problÄmas utt., ko jau zinÄt par savu funkciju. TurklÄt, iesniedzot lÄ«dzekli repozitorijÄ, varat pievienot iesniegÅ”anas piezÄ«mes, kuras izlasÄ«s Ä«paÅ”a kuratoru komanda.
Kad lÄ«dzeklis ir publicÄts, tÄs lapas apakÅ”Ä vienmÄr ir divas saites: "
Dažreiz jÅ«s vienkÄrÅ”i vÄlaties izmantot funkcijas no Wolfram funkciju krÄtuves, piemÄram, iebÅ«vÄtÄs funkcijas, neapskatot to kodu. TomÄr, ja vÄlaties ieskatÄ«ties iekÅ”Ä, augÅ”pusÄ vienmÄr ir piezÄ«mju bloka poga. NoklikŔķiniet uz tÄ, un jÅ«s iegÅ«sit savu oriÄ£inÄlÄs definÄ«cijas piezÄ«mju grÄmatiÅas kopiju, kas tika iesniegta lÄ«dzekļu repozitorijÄ. Dažreiz jÅ«s varat to vienkÄrÅ”i izmantot kÄ piemÄru savÄm vajadzÄ«bÄm. TajÄ paÅ”Ä laikÄ jÅ«s varat arÄ« izstrÄdÄt savu Ŕīs funkcijas modifikÄciju. IespÄjams, vÄlÄsities publicÄt Ŕīs funkcijas, kuras atradÄt savÄ datorÄ vai laputu mÄkoÅa krÄtuves kontÄ, iespÄjams, vÄlaties tÄs iesniegt funkciju zinÄÅ”anu bÄzÄ, iespÄjams, kÄ sÄkotnÄjÄs funkcijas uzlabotu, paplaÅ”inÄtu versiju.
NÄkotnÄ mÄs plÄnojam atbalstÄ«t Git style forking funkciju krÄtuvÄm, taÄu paÅ”laik mÄs cenÅ”amies to saglabÄt vienkÄrÅ”u, un mums vienmÄr ir tikai viena akceptÄta katras funkcijas versija, kas ir iebÅ«vÄta valodÄ. BiežÄk nekÄ nÄ (ja vien izstrÄdÄtÄji neatsakÄs no izstrÄdÄto lÄ«dzekļu uzturÄÅ”anas un nereaÄ£Ä uz lietotÄju iesniegumiem), sÄkotnÄjais lÄ«dzekļa autors pÄrÅem kontroli pÄr tÄ atjauninÄjumiem un iesniedz jaunas versijas, kuras pÄc tam tiek pÄrskatÄ«tas un, ja tÄs iztur pÄrskatÄ«Å”anas procesu. , publicÄts valodÄ.
ApskatÄ«sim jautÄjumu par to, kÄ darbojas izstrÄdÄto funkciju āversijaā. PaÅ”laik, kad izmantojat funkciju no funkciju krÄtuves, tÄs definÄ«cija tiks pastÄvÄ«gi saglabÄta jÅ«su datorÄ (vai mÄkoÅa kontÄ, ja izmantojat mÄkoni). Ja ir pieejama jauna funkcijas versija, nÄkamreiz, kad to izmantosit, jÅ«s saÅemsit ziÅojumu, kas informÄs par to. Un, ja vÄlaties atjauninÄt funkciju uz jaunu versiju, varat to izdarÄ«t, izmantojot komandu
Viena no skaistajÄm lietÄm Wolfram funkciju krÄtuvÄ ir tÄ, ka jebkura Wolfram valodas programma jebkurÄ vietÄ var izmantot tÄs funkcijas. Ja programma parÄdÄs piezÄ«mju grÄmatiÅÄ, bieži vien ir Ärti formatÄt repozitorija funkcijas kÄ viegli lasÄmas "funkciju binÄro objektu" funkcijas (iespÄjams, ar atbilstoÅ”u versiju komplektu).
JÅ«s vienmÄr varat piekļūt jebkurai funkciju repozitorijas funkcijai, izmantojot tekstu
KÄ tas strÄdÄ?
Wolfram repozitorijas funkcijÄs tas ir iespÄjams, izmantojot tieÅ”i to paÅ”u
ApsvÄrt
Izmantojot funkciju, iekÅ”pusÄ varat redzÄt kÄdu informÄciju
KÄ darbojas resursa funkcijas iestatÄ«Å”ana? VienkÄrÅ”Äkais ir tikai vietÄjs gadÄ«jums. Å eit ir piemÄrs, kas izmanto funkciju (Å”ajÄ gadÄ«jumÄ tikai tÄ«ru funkciju) un definÄ to kÄ resursa funkciju konkrÄtai programmas sesijai:
Kad esat izveidojis definīciju, varat izmantot resursa funkciju:
Å emiet vÄrÄ, ka Å”ajÄ funkciju lÄse ir melna ikona . Tas nozÄ«mÄ, ka funkcija BLOB attiecas uz atmiÅÄ esoÅ”o resursu funkciju, kas definÄta paÅ”reizÄjai sesijai. Resursa funkcijai, kas pastÄvÄ«gi saglabÄta jÅ«su datorÄ vai mÄkoÅa kontÄ, ir pelÄka ikona . Un ir oranža ikona oficiÄlai resursa funkcijai Wolfram funkciju krÄtuvÄ .
TÄtad, kas notiek, izmantojot definÄ«ciju piezÄ«mju grÄmatiÅas izvÄlni IzvÄrst? PirmkÄrt, tas Åem visas piezÄ«mju grÄmatiÅÄ esoÅ”Äs definÄ«cijas un no tÄm izveido simbolisku
Funkcijas lokÄla izvietoÅ”ana no datora krÄtuves tiek veikta, izmantojot komandu
Ja noklikŔķinÄsit uz pogas Iesniegt funkciju krÄtuvei, kas notiek zem tÄ
PÄc noklusÄjuma iesniegumi tiek iesniegti ar vÄrdu, kas saistÄ«ts ar jÅ«su Wolfram ID. Bet, ja iesniedzat pieteikumu izstrÄdes komandas vai organizÄcijas vÄrdÄ, varat
Kad esat iesniedzis kÄdu no savÄm funkcijÄm funkciju zinÄÅ”anu bÄzÄ, tÄ tiks ievietota pÄrskatÄ«Å”anas rindÄ. Ja saÅemat atbildi komentÄrus, tie parasti bÅ«s teksta faila formÄ, kam pievienotas papildu ākomentÄru Ŕūnasā. JÅ«s vienmÄr varat pÄrbaudÄ«t sava pieteikuma statusu, apmeklÄjot vietni
Daži smalkumi darbÄ
No pirmÄ acu uzmetiena var Ŕķist, ka varat vienkÄrÅ”i paÅemt definÄ«ciju piezÄ«mju grÄmatiÅu un burtiski ievietot to funkciju repozitorijÄ, tomÄr patiesÄ«bÄ ir daudz smalkumu, un, lai tos apstrÄdÄtu, ir jÄveic diezgan sarežģīta metaprogrammÄÅ”ana, jÄapstrÄdÄ simboliska apstrÄde. kÄ kodu, kas definÄ funkciju , un pats Notepad ir definÄts. LielÄkoties tas notiek iekÅ”Äji, aizkulisÄs, taÄu tam var bÅ«t zinÄmas sekas, kuras ir vÄrts saprast, ja plÄnojat sniegt ieguldÄ«jumu funkciju zinÄÅ”anu bÄzÄ.
PirmÄ tÅ«lÄ«tÄjÄ smalkums: kad aizpildÄt definÄ«ciju piezÄ«mju grÄmatiÅu, varat vienkÄrÅ”i atsaukties uz savu funkciju visur, izmantojot tÄdu nosaukumu kÄ MyFunction, kas izskatÄs kÄ parasts funkcijas nosaukums Wolfram valodÄ, bet funkciju repozitorija dokumentÄcijÄ tas tiek aizstÄts
Otrs smalkums: veidojot resursa funkciju no definÄ«ciju piezÄ«mju grÄmatiÅas, visas funkcijas definÄ«cijÄ iesaistÄ«tÄs atkarÄ«bas ir jÄuztver un skaidri jÄiekļauj. TomÄr, lai nodroÅ”inÄtu, ka definÄ«cijas paliek modulÄras, jums viss ir jÄievieto unikÄlÄ veidÄ
Parasti jÅ«s nekad neredzÄsit Ŕīs nosaukumvietas konfigurÄÅ”anai izmantotÄ koda pÄdas. Bet, ja kÄda iemesla dÄļ izsaucat nepietiekami izpildÄ«tu simbolu savÄ funkcijÄ, tad redzÄsit, ka Å”is simbols atrodas funkcijas iekÅ”ÄjÄ kontekstÄ. TomÄr, apstrÄdÄjot Definition Notepad, vismaz paÅ”ai funkcijai atbilstoÅ”ais simbols ir
Funkciju repozitorijs ir paredzÄts jaunu funkciju definÄÅ”anai. Un Ŕīm funkcijÄm var bÅ«t iespÄjas. Bieži vien Å”ie parametri (piemÄram,
LielÄkÄ daļa funkciju vienkÄrÅ”i dara to, kas tÄm ir jÄdara katru reizi, kad tÄs tiek izsauktas, taÄu dažas funkcijas ir jÄinicializÄ, lai tÄs varÄtu palaist noteiktÄ sesijÄ ā un, lai atrisinÄtu Å”o problÄmu, sadaÄ¼Ä DefinÄ«cija ir sadaļa "InicializÄcija".
Funkcijas no repozitorija var izmantot citas funkcijas, kas jau atrodas repozitorijÄ; lai iestatÄ«tu definÄ«cijas funkciju repozitorijai, kas ietver divas (vai vairÄkas) funkcijas, kas atsaucas viena uz otru, tÄs ir jÄizvieto programmas sesijÄ, lai varÄtu atsauce, piemÄram, uz tiem
AttÄ«stÄ«bas perspektÄ«vas. Kam vajadzÄtu notikt, kad krÄtuve kļūst patieÅ”Äm liela?
Å odien mÄs tikai uzsÄkam Wolfram Feature Repository, taÄu laika gaitÄ mÄs sagaidÄm, ka tÄ lielums un funkcionalitÄte var ievÄrojami palielinÄties, un, tÄ pieaugot izstrÄdes gaitÄ, radÄ«sies dažÄdas problÄmas, kuras, kÄ mÄs jau paredzam, var rasties.
PirmÄ problÄma attiecas uz funkciju nosaukumiem un to unikalitÄti. Funkciju krÄtuve ir veidota tÄ, ka tÄpat kÄ Wolfram valodas iebÅ«vÄtÄs funkcijas varat atsaukties uz jebkuru funkciju, vienkÄrÅ”i norÄdot tÄs nosaukumu. Bet tas neizbÄgami nozÄ«mÄ, ka funkciju nosaukumiem ir jÄbÅ«t globÄli unikÄliem visÄ repozitorijÄ, lai, piemÄram, varÄtu bÅ«t tikai viens
SÄkumÄ tÄ var Ŕķist liela problÄma, taÄu ir vÄrts saprast, ka bÅ«tÄ«bÄ tÄ ir tÄda pati problÄma kÄ interneta domÄniem vai sociÄlo mediju rokturiem. Un fakts ir tÄds, ka sistÄmai vienkÄrÅ”i ir jÄbÅ«t reÄ£istratoram - un Ŕī ir viena no lomÄm, ko mÅ«su uzÅÄmums pildÄ«s Wolfram funkciju zinÄÅ”anu bÄzei. (PrivÄtÄm repozitorija versijÄm to reÄ£istratori var bÅ«t administratori.) Protams, interneta domÄnu var reÄ£istrÄt arÄ« bez tÄ, bet funkciju repozitorijÄ funkcijas nosaukumu var reÄ£istrÄt tikai tad, ja ir faktiska definÄ«cija. funkcija.
Daļa no mÅ«su lomas Wolfram funkciju zinÄÅ”anu bÄzes pÄrvaldÄ«bÄ ir nodroÅ”inÄt, lai funkcijai izvÄlÄtais nosaukums bÅ«tu loÄ£isks, Åemot vÄrÄ funkcijas definÄ«ciju, un lai tas atbilstu Wolfram valodas nosaukumu pieŔķirÅ”anas konvencijÄm. Mums ir vairÄk nekÄ 30 gadu pieredze iebÅ«vÄto funkciju nosaukÅ”anÄ Volframa valodÄ, un mÅ«su kuratoru komanda sniegs Å”o pieredzi arÄ« funkciju repozitorijÄ. Protams, vienmÄr ir izÅÄmumi. PiemÄram, var Ŕķist, ka kÄdai funkcijai bÅ«tu vÄlams izmantot Ä«su nosaukumu, taÄu labÄk ir "aizstÄvÄties" ar garÄku, konkrÄtÄku nosaukumu, jo ir mazÄka iespÄja nÄkotnÄ sastapties ar kÄdu, kas vÄlas izveidot lÄ«dzÄ«gu funkcijas nosaukumu. .
(Å eit jÄatzÄ«mÄ, ka vienkÄrÅ”a biedra taga pievienoÅ”ana funkciju atdalÄ«Å”anai nedos paredzÄto efektu. Jo, ja vien nepieprasÄ«sit vienmÄr pieŔķirt tagu, katrai funkcijai bÅ«s jÄdefinÄ noklusÄjuma tags, kÄ arÄ« jÄpieŔķir autora tagi. , kam atkal bÅ«tu nepiecieÅ”ama globÄla koordinÄcija.)
Pieaugot Wolfram funkciju zinÄÅ”anu bÄzei, viena no problÄmÄm, kas, iespÄjams, radÄ«sies, ir funkciju atklÄsme, ko sistÄma nodroÅ”ina.
Wolfram valodas iebÅ«vÄtajÄm funkcijÄm ir tÄ sauktais noteikÅ”anas slÄnis, ko nodroÅ”ina
Wolfram funkciju repozitorijs ir konfigurÄts kÄ pastÄvÄ«gs funkciju repozitorijs, kurÄ jebkura funkcija tajÄ vienmÄr darbosies. Protams, var kļūt pieejamas jaunas funkciju versijas, un mÄs sagaidÄm, ka dažas funkcijas laika gaitÄ, protams, novecos. Funkcijas darbosies, ja tÄs tiks izmantotas programmÄs, bet to dokumentÄcijas lapÄs bÅ«s saites uz jaunÄm, uzlabotÄm funkcijÄm.
Wolfram Feature Repository ir izstrÄdÄta, lai palÄ«dzÄtu jums Ätri atklÄt jaunas funkcijas un apgÅ«t jaunus Wolfram valodas lietoÅ”anas veidus. MÄs esam ļoti optimistiski noskaÅoti, ka daļai no lÄ«dzekļu krÄtuvÄ izpÄtÄ«tÄ galu galÄ bÅ«s jÄga kļūt par Wolfram valodas pamata daļÄm. PÄdÄjo desmit gadu laikÄ mums ir bijis lÄ«dzÄ«gs komplekts
VissvarÄ«gÄkais Å”eit ir tas, ka funkcija funkciju repozitorijÄ ir kaut kas tÄds, kas Å”obrÄ«d ir pieejams katram lietotÄjam. IespÄjams, ka dzimtÄs valodas funkcija varÄtu bÅ«t daudz labÄka un efektÄ«vÄka, taÄu funkciju repozitorijs ļautu lietotÄjiem uzreiz piekļūt visÄm jaunajÄm funkcijÄm. Un, pats galvenais, Ŕī koncepcija ļauj ikvienam pievienot visas vÄlamÄs jaunas funkcijas.
AgrÄk Volframa valodas vÄsturÄ Å”Ä« ideja nebÅ«tu darbojusies tik labi, kÄ tÄ ir bijusi, taÄu Å”ajÄ posmÄ valodai ir tik daudz pūļu un tik dziļa izpratne par valodas dizaina principiem, ka tagad Ŕķiet ļoti liela lietotÄju kopiena var pievienot lÄ«dzekļus, kas saglabÄs dizaina konsekvenci, lai padarÄ«tu tos noderÄ«gas plaÅ”am lietotÄju lokam.
Wolfram Language lietotÄju kopienÄ valda neticami talanta gars(?). (Protams, Å”ajÄ kopienÄ ir iekļauti daudzi vadoÅ”i pÄtniecÄ«bas un attÄ«stÄ«bas darbinieki dažÄdÄs jomÄs.) Es ceru, ka Wolfram Feature Repository nodroÅ”inÄs efektÄ«vu platformu Ŕī talanta gara atraÅ”anai un izplatÄ«Å”anai. Tikai kopÄ«giem spÄkiem mÄs varam radÄ«t kaut ko tÄdu, kas bÅ«tiski paplaÅ”inÄs to jomu, uz kuru var attiecinÄt Volframa valodas skaitļoÅ”anas paradigmu.
VairÄk nekÄ 30 gadu laikÄ mÄs esam gÄjuÅ”i garu ceļu ar Volframa valodu. Tagad kopÄ, iesim vÄl tÄlÄk. Es ļoti aicinu visus cienÄ«jamos Wolfram valodas lietotÄjus visÄ pasaulÄ izmantot funkcionÄlo repozitoriju kÄ platformu Å”im nolÅ«kam, kÄ arÄ« jauno programmatÅ«ras projektu, piemÄram, Free Wolfram Engine for Developers.
Avots: www.habr.com