Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

Sveiks, Habr! Es piedāvāju jÅ«su uzmanÄ«bai StÄ«vena Volframa ziņas tulkojumu "Wolframa funkciju krātuve: atvērtas platformas uzsākÅ”ana Wolfram valodas paplaÅ”ināŔanai".

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

PriekŔnosacījumi Volframa valodas konsekvencei

Å odien kopā ar programmÄ“Å”anas valodu stāvam uz lielu sasniegumu sliekŔņa Volframa valoda. Tikai pirms trim nedēļām mēs uzsākām darbu bezmaksas Wolfram dzinējs izstrādātājiemlai palÄ«dzētu mÅ«su lietotājiem integrēt Wolfram valodu savos liela mēroga programmatÅ«ras projektos. Å odien mēs sākam darbu Wolfram funkciju repozitorijs, lai nodroÅ”inātu koordinētu platformu funkcijām, kas izveidotas Wolfram valodas paplaÅ”ināŔanai, kā arÄ« atveram funkciju krātuvi ikvienam, kurÅ” var dot ieguldÄ«jumu mÅ«su programmatÅ«ras produkta izstrādē.

Wolfram Function Repository ir kaut kas iespējams, pateicoties Wolfram valodas unikālajam raksturam ne tikai kā programmÄ“Å”anas valodai, bet arÄ« kā pilna mēroga skaitļoÅ”anas valoda. Tradicionālajās programmÄ“Å”anas valodās nozÄ«mÄ«gas jaunas funkcionalitātes pievienoÅ”ana parasti ietver veselu papildu bibliotēku izveidi, kas var darboties vai nedarboties, ja tās tiek izmantotas kopā. Tomēr Volframa valodā tik daudz jau ir iebÅ«vēts paŔā valodā, ka ir iespējams bÅ«tiski paplaÅ”ināt tā funkcionalitāti, vienkārÅ”i pievienojot jaunas funkcijas, kas uzreiz tiek integrētas visas valodas holistiskajā struktÅ«rā.

Piemēram, Wolfram funkciju krātuve jau satur 532 jaunas funkcijas strukturēti 26 tematiskās kategorijās:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

Tāpat vairāk nekā 6000 standarta funkcijas, kas iebūvēta Wolfram valodā, katrai repozitorija funkcijai ir dokumentācijas lapa ar detalizētu to aprakstu un darba piemēriem:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

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 12.0. versija:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

Å eit jāatzÄ«mē, ka apstrādājot LogoQRCods Jums nav nepiecieÅ”ams, piemēram, iestatÄ«t ā€œattēlu apstrādes bibliotēkuā€, jo mēs jau esam ieviesuÅ”i konsekventu un rÅ«pÄ«gi algoritmisku veidu Volframa valodā. attēlu apstrāde, ko var nekavējoties apstrādāt ar dažādām grafiskās valodas funkcijām:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

Ceru, ka ar atbalstu brÄ«niŔķīga un talantÄ«ga kopiena, kas pēdējo desmitgažu laikā ir augusi un paplaÅ”inājusies (balstoties uz Volframa valodu). Wolfram funkciju repozitorijs pārskatāmā nākotnē ļaus ievērojami paplaÅ”ināt valodā pieejamo (iespējams, potenciāli nozÄ«mÄ«gu, specializētu dažādās zinātnes un tehnoloÄ£iju jomās) funkciju klāstu. Tādējādi kļūst iespējams izmantot gan valodas saturu (tās iebÅ«vētās funkcijas), gan attÄ«stÄ«bas principiem, kas tiek ieviesti, pamatojoties uz valodu. (Å eit jāatzÄ«mē, ka Volframa valodā jau ir vairāk nekā 30 gadu attÄ«stÄ«bas un stabilas izaugsmes vēsture).
Repozitorija funkcijās var bÅ«t mazi vai lieli koda fragmenti, kas rakstÄ«ti Wolfram valodā. Piemēram, tie varētu bÅ«t zvani ārējās API un pakalpojumi vai ārējās bibliotēkas citās valodās. Å Ä«s pieejas unikālā iezÄ«me ir tāda, ka, iedziļinoties lietotāja lÄ«meņa funkcionalitātē, neradÄ«sies iespējamās pretrunas, jo pieeja ir balstÄ«ta uz konsekvento Wolfram valodas struktÅ«ru ā€” un katra funkcija automātiski darbosies pareizi ā€” tieÅ”i tā, kā iecerēts.viņai vajadzētu.
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 aizpildot notepad teksta failu (ar paplaÅ”inājumu nb) WL. IebÅ«vētās automātiskās funkcijas ļauj pārbaudÄ«t repozitorijai pievienotās jaunās funkcijas, lai nodroÅ”inātu to integrāciju valodā. MÅ«su uzņēmums liek likmes uz plaÅ”o lietotāju loku, kuri var integrēt savas funkcijas valodā, nevis uz jauno funkciju lielo sarežģītÄ«bu ā€” un, lai gan notiek pārskatÄ«Å”anas process, mēs neuzstājam uz kaut ko lÄ«dzÄ«gu rÅ«pÄ«ga dizaina analÄ«ze vai stingri standarti attiecÄ«bā uz jauno lietotāja funkciju pilnÄ«gumu un uzticamÄ«bu, pretstatā mÅ«su izmantotajā pamatvalodā iebÅ«vēto funkciju stingrākai pārbaudei.

Å 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 pievienoja vairākas funkcijas uz sākotnējo datu bāzi. Daudzi no tiem ir balstÄ«ti uz kodu, kuru esmu personÄ«gi izstrādājis ilgu laiku. Un man vajadzēja tikai dažas minÅ«tes, lai tos nosÅ«tÄ«tu uz krātuvi. Tagad, kad tās atrodas repozitorijā, es beidzot varu ā€” nekavējoties un jebkurā laikā ā€” izmantot Ŕīs funkcijas pēc vajadzÄ«bas, neuztraucoties par failu meklÄ“Å”anu, pakotņu lejupielādi utt.

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 MathSource, kas izveidota Mathematica 1991. gadā, pamatojoties uz CD-ROM utt.). Protams, ievieÅ”anai piedāvātā pieeja, kuras pamatā ir Wolfram funkciju repozitorijs, ir jaudÄ«gāks un uzticamāks rÄ«ks iepriekÅ” minēto uzdevumu Ä«stenoÅ”anai.

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 pilnvērtÄ«ga skaitļoÅ”anas valoda. Un lÄ«dz ar to Wolfram funkciju repozitorija ievieÅ”anas pieejas bÅ«tÄ«ba ir izmantot vienotu pieeju programmÄ“Å”anai un jaunu funkciju izstrādei, kuras tiek secÄ«gi pievienotas un iekļaujas valodas ietvarā, lai tā varētu attÄ«stÄ«ties un attÄ«stÄ«ties kopā.

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 tieÅ”raides programmÄ“Å”anas videokas ietver simtiem stundu standarta programmu izveides process). Å Ä« pieeja galu galā padara Wolfram lÄ«dzekļu krātuvi spējÄ«gu darboties labi, ir Wolfram valodas strukturālais raksturs ar lielu skaitu papildu un daudzveidÄ«go bibliotēku, kas jau ir iebÅ«vētas valodā. Piemēram, ja jums ir funkcija, kas apstrādā attēlus, vai reti masÄ«viVai molekulārās struktÅ«rasun Ä£eogrāfiskie dati vai daži citi - to konsekventais simboliskais attēlojums jau pastāv valodā, un, pateicoties tam, jÅ«su funkcija nekavējoties kļūst saderÄ«ga ar citām valodas funkcijām.

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: Projekta Volframa demonstrācijas, tika palaists 2007. gadā un tagad darbojas tieÅ”saistē tieÅ”saistē ar vairāk nekā 12000 XNUMX lietotājiem paredzētu interaktÄ«vu demonstrāciju. IN Wolfram datu bāze ir vairāk nekā 600 gatavu datubāzu, kuras var izmantot Volframa valodā, un Wolfram neironu tÄ«kla krātuve gandrÄ«z katru nedēļu tiek papildināts ar jauniem neironu tÄ«kliem (Å”obrÄ«d jau ir 118) un tie uzreiz tiek savienoti caur funkciju NetModel Volframa valodā.

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 12.0. versija), varat secÄ«gi pārlÅ«kot galvenās izvēlnes cilnes: File > New > RepositoryItem > Function Repository Item, un jÅ«s saņemsit "DefinÄ«cijas piezÄ«mju grāmatiņa" (programmatiski darbgalda iekÅ”pusē. Varat arÄ« izmantot analogo funkciju - Izveidot piezÄ«mju grāmatiņu["Funkciju resurss"]):

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

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:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

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 "Stila vadlÄ«nijas", kurā ir paskaidrots, kā rÄ«koties, un pogu RÄ«ki, kas nodroÅ”ina rÄ«kus funkcijas dokumentācijas formatÄ“Å”anai.
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.

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

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:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

Å 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ā mākoņa konts, lai tas bÅ«tu pieejams jums, kad esat izveidojis savienojumu ar mākoni. Varat arÄ« publiski mitināt (izvietot) funkciju, izmantojot savu mākoņa kontu. Tā neatradÄ«sies centrālajā Wolfram funkciju repozitorijā, taču varēsiet kādam pieŔķirt URL, kas ļaus iegÅ«t jÅ«su lÄ«dzekli no jÅ«su konta. (Nākotnē mēs atbalstÄ«sim arÄ« centrālos repozitorijus visā mÅ«su uzņēmumā.)

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 jaunu funkciju ziņu apkopojumi un tā tālāk)

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 SendMailFromNotebook var saņemt failus vienā noteiktā formātā un izveidot pastu vienā noteiktā veidā. DaudzstÅ«ra diagramma veido diagrammas tikai ar noteiktām krāsām un marķējumu utt.

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. VerificationTest, cik uzskatāt par pareizu. Turklāt sistēma nepārtraukti cenÅ”as pārvērst jÅ«su sniegtos dokumentācijas piemērus par verifikācijas procesu (un dažreiz tas var bÅ«t diezgan resursietilpÄ«gs, piemēram, funkcijai, kuras rezultāts ir atkarÄ«gs no nejauÅ”iem skaitļiem vai diennakts laika).

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 labs mnemonisks vārds, ko lietotāji viegli saprastu, ja viņi to redzētu koda daļā, tad to jau var pievienot. Pretējā gadÄ«jumā, iespējams, ir labāk vienkārÅ”i pievienot kodu programmai katru reizi, kad tas ir jāizmanto.

Funkciju repozitorija galvenais mērķis (kā norāda tās nosaukums) ir ieviest valodā jaunas funkcijas. Ja vēlaties pievienot jaunus datus vai jaunas vienības, izmantojiet Wolfram datu krātuve. Bet ko darīt, ja vēlaties saviem aprēķiniem ieviest jaunus objektu veidus?

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 UpValues. Ar dažiem ierobežojumiem (Ä«paÅ”i funkcijām, kas nevar novērtēt savus argumentus), funkciju repozitorijs ļauj vienkārÅ”i attēlot funkciju un definēt tai vērtÄ«bas. (Palielināt cerÄ«bas uz konsekvenci, veidojot jaunu galveno dizainu, kas ir pilnÄ«bā integrēts visā Wolfram valodā, parasti ir ļoti svarÄ«ga procedÅ«ra, ko nevar sasniegt, vienkārÅ”i palielinot projekta izmaksas, un to mÅ«su uzņēmums veic kā daļu no projektiem valodas ilgtermiņa attÄ«stÄ«bai Å”is uzdevums nav mērÄ·is, kas tiek izvirzÄ«ts kā daļa no repozitorija attÄ«stÄ«bas).

Tātad, kas varētu bÅ«t funkcijas kodā funkciju repozitorijā? Viss, kas iebÅ«vēts Volframa valodā, protams (vismaz, ja tas neatspoguļo draudiem par droŔība un paÅ”as programmas kā skaitļoÅ”anas vides veiktspēju), kā arÄ« jebkuru funkciju no funkciju repozitorija. Tomēr ir arÄ« citas funkcijas: funkcija funkciju repozitorijā var izsaukt API vai iekŔā Volframa mākonisVai no cita avota. Protams, ar to ir saistÄ«ti daži riski. Sakarā ar to, ka nav garantijas, ka API nemainÄ«sies, un funkcija funkciju veikalā pārtrauks darboties. Lai palÄ«dzētu identificēt lÄ«dzÄ«gas problēmas, dokumentācijas lapā (sadaļā PrasÄ«bas) ir piezÄ«me par jebkuru lÄ«dzekli, kas balstās ne tikai uz iebÅ«vēto Wolfram Language funkcionalitāti. (Protams, runājot par reāliem datiem, problēmas var rasties pat ar Å”o funkcionalitāti ā€“ jo reālās pasaules dati nepārtraukti mainās, un dažreiz pat mainās to definÄ«cijas un struktÅ«ra.)

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 Ārējais novērtējums vai Ārējā funkcija Wolfram valodas kodā.)

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 ārējo valodu iestatÄ«Å”ana konkrēta datorsistēma un mākoņkrātuve var radÄ«t papildu droŔības problēmas).

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ā, precizējot tiesÄ«bas piekļuvi tiem. (Ja jÅ«su organizācijai ir Wolfram Enterprise privātais mākonis, tad drÄ«zumā tā varēs mitināt savu privāto funkciju repozitoriju, ko var administrēt no jÅ«su organizācijas un iestatÄ«t, vai treÅ”o puÅ”u lietotājiem skatÄ«t skatus.)

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: "NosÅ«tiet ziņojumu par Å”o funkciju"Un"Apspriediet Volframa kopienā" Ja pievienojat piezÄ«mi (piemēram, pastāstiet man par kļūdām), varat atzÄ«mēt izvēles rÅ«tiņu, kurā teikts, ka vēlaties, lai jÅ«su ziņojums un kontaktinformācija tiktu kopÄ«gota ar funkcijas autoru.

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 Resursu atjaunināŔana. ("Funkciju lāse" faktiski glabā vairāk versiju informācijas, un mēs plānojam to padarÄ«t pieejamāku mÅ«su lietotājiem nākotnē.)

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 ResourceFunction[...]. Un tas ir ļoti ērti, ja rakstāt kodu vai skriptus tieÅ”i Wolfram Engine, piemēram, ar izmantojot IDE vai teksta koda redaktoru (Ä«paÅ”i jāatzÄ«mē, ka funkciju repozitorijs ir pilnÄ«bā saderÄ«gs ar Bezmaksas Wolfram dzinējs izstrādātājiem).

Kā tas strādā?

Wolfram repozitorijas funkcijās tas ir iespējams, izmantojot tieÅ”i to paÅ”u resursu sistēmas bāzes, kā visas pārējās mÅ«su esoŔās krātuves (datu krātuve, Neironu tÄ«kla repozitorijs, demo projektu kolekcija utt.), tāpat kā visi citi Wolfram sistēmas resursi, ResourceFunction galu galā balstās uz funkciju ResourceObject.

Apsvērt ResourceFunction:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

Izmantojot funkciju, iekÅ”pusē varat redzēt kādu informāciju Informācija:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

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:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

Kad esat izveidojis definīciju, varat izmantot resursa funkciju:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

Ņemiet vērā, ka Å”ajā funkciju lāse ir melna ikona Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem. 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 Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem. Un ir oranža ikona oficiālai resursa funkcijai Wolfram funkciju krātuvē Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem.

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 ResourceObject). (Un, ja izmantojat teksta IDE vai programmu, varat arÄ« skaidri izveidot ResourceObject)

Funkcijas lokāla izvietoÅ”ana no datora krātuves tiek veikta, izmantojot komandu Vietējā keÅ”atmiņa lai resursa objekts to saglabātu kā LocalObject savā failu sistēmā. IzvietoÅ”ana mākoņa kontā tiek veikta, izmantojot komandu CloudDeploy resursa objektam, un publiska mākoņa izvietoÅ”ana ir CloudPublish. Visos gadÄ«jumos Resursu reÄ£istrs izmanto arÄ«, lai reÄ£istrētu resursa funkcijas nosaukumu, tāpēc ResourceFunction["vārds"] strādās.

Ja noklikŔķināsit uz pogas Iesniegt funkciju krātuvei, kas notiek zem tā ResourceSubmit izsauca resursa objektu. (Un, ja izmantojat teksta ievades saskarni, varat arī piezvanīt ResourceSubmit tieŔi.)

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 iestatÄ«t atseviŔķu izdevēja ID un tā vietā izmantojiet to kā nosaukumu, lai mijiedarbotos ar saviem uzskatiem.

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 resursu sistēmas dalÄ«bnieku portāls. Bet, tiklÄ«dz jÅ«su lÄ«dzeklis tiks apstiprināts, jÅ«s saņemsit paziņojumu (pa e-pastu) un jÅ«su lÄ«dzeklis tiks publicēts Wolfram lÄ«dzekļu krātuvē.

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 ResourceFunction["Mana funkcija"] ir tas, ko lietotāji faktiski izmantos, strādājot ar Å”o funkciju.

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ā nosaukumvieta. (Protams, funkcijas, kas to visu dara, atrodas funkciju repozitorijā.)

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 regulējams, lai nodroÅ”inātu vislabāko displeju kā funkcionāls BLOB, nevis neapstrādāts raksturs iekŔējā kontekstā.

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, Piegāde vai Attēla izmērs) varēs izmantot iebÅ«vētajām funkcijām, kā arÄ« tām, kurām jau ir iebÅ«vēti simboli. Bet dažreiz jaunai funkcijai var bÅ«t nepiecieÅ”amas jaunas opcijas. Lai saglabātu modularitāti, Å”iem parametriem ir jābÅ«t simboliem, kas definēti unikālā iekŔējā kontekstā (vai kaut kas lÄ«dzÄ«gs visu resursu funkcijām, tas ir, paÅ”iem). VienkārŔības labad funkciju repozitorijs ļauj definēt jaunas opcijas virkņu definÄ«cijās. Un lietotāja ērtÄ«bām Ŕīs definÄ«cijas (pieņemot, ka tās izmantoja OptionValue Šø OpcijasPattern) tiek apstrādāti arÄ« tā, lai, izmantojot funkcijas, parametrus varētu norādÄ«t ne tikai kā virknes, bet arÄ« kā globālus simbolus ar vienādiem nosaukumiem.

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 ResourceFunction["vārds"], tad varat izveidot vajadzÄ«gās Å”o funkciju kombinācijas, piemērus (es nesapratu) un pievienot krātuvei jaunu funkciju, pamatojoties uz jau iepriekÅ” publicētajām. (vai jau vai iepriekÅ” - abi vārdi ir neveikli)

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 ResourceFunction["Mana iecienÄ«tākā funkcija"].

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. meklÄ“Å”anas funkcija (un definÄ«ciju faili var ietvert atslēgvārdus utt.). Wolfram valodas iebÅ«vētajām funkcijām dokumentācijā ir visas savstarpējās atsauces, kas palÄ«dz ā€œreklamētā€ funkcijas. Funkcijas funkciju repozitorijā var atsaukties uz iebÅ«vētajām funkcijām. Bet kā ir otrādi? Lai to izdarÄ«tu, mēs eksperimentēsim ar dažādiem dizainiem, lai parādÄ«tu repozitorija funkcijas iebÅ«vēto funkciju dokumentācijas lapās.

Wolfram valodas iebÅ«vētajām funkcijām ir tā sauktais noteikÅ”anas slānis, ko nodroÅ”ina "palÄ«dzÄ«bas lapu" tÄ«kls, kas nodroÅ”ina sakārtotus ar noteiktām jomām saistÄ«to funkciju sarakstus. Vienmēr ir grÅ«ti pareizi lÄ«dzsvarot man lapas, un, Wolfram valodai augot, man lapas bieži ir pilnÄ«bā jāpārkārto. Ir diezgan viegli ievietot funkcijas no repozitorija plaŔās kategorijās un pat konsekventi sadalÄ«t Ŕīs kategorijas, taču daudz vērtÄ«gāk ir pareizi sakārtotas valodu atsauces lapas. Vēl nav skaidrs, kā tos vislabāk izveidot visai funkciju zināŔanu bāzei. Piemēram, CreateResourceObjectGallery funkciju repozitorijā ikviens var ievietot tÄ«mekļa lapu, kurā ir viņa "izvēle" no repozitorijas:

Wolfram funkciju krātuve: atvērtās piekļuves platforma Wolfram valodas paplaÅ”inājumiem

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 funkcijas, kas sākotnēji tika ieviestas Wolfram | Alfa. Un viena no mācÄ«bām, kas gÅ«ta no Ŕīs pieredzes, ir tāda, ka, lai sasniegtu kvalitātes un konsekvences standartus, uz kuriem mēs koncentrējamies it visā, kas ir iebÅ«vēts Volframa valodā, ir nepiecieÅ”ams daudz darba, kas bieži vien ir grÅ«tāks nekā sākotnējās pÅ«les idejas Ä«stenoÅ”anai. Pat ja tā, funkcija funkciju zināŔanu bāzē var kalpot kā ļoti noderÄ«gs koncepcijas pierādÄ«jums nākotnes funkcijai, kas galu galā var tikt iebÅ«vēta Wolfram valodā.

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

Pievieno komentāru