Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Hello, Habr! Nippreżenta għall-attenzjoni tagħkom traduzzjoni tal-post ta' Stephen Wolfram "Ir-Repożitorju tal-Funzjonijiet Wolfram: Tnedija ta' Pjattaforma Miftuħa għall-Estendi tal-Lingwa Wolfram".

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Prerekwiżiti għall-konsistenza tal-lingwa Wolfram

Illum ninsabu fuq l-għatba ta' kisbiet kbar flimkien mal-lingwa tal-ipprogrammar Lingwa Wolfram. Tliet ġimgħat ilu biss nedejna magna Wolfram b'xejn għall-iżviluppaturibiex ngħinu lill-utenti tagħna jintegraw il-Lingwa Wolfram fil-proġetti ta’ softwer fuq skala kbira tagħhom. Illum qed inniedu Repożitorju tal-funzjoni Wolfram, sabiex nipprovdu pjattaforma kkoordinata għal funzjonijiet maħluqa biex jestendu l-lingwa Wolfram, u niftħu wkoll repożitorju ta 'funzjonijiet għal kull min jista' jikkontribwixxi għall-iżvilupp tal-prodott tas-softwer tagħna.

Ir-Repożitorju tal-Funzjonijiet Wolfram huwa xi ħaġa magħmula possibbli min-natura unika tal-Lingwa Wolfram mhux biss bħala lingwa ta’ programmar, iżda wkoll bħala lingwa tal-kompjuters fuq skala sħiħa. F'lingwi ta' programmar tradizzjonali, iż-żieda ta' funzjonalità ġdida sinifikanti ġeneralment tinvolvi l-ħolqien ta' libreriji addizzjonali sħaħ li jistgħu jew ma jistgħux jaħdmu meta jintużaw flimkien. Madankollu, fil-Lingwa Wolfram tant huwa diġà mibni fil-lingwa stess, li huwa possibbli li tespandi b'mod sinifikanti l-funzjonalità tagħha billi sempliċement żżid funzjonijiet ġodda li huma immedjatament integrati fl-istruttura ħolistika tal-lingwa kollha.

Pereżempju, ir-repożitorju tal-funzjoni Wolfram diġà fih 532 karatteristika ġdida strutturat f'26 kategorija tematika:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Bl-istess mod aktar minn 6000 funzjoni standard, mibnija fil-lingwa Wolfram, kull funzjoni mir-repożitorju għandha paġna ta' dokumentazzjoni b'deskrizzjoni dettaljata tagħhom u eżempji ta' xogħol:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Biex tasal għall-paġna, ikkopja l-oġġett ta’ hawn fuq (funzjoni BLOB), waħħalha fil-linja tal-input u mbagħad ħaddem il-funzjoni - hija diġà mibnija fil-lingwa Wolfram u appoġġjata awtomatikament billi tibda b’ verżjoni 12.0:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Għandu jiġi nnutat hawnhekk li meta tipproċessa LogoQRCode M'għandekx bżonn, pereżempju, li twaqqaf "librerija tal-ipproċessar tal-immaġni" - peress li diġà implimentajna mod konsistenti u algoritmiku bir-reqqa fil-Lingwa Wolfram ipproċessar tal-immaġni, li jistgħu jiġu pproċessati immedjatament minn diversi funzjonijiet tal-lingwa grafika:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Nittama li bl-appoġġ komunità mill-isbaħ u b’talent, li ilha tikber u tespandi (ibbażata fuq il-Lingwa Wolfram) matul l-aħħar għexieren ta 'snin. Ir-repożitorju tal-funzjonijiet Wolfram se jippermetti għall-futur prevedibbli li jespandi b'mod sinifikanti l-firxa ta 'funzjonijiet (possibilment potenzjalment sinifikanti, speċjalizzati f'diversi oqsma tax-xjenza u t-teknoloġija) disponibbli fil-lingwa. Għalhekk, isir possibbli li tuża kemm il-kontenut tal-lingwa (il-funzjonijiet inkorporati tagħha) kif ukoll prinċipji ta' żvilupp, li huma implimentati bbażati fuq il-lingwa. (Ta 'min jinnota hawnhekk li l-Lingwa Wolfram diġà għandha aktar minn Storja ta '30 sena ta' żvilupp u tkabbir stabbli).
Funzjonijiet mir-repożitorju jista' jkun fihom biċċiet żgħar jew kbar ta' kodiċi miktuba fil-Lingwa Wolfram. Pereżempju, dawn jistgħu jkunu sejħiet APIs u servizzi esterni jew libreriji esterni f'lingwi oħra. Il-karatteristika unika ta' dan l-approċċ hija li meta tħaffef għal funzjonalità fil-livell tal-utent, ma jkun hemm l-ebda inkonsistenzi potenzjali minħabba li l-approċċ huwa mibni fuq l-istruttura konsistenti tal-Lingwa Wolfram - u kull funzjoni awtomatikament taħdem b'mod korrett - eżattament kif maħsuba hi għandha.
Il-qoxra u l-istruttura tal-ipprogrammar tar-Repożitorju tal-Features Wolfram hija mfassla sabiex kulħadd ikun jista’ jikkontribwixxi għall-kawża komuni bl-aktar mod sempliċi u konvenjenti għalihom - fil-fatt, biss billi timla l-fajl test notepad (b'estensjoni nb) WL. Funzjonijiet awtomatiċi inkorporati jippermettulek tiċċekkja funzjonijiet ġodda miżjuda mar-repożitorju biex tiżgura l-integrazzjoni tagħhom fil-lingwa. Il-kumpanija tagħna qed tagħmel imħatri fuq il-firxa wiesgħa ta' utenti li jistgħu jintegraw il-funzjonijiet tagħhom fil-lingwa, aktar milli fuq il-kumplessità kbira ta' funzjonijiet ġodda - u għalkemm hemm proċess ta' reviżjoni, aħna ma ninsistu fuq xi ħaġa bħal analiżi tad-disinn bir-reqqa jew standards stretti għall-kompletezza u l-affidabbiltà tal-karatteristiċi ġodda tal-utent, għall-kuntrarju tal-ittestjar aktar rigoruż tal-karatteristiċi mibnija fil-lingwa ewlenija li nimpjegaw.

Hemm ħafna kompromessi u dettalji f'dan l-approċċ, iżda l-għan tagħna huwa li nottimizzaw ir-repożitorju tal-karatteristiċi Wolfram kemm għall-esperjenza tal-utent kif ukoll biex niżguraw li karatteristiċi ġodda tal-utent jikkontribwixxu b'mod sinifikanti għall-iżvilupp tal-lingwa. Hekk kif nikbru, m'għandi l-ebda dubju li ser ikollna nivvintaw metodi ġodda għall-ipproċessar u l-validazzjoni ta' funzjonijiet mibnija fir-repożitorju, mhux l-inqas biex norganizzaw għadd kbir ta' funzjonijiet u nsibu dawk li l-utenti jeħtieġu. Madankollu, huwa inkoraġġanti li t-triq li għażilna hija bidu tajjeb. Jien personalment żiedet diversi karatteristiċi għad-database oriġinali. Ħafna minnhom huma bbażati fuq kodiċi li żviluppajt personalment għal żmien pjuttost twil. U domt biss ftit minuti biex nimbottahom għar-repożitorju. Issa li jinsabu fir-repożitorju, fl-aħħar nista' - immedjatament u f'kull ħin - nuża dawn il-funzjonijiet kif meħtieġ, mingħajr ma jkolli għalfejn ninkwieta dwar it-tfittxija għal fajls, inniżżel pakketti, eċċ.

Tiżdied l-effiċjenza filwaqt li tnaqqas l-ispejjeż

Anke qabel l-Internet, kien hemm modi kif taqsam il-kodiċi tal-Lingwa Wolfram (l-ewwel proġett ċentralizzat ewlieni tagħna kien MathSource, maħluqa għal Mathematica fl-1991 ibbażata fuq CD-ROM, eċċ.). Naturalment, l-approċċ propost għall-implimentazzjoni bbażat fuq ir-repożitorju tal-funzjoni Wolfram huwa għodda aktar qawwija u affidabbli għall-implimentazzjoni tal-kompiti ta 'hawn fuq.

Għal aktar minn 30 sena, il-kumpanija tagħna ħadmet b’mod diliġenti biex iżżomm l-integrità tal-istruttura tal-lingwa Wolfram, u dan huwa kritiku biex jiġi żgurat li l-lingwa Wolfram issir mhux biss lingwa ta’ programmar, iżda wkoll lingwa tal-kompjuters sħiħ. U għalhekk, l-essenza tal-approċċ għall-implimentazzjoni tar-repożitorju tal-funzjoni Wolfram hija li tuża approċċ unifikat għall-ipprogrammar u l-iżvilupp ta 'funzjonijiet ġodda li huma miżjuda b'mod sekwenzjali u jidħlu fil-qafas tal-lingwa biex jippermettu l-iżvilupp u l-ko-evoluzzjoni tagħha.

Diversi proċessi komputazzjonali jseħħu fl-istruttura ta 'implimentazzjoni ta' kull funzjoni. Għandu jiġi nnutat hawnhekk li huwa meħtieġ li l-funzjoni jkollha dehra ċara u uniformi u leġibbiltà viżwali għall-utent. F'dan il-kuntest, il-funzjonijiet integrati tal-Lingwa Wolfram huma ppreżentati b'aktar minn 6000 eżempju sekwenzjali ta' kif jiġu pprogrammati sew il-funzjonijiet (dawn huma tagħna vidjows tal-ipprogrammar liveli jinkludu mijiet ta’ sigħat ta’ proċess ta’ ħolqien ta’ programmi standard). Dak li dan l-approċċ fl-aħħar mill-aħħar jagħmel ir-repożitorju tal-karatteristiċi Wolfram kapaċi li jaħdem tajjeb huwa n-natura strutturali tal-Lingwa Wolfram, bin-numru kbir tagħha ta 'libreriji addizzjonali u varjati li huma diġà mibnija fil-lingwa. Per eżempju, jekk għandek funzjoni li tipproċessa immaġini, jew arrays sparseJew strutturi molekulariU data ġeografika jew xi oħrajn - ir-rappreżentazzjoni simbolika konsistenti tagħhom diġà teżisti fil-lingwa, u grazzi għal dan, il-funzjoni tiegħek immedjatament issir kompatibbli ma 'funzjonijiet oħra fil-lingwa.

Il-ħolqien ta 'repożitorju li fil-fatt jaħdem tajjeb huwa kompitu ta' meta-programmazzjoni interessanti. Pereżempju, eċċess ta 'restrizzjonijiet fil-programm mhux se jippermetti li tinkiseb l-unifikazzjoni u l-universalità meħtieġa tal-algoritmu. Hekk kif b'numru insuffiċjenti ta 'restrizzjonijiet funzjonali, ma tkunx tista' timplimenta sekwenza korretta biżżejjed ta 'eżekuzzjoni ta' algoritmi. Diversi eżempji preċedenti ta 'implimentazzjoni ta' kompromess ta 'dawn l-approċċi, implimentati mill-kumpanija tagħna, ħadmu b'mod pjuttost stabbli - dawn huma: Proġett Tungstenu Dimostrazzjonijiet, imnedija fl-2007 u issa taħdem onlajn b'aktar minn 12000 demo interattiv għall-utent. IN database Wolfram hemm aktar minn 600 database lesti li jistgħu jintużaw fil-Lingwa Wolfram, u Ħażna tan-netwerk newrali Wolfram hija mimlija b'netwerks newrali ġodda kważi kull ġimgħa (diġà hemm 118 minnhom issa) u huma immedjatament konnessi permezz tal-funzjoni NetModel fil-Lingwa Wolfram.

L-eżempji kollha ta 'hawn fuq għandhom karatteristika fundamentali - l-oġġetti u l-funzjonijiet miġbura fil-proġett għandhom grad għoli ħafna ta' strutturar u distribuzzjoni ta 'proċessi. Naturalment, id-dettall tal-istruttura ta 'dak li huwa demo jew netwerk newrali jew xi ħaġa oħra jista' jvarja ħafna, iżda l-istruttura fundamentali għal kwalunkwe repożitorju attwali dejjem tibqa 'l-istess. Allura x'inhi l-opinjoni tiegħek, għażiż utent, dwar il-ħolqien ta 'repożitorju bħal dan li jżid estensjonijiet mal-lingwa Wolfram? Il-Lingwa Wolfram hija mfassla biex tkun estremament flessibbli, u għalhekk tista' tiġi estiża u mmodifikata bi kwalunkwe mod. Din iċ-ċirkustanza hija estremament importanti għall-abbiltà li jinħolqu malajr diversi proġetti ta 'softwer fuq skala kbira fil-Lingwa Wolfram. Hawn ta’ min jinnota li hekk kif tiżdied il-flessibbiltà tal-lingwa, l-ispiża tal-proġetti implimentati f’lingwa bħal din inevitabbilment se tiżdied. Dan huwa dovut għall-fatt li l-aktar l-utent juża lingwa bħal din, il-funzjonalità aktar dedikata li jirċievi, iżda m'għandniex ninsew li dan l-approċċ jista 'jkollu wkoll naħat negattivi f'termini ta' inkapaċità li tiġi żgurata konsistenza konsistenti tal-moduli tal-programm.

Hemm problema komuni bil-libreriji f'lingwi ta 'programmar tradizzjonali - jekk tuża librerija waħda, pereżempju, il-kodiċi se jaħdem b'mod korrett, imma jekk tipprova tuża libreriji multipli, m'hemm l-ebda garanzija li jinteraġixxu b'mod korrett ma' xulxin . Barra minn hekk, f'lingwi ta 'programmar tradizzjonali - kuntrarjament għal lingwa tal-kompjuters sħiħ - m'hemm l-ebda mod biex tiġi ggarantita l-preżenza ta' rappreżentazzjonijiet inkorporati konsistenti għal kwalunkwe funzjoni jew tip ta 'dejta minbarra l-istrutturi bażiċi tagħhom. Iżda, fil-fatt, il-problema hija saħansitra akbar milli tidher mal-ewwel daqqa t'għajn: jekk wieħed qed jibni vertikali ta' funzjonalità fuq skala kbira, allura mingħajr l-ispejjeż enormi tal-ipprogrammar ċentralizzat tal-proġett li npoġġu fil-lingwa Wolfram, huwa impossibbli li tikseb konsistenza. Għalhekk huwa importanti li l-moduli kollha tas-softwer dejjem jaħdmu flimkien b'mod korrett.

Allura l-idea wara r-repożitorju tal-karatteristiċi Wolfram hija li tiġi evitata l-problema deskritta hawn fuq billi sempliċement iżżid estensjonijiet mal-lingwa f'biċċiet ta 'kodiċi relattivament żgħar permezz ta' karatteristiċi individwali li huma aktar faċli biex jiġu żviluppati bħala moduli koerenti. Għalhekk, hemm karatteristiċi ta 'programmazzjoni li ma jistgħux isiru konvenjenti bl-użu ta' funzjonijiet individwali (u l-kumpanija tagħna qed tippjana li tirrilaxxa algoritmu ta 'programmazzjoni ottimizzat fil-futur qarib biex tgħin fl-implimentazzjoni ta' pakketti ta 'softwer fuq skala kbira). Madankollu, ibbażati fuq il-funzjonijiet diġà mibnija fil-Lingwa Wolfram, hemm ħafna possibbiltajiet ta 'programmazzjoni li huma implimentati bbażati fuq funzjonijiet individwali. L-idea hawnhekk hija li bi sforz ta' programmazzjoni relattivament żgħir huwa possibbli li jinħolqu għadd ta' funzjonijiet ġodda u utli ħafna li jipprovdu koerenza suffiċjenti għad-disinn, ikunu kkoordinati tajjeb ma' xulxin, u wkoll, minbarra dan, huma se jkunu jistgħu jintużaw faċilment u ħafna fil-lingwa fil-futur.

Dan l-approċċ huwa, ovvjament, kompromess. Jekk jiġi implimentat pakkett akbar, tista 'tiġi immaġinata dinja ġdida ta' funzjonalità li tkun estremament qawwija u utli. Jekk ikun hemm bżonn li tikseb funzjonalità ġdida li tidħol f'kull ħaġa oħra, iżda m'intix lest li tonfoq ħafna sforz fuq l-iżvilupp tal-proġett, dan, sfortunatament, jista 'jwassal għal tnaqqis fl-ambitu tal-proġett tiegħek. L-idea wara r-repożitorju tal-karatteristiċi Wolfram hija li tipprovdi funzjonalità għal parti li tiddefinixxi ta 'proġett; dan l-approċċ se jżid funzjonalità qawwija filwaqt li jagħmilha aktar faċli biex tinżamm konsistenza tajba fi proġett ta' programmar.

Għajnuna biex iżżid funzjonijiet tad-dwana fir-repożitorju tal-funzjonijiet

It-tim tagħna ħadem ħafna biex jagħmilha faċli għall-utenti biex jikkontribwixxu għall-karatteristiċi tar-repożitorju Wolfram. Fuq id-desktop (diġà fi verżjoni 12.0), Tista 'sempliċement tgħaddi mit-tabs tal-menu prinċipali b'mod sekwenzjali: File > New > RepositoryItem > Function Repository Item u ikollok "Notebook tad-Definizzjoni" (b'mod programmatiku ġewwa l-bank tax-xogħol. Tista 'wkoll tuża l-funzjoni analoga - OħloqNotebook["Riżorsi tal-Funzjoni"]):

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Hemm żewġ passi ewlenin li ser ikollok bżonn twettaq: l-ewwel, fil-fatt ikteb il-kodiċi għall-funzjoni tiegħek u, it-tieni, ikteb dokumentazzjoni li turi kif għandha taħdem il-funzjoni tiegħek.
Ikklikkja l-buttuna "Open Sample" fin-naħa ta' fuq biex tara eżempju ta' dak li għandek bżonn tagħmel:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Essenzjalment, qed tipprova toħloq xi ħaġa simili għal funzjoni integrata fil-Lingwa Wolfram. Ħlief li tista 'tagħmel xi ħaġa ħafna aktar speċifika minn funzjoni integrata. Fl-istess ħin, l-aspettattivi dwar il-kompletezza u l-affidabbiltà tiegħu se jkunu ħafna aktar baxxi.
Trid tagħti lill-funzjoni tiegħek isem li jsegwi l-linji gwida dwar l-ismijiet tal-funzjoni tal-Wolfram Language. Barra minn hekk, ser ikollok bżonn tiżviluppa dokumentazzjoni għall-funzjoni tiegħek, simili għall-funzjonijiet mibnija fil-lingwa. Nitkellem dwar dan f'aktar dettall aktar tard. Għalissa, innota biss li fir-ringiela ta 'buttuni fin-naħa ta' fuq tal-fajl notebook tad-definizzjoni hemm buttuna "Linji Gwida tal-Istil", li jispjega x'għandek tagħmel, u buttuna Għodda, li tipprovdi għodod għall-ifformattjar tad-dokumentazzjoni tal-funzjoni tiegħek.
Meta tkun ċert li kollox jimtela sew u tkun lest, ikklikkja l-buttuna "Iċċekkja". Huwa kompletament normali li għadek ma dehretx id-dettalji kollha. Allura l-funzjoni "Iċċekkja" awtomatikament taħdem u tagħmel ħafna kontrolli ta 'stil u konsistenza. Ħafna drabi, immedjatament iqanqlek tikkonferma u taċċetta l-korrezzjonijiet (Per eżempju: "Din il-linja trid tispiċċa b'kolon," u se jqanqlek biex iddaħħal kolon). Xi drabi hi se titlobek biex iżżid jew tibdel xi ħaġa lilek innifsek. Inkunu qed inżidu kontinwament karatteristiċi ġodda mal-funzjonalità awtomatika tal-buttuna Iċċekkja, iżda bażikament l-iskop tagħha huwa li tiżgura li dak kollu li tissottometti lir-repożitorju tal-karatteristiċi diġà jsegwi mill-qrib kemm jista’ jkun linji gwida tal-istil

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Allura, wara li taħdem "Iċċekkja", tista 'tuża "Preview". "Preview" toħloq preview tal-paġna tad-dokumentazzjoni li ddefinijt għall-funzjoni tiegħek. Tista' wkoll toħloq preview għal fajl maħluq fuq il-kompjuter tiegħek jew għal fajl li jinsab fil-ħażna tas-sħab. Jekk, għal xi raġuni, m'intix sodisfatt b'dak li tara fil-preview, sempliċement mur lura u agħmel il-korrezzjonijiet meħtieġa, u mbagħad ikklikkja l-buttuna Preview mill-ġdid.
Issa inti lest biex timbotta l-funzjoni tiegħek fir-repożitorju. Il-buttuna Użu tagħtik erba' għażliet:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

L-importanti f'dan il-pass hija li tista' tissottometti l-funzjoni tiegħek lir-repożitorju tal-funzjonijiet Wolfram sabiex tkun disponibbli għal kulħadd. Fl-istess ħin, tista 'wkoll tpoġġi l-funzjoni tiegħek għal numru limitat ta' utenti. Pereżempju, tista 'toħloq funzjoni li tkun ospitata lokalment fuq il-kompjuter tiegħek sabiex tkun disponibbli meta tuża dak il-kompjuter partikolari. Jew tista 'tpoġġiha fil tiegħek kont sħaba, sabiex tkun disponibbli għalik meta tkun imqabbad mas-sħaba. Tista' wkoll tospita (skjerament) pubblikament il-karatteristika permezz tal-kont tal-cloud tiegħek. Mhux se jkun fir-repożitorju ċentrali tal-karatteristiċi ta 'Wolfram, iżda tkun tista' tagħti lil xi ħadd URL li jippermettilu li jġib il-karatteristika tiegħek mill-kont tiegħek. (Fil-futur, aħna se nappoġġjaw ukoll repożitorji ċentrali madwar il-kumpanija tagħna.)

Mela ejja ngħidu li trid fil-fatt tissottometti l-funzjoni tiegħek lill-bażi ta 'għarfien tal-funzjoni Wolfram. Biex tagħmel dan, tikklikkja l-buttuna "Ibgħat" lir-repożitorju. Allura x'qed jiġri bħalissa? L-applikazzjoni tiegħek tiġi immedjatament fil-kju għal reviżjoni u approvazzjoni mit-tim dedikat tagħna ta 'kuraturi.

Hekk kif l-applikazzjoni tiegħek timxi 'l quddiem permezz tal-proċess ta' approvazzjoni (li tipikament jieħu diversi jiem), int ser tirċievi komunikazzjonijiet dwar l-istatus tagħha u possibbilment suġġerimenti għal użu fil-futur. Iżda ladarba l-karatteristika tiegħek tiġi approvata, tiġi ppubblikata immedjatament fil-Wolfram Feature Repository u tkun disponibbli għal kulħadd biex tużah. (U dan se jidher fi aħbarijiet diġestivi ta 'karatteristiċi ġodda u l-bqija)

X'għandu jkun fil-ħażna?

Għandu jiġi nnutat li l-kumpanija tagħna għandha standards għoljin ħafna għall-kompletezza, l-affidabbiltà u l-kwalità ġenerali, u mill-6000 + funzjoni li diġà bnejna fil-lingwa Wolfram matul l-aħħar 30 + sena, kollha jissodisfaw ir-rekwiżiti ta 'hawn fuq. L-għan tar-Repożitorju tal-Funzjonijiet Wolfram huwa li tuża l-istruttura u l-funzjonalità kollha li diġà jeżistu fil-Lingwa Wolfram sabiex iżżid kemm jista’ jkun funzjonijiet eħfef (jiġifieri, funzjonijiet ta’ prestazzjoni ogħla).

Naturalment, il-funzjonijiet fir-repożitorju tal-funzjonijiet Wolfram għandhom jikkonformaw mal-prinċipji tad-disinn tal-Lingwa Wolfram - sabiex ikunu jistgħu jinteraġixxu bis-sħiħ ma 'funzjonijiet oħra u l-aspettattivi tal-utenti ta' kif il-funzjoni għandha taħdem sew. Madankollu, il-funzjonijiet m'għandhomx għalfejn ikunu ta' kompletezza jew affidabilità ugwali.

Fil-funzjonijiet inkorporati tal-lingwa Wolfram, naħdmu iebes biex il-funzjonijiet ta 'programmar ikunu ġenerali kemm jista' jkun. That being said, meta fir-repożitorju tal-funzjonijiet Wolfram m'hemm xejn ħażin li jkollok funzjoni fiha li sempliċement tieħu ħsieb xi każ speċifiku ħafna iżda utli. Per eżempju, il-funzjoni SendMailFromNotebook jistgħu jirċievu fajls f'format speċifiku wieħed u joħolqu posta b'mod speċifiku wieħed. Dijagramma Poligonali joħloq charts b'ċerti kuluri u tikkettar biss, eċċ.

Punt ieħor relatat mal-funzjonijiet integrati huwa li l-kumpanija tagħna tagħmel kull sforz biex timmaniġġja l-każijiet atipiċi kollha, biex timmaniġġja b'mod korrett input żbaljat, eċċ. F'repożitorju tal-funzjonijiet, huwa kompletament normali li jkun hemm funzjoni speċjali li tieħu ħsieb il-każijiet ewlenin ta 'soluzzjoni ta' problema u tinjora l-oħrajn kollha.

Il-punt ovvju huwa li huwa aħjar li jkollok funzjonijiet li jagħmlu aktar u jagħmluha aħjar, iżda l-ottimizzazzjoni għal repożitorju ta' funzjonijiet - għall-kuntrarju tal-funzjonijiet integrati tal-lingwa Wolfram - għandu jkollha aktar funzjonijiet miġbura b'aktar funzjonijiet aktar milli tidhol f'dan. il-proċessi ta' implimentazzjoni ta' kull funzjoni speċifika.

Issa ejja nħarsu lejn eżempju ta 'funzjonijiet ta' ttestjar f'repożitorju. L-aspettattivi tal-konsistenza għal funzjonijiet bħal dawn huma naturalment ħafna aktar baxxi milli għall-funzjonijiet tal-lingwa integrati. Dan huwa veru speċjalment f'każijiet fejn il-funzjonijiet jiddependu fuq riżorsi esterni bħal APIs, huwa importanti li kontinwament isiru testijiet konsistenti, li awtomatikament jiġri fi ħdan l-algoritmi ta 'verifika. Fil-fajl nb, tista' tispeċifika b'mod espliċitu definizzjonijiet (fit-taqsima Informazzjoni Addizzjonali) u tispeċifika kemm-il testijiet kif definiti minn kordi ta' input u output jew oġġetti ta' karattru sħiħ tat-tip Test tal-Verifika, kemm tara xieraq. Barra minn hekk, is-sistema qed tipprova kontinwament iddawwar l-eżempji ta’ dokumentazzjoni li tipprovdi fi proċess ta’ verifika (u xi kultant dan jista’ jkun pjuttost intensiv fir-riżorsi, pereżempju, għal funzjoni li r-riżultat tagħha jiddependi fuq numri każwali jew il-ħin tal-ġurnata).

Bħala riżultat, ir-repożitorju tal-funzjonijiet se jkollu numru ta 'kumplessitajiet ta' implimentazzjoni. Xi wħud se jkunu biss linja waħda ta 'kodiċi, oħrajn jistgħu jinvolvu eluf jew għexieren ta' eluf ta 'linji, li x'aktarx jużaw ħafna funzjonijiet helper. Meta ta 'min iżżid funzjoni li teħtieġ ftit li xejn kodiċi biex tiddefinixxi? Bażikament, jekk għal funzjoni hemm isem mnemoniku tajjeb, li l-utenti jifhmu faċilment jekk jarawha f'biċċa kodiċi, allura diġà tista 'tiġi miżjuda. Inkella, huwa probabbilment aħjar li terġa 'tehmeż il-kodiċi mal-programm tiegħek kull darba li jkollok bżonn tużah.

L-għan ewlieni ta' repożitorju tal-funzjonijiet (kif jissuġġerixxi ismu) huwa li jintroduċi karatteristiċi ġodda fil-lingwa. Jekk trid iżżid data ġdida jew entitajiet ġodda, uża Repożitorju tad-Data Wolfram. Imma x'jiġri jekk trid tintroduċi tipi ġodda ta 'oġġetti għall-kalkoli tiegħek?

Fil-fatt hemm żewġ modi. Tista' tkun trid tintroduċi tip ta' oġġett ġdid li se jintuża f'funzjonijiet ġodda fir-repożitorju tal-funzjonijiet. U f'dan il-każ, tista 'dejjem tikteb ir-rappreżentazzjoni simbolika tagħha u tużaha meta ddaħħal jew toħroġ funzjonijiet f'repożitorju tal-funzjonijiet.

Imma x'jiġri jekk trid tirrappreżenta oġġett u mbagħad tiddefinixxi, permezz ta' funzjonijiet eżistenti fil-Lingwa Wolfram, li trid taħdem miegħu? Il-Lingwa Wolfram dejjem kellha mekkaniżmu ħafif għal dan, imsejjaħ UpValues. B'xi restrizzjonijiet (speċjalment għal funzjonijiet li ma jistgħux jevalwaw l-argumenti tagħhom), repożitorju tal-funzjonijiet jippermettilek sempliċement tirrappreżenta funzjoni u tiddefinixxi valuri għaliha. (Li tgħolli l-aspettattiva ta’ konsistenza meta toħloq disinn ewlieni ġdid li jkun integrat bis-sħiħ fil-Lingwa Wolfram hija ġeneralment proċedura importanti ħafna li ma tistax tinkiseb billi sempliċement tiżdied l-ispiża tal-proġett u hija xi ħaġa li l-kumpanija tagħna tagħmel bħala parti mill-proġetti għall-iżvilupp fit-tul tal-lingwa, dan il-kompitu mhuwiex għan li huwa stabbilit bħala parti mill-iżvilupp tar-repożitorju).

Allura, x'jista 'jkun fil-kodiċi tal-funzjoni f'repożitorju tal-funzjoni? Kollox mibni fil-Lingwa Wolfram, ovvjament (għall-inqas jekk ma tirrappreżentax theddid għall- sigurtà u l-prestazzjoni tal-programm innifsu, bħala ambjent tal-kompjuter) kif ukoll kwalunkwe funzjoni mir-repożitorju tal-funzjonijiet. Madankollu, hemm funzjonalitajiet oħra: funzjoni f'repożitorju ta' funzjonijiet tista' ssejjaħ API, jew in Wolfram CloudJew minn sors ieħor. Naturalment, hemm xi riskji assoċjati ma 'dan. Minħabba l-fatt li m'hemm l-ebda garanziji li l-API mhux se jinbidel, u l-funzjoni fil-maħżen tal-funzjoni se tieqaf taħdem. Biex tgħin tidentifika kwistjonijiet bħal din, hemm nota fuq il-paġna tad-dokumentazzjoni (fit-taqsima Rekwiżiti) għal kwalunkwe karatteristika li tiddependi fuq aktar milli sempliċiment funzjonalità tal-Lingwa Wolfram inkorporata. (Naturalment, fejn tidħol dejta reali, jista' jkun hemm problemi anke b'din il-funzjonalità - minħabba li d-dejta tad-dinja reali qed tinbidel kontinwament, u xi kultant anke d-definizzjonijiet u l-istruttura tagħha jinbidlu.)

Il-kodiċi kollu għar-repożitorju tal-karatteristiċi Wolfram għandu jinkiteb f'Wolfram? Ċertament, il-kodiċi ġewwa l-API esterna m'għandux jinkiteb bil-lingwa Wolfram, li lanqas biss tagħmel il-kodiċi tal-lingwa. Fil-fatt, jekk issib funzjoni fi kważi kull lingwa esterna jew librerija, tista 'toħloq tgeżwir li jippermettilek tużaha fir-repożitorju tal-funzjoni Wolfram. (Generalment għandek tuża l-funzjonijiet integrati għal dan ExternalEvaluate jew Funzjoni Esterna fil-kodiċi tal-lingwa Wolfram.)

Allura x'inhu l-punt li tagħmel dan? Essenzjalment, dan jippermettilek tuża s-sistema Wolfram Language integrata kollha u s-sett kollu unifikat ta' kapaċitajiet tas-softwer tagħha. Jekk tikseb l-implimentazzjoni bażi minn librerija jew lingwa esterna, tista 'mbagħad tuża l-istruttura simbolika rikka tal-Lingwa Wolfram biex toħloq funzjoni tal-ogħla livell konvenjenti li tippermetti lill-utenti jużaw faċilment kwalunkwe funzjonalità diġà implimentata. Mill-inqas, dan għandu jkun fattibbli f'dinja ideali fejn jeżistu l-blokki kollha ta' tagħbija ta' libreriji eċċ., f'liema każ ikunu ttrattati awtomatikament mill-Lingwa Wolfram. (Ta 'min jinnota li fil-prattika jista' jkun hemm problemi bi twaqqif ta’ lingwi esterni sistema speċifika tal-kompjuter, u l-ħażna tal-cloud jistgħu joħolqu kwistjonijiet ta’ sigurtà addizzjonali).

Mill-mod, meta tħares l-ewwel lejn libreriji esterni tipiċi, ħafna drabi jidhru kumplessi wisq biex ikunu koperti fi ftit funzjonijiet biss, iżda f'ħafna każijiet, ħafna mill-kumplessità tiġi mill-ħolqien tal-infrastruttura meħtieġa għal-librerija u l-funzjonijiet kollha biex appoġġha. Madankollu, meta tuża l-Lingwa Wolfram, l-infrastruttura hija tipikament diġà mibnija fil-pakketti, u għalhekk m'hemmx bżonn li dawn il-funzjonijiet ta 'appoġġ kollha jiġu esposti fid-dettall, iżda jinħolqu biss funzjonijiet għall-funzjonijiet speċifiċi għall-applikazzjoni "l-ogħla" fil-librerija. .

"Ekosistema" tal-bażi tal-għarfien

Jekk ktibt funzjonijiet li tuża regolarment, ibgħathom lir-Repożitorju tal-Funzjonijiet Wolfram! Jekk xi ħaġa aktar ma toħroġx minn dan (żvilupp tal-lingwa), allura anke allura jkun ħafna aktar konvenjenti għalik li tuża l-funzjonijiet għall-użu personali. Madankollu, huwa loġiku li wieħed jassumi li jekk tuża l-funzjonijiet regolarment, forsi utenti oħra jsibuhom utli wkoll.

Naturalment, tista' ssib ruħek f'sitwazzjoni fejn ma tkunx tista' - jew ma tridx - taqsam il-funzjonijiet tiegħek jew fil-każ li tikseb aċċess għal riżorsi privati ​​ta' informazzjoni. Anke f'każijiet bħal dawn, tista 'sempliċement tuża l-funzjonijiet fil-kont tal-cloud tiegħek stess, jispeċifikaw id-drittijiet aċċess għalihom. (Jekk l-organizzazzjoni tiegħek għandha Sħab privat Wolfram Enterprise, allura dalwaqt ikun jista' jospita r-repożitorju tal-karatteristiċi privat tiegħu stess, li jista' jiġi amministrat minn ġewwa l-organizzazzjoni tiegħek u jissettja jekk iġiegħelx jew le l-opinjonijiet jarawhom minn utenti terzi.)

Il-funzjonijiet li tissottometti lir-repożitorju tal-funzjonijiet Wolfram m'għandhomx għalfejn ikunu perfetti; għandhom biss ikunu utli. Din hija daqsxejn bħas-sezzjoni "Żbalji" fid-dokumentazzjoni Unix klassika - fit-"Taqsima tad-Definizzjonijiet" hemm taqsima "Noti tal-Awtur" fejn tista' tiddeskrivi limitazzjonijiet, problemi, eċċ li diġà taf dwar il-funzjoni tiegħek. Barra minn hekk, meta tissottometti l-karatteristika tiegħek lir-repożitorju, tista’ żżid noti ta’ sottomissjoni li jinqraw minn tim dedikat ta’ kuraturi.

Ladarba karatteristika tiġi ppubblikata, il-paġna tagħha dejjem għandha żewġ links fil-qiegħ: "Ibgħat messaġġ dwar din il-karatteristika"U"Iddiskuti fil-komunità Wolfram" Jekk qed tehmeż nota (eż., għidli dwar bugs), tista' tiċċekkja l-kaxxa li tgħid li trid li l-messaġġ u l-informazzjoni ta' kuntatt tiegħek jiġu kondiviżi mal-awtur tal-karatteristika.

Xi drabi trid tuża biss funzjonijiet mir-repożitorju tal-funzjonijiet Wolfram, bħal funzjonijiet integrati, mingħajr ma tħares lejn il-kodiċi tagħhom. Madankollu, jekk trid tagħti ħarsa ġewwa, dejjem hemm buttuna Notepad fil-quċċata. Ikklikkja fuqha u ikollok il-kopja tiegħek tan-notebook tad-definizzjoni oriġinali li ġie sottomess lir-repożitorju tal-karatteristiċi. Kultant tista 'sempliċement tużaha bħala eżempju għall-bżonnijiet tiegħek. Fl-istess ħin, tista 'wkoll tiżviluppa l-modifika tiegħek ta' din il-funzjoni. Tista 'tkun trid tpoġġi dawn il-funzjonijiet li sibt mir-repożitorju fuq il-kompjuter tiegħek jew fil-kont tal-ħażna tas-sħab tal-afidi tiegħek, forsi trid tissottomettihom lill-bażi tal-għarfien tal-funzjoni, forsi bħala verżjoni mtejba u estiża tal-funzjoni oriġinali.

Fil-futur, qed nippjanaw li nappoġġjaw il-forking ta' stil Git għar-repożitorji tal-karatteristiċi, iżda għalissa qed nippruvaw inżommuha sempliċi, u dejjem għandna verżjoni aċċettata waħda biss ta' kull karatteristika mibnija fil-lingwa. Iktar iva milli le (sakemm l-iżviluppaturi ma jieqfux iżommu l-karatteristiċi li żviluppaw u jirrispondu għas-sottomissjonijiet tal-utenti), l-awtur oriġinali tal-karatteristika jieħu l-kontroll tal-aġġornamenti għaliha u jissottometti verżjonijiet ġodda, li mbagħad jiġu riveduti u, jekk jgħaddu mill-proċess ta’ reviżjoni. , ippubblikata fil-lingwa.

Ejja nikkunsidraw il-kwistjoni ta 'kif taħdem il-"versioning" tal-funzjonijiet żviluppati. Bħalissa, meta tuża funzjoni mir-repożitorju tal-funzjonijiet, id-definizzjoni tagħha tkun maħżuna b'mod permanenti fuq il-kompjuter tiegħek (jew fil-kont tal-cloud tiegħek jekk qed tuża l-cloud). Jekk verżjoni ġdida ta' karatteristika tkun disponibbli, id-darba li jmiss li tużaha tirċievi messaġġ li jinnotifikak b'dan. U jekk trid taġġorna l-funzjoni għal verżjoni ġdida, tista 'tagħmel dan billi tuża l-kmand Aġġornament tar-Riżorsi. (Il-"blob tal-funzjoni" fil-fatt taħżen aktar informazzjoni dwar il-verżjoni, u qed nippjanaw li nagħmlu dan aktar aċċessibbli għall-utenti tagħna fil-futur.)

Waħda mill-affarijiet sbieħ dwar il-Wolfram Function Repository hija li kwalunkwe programm Wolfram Language, kullimkien jista 'juża funzjonijiet minnu. Jekk programm jidher f'notepad, ħafna drabi jkun konvenjenti li tifformattja l-funzjonijiet tar-repożitorju bħala funzjonijiet ta '"funzjoni binarja oġġett" faċli biex jinqraw (forsi b'sett ta' verżjoni xieraq).

Dejjem tista' taċċessa kwalunkwe funzjoni fir-repożitorju tal-funzjonijiet billi tuża t-test RiżorsiFunzjoni[...]. U dan huwa konvenjenti ħafna jekk tikteb kodiċi jew skripts direttament għall-Wolfram Engine, per eżempju, bil billi tuża IDE jew editur tal-kodiċi tat-test (għandu jiġi nnutat b'mod speċjali li r-repożitorju tal-funzjonijiet huwa kompletament kompatibbli ma ' Wolfram Engine Ħieles għall-Iżviluppaturi).

Kif taħdem?

Ġewwa l-funzjonijiet fir-repożitorju Wolfram dan huwa possibbli bl-użu eżattament l-istess sistemi ta’ riżorsi bażijiet, bħal fil ir-repożitorji eżistenti l-oħra kollha tagħna (maħżen tad-dejta, Repożitorju tan-Net newrali, ġbir ta 'proġetti demo eċċ.), bħar-riżorsi l-oħra kollha tas-sistema Wolfram, RiżorsiFunzjoni finalment ibbażat fuq il-funzjoni ResourceObject.

Ikkunsidra RiżorsiFunzjoni:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Ġewwa tista 'tara xi informazzjoni billi tuża l-funzjoni informazzjoni:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Kif taħdem it-twaqqif ta' funzjoni tar-riżorsi? L-aktar wieħed sempliċi huwa każ purament lokali. Hawn eżempju li jieħu funzjoni (f'dan il-każ biss funzjoni pura) u jiddefinixxiha bħala funzjoni tar-riżorsi għal sessjoni ta' programm partikolari:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Ladarba tkun għamilt id-definizzjoni, tista' tuża l-funzjoni tar-riżorsi:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Innota li hemm ikona sewda f'din il-blob tal-funzjoni Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram. Dan ifisser li l-funzjoni BLOB tirreferi għall-funzjoni tar-riżorsi fil-memorja definita għas-sessjoni attwali. Karatteristika tar-riżorsi li hija maħżuna b'mod permanenti fuq il-kompjuter jew il-kont tas-sħab tiegħek għandha ikona griża Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram. U hemm ikona oranġjo għal karatteristika tar-riżorsi uffiċjali fil-Wolfram Feature Repository Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram.

Allura x'jiġri meta tuża l-menu Expand fil-Definition Notebook? L-ewwel, tieħu d-definizzjonijiet kollha fin-notepad u minnhom toħloq simboliku ResourceObject). (U jekk qed tuża IDE jew programm ibbażat fuq test, allura tista 'wkoll toħloq b'mod espliċitu ResourceObject)

L-iskjerament lokali ta' funzjoni minn repożitorju fuq il-kompjuter tiegħek isir bl-użu tal-kmand LocalCache għal oġġett tar-riżorsi biex issalvah bħala LocalObject fis-sistema tal-fajls tiegħek. L-iskjerament għal kont tal-cloud isir bl-użu tal-kmand CloudDeploy għal oġġett ta 'riżorsa, u skjerament ta' sħab pubbliku huwa CloudPublish. Fil-każijiet kollha Reġistru tar-Riżorsi użat ukoll biex jirreġistra l-isem tal-funzjoni tar-riżorsi, għalhekk RiżorsiFunzjoni["isem"] se taħdem.

Jekk tikklikkja l-buttuna Ibgħat għal Repożitorju tal-Funzjonijiet, x'jiġri taħtha RiżorsiSubmit imsejħa fuq oġġett ta 'riżorsa. (U jekk qed tuża interface ta' input ta' test, tista' wkoll iċempel RiżorsiSubmit direttament.)

B'mod awtomatiku, is-sottomissjonijiet isiru taħt l-isem assoċjat mal-Wolfram ID tiegħek. Imma jekk qed tissottometti applikazzjoni f'isem tim ta' żvilupp jew organizzazzjoni, tista' issettja ID tal-pubblikatur separat u minflok użaha bħala l-isem biex jinteraġixxu mal-fehmiet tiegħek.

Wara li tkun issottomettit xi waħda mill-funzjonijiet tiegħek lill-bażi tal-għarfien tal-funzjoni, din tkun fil-kju għal reviżjoni. Jekk tirċievi kummenti bi tweġiba, dawn normalment ikunu fil-forma ta 'fajl ta' test b'"ċelluli ta' kummenti" addizzjonali miżjuda. Tista' dejjem tiċċekkja l-istatus tal-applikazzjoni tiegħek billi żżur portal tal-membri tas-sistema tar-riżorsi. Iżda ladarba l-karatteristika tiegħek tiġi approvata, inti tiġi nnotifikat (permezz ta' email) u l-karatteristika tiegħek tiġi ppubblikata fir-repożitorju tal-karatteristiċi ta' Wolfram.

Xi irqaq fuq ix-xogħol

L-ewwel daqqa t'għajn jista' jidher li tista' tieħu notebook ta' definizzjoni u poġġih verbatim f'repożitorju tal-funzjonijiet, madankollu, fil-fatt hemm ħafna irqaq involuti - u t-tqandil tagħhom jeħtieġ li tagħmel xi meta-programmazzjoni pjuttost kumplessa, timmaniġġja l-ipproċessar simboliku bħala l-kodiċi li jiddefinixxi l-funzjoni, u n-Notepad innifsu huwa definit. Il-biċċa l-kbira ta 'dan jiġri internament, wara l-kwinti, iżda jista' jkollu xi implikazzjonijiet li ta 'min jifhem jekk int ser tikkontribwixxi għall-bażi ta' għarfien tal-karatteristika.

L-ewwel sottili immedjati: Meta timla n-Notebook tad-Definizzjoni, tista' sempliċement tirreferi għall-funzjoni tiegħek kullimkien billi tuża isem bħal MyFunction, li jidher qisu isem regolari għal funzjoni fil-Lingwa Wolfram, iżda għad-dokumentazzjoni tar-repożitorju tal-funzjonijiet din hija sostitwita RiżorsiFunzjoni["MyFunction"] huwa dak li l-utenti fil-fatt se jużaw meta jaħdmu mal-funzjoni.

It-tieni sottili: meta toħloq funzjoni tar-riżorsi min-Notebook tad-Definizzjoni, id-dipendenzi kollha involuti fid-definizzjoni tal-funzjoni għandhom jinqabdu u jiġu inklużi b'mod espliċitu. Madankollu, biex tiżgura li d-definizzjonijiet jibqgħu modulari, għandek bżonn tpoġġi kollox f'uniku namespace. (Dażgur, funzjonijiet li jagħmlu dan kollu, jinsabu fir-repożitorju tal-funzjonijiet.)

Tipikament qatt mhu se tara xi traċċa tal-kodiċi użat biex jiġi kkonfigurat dan l-ispazju tal-isem. Imma jekk għal xi raġuni ssejjaħ simbolu mhux esegwit taħt il-funzjoni tiegħek, allura tara li dan is-simbolu jinsab fil-kuntest intern tal-funzjoni. Madankollu, meta tiġi pproċessata d-Definition Notepad, mill-inqas is-simbolu li jikkorrispondi għall-funzjoni nnifisha huwa aġġustabbli għall-aħjar wiri bħala BLOB funzjonali aktar milli karattru mhux maħdum fil-kuntest intern.

Ir-repożitorju tal-funzjonijiet huwa għad-definizzjoni ta' funzjonijiet ġodda. U dawn il-funzjonijiet jista 'jkollhom għażliet. Ħafna drabi dawn il-parametri (per eżempju, Metodu jew ImageSize) se jkunu jistgħu jintużaw għal funzjonijiet built-in, kif ukoll għal dawk li għalihom diġà jeżistu simboli built-in. Iżda xi kultant karatteristika ġdida tista 'teħtieġ għażliet ġodda. Sabiex tinżamm il-modularità, dawn il-parametri jeħtieġ li jkunu simboli definiti f'kuntest intern uniku (jew xi ħaġa bħal funzjonijiet ta 'riżorsi sħaħ, jiġifieri huma stess). Għas-sempliċità, ir-repożitorju tal-funzjonijiet jippermettilek tiddefinixxi għażliet ġodda fid-definizzjonijiet ta 'string. U għall-konvenjenza tal-utent, dawn id-definizzjonijiet (jekk wieħed jassumi li użaw OptionValue и OptionsPattern) huma wkoll ipproċessati sabiex meta jintużaw funzjonijiet, il-parametri jistgħu jiġu speċifikati mhux biss bħala kordi, iżda wkoll bħala simboli globali bl-istess ismijiet.

Il-biċċa l-kbira tal-funzjonijiet sempliċement jagħmlu dak li suppost jagħmlu kull darba li jissejħu, iżda xi funzjonijiet jeħtieġ li jiġu inizjalizzati qabel ma jkunu jistgħu jaħdmu f'sessjoni partikolari - u biex issolvi din il-problema, hemm taqsima "Inizjalizzazzjoni" fit-taqsima Definizzjoni.

Funzjonijiet minn repożitorju jistgħu jużaw funzjonijiet oħra li huma diġà fir-repożitorju; sabiex jiġu stabbiliti definizzjonijiet għal repożitorju ta’ funzjonijiet li jinkludu żewġ (jew aktar) funzjonijiet li jirreferu għal xulxin, trid tużahom fis-sessjoni tal-programm tiegħek sabiex tkun tista’ referenza bħal fuqhom RiżorsiFunzjoni["isem"], allura tista 'toħloq il-kombinazzjonijiet ta' dawn il-funzjonijiet li għandek bżonn, eżempji (ma fhimtx) u żżid funzjoni ġdida mar-repożitorju bbażata fuq dawk diġà stazzjonati qabel. (jew diġà jew qabel - iż-żewġ kelmiet huma goff)

Prospetti ta' żvilupp. X'għandu jiġri meta r-repożitorju jsir verament kbir?

Illum għadna qed inniedu l-Wolfram Feature Repository, iżda maż-żmien nistennew li d-daqs u l-funzjonalità tiegħu jistgħu jiżdiedu b’mod drammatiku, u hekk kif jikber fl-iżvilupp se jkun hemm diversi problemi li diġà nantiċipaw li jistgħu jinqalgħu.

L-ewwel problema tikkonċerna l-ismijiet tal-funzjonijiet u l-uniċità tagħhom. Ir-repożitorju tal-funzjonijiet huwa ddisinjat b'tali mod li, bħall-funzjonijiet integrati fil-Lingwa Wolfram, tista' tirreferi għal kwalunkwe funzjoni partikolari sempliċement billi tispeċifika isimha. Iżda dan inevitabilment ifisser li l-ismijiet tal-funzjonijiet għandhom ikunu globalment uniċi madwar ir-repożitorju, sabiex, pereżempju, jista’ jkun hemm wieħed biss RiżorsiFunzjoni["MyFavoriteFunction"].

Din tista 'tidher problema kbira għall-ewwel, iżda ta' min jirrealizza li hija bażikament l-istess problema bħal għal affarijiet bħal dominji tal-internet jew mankijiet tal-midja soċjali. U l-fatt hu li s-sistema sempliċiment jeħtieġ li jkollha reġistratur - u dan huwa wieħed mir-rwoli li l-kumpanija tagħna se twettaq għall-bażi tal-għarfien tal-funzjoni Wolfram. (Għal verżjonijiet privati ​​ta’ repożitorju, ir-reġistraturi tagħhom jistgħu jkunu amministraturi.) Naturalment, dominju tal-Internet jista’ jiġi reġistrat mingħajr ma jkollu xejn fuqu, iżda f’repożitorju ta’ funzjoni, isem ta’ funzjoni jista’ jiġi rreġistrat biss jekk ikun hemm definizzjoni attwali ta’ il-funzjoni.

Parti mir-rwol tagħna fil-ġestjoni tal-bażi tal-għarfien tal-funzjoni Wolfram hija li niżguraw li l-isem magħżul għal funzjoni huwa loġiku minħabba d-definizzjoni tal-funzjoni u li jsegwi l-konvenzjonijiet tal-ismijiet tal-Lingwa Wolfram. Għandna aktar minn 30 sena esperjenza li nsemmu funzjonijiet integrati fil-Lingwa Wolfram, u t-tim tagħna ta' kuraturi se jġib dik l-esperjenza fir-repożitorju tal-funzjonijiet ukoll. Naturalment, dejjem hemm eċċezzjonijiet. Pereżempju, jista 'jidher preferibbli li jkollok isem qasir għal xi funzjoni, iżda huwa aħjar li "tiddefendi" b'isem itwal u aktar speċifiku għax anqas probabbli li tiltaqa' ma' xi ħadd li jrid jagħmel isem ta' funzjoni simili fil-futur. .

(Għandu jiġi nnutat hawnhekk li sempliċiment li żżid xi tikketta tal-membru biex tiddisambigua l-funzjonijiet mhux se jkollha l-effett maħsub. Minħabba li sakemm ma tinsisti li dejjem tassenja tikketta, ser ikollok bżonn tiddefinixxi tag default għal kwalunkwe funzjoni partikolari, u talloka wkoll tags tal-awtur. , li għal darb'oħra tkun teħtieġ koordinazzjoni globali.)

Hekk kif il-bażi ta’ għarfien tal-funzjonijiet Wolfram tikber, waħda mill-problemi li x’aktarx jinqalgħu hija l-iskoperta tal-funzjonijiet, li għalihom is-sistema tipprovdi funzjoni ta' tfittxija (u l-fajls tad-definizzjoni jistgħu jinkludu kliem ewlieni, eċċ.). Għal funzjonijiet integrati fil-Lingwa Wolfram, hemm kull xorta ta' referenzi inkroċjati fid-dokumentazzjoni biex jgħinu "jirreklamaw" il-funzjonijiet. Funzjonijiet f'repożitorju tal-funzjonijiet jistgħu jirreferu għal funzjonijiet integrati. Imma xi ngħidu għall-kuntrarju? Biex tagħmel dan, se nesperimentaw b'disinji differenti biex nesponu funzjonijiet ta' repożitorju f'paġni ta' dokumentazzjoni għal funzjonijiet integrati.

Għal funzjonijiet inkorporati fil-Lingwa Wolfram hemm hekk imsejjaħ saff ta 'skoperta pprovdut minn netwerk ta' "paġni ta' għajnuna", li jipprovdu listi organizzati ta' karatteristiċi relatati ma' oqsma speċifiċi. Dejjem huwa diffiċli li tibbilanċja sew il-paġni man, u hekk kif il-lingwa Wolfram tikber, ħafna drabi l-paġni man jeħtieġ li jiġu organizzati mill-ġdid kompletament. Huwa pjuttost faċli li tpoġġi l-funzjonijiet minn repożitorju f'kategoriji wesgħin, u anki li tkisser dawk il-kategoriji b'mod konsistenti, iżda huwa ħafna aktar siewi li jkollok paġni ta' referenza tal-lingwa organizzati sew. Għadu mhux ċar kif l-aħjar jinħolqu għall-bażi ta 'għarfien tal-funzjoni kollha. Pereżempju, CreateResourceObjectGallery fir-repożitorju tal-karatteristiċi, kulħadd jista’ jpoġġi paġna tal-web li jkun fiha l-“picks” tiegħu mir-repożitorju:

Repożitorju tal-Funzjonijiet Wolfram: Pjattaforma ta' aċċess miftuħ għall-estensjonijiet tal-lingwa Wolfram

Ir-repożitorju tal-funzjonijiet Wolfram huwa kkonfigurat bħala repożitorju tal-funzjonijiet persistenti, fejn kwalunkwe funzjoni fiha dejjem taħdem. Naturalment, verżjonijiet ġodda ta' karatteristiċi jistgħu jsiru disponibbli, u nistennew li xi karatteristiċi ovvjament isiru obsoleti maż-żmien. Il-funzjonijiet se jaħdmu jekk jintużaw fi programmi, iżda l-paġni tad-dokumentazzjoni tagħhom se jorbtu ma' funzjonijiet ġodda u aktar avvanzati.

Il-Wolfram Feature Repository huwa ddisinjat biex jgħinek tiskopri malajr karatteristiċi ġodda u titgħallem modi ġodda kif tuża l-lingwa Wolfram. Aħna ottimisti ħafna li xi wħud minn dak li ġie esplorat fir-repożitorju tal-karatteristiċi eventwalment se jagħmel sens biex isiru partijiet mibnija fil-qalba tal-Lingwa Wolfram. Matul l-aħħar għaxar snin kellna sett simili karatteristiċi li kienu introdotti oriġinarjament f'Wolfram | Alpha. U waħda mill-lezzjonijiet meħuda minn din l-esperjenza hija li l-kisba tal-istandards ta’ kwalità u konsistenza li niffukaw fuqhom f’dak kollu mibni fil-lingwa Wolfram teħtieġ ħafna xogħol, li ħafna drabi huwa aktar diffiċli mill-isforz inizjali għall-implimentazzjoni tal-idea. Anke hekk, funzjoni fil-bażi ta 'għarfien tal-funzjoni tista' sservi bħala prova utli ħafna ta 'kunċett għal funzjoni futura li eventwalment tista' tinbena fil-lingwa Wolfram.

L-iktar ħaġa importanti hawnhekk hija li funzjoni f'repożitorju tal-funzjonijiet hija xi ħaġa li hija disponibbli għal kull utent biex jużaha issa. Huwa possibbli li karatteristika tal-lingwa nattiva tkun ħafna aħjar u aktar performanti, iżda repożitorju tal-karatteristiċi jippermetti lill-utenti jkollhom aċċess għall-karatteristiċi ġodda kollha minnufih. U, l-aktar importanti, dan il-kunċett jippermetti lil kulħadd biex iżid kwalunkwe karatteristika ġdida li jrid.

Aktar kmieni fl-istorja tal-lingwa Wolfram, din l-idea ma kinitx taħdem daqshekk tajjeb, iżda f'dan l-istadju hemm tant sforz magħmul fil-lingwa, u fehim tant profond tal-prinċipji tad-disinn tal-lingwa, li issa jidher ħafna. possibbli għal komunità kbira ta 'utenti li żżid karatteristiċi li jżommu l-konsistenza tad-disinn biex jagħmluhom utli għal firxa wiesgħa ta' utenti.

Hemm spirtu inkredibbli ta' talent(?) fil-komunità ta' utenti Wolfram Language. (Naturalment, din il-komunità tinkludi ħafna nies ewlenin ta 'R&D f'varjetà ta' oqsma.) Nittama li l-Wolfram Feature Repository se jipprovdi pjattaforma effettiva għall-ftuħ u t-tixrid ta 'dan l-ispirtu ta' talent. Flimkien biss nistgħu noħolqu xi ħaġa li tespandi b'mod sinifikanti l-qasam li għalih tista' tiġi applikata l-paradigma tal-kompjuters tal-lingwa Wolfram.

F'aktar minn 30 sena, imxejna triq twila bil-lingwa Wolfram. Issa flimkien, ejja mmorru saħansitra aktar. Inħeġġeġ bil-qawwa lill-utenti kollha rispettati tal-lingwa Wolfram madwar id-dinja biex jużaw ir-repożitorju funzjonali bħala pjattaforma għal dan, kif ukoll il-proġett tas-softwer il-ġdid bħall-Magna Wolfram Ħieles għall-Iżviluppaturi.

Sors: www.habr.com

Żid kumment