Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Përshëndetje, Habr! Unë paraqes në vëmendjen tuaj një përkthim të postimit të Stephen Wolfram "Depoja e funksionit Wolfram: Nisja e një platforme të hapur për zgjerimin e gjuhës Wolfram".

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Parakushtet për qëndrueshmërinë e gjuhës Wolfram

Sot jemi në pragun e arritjeve të mëdha së bashku me gjuhën e programimit Gjuha Wolfram. Vetëm tre javë më parë ne nisëm Motori Wolfram falas për zhvilluesitpër të ndihmuar përdoruesit tanë të integrojnë gjuhën Wolfram në projektet e tyre softuerike në shkallë të gjerë. Sot po lançojmë Depoja e funksionit Wolfram, në mënyrë që të ofrojmë një platformë të koordinuar për funksionet e krijuara për të zgjeruar gjuhën Wolfram, dhe ne gjithashtu hapim një depo funksionesh për këdo që mund të kontribuojë në zhvillimin e produktit tonë softuerik.

Depoja e Funksionit Wolfram është diçka e mundur nga natyra unike e gjuhës Wolfram jo vetëm si gjuhë programimi, por edhe si gjuhë kompjuterike në shkallë të plotë. Në gjuhët tradicionale të programimit, shtimi i funksionaliteteve të reja të rëndësishme zakonisht përfshin krijimin e bibliotekave të tëra shtesë që mund ose nuk mund të funksionojnë kur përdoren së bashku. Megjithatë, në gjuhën Wolfram aq shumë është ndërtuar tashmë në vetë gjuhën, se është e mundur të zgjerohet ndjeshëm funksionaliteti i saj duke shtuar thjesht funksione të reja që integrohen menjëherë në strukturën holistike të të gjithë gjuhës.

Për shembull, depoja e funksionit Wolfram tashmë përmban 532 veçori të reja strukturuar në 26 kategori tematike:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Po kështu më shumë se 6000 funksione standarde, i integruar në gjuhën Wolfram, çdo funksion nga depoja ka një faqe dokumentacioni me një përshkrim të detajuar të tyre dhe shembuj të punës:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Për të shkuar te faqja, kopjoni objektin e mësipërm (funksionin BLOB), ngjisni atë në vijën e hyrjes dhe më pas ekzekutoni funksionin - ai tashmë është i integruar në gjuhën Wolfram dhe mbështetet si parazgjedhje duke filluar me versioni 12.0:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Këtu duhet theksuar se gjatë përpunimit LogoQRCode Ju nuk keni nevojë, për shembull, të krijoni një "bibliotekë të përpunimit të imazhit" - pasi ne kemi zbatuar tashmë një mënyrë të qëndrueshme dhe me kujdes algoritmike në gjuhën Wolfram përpunimi i imazhit, të cilat mund të përpunohen menjëherë nga funksione të ndryshme gjuhësore grafike:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Shpresoj që me mbështetjen komunitet i mrekullueshëm dhe i talentuar, e cila është rritur dhe zgjeruar (bazuar në gjuhën Wolfram) gjatë disa dekadave të fundit. Depoja e funksioneve Wolfram do të lejojë në të ardhmen e parashikueshme të zgjerojë ndjeshëm gamën e funksioneve (ndoshta të rëndësishme, të specializuara në fusha të ndryshme të shkencës dhe teknologjisë) të disponueshme në gjuhë. Kështu, bëhet e mundur përdorimi i përmbajtjes së gjuhës (funksionet e saj të integruara) dhe parimet e zhvillimit, të cilat zbatohen në bazë të gjuhës. (Duhet theksuar këtu se gjuha Wolfram tashmë ka më shumë se Histori 30-vjeçare e zhvillimit dhe rritjes së qëndrueshme).
Funksionet nga depoja mund të përmbajnë pjesë të vogla ose të mëdha kodi të shkruara në gjuhën Wolfram. Për shembull, këto mund të jenë thirrje API dhe shërbime të jashtme ose biblioteka të jashtme në gjuhë të tjera. Gjëja unike në lidhje me këtë qasje është se kur të stërviteni në funksionalitetin e nivelit të përdoruesit, nuk do të ketë mospërputhje të mundshme sepse qasja është ndërtuar mbi strukturën konsistente të gjuhës Wolfram - dhe çdo funksion automatikisht do të funksionojë si duhet - saktësisht si ajo duhet.
Struktura e guaskës dhe programimit të Depove të Veçorive Wolfram është krijuar në mënyrë që të gjithë të mund të kontribuojnë në kauzën e përbashkët në mënyrën më të thjeshtë dhe më të përshtatshme për ta - në fakt, vetëm duke plotësuar skedarin e tekstit të notepad (me shtesën nb) WL. Funksionet automatike të integruara ju lejojnë të kontrolloni funksionet e reja të shtuara në depo për të siguruar integrimin e tyre në gjuhë. Kompania jonë është duke vënë bast mbi gamën e gjerë të përdoruesve që mund të integrojnë funksionet e tyre në gjuhë, në vend se për kompleksitetin e madh të funksioneve të reja - dhe megjithëse ka një proces rishikimi, ne nuk insistojmë në ndonjë gjë të tillë analiza e mundimshme e dizajnit ose standarde strikte për plotësinë dhe besueshmërinë e veçorive të reja të përdoruesit, në krahasim me testimin më rigoroz të veçorive të integruara në gjuhën bazë që ne përdorim.

Ka shumë kompromis dhe detaje në këtë qasje, por qëllimi ynë është të optimizojmë depon e veçorive Wolfram si për përvojën e përdoruesit, ashtu edhe për të siguruar që veçoritë e reja të përdoruesit të kontribuojnë në mënyrë domethënëse në zhvillimin e gjuhës. Ndërsa rritemi, nuk kam asnjë dyshim se do të na duhet të shpikim metoda të reja për përpunimin dhe vërtetimin e funksioneve të integruara në depo, jo më pak për organizimin e një numri të madh funksionesh dhe gjetjen e atyre që u nevojiten përdoruesve. Megjithatë, është inkurajuese që rruga që kemi zgjedhur është një fillim i mbarë. Unë personalisht shtoi disa veçori në bazën e të dhënave origjinale. Shumë prej tyre bazohen në kodin që unë personalisht e kam zhvilluar për mjaft kohë. Dhe m'u deshën vetëm disa minuta për t'i shtyrë në depo. Tani që ato janë në depo, më në fund - menjëherë dhe në çdo kohë - mund t'i përdor këto funksione sipas nevojës, pa pasur nevojë të shqetësohem për kërkimin e skedarëve, shkarkimin e paketave, etj.

Rritja e efikasitetit duke ulur kostot

Edhe përpara internetit, kishte mënyra për të ndarë kodin Wolfram Language (projekti ynë i parë i madh i centralizuar ishte Burimi i matematikës, krijuar për Mathematica në 1991 bazuar në CD-ROM, etj.). Natyrisht, qasja e propozuar për zbatim bazuar në depon e funksionit Wolfram është një mjet më i fuqishëm dhe më i besueshëm për zbatimin e detyrave të mësipërme.

Për më shumë se 30 vjet, kompania jonë ka punuar me zell për të ruajtur integritetin e strukturës së gjuhës Wolfram dhe kjo është thelbësore për të siguruar që gjuha Wolfram të bëhet jo vetëm një gjuhë programimi, por edhe një gjuhë kompjuterike e plotë. Dhe kështu, thelbi i qasjes për zbatimin e depove të funksioneve Wolfram është përdorimi i një qasjeje të unifikuar për programimin dhe zhvillimin e funksioneve të reja që shtohen në mënyrë sekuenciale dhe përshtaten në kuadrin e gjuhës në mënyrë që ajo të mund të zhvillohet dhe të zhvillohet bashkë.

Në strukturën e zbatimit të secilit funksion ndodhin procese të ndryshme llogaritëse. Duhet të theksohet këtu se është e nevojshme që funksioni të ketë një pamje të qartë dhe uniforme dhe lexueshmëri vizuale për përdoruesit. Në këtë kontekst, funksionet e integruara të gjuhës Wolfram janë paraqitur me më shumë se 6000 shembuj sekuencialë se si të programohen siç duhet funksionet (këto janë video me programim të drejtpërdrejtëtë cilat përfshijnë qindra orë procesi i krijimit të programeve standarde). Ajo që kjo qasje e bën në fund të fundit depon e veçorive Wolfram të aftë për të performuar mirë është natyra strukturore e gjuhës Wolfram, me numrin e saj të madh të bibliotekave shtesë dhe të larmishme që tashmë janë ndërtuar në gjuhë. Për shembull, nëse keni një funksion që përpunon imazhe, ose vargje të rrallaOse strukturat molekulareDhe të dhënat gjeografike ose disa të tjera - përfaqësimi i tyre i qëndrueshëm simbolik tashmë ekziston në gjuhë, dhe falë kësaj, funksioni juaj menjëherë bëhet i pajtueshëm me funksionet e tjera në gjuhë.

Krijimi i një depoje që në fakt funksionon mirë është një detyrë interesante meta-programimi. Për shembull, një tepricë e kufizimeve në program nuk do të lejojë marrjen e unifikimit dhe universalitetit të kërkuar të algoritmit. Ashtu si me një numër të pamjaftueshëm kufizimesh funksionale, nuk do të jeni në gjendje të zbatoni një sekuencë mjaft të saktë të ekzekutimit të algoritmit. Disa shembuj të mëparshëm të zbatimit të një kompromisi të këtyre qasjeve, të zbatuara nga kompania jonë, funksionuan mjaft të qëndrueshme - këto janë: Projekti Demonstrimet Tungsten, i lançuar në 2007 dhe tani funksionon në internet me mbi 12000 demonstrime interaktive nga përdoruesit. NË Baza e të dhënave Wolfram ka më shumë se 600 baza të dhënash të gatshme që mund të përdoren në gjuhën Wolfram, dhe Ruajtja e rrjetit nervor Wolfram plotësohet me rrjete të reja nervore pothuajse çdo javë (tashmë janë 118 prej tyre) dhe ato lidhen menjëherë përmes funksionit NetModel në gjuhën Wolfram.

Të gjithë shembujt e mësipërm kanë një veçori themelore - objektet dhe funksionet e mbledhura në projekt kanë një shkallë shumë të lartë të strukturimit dhe shpërndarjes së proceseve. Sigurisht, detajet e strukturës së asaj që është një demo, një rrjet nervor ose diçka tjetër mund të ndryshojnë shumë, por struktura themelore për çdo depo aktuale mbetet gjithmonë e njëjtë. Pra, cili është mendimi juaj, i dashur përdorues, për krijimin e një depoje të tillë që shton shtesa në gjuhën Wolfram? Gjuha Wolfram është krijuar për të qenë jashtëzakonisht fleksibël, kështu që mund të zgjerohet dhe modifikohet në çdo mënyrë. Kjo rrethanë është jashtëzakonisht e rëndësishme për aftësinë për të krijuar shpejt projekte të ndryshme softuerike në shkallë të gjerë në gjuhën Wolfram. Këtu duhet theksuar se me rritjen e fleksibilitetit të gjuhës, kostoja e projekteve të zbatuara në një gjuhë të tillë në mënyrë të pashmangshme do të rritet. Kjo për faktin se sa më shumë përdoruesi përdor një gjuhë të tillë, aq më shumë funksionalitet të dedikuar merr ai, por nuk duhet harruar se kjo qasje mund të ketë edhe anë negative përsa i përket pamundësisë për të siguruar konsistencë të qëndrueshme të moduleve të programit.

Ekziston një problem i zakonshëm me bibliotekat në gjuhët tradicionale të programimit - nëse përdorni një bibliotekë, për shembull, kodi do të funksionojë siç duhet, por nëse përpiqeni të përdorni biblioteka të shumta, nuk ka asnjë garanci që ato do të ndërveprojnë saktë me njëri-tjetrin. . Gjithashtu, në gjuhët tradicionale të programimit - ndryshe nga një gjuhë kompjuterike e plotë - nuk ka asnjë mënyrë për të garantuar praninë e paraqitjeve të qëndrueshme të integruara për çdo funksion ose lloj të dhënash, përveç strukturave të tyre bazë. Por, në fakt, problemi është edhe më i madh nga sa duket në shikim të parë: nëse dikush po ndërton një vertikale funksionaliteti në shkallë të gjerë, atëherë pa kostot e mëdha të programimit të centralizuar të projektit që kemi vënë në gjuhën Wolfram, është e pamundur të të arrijë konsistencë. Prandaj është e rëndësishme që të gjitha modulet e softuerit të punojnë gjithmonë së bashku në mënyrë korrekte.

Pra, ideja pas depove të veçorive Wolfram është të shmanget problemi i përshkruar më sipër duke shtuar thjesht shtesa në gjuhë në pjesë relativisht të vogla të kodit nëpërmjet veçorive individuale që janë më të lehta për t'u zhvilluar si module koherente. Thënë kjo, ka veçori programimi që nuk mund të bëhen të përshtatshme duke përdorur funksione individuale (dhe kompania jonë po planifikon të lëshojë një algoritëm të optimizuar programimi në të ardhmen e afërt për të ndihmuar në zbatimin e paketave softuerike në shkallë të gjerë). Megjithatë, bazuar në funksionet e ndërtuara tashmë në gjuhën Wolfram, ka shumë mundësi programimi që zbatohen në bazë të funksioneve individuale. Ideja këtu është që me një përpjekje relativisht të vogël programimi është e mundur të krijohen një sërë funksionesh të reja dhe shumë të dobishme që do të sigurojnë koherencë të mjaftueshme në dizajn, ato do të jenë të koordinuara mirë me njëri-tjetrin, dhe gjithashtu, përveç kësaj, ato do të mund të përdoret lehtësisht dhe gjerësisht në gjuhë në të ardhmen.

Kjo qasje është, natyrisht, një kompromis. Nëse do të zbatohej një paketë më e madhe, mund të imagjinohej një botë krejtësisht e re funksionaliteti që do të ishte jashtëzakonisht e fuqishme dhe e dobishme. Nëse ka nevojë për të marrë funksionalitet të ri që do të përshtatet me gjithçka tjetër, por nuk jeni të gatshëm të shpenzoni shumë përpjekje për zhvillimin e projektit, kjo, për fat të keq, mund të çojë në një reduktim të fushës së projektit tuaj. Ideja pas depove të veçorive Wolfram është të sigurojë funksionalitet për një pjesë përcaktuese të një projekti; kjo qasje do të shtojë funksionalitet të fuqishëm duke e bërë më të lehtë ruajtjen e qëndrueshmërisë së mirë në një projekt programimi.

Ndihmoni në shtimin e funksioneve të personalizuara në depon e funksioneve

Ekipi ynë ka punuar shumë për ta bërë të lehtë për përdoruesit që të kontribuojnë në veçoritë e depove Wolfram. Në desktop (tashmë në versioni 12.0), Thjesht mund të kaloni nëpër skedat e menysë kryesore në mënyrë sekuenciale: Skedari > I ri > RepositoryItem > Artikulli i depove të funksionit dhe do të merrni "Fletore përkufizimi" (në mënyrë programore brenda tavolinës së punës. Mund të përdorni gjithashtu funksionin analog - Krijo fletore["Burimi i funksionit"]):

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Ka dy hapa kryesorë që do t'ju duhet të kryeni: së pari, shkruani kodin për funksionin tuaj dhe, së dyti, shkruani dokumentacionin që ilustron se si duhet të funksionojë funksioni juaj.
Klikoni butonin "Hap mostrën" në krye për të parë një shembull të asaj që duhet të bëni:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Në thelb, ju po përpiqeni të krijoni diçka të ngjashme me një funksion të integruar në gjuhën Wolfram. Përveç që mund të bëjë diçka shumë më specifike sesa një funksion i integruar. Në të njëjtën kohë, pritjet në lidhje me plotësinë dhe besueshmërinë e tij do të jenë shumë më të ulëta.
Ju duhet t'i jepni funksionit tuaj një emër që ndjek udhëzimet për emërtimin e funksioneve të gjuhës Wolfram. Përveç kësaj, do t'ju duhet të zhvilloni dokumentacion për funksionin tuaj, të ngjashëm me funksionet e integruara të gjuhës. Unë do të flas për këtë më në detaje më vonë. Tani për tani, vetëm vini re se në rreshtin e butonave në krye të skedarit të fletores së definicionit ka një buton "Udhëzimet e stilit", i cili shpjegon se çfarë të bëni dhe një buton Tools, i cili ofron mjete për formatimin e dokumentacionit të funksionit tuaj.
Kur të jeni të sigurt se gjithçka është plotësuar siç duhet dhe jeni gati, klikoni butonin "Kontrollo". Është krejtësisht normale që nuk i keni kuptuar ende të gjitha detajet. Kështu që funksioni "Kontrollo" do të funksionojë automatikisht dhe do të bëjë shumë kontrolle të stilit dhe konsistencës. Shpesh, menjëherë do t'ju kërkojë të konfirmoni dhe pranoni korrigjimet (Për shembull: "Kjo rresht duhet të përfundojë me dy pika" dhe do t'ju kërkojë të vendosni dy pika). Ndonjëherë ajo do t'ju kërkojë të shtoni ose ndryshoni diçka vetë. Ne do të shtojmë vazhdimisht veçori të reja në funksionalitetin automatik të butonit "Kontrollo", por në thelb qëllimi i tij është të sigurojë që gjithçka që dorëzoni në depon e veçorive të ndjekë nga afër sa më shumë udhëzime stili që të jetë e mundur

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Pra, pasi të keni ekzekutuar "Kontrollo", mund të përdorni "Preview". "Preview" krijon një pamje paraprake të faqes së dokumentacionit që keni përcaktuar për funksionin tuaj. Ju gjithashtu mund të krijoni një pamje paraprake për një skedar të krijuar në kompjuterin tuaj ose për një skedar të vendosur në ruajtjen e resë kompjuterike. Nëse, për ndonjë arsye, nuk jeni të kënaqur me atë që shihni në pamjen paraprake, thjesht kthehuni dhe bëni korrigjimet e nevojshme dhe më pas klikoni përsëri butonin Preview.
Tani jeni gati të shtyni funksionin tuaj në depo. Butoni Deploy ju jep katër opsione:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Gjëja e rëndësishme në këtë hap është që ju mund ta paraqisni funksionin tuaj në depon e funksionit Wolfram në mënyrë që të jetë i disponueshëm për këdo. Në të njëjtën kohë, ju gjithashtu mund të vendosni funksionin tuaj për një numër të kufizuar përdoruesish. Për shembull, mund të krijoni një funksion që është i pritur lokalisht në kompjuterin tuaj në mënyrë që të jetë i disponueshëm kur përdorni atë kompjuter të veçantë. Ose mund ta postoni në faqen tuaj llogari cloud, në mënyrë që të jetë i disponueshëm për ju kur jeni i lidhur me cloud. Ju gjithashtu mund të organizoni (shpërndani) funksionin publikisht përmes llogarisë suaj cloud. Nuk do të jetë në depon qendrore të veçorive të Wolfram, por do të mund t'i jepni dikujt një URL që do t'i lejojë ata të marrin veçorinë tuaj nga llogaria juaj. (Në të ardhmen, ne do të mbështesim gjithashtu depo qendrore në të gjithë kompaninë tonë.)

Pra, le të themi se dëshironi të dorëzoni funksionin tuaj në bazën e njohurive të funksionit Wolfram. Për ta bërë këtë, klikoni butonin "Dërgo" në depo. Atëherë, çfarë po ndodh në këtë moment? Aplikimi juaj është menjëherë në radhë për shqyrtim dhe miratim nga ekipi ynë i përkushtuar i kuratorëve.

Ndërsa aplikacioni juaj përparon përmes procesit të miratimit (i cili zakonisht zgjat disa ditë), ju do të merrni komunikime në lidhje me statusin e tij dhe ndoshta sugjerime për përdorim në të ardhmen. Por sapo funksioni juaj të miratohet, ai do të publikohet menjëherë në Depon e Veçorive Wolfram dhe do të jetë i disponueshëm për këdo që ta përdorë. (Dhe kjo do të shfaqet në lajmet përmbledhin veçoritë e reja dhe kështu me radhë)

Çfarë duhet të jetë në ruajtje?

Duhet të theksohet se kompania jonë ka standarde shumë të larta për plotësinë, besueshmërinë dhe cilësinë e përgjithshme, nga 6000+ funksionet që kemi ndërtuar tashmë në gjuhën Wolfram gjatë 30+ viteve të fundit të gjitha plotësojnë kërkesat e mësipërme. Qëllimi i Depove të Funksionit Wolfram është të përdorë të gjithë strukturën dhe funksionalitetin që ekziston në gjuhën Wolfram në mënyrë që të shtojë sa më shumë funksione më të lehta (d.m.th. funksione me performancë më të lartë).

Natyrisht, funksionet në depon e funksioneve Wolfram duhet të jenë në përputhje me parimet e projektimit të gjuhës Wolfram - në mënyrë që ato të mund të ndërveprojnë plotësisht me funksionet e tjera dhe pritshmëritë e përdoruesve se si funksioni duhet të funksionojë siç duhet. Megjithatë, funksionet nuk duhet të jenë të plotësisë ose besueshmërisë së njëjtë.

Në funksionet e integruara të gjuhës Wolfram, ne punojmë shumë për t'i bërë funksionet e programimit sa më të përgjithshme. Thënë kjo, kur je në depon e funksionit Wolfram, nuk ka asgjë të keqe të kesh një funksion në të që thjesht trajton një rast shumë specifik, por të dobishëm. Për shembull, funksioni Dërgo MailNga Notebook mund të marrë skedarë në një format specifik dhe të krijojë postë në një mënyrë specifike. Diagrami poligonal krijon tabela vetëm me ngjyra dhe etiketime të caktuara, etj.

Një pikë tjetër në lidhje me funksionet e integruara është se kompania jonë bën çdo përpjekje për të trajtuar të gjitha rastet atipike, për të trajtuar saktë hyrjen e pasaktë, etj. Në një depo funksioni, është krejtësisht normale që të ketë një funksion të veçantë që trajton rastet kryesore të zgjidhjes së një problemi dhe injoron të gjitha të tjerat.

Pika e qartë është se është më mirë të kesh funksione që bëjnë më shumë dhe e bëjnë më mirë, por optimizimi për një depo funksioni - në krahasim me funksionet e integruara të gjuhës Wolfram - duhet të ketë më shumë funksione të bashkuara me më shumë funksione në vend që të hulumtojë në proceset e zbatimit të secilit funksion specifik.

Tani le të shohim një shembull të funksioneve të testimit në një depo. Pritjet e konsistencës për funksione të tilla janë natyrisht shumë më të ulëta se sa për funksionet e integruara gjuhësore. Kjo është veçanërisht e vërtetë në rastet kur funksionet varen nga burime të jashtme si API-të, është e rëndësishme të kryhen vazhdimisht teste të qëndrueshme, gjë që ndodh automatikisht brenda algoritmeve të verifikimit. Në skedarin nb, ju mund të specifikoni në mënyrë eksplicite përkufizime (në seksionin Informacion shtesë) dhe të specifikoni sa më shumë teste të përcaktuara nga vargjet hyrëse dhe dalëse ose objektet me karakter të plotë të tipit Testi i verifikimit, aq sa e shihni të arsyeshme. Për më tepër, sistemi po përpiqet vazhdimisht t'i kthejë shembujt e dokumentacionit që ofroni në një proces verifikimi (dhe nganjëherë ky mund të jetë mjaft intensiv me burime, për shembull, për një funksion, rezultati i të cilit varet nga numrat e rastësishëm ose nga koha e ditës).

Si rezultat, depoja e funksionit do të ketë një sërë kompleksitetesh zbatimi. Disa do të jenë vetëm një linjë e vetme kodi, të tjera mund të përfshijnë mijëra ose dhjetëra mijëra rreshta, me gjasë duke përdorur shumë funksione ndihmëse. Kur ia vlen të shtohet një funksion që kërkon shumë pak kod për të përcaktuar? Në thelb, nëse për një funksion ka emër kujtues i mirë, të cilin përdoruesit do ta kuptonin lehtësisht nëse e shihnin në një pjesë të kodit, atëherë ai tashmë mund të shtohet. Përndryshe, është ndoshta më mirë që thjesht ta ri-shtoni kodin në programin tuaj sa herë që duhet ta përdorni.

Qëllimi kryesor i një depoje funksioni (siç sugjeron emri i tij) është të prezantojë veçori të reja në gjuhë. Nëse dëshironi të shtoni të dhëna të reja ose subjektet e reja, përdorni Depoja e të dhënave Wolfram. Por, çka nëse dëshironi të prezantoni lloje të reja objektesh për llogaritjet tuaja?

Në fakt ka dy mënyra. Ju mund të dëshironi të prezantoni një lloj të ri objekti që do të përdoret në funksione të reja në depon e funksioneve. Dhe në këtë rast, gjithmonë mund të shkruani paraqitjen e tij simbolike dhe ta përdorni kur futni ose nxirrni funksione në një depo funksioni.

Por, çka nëse dëshironi të përfaqësoni një objekt dhe më pas të përcaktoni, nëpërmjet funksioneve ekzistuese në gjuhën Wolfram, që dëshironi të punoni me të? Gjuha Wolfram ka pasur gjithmonë një mekanizëm të lehtë për këtë, të quajtur Vlerat lart. Me disa kufizime (veçanërisht për funksionet që nuk mund të vlerësojë argumentet e tyre), një depo funksioni ju lejon të përfaqësoni thjesht një funksion dhe të përcaktoni vlerat për të. (Për të rritur pritshmërinë e qëndrueshmërisë kur krijoni një dizajn të ri të rëndësishëm që është plotësisht i integruar kudo në gjuhën Wolfram është përgjithësisht një procedurë shumë e rëndësishme që nuk mund të arrihet vetëm duke rritur koston e projektit, dhe kjo është ajo që bën kompania jonë si pjesë të projekteve për zhvillimin afatgjatë të gjuhës, kjo detyrë nuk është një synim që vendoset në kuadrin e zhvillimit të depove).

Pra, çfarë mund të jetë në kodin e funksionit në një depo funksioni? Gjithçka e ndërtuar në gjuhën Wolfram, sigurisht (të paktën nëse nuk përfaqëson kërcënimet për sigurinë dhe performancën e vetë programit, si një mjedis kompjuterik) si dhe çdo funksion nga depoja e funksioneve. Megjithatë, ka funksionalitete të tjera: një funksion në një depo funksioni mund të thërrasë një API, ose in Wolfram CloudOse nga një burim tjetër. Sigurisht, ka disa rreziqe që lidhen me këtë. Për shkak të faktit se nuk ka garanci që API nuk do të ndryshojë dhe funksioni në dyqanin e funksioneve do të ndalojë së punuari. Për të ndihmuar në identifikimin e problemeve të tilla, ka një shënim në faqen e dokumentacionit (në seksionin e Kërkesave) për çdo funksion që mbështetet në më shumë sesa thjesht funksionalitetin e integruar të Wolfram Language. (Sigurisht, kur bëhet fjalë për të dhëna reale, mund të ketë probleme edhe me këtë funksionalitet - sepse të dhënat e botës reale po ndryshojnë vazhdimisht, dhe ndonjëherë edhe përkufizimet dhe struktura e tyre ndryshojnë.)

A duhet të shkruhet i gjithë kodi për depon e veçorive Wolfram në Wolfram? Sigurisht, kodi brenda API-së së jashtme nuk duhet të shkruhet në gjuhën Wolfram, e cila as nuk e bën kodin e gjuhës. Në fakt, nëse gjeni një funksion pothuajse në çdo gjuhë ose bibliotekë të jashtme, mund të krijoni një mbështjellës që ju lejon ta përdorni në depon e funksionit Wolfram. (Zakonisht duhet të përdorni funksionet e integruara për këtë Vlerësimi i Jashtëm ose Funksioni i Jashtëm në kodin e gjuhës Wolfram.)

Pra, çfarë kuptimi ka ta bësh këtë? Në thelb, kjo ju lejon të përdorni të gjithë sistemin e integruar të Wolfram Language dhe të gjithë grupin e tij të unifikuar të aftësive softuerike. Nëse e merrni zbatimin bazë nga një bibliotekë ose gjuhë e jashtme, atëherë mund të përdorni strukturën e pasur simbolike të gjuhës Wolfram për të krijuar një funksion të përshtatshëm të nivelit të lartë që i lejon përdoruesit të përdorin lehtësisht çdo funksionalitet të implementuar tashmë. Së paku, kjo duhet të jetë e realizueshme në një botë ideale ku ekzistojnë të gjitha blloqet ndërtuese të ngarkimit të bibliotekave etj., në të cilin rast ato do të trajtoheshin automatikisht nga Gjuha Wolfram. (Duhet të theksohet se në praktikë mund të ketë probleme me vendosja e gjuhëve të jashtme sistemi specifik kompjuterik dhe ruajtja në renë kompjuterike mund të paraqesin çështje shtesë të sigurisë).

Meqë ra fjala, kur shikoni për herë të parë bibliotekat tipike të jashtme, ato shpesh duken shumë komplekse për t'u mbuluar në vetëm disa funksione, por në shumë raste, pjesa më e madhe e kompleksitetit vjen nga krijimi i infrastrukturës së nevojshme për bibliotekën dhe të gjitha funksionet për të. mbështesin atë. Sidoqoftë, kur përdorni gjuhën Wolfram, infrastruktura zakonisht është e integruar tashmë në paketa, dhe kështu nuk ka nevojë të ekspozohen të gjitha këto funksione mbështetëse në detaje, por vetëm të krijohen funksione për funksionet "më të larta" specifike të aplikacionit në bibliotekë. .

"Ekosistemi" i bazës së njohurive

Nëse keni shkruar funksione që i përdorni rregullisht, dorëzojini ato në Depon e Funksionit Wolfram! Nëse diçka më shumë nuk del nga kjo (zhvillimi i gjuhës), atëherë edhe atëherë do të jetë shumë më i përshtatshëm për ju të përdorni funksionet për përdorim personal. Sidoqoftë, është logjike të supozohet se nëse i përdorni funksionet rregullisht, ndoshta edhe përdoruesit e tjerë do t'i gjejnë ato të dobishme.

Natyrisht, mund të gjendeni në një situatë ku nuk jeni në gjendje - ose nuk dëshironi - të ndani funksionet tuaja ose në rast të fitimit të aksesit në burimet e informacionit privat. Edhe në raste të tilla, ju thjesht mund të vendosni funksionet në llogarinë tuaj cloud, duke specifikuar të drejtat qasje në to. (Nëse organizata juaj ka Re private e Wolfram Enterprise, atëherë së shpejti do të jetë në gjendje të presë depon e vet të veçorive private, e cila mund të administrohet nga brenda organizatës suaj dhe të vendosë nëse do të detyrohen ose jo shikimet të shikohen nga përdoruesit e palëve të treta.)

Funksionet që dorëzoni në depon e funksioneve Wolfram nuk duhet të jenë të përsosura; ato thjesht duhet të jenë të dobishme. Kjo është paksa e ngjashme me seksionin "Gabimet" në dokumentacionin klasik të Unix - në "Seksionin e përkufizimeve" ekziston një seksion "Shënimet e autorit" ku mund të përshkruani kufizimet, problemet, etj. që tashmë i dini për funksionin tuaj. Për më tepër, kur dorëzoni veçorinë tuaj në depo, mund të shtoni shënime dorëzimi që do të lexohen nga një ekip i përkushtuar kuratorësh.

Pasi një veçori publikohet, faqja e tij ka gjithmonë dy lidhje në fund: "Dërgoni një mesazh në lidhje me këtë funksion"Dhe"Diskutoni në komunitetin Wolfram" Nëse po bashkëngjitni një shënim (p.sh., më tregoni për gabimet), mund të zgjidhni kutinë që thotë se dëshironi që mesazhi juaj dhe informacioni i kontaktit të ndahen me autorin e funksionit.

Ndonjëherë thjesht dëshironi të përdorni funksione nga depoja e funksioneve Wolfram, të tilla si funksionet e integruara, pa shikuar kodin e tyre. Megjithatë, nëse doni të hidhni një sy brenda, ka gjithmonë një buton Notepad në krye. Klikoni mbi të dhe do të merrni kopjen tuaj të fletores origjinale të definicionit që u dërgua në depon e veçorive. Ndonjëherë mund ta përdorni vetëm si shembull për nevojat tuaja. Në të njëjtën kohë, ju gjithashtu mund të zhvilloni modifikimin tuaj të këtij funksioni. Ju mund të dëshironi t'i postoni këto funksione që gjetët nga depoja në kompjuterin tuaj ose në llogarinë tuaj të ruajtjes së resë aphid, ndoshta dëshironi t'i paraqisni ato në bazën e njohurive të funksionit, ndoshta si një version i përmirësuar dhe i zgjeruar i funksionit origjinal.

Në të ardhmen, ne planifikojmë të mbështesim forcimin e stilit Git për depot e veçorive, por tani për tani po përpiqemi ta mbajmë të thjeshtë dhe gjithmonë kemi vetëm një version të pranuar të çdo veçorie të integruar në gjuhë. Më shpesh sesa jo (përveç nëse zhvilluesit heqin dorë nga ruajtja e veçorive që kanë zhvilluar dhe i përgjigjen parashtrimeve të përdoruesve), autori origjinal i veçorisë merr kontrollin e përditësimeve të tij dhe dorëzon versione të reja, të cilat më pas rishikohen dhe, nëse kalojnë procesin e rishikimit , botuar në gjuhën.

Le të shqyrtojmë pyetjen se si funksionon "versionimi" i funksioneve të zhvilluara. Tani për tani, kur përdorni një funksion nga depoja e funksioneve, përkufizimi i tij do të ruhet përgjithmonë në kompjuterin tuaj (ose në llogarinë tuaj cloud nëse jeni duke përdorur renë kompjuterike). Nëse disponohet një version i ri i një veçorie, herën tjetër që ta përdorni, do të merrni një mesazh që ju njofton për këtë. Dhe nëse dëshironi të përditësoni funksionin në një version të ri, mund ta bëni duke përdorur komandën Përditësimi i Burimeve. ("Funksioni blob" në fakt ruan më shumë informacione për versionet dhe ne planifikojmë ta bëjmë këtë më të aksesueshme për përdoruesit tanë në të ardhmen.)

Një nga gjërat e bukura në lidhje me Depon e Funksionit Wolfram është se çdo program Wolfram Language, kudo mund të përdorë funksione prej tij. Nëse një program shfaqet në një bllok shënimesh, shpesh është i përshtatshëm për të formatuar funksionet e ruajtjes si funksione "funksionale binar" të lehtë për t'u lexuar (ndoshta me një grup versionesh të përshtatshme).

Mund të përdorni gjithmonë çdo funksion në depon e funksionit duke përdorur tekst Funksioni i burimit[...]. Dhe kjo është shumë e përshtatshme nëse shkruani kodin ose skriptet direkt për Wolfram Engine, për shembull, me duke përdorur një IDE ose një redaktues kodi teksti (duhet të theksohet veçanërisht se depoja e funksionit është plotësisht e pajtueshme me Pa pagesë Wolfram Engine për Zhvilluesit).

Si funksionon kjo gjë?

Brenda funksioneve në depon e Wolfram kjo është e mundur duke përdorur saktësisht të njëjtën gjë sistemet e burimeve bazat, si në të gjitha depot tona ekzistuese (magazina e të dhënave, Depoja e rrjetit nervor, koleksion i projekteve demo etj.), si të gjitha burimet e tjera të sistemit Wolfram, Funksioni i Burimeve në fund të fundit bazuar në funksion Objekti i Burimit.

Konsideroj Funksioni i Burimeve:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Brenda mund të shihni disa informacione duke përdorur funksionin informacion:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Si funksionon konfigurimi i një funksioni burimi? Më e thjeshta është një rast thjesht lokal. Këtu është një shembull që merr një funksion (në këtë rast vetëm një funksion të pastër) dhe e përcakton atë si një funksion burimi për një sesion të caktuar programi:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Pasi të keni bërë përkufizimin, mund të përdorni funksionin e burimit:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Vini re se ka një ikonë të zezë në këtë pikë funksioni Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram. Kjo do të thotë që funksioni BLOB i referohet funksionit të burimit në memorie të përcaktuar për sesionin aktual. Një veçori burimi që ruhet përgjithmonë në kompjuterin tuaj ose në llogarinë cloud ka një ikonë gri Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram. Dhe ka një ikonë portokalli për një veçori zyrtare të burimeve në Depon e Veçorive Wolfram Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram.

Pra, çfarë ndodh kur përdorni menynë "Zgjero" në fletoren "Përkufizimi"? Së pari, merr të gjitha përkufizimet në bllokun e shënimeve dhe prej tyre krijon një simbolikë Objekti i Burimit). (Dhe nëse jeni duke përdorur një IDE ose program të bazuar në tekst, atëherë mund të krijoni gjithashtu në mënyrë eksplicite Objekti i Burimit)

Vendosja lokale e një funksioni nga një depo në kompjuterin tuaj kryhet duke përdorur komandën LocalCache për një objekt burimi për ta ruajtur atë si LocalObject në sistemin tuaj të skedarëve. Vendosja në një llogari cloud kryhet duke përdorur komandën CloudDeploy për një objekt burimi, dhe një vendosje e resë publike është CloudPublish. Në të gjitha rastet Regjistrohu i Burimeve përdoret gjithashtu për të regjistruar emrin e funksionit të burimit, pra Funksioni i burimit["emri"] do të funksionojë.

Nëse klikoni butonin Submit për një depo funksioni, çfarë ndodh nën të BurimiDorëzoni thirrur në një objekt burimi. (Dhe nëse jeni duke përdorur një ndërfaqe për futjen e tekstit, mund të telefononi gjithashtu BurimiDorëzoni drejtpërdrejt.)

Si parazgjedhje, dorëzimet bëhen nën emrin e lidhur me ID-në tuaj Wolfram. Por nëse po paraqisni një aplikim në emër të një ekipi ose organizate zhvillimi, mundeni cakto ID-në e veçantë të botuesit dhe në vend të kësaj përdorni atë si emër për të bashkëvepruar me pikëpamjet tuaja.

Pasi të keni dorëzuar ndonjë nga funksionet tuaja në bazën e njohurive të funksionit, ai do të vihet në radhë për shqyrtim. Nëse merrni komente si përgjigje, ato zakonisht do të jenë në formën e një skedari teksti me shtimin e "qelizave të komenteve" shtesë. Ju gjithmonë mund të kontrolloni statusin e aplikacionit tuaj duke vizituar portali i anëtarëve të sistemit të burimeve. Por pasi veçoria juaj të miratohet, do të njoftoheni (me email) dhe veçoria juaj do të postohet në depon e veçorive Wolfram.

Disa hollësi në punë

Në pamje të parë mund të duket sikur thjesht mund të marrësh një fletore përkufizimesh dhe ta vendosësh fjalë për fjalë në një depo funksioni, megjithatë, në fakt ka mjaft hollësi të përfshira - dhe trajtimi i tyre kërkon kryerjen e disa meta-programimeve mjaft komplekse, trajtimin e përpunimit simbolik si kodi që përcakton funksionin , dhe vetë Notepad është përcaktuar. Shumica e kësaj ndodh brenda, prapa skenave, por mund të ketë disa implikime që ia vlen të kuptohen nëse do të kontribuoni në bazën e njohurive të veçorive.

Hollësia e parë e menjëhershme: Kur plotësoni fletoren e përkufizimit, thjesht mund t'i referoheni funksionit tuaj kudo duke përdorur një emër si p.sh. MyFunction, i cili duket si një emër i rregullt për një funksion në gjuhën Wolfram, por për dokumentacionin e depove të funksionit ky është zëvendësuar Funksioni i burimit["Funksioni im"] është ajo që përdoruesit do të përdorin në të vërtetë kur punojnë me funksionin.

Delikatesa e dytë: kur krijoni një funksion burimi nga Fletorja e Përkufizimit, të gjitha varësitë e përfshira në përkufizimin e funksionit duhet të kapen dhe të përfshihen në mënyrë eksplicite. Sidoqoftë, për të siguruar që përkufizimet të mbeten modulare, duhet të vendosni gjithçka në një mënyrë unike hapësira e emrit. (Sigurisht, funksionet që i bëjnë të gjitha, janë në depon e funksionit.)

Zakonisht nuk do të shihni kurrë ndonjë gjurmë të kodit të përdorur për të konfiguruar këtë hapësirë ​​emri. Por nëse për ndonjë arsye thërrisni një simbol të nënekzekutuar brenda funksionit tuaj, atëherë do të shihni se ky simbol është në kontekstin e brendshëm të funksionit. Megjithatë, kur përpunohet Notepad i definicionit, të paktën është simboli që korrespondon me vetë funksionin i rregullueshëm për shfaqjen më të mirë si një BLOB funksional dhe jo një karakter i papërpunuar në kontekstin e brendshëm.

Depoja e funksionit është për përcaktimin e funksioneve të reja. Dhe këto funksione mund të kenë opsione. Shpesh këto parametra (për shembull, Metoda e dërgesës ose Madhësia e imazhit) do të mund të përdoret për funksionet e integruara, si dhe për ato për të cilat tashmë ekzistojnë simbole të integruara. Por ndonjëherë një veçori e re mund të kërkojë opsione të reja. Për të ruajtur modularitetin, këta parametra duhet të jenë simbole të përcaktuara në një kontekst të brendshëm unik (ose diçka si funksionet e tëra burimeve, domethënë vetë). Për thjeshtësi, depoja e funksionit ju lejon të përcaktoni opsione të reja në përkufizimet e vargjeve. Dhe për lehtësinë e përdoruesit, këto përkufizime (duke supozuar se kanë përdorur Vlera e opsionit и Modeli i opsioneve) gjithashtu përpunohen në mënyrë që gjatë përdorimit të funksioneve, parametrat të mund të specifikohen jo vetëm si vargje, por edhe si simbole globale me emra të njëjtë.

Shumica e funksioneve thjesht bëjnë atë që duhet të bëjnë sa herë që thirren, por disa funksione duhet të inicializohen përpara se të mund të ekzekutohen në një sesion të caktuar - dhe për të zgjidhur këtë problem, ekziston një seksion "Inicializimi" në seksionin Përkufizim.

Funksionet nga një depo mund të përdorin funksione të tjera që janë tashmë në depo; në mënyrë që të vendosni përkufizime për një depo funksioni që përfshin dy (ose më shumë) funksione që i referohen njëri-tjetrit, ju duhet t'i vendosni ato në sesionin e programit tuaj në mënyrë që të mund të referencë si në to Funksioni i burimit["emri"], atëherë mund të krijoni kombinimet e këtyre funksioneve që ju nevojiten, shembuj (nuk e kuptova) dhe të shtoni një funksion të ri në depo bazuar në ato të postuara tashmë më parë. (ose tashmë ose më parë - të dyja fjalët janë të ngathëta)

Perspektivat e zhvillimit. Çfarë duhet të ndodhë kur depoja bëhet vërtet e madhe?

Sot sapo po lançojmë Depon e Veçorive Wolfram, por me kalimin e kohës presim që madhësia dhe funksionaliteti i tij mund të rriten në mënyrë dramatike dhe ndërsa rritet në zhvillim, do të ketë probleme të ndryshme që tashmë parashikojmë se mund të shfaqen.

Problemi i parë ka të bëjë me emrat e funksioneve dhe veçantinë e tyre. Depoja e funksionit është projektuar në atë mënyrë që, si funksionet e integruara në gjuhën Wolfram, ju mund t'i referoheni çdo funksioni të caktuar thjesht duke specifikuar emrin e tij. Por kjo në mënyrë të pashmangshme do të thotë që emrat e funksioneve duhet të jenë unikë globalisht në të gjithë depo, kështu që, për shembull, mund të ketë vetëm një Funksioni i burimit["Funksioni im i preferuar"].

Ky mund të duket si një problem i madh në fillim, por ia vlen të kuptoni se në thelb është i njëjti problem si për gjëra të tilla si domenet e internetit ose dorezat e mediave sociale. Dhe fakti është se sistemi thjesht duhet të ketë një regjistrues - dhe ky është një nga rolet që kompania jonë do të kryejë për bazën e njohurive të funksionit Wolfram. (Për versionet private të një depoje, regjistruesit e tyre mund të jenë administratorë.) Sigurisht, një domen në internet mund të regjistrohet pa pasur asgjë në të, por në një depo funksioni, një emër funksioni mund të regjistrohet vetëm nëse ekziston një përkufizim aktual i funksionin.

Një pjesë e rolit tonë në menaxhimin e bazës së njohurive të funksionit Wolfram është të sigurojmë që emri i zgjedhur për një funksion është i logjikshëm duke pasur parasysh përkufizimin e funksionit dhe se ai ndjek konventat e emërtimit të gjuhës Wolfram. Ne kemi mbi 30 vjet përvojë në emërtimin e funksioneve të integruara në gjuhën Wolfram dhe ekipi ynë i kuratorëve (kuratorëve?) do ta sjellë këtë përvojë edhe në depon e funksioneve. Sigurisht, ka gjithmonë përjashtime. Për shembull, mund të duket e preferueshme të kesh një emër të shkurtër për ndonjë funksion, por është më mirë të "mbrohesh" me një emër më të gjatë, më specifik, sepse ka më pak gjasa të hasësh dikë që dëshiron të bëjë një emër të ngjashëm funksioni në të ardhmen. .

(Këtu duhet të theksohet se thjesht shtimi i disa etiketave të anëtarëve për të zbërthyer funksionet nuk do të ketë efektin e synuar. Sepse nëse nuk insistoni të caktoni gjithmonë një etiketë, do t'ju duhet të përcaktoni një etiketë të paracaktuar për çdo funksion të caktuar dhe gjithashtu të caktoni etiketat e autorit , e cila përsëri do të kërkonte koordinim global.)

Ndërsa baza e njohurive për funksionet Wolfram rritet, një nga problemet që ka të ngjarë të lindë është zbulueshmëria e funksioneve, për të cilat sistemi ofron funksioni i kërkimit (dhe skedarët e përkufizimit mund të përfshijnë fjalë kyçe, etj.). Për funksionet e integruara në gjuhën Wolfram, ka të gjitha llojet e referencave të kryqëzuara në dokumentacion për të ndihmuar në "reklamimin" e funksioneve. Funksionet në një depo funksioni mund të referojnë funksionet e integruara. Por ç'të themi anasjelltas? Për ta bërë këtë, ne do të eksperimentojmë me dizajne të ndryshme për të ekspozuar funksionet e depove në faqet e dokumentacionit për funksionet e integruara.

Për funksionet e integruara në gjuhën Wolfram ekziston një e ashtuquajtur shtresa zbulimi e ofruar nga rrjeti i "faqeve të ndihmës", të cilat ofrojnë lista të organizuara të veçorive që lidhen me fusha specifike. Është gjithmonë e vështirë të balancosh siç duhet faqet e njeriut, dhe ndërsa gjuha Wolfram rritet, faqet e njeriut shpesh duhet të riorganizohen plotësisht. Është mjaft e lehtë të vendosësh funksione nga një depo në kategori të gjera, madje edhe t'i ndash ato kategori në mënyrë të vazhdueshme, por është shumë më e vlefshme të kesh faqe referimi gjuhësore të organizuara siç duhet. Nuk është ende e qartë se si të krijohen ato për të gjithë bazën e njohurive të funksionit. Për shembull, CreateResourceObjectGalery në depon e veçorive, çdokush mund të postojë një faqe interneti që përmban "zgjedhjet" e tyre nga depoja:

Depoja e Funksionit Wolfram: Platforma e hapur e aksesit për shtesat e gjuhës Wolfram

Depoja e funksionit Wolfram është konfiguruar si një depo e funksioneve të vazhdueshme, ku çdo funksion në të do të funksionojë gjithmonë. Natyrisht, versionet e reja të veçorive mund të bëhen të disponueshme dhe ne presim që disa veçori sigurisht të vjetërohen me kalimin e kohës. Funksionet do të funksionojnë nëse përdoren në programe, por faqet e tyre të dokumentacionit do të lidhen me funksione të reja, më të avancuara.

Depoja e veçorive Wolfram është krijuar për t'ju ndihmuar të zbuloni shpejt veçori të reja dhe të mësoni mënyra të reja për të përdorur gjuhën Wolfram. Është me shumë optimizëm që disa nga ato që janë eksploruar në depon e veçorive përfundimisht do të kenë kuptim të bëhen pjesë të integruara të gjuhës bazë të Wolfram. Gjatë dekadës së fundit ne kemi pasur një grup të ngjashëm veçoritë që u prezantuan fillimisht në Wolfram | Alfa. Dhe një nga mësimet e nxjerra nga kjo përvojë është se arritja e standardeve të cilësisë dhe qëndrueshmërisë në të cilat ne fokusohemi në çdo gjë të ndërtuar në gjuhën Wolfram kërkon shumë punë, e cila shpesh është më e vështirë se përpjekja fillestare për zbatimin e idesë. Megjithatë, një funksion në bazën e njohurive të funksionit mund të shërbejë si një provë shumë e dobishme e konceptit për një funksion të ardhshëm që mund të ndërtohet përfundimisht në gjuhën Wolfram.

Gjëja më e rëndësishme këtu është se një funksion në një depo funksioni është diçka që është e disponueshme për çdo përdorues për ta përdorur tani. Është e mundur që një veçori e gjuhës amtare mund të jetë shumë më e mirë dhe më e efektshme, por një depo e veçorive do t'i lejonte përdoruesit të kenë akses në të gjitha veçoritë e reja menjëherë. Dhe, më e rëndësishmja, ky koncept i lejon të gjithëve të shtojnë çdo veçori të re që dëshirojnë.

Më parë në historinë e gjuhës Wolfram, kjo ide nuk do të kishte funksionuar aq mirë sa ka funksionuar, por në këtë fazë është bërë kaq shumë përpjekje në gjuhë dhe një kuptim kaq i thellë i parimeve të dizajnit të gjuhës, sa që tani duket shumë e mundur që një komunitet i madh përdoruesish të shtojë veçori që do të ruajnë konsistencën e dizajnit për t'i bërë ato të dobishme për një gamë të gjerë përdoruesish.

Ekziston një shpirt i pabesueshëm talenti(?) në komunitetin e përdoruesve të Wolfram Language. (Sigurisht, ky komunitet përfshin shumë ekspertë kryesorë të kërkimit dhe zhvillimit në një sërë fushash.) Shpresoj që Depoja e Veçorive të Wolfram do të ofrojë një platformë efektive për zhbllokimin dhe përhapjen e kësaj shpirti talenti. Vetëm së bashku mund të krijojmë diçka që do të zgjerojë ndjeshëm zonën në të cilën mund të zbatohet paradigma kompjuterike e gjuhës Wolfram.

Në më shumë se 30 vjet, ne kemi bërë një rrugë të gjatë me gjuhën Wolfram. Tani së bashku, le të shkojmë edhe më tej. Unë inkurajoj fuqimisht të gjithë përdoruesit e respektuar të gjuhës Wolfram në mbarë botën që të përdorin depon funksionale si një platformë për këtë, si dhe projektin e ri të softuerit të tillë si Free Wolfram Engine for Developers.

Burimi: www.habr.com

Shto një koment