Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Բարև, Հաբր: Ձեր ուշադրությանն եմ ներկայացնում Սթիվեն Վոլֆրամի գրառման թարգմանությունը «Wolfram Function Repository. Վոլֆրամի լեզվի ընդլայնման համար բաց հարթակի գործարկում».

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Վոլֆրամի լեզվի հետևողականության նախադրյալները

Այսօր մենք ծրագրավորման լեզվի հետ միասին կանգնած ենք մեծ ձեռքբերումների շեմին Վոլֆրամի լեզու. Ընդամենը երեք շաբաթ առաջ մենք գործարկեցինք անվճար Wolfram շարժիչ մշակողների համարօգնել մեր օգտատերերին ինտեգրել Wolfram լեզուն իրենց լայնածավալ ծրագրային նախագծերում: Այսօր մենք մեկնարկում ենք Wolfram ֆունկցիայի պահոց, Wolfram լեզուն ընդլայնելու համար ստեղծված գործառույթների համար համակարգված հարթակ տրամադրելու համար, և մենք նաև գործառույթների շտեմարան ենք բացում բոլորի համար, ովքեր կարող են նպաստել մեր ծրագրային արտադրանքի զարգացմանը:

Wolfram Function Repository-ը մի բան է, որը հնարավոր է դարձել Wolfram լեզվի յուրահատուկ բնույթի շնորհիվ ոչ միայն որպես ծրագրավորման լեզու, այլ նաև որպես ամբողջական հաշվողական լեզու. Ավանդական ծրագրավորման լեզուներում զգալի նոր գործառույթների ավելացումը սովորաբար ներառում է ամբողջ լրացուցիչ գրադարանների ստեղծում, որոնք կարող են կամ չաշխատել, երբ օգտագործվում են միասին: Այնուամենայնիվ, Wolfram լեզվով այնքան բան արդեն ներկառուցված է հենց լեզվի մեջ, որ հնարավոր է զգալիորեն ընդլայնել դրա ֆունկցիոնալությունը՝ պարզապես ավելացնելով նոր գործառույթներ, որոնք անմիջապես ինտեգրվում են ամբողջ լեզվի ամբողջական կառուցվածքին։

Օրինակ, Wolfram ֆունկցիայի պահոցն արդեն պարունակում է 532 նոր հնարավորություններ կառուցված է 26 թեմատիկ կատեգորիաներով.

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Նույնպես ավելի քան 6000 ստանդարտ գործառույթներ, ներկառուցված Wolfram լեզվի մեջ, պահոցից յուրաքանչյուր գործառույթ ունի փաստաթղթերի էջ՝ դրանց մանրամասն նկարագրությամբ և աշխատանքի օրինակներով.

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Էջին հասնելու համար պատճենեք վերը նշված օբյեկտը (BLOB ֆունկցիան), տեղադրեք այն մուտքագրման տողում և այնուհետև գործարկեք գործառույթը. այն արդեն ներկառուցված է Wolfram լեզվի մեջ և աջակցվում է լռելյայնորեն՝ սկսած տարբերակը 12.0:

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Այստեղ պետք է նշել, որ մշակելիս LogoQRCode Ձեզ հարկավոր չէ, օրինակ, ստեղծել «պատկերների մշակման գրադարան», քանի որ մենք արդեն իսկ ներդրել ենք հետևողական և ուշադիր ալգորիթմական եղանակ Վոլֆրամի լեզվով։ պատկերի մշակում, որը կարող է անմիջապես մշակվել տարբեր գրաֆիկական լեզվական ֆունկցիաներով.

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Հուսով եմ, որ աջակցությամբ հիանալի և տաղանդավոր համայնք, որն աճում և ընդլայնվում է (հիմնված Վոլֆրամի լեզվի վրա) վերջին մի քանի տասնամյակների ընթացքում։ Wolfram ֆունկցիայի պահոցը տեսանելի ապագայում թույլ կտա զգալիորեն ընդլայնել լեզվում հասանելի (հնարավոր է, պոտենցիալ նշանակալի, գիտության և տեխնիկայի տարբեր ոլորտներում մասնագիտացված) գործառույթների շրջանակը: Այսպիսով, հնարավոր է դառնում օգտագործել ինչպես լեզվի բովանդակությունը (դրա ներկառուցված գործառույթները), այնպես էլ զարգացման սկզբունքները, որոնք իրականացվում են լեզվի հիման վրա։ (Այստեղ պետք է նշել, որ Wolfram լեզուն արդեն ունի ավելի քան Զարգացման և կայուն աճի 30-ամյա պատմություն).
Պահեստի գործառույթները կարող են պարունակել Wolfram լեզվով գրված կոդի փոքր կամ մեծ կտորներ: Օրինակ, դրանք կարող են լինել զանգեր արտաքին API-ներ և ծառայություններ կամ արտաքին գրադարաններ այլ լեզուներով. Այս մոտեցման եզակի առանձնահատկությունն այն է, որ երբ դուք անցնում եք օգտագործողի մակարդակի ֆունկցիոնալությանը, պոտենցիալ անհամապատասխանություններ չեն լինի, քանի որ մոտեցումը կառուցված է Wolfram լեզվի հետևողական կառուցվածքի վրա, և յուրաքանչյուր գործառույթ ավտոմատ կերպով կաշխատի ճիշտ ճիշտ այնպես, ինչպես: նախատեսված. նա պետք է.
Wolfram Feature Repository-ի կեղևը և ծրագրավորման կառուցվածքը նախագծված են այնպես, որ բոլորը կարողանան նպաստել ընդհանուր գործին իրենց համար ամենապարզ և հարմար եղանակով. իրականում պարզապես լրացնելով notepad տեքստային ֆայլը (nb ընդլայնմամբ) WL. Ներկառուցված ավտոմատ գործառույթները թույլ են տալիս ստուգել պահեստում ավելացված նոր գործառույթները՝ ապահովելու դրանց ինտեգրումը լեզվին: Մեր ընկերությունը խաղադրույք է կատարում օգտատերերի լայն շրջանակի վրա, ովքեր կարող են ինտեգրել իրենց գործառույթները լեզվի մեջ, այլ ոչ թե նոր գործառույթների մեծ բարդության վրա, և թեև կա վերանայման գործընթաց, մենք չենք պնդում նման բան: դիզայնի բարդ վերլուծություն կամ օգտագործողի նոր հնարավորությունների ամբողջականության և հուսալիության խիստ ստանդարտներ՝ ի տարբերություն մեր կիրառած հիմնական լեզվի մեջ ներկառուցված գործառույթների ավելի խիստ փորձարկման:

Այս մոտեցման մեջ կան բազմաթիվ փոխզիջումներ և մանրամասներ, բայց մեր նպատակն է օպտիմալացնել Wolfram-ի առանձնահատկությունների պահոցը և՛ օգտագործողի փորձի համար, և՛ ապահովել, որ օգտատերերի նոր առանձնահատկությունները նշանակալիորեն նպաստեն լեզվի զարգացմանը: Քանի որ մենք աճում ենք, ես կասկած չունեմ, որ մենք ստիպված կլինենք նոր մեթոդներ հորինել պահեստում ներկառուցված գործառույթների մշակման և վավերացման համար, հատկապես մեծ թվով գործառույթներ կազմակերպելու և օգտատերերի կարիքները գտնելու համար: Այնուամենայնիվ, հուսադրող է, որ մեր ընտրած ճանապարհը լավ սկիզբ է։ Ես անձամբ ավելացրել է մի քանի առանձնահատկություններ դեպի սկզբնական տվյալների բազա: Նրանցից շատերը հիմնված են կոդի վրա, որը ես անձամբ մշակել եմ բավականին երկար ժամանակ: Եվ ինձանից ընդամենը մի քանի րոպե պահանջվեց դրանք դեպի շտեմարան հրելու համար: Այժմ, երբ դրանք գտնվում են պահեստում, ես վերջապես կարող եմ անմիջապես և ցանկացած պահի օգտագործել այս գործառույթները ըստ անհրաժեշտության՝ առանց անհանգստանալու ֆայլեր որոնելու, փաթեթներ ներբեռնելու և այլնի մասին:

Արդյունավետության բարձրացում՝ միաժամանակ նվազեցնելով ծախսերը

Նույնիսկ ինտերնետից առաջ եղանակներ կային Wolfram Language կոդը կիսելու համար (մեր առաջին խոշոր կենտրոնացված նախագիծն էր Մաթեմատիկայի աղբյուր, ստեղծված Mathematica-ի համար 1991 թվականին CD-ROM-ի հիման վրա և այլն): Իհարկե, Wolfram ֆունկցիայի պահեստի հիման վրա ներդրման համար առաջարկվող մոտեցումը վերը նշված առաջադրանքների իրականացման համար ավելի հզոր և հուսալի գործիք է։

Ավելի քան 30 տարի մեր ընկերությունը ջանասիրաբար աշխատել է Wolfram լեզվի կառուցվածքի ամբողջականությունը պահպանելու համար, և դա կարևոր է ապահովելու համար, որ Wolfram լեզուն դառնա ոչ միայն ծրագրավորման լեզու, այլ նաև լիարժեք հաշվողական լեզու. Եվ այսպիսով, Wolfram ֆունկցիայի պահեստի ներդրման մոտեցման էությունը ծրագրավորման միասնական մոտեցում կիրառելն է և նոր գործառույթներ մշակելը, որոնք հաջորդաբար ավելացվում են և տեղավորվում լեզվի շրջանակում, որպեսզի այն կարողանա զարգանալ և համատեղ զարգանալ:

Յուրաքանչյուր ֆունկցիայի իրականացման կառուցվածքում տեղի են ունենում տարբեր հաշվողական գործընթացներ: Այստեղ պետք է նշել, որ անհրաժեշտ է, որ ֆունկցիան ունենա հստակ և միատեսակ տեսք և տեսողական ընթեռնելիություն օգտագործողի համար: Այս համատեքստում Wolfram լեզվի ներկառուցված գործառույթները ներկայացված են ավելի քան 6000 հաջորդական օրինակներով, թե ինչպես ճիշտ ծրագրավորել գործառույթները (սրանք մեր կենդանի ծրագրավորման տեսանյութերորոնք ներառում են Ստանդարտ ծրագրերի ստեղծման հարյուրավոր ժամ տևողությամբ գործընթաց) Այն, ինչ այս մոտեցումը, ի վերջո, դարձնում է Wolfram առանձնահատկությունների շտեմարանն ունակ լավ աշխատելու, Վոլֆրամ լեզվի կառուցվածքային բնույթն է՝ իր մեծ թվով լրացուցիչ և բազմազան գրադարաններով, որոնք արդեն ներկառուցված են լեզվի մեջ: Օրինակ, եթե ունեք գործառույթ, որը մշակում է պատկերները, կամ նոսր զանգվածներԿամ մոլեկուլային կառուցվածքներԻսկ աշխարհագրական տվյալներ կամ մի քանի այլ - դրանց հետևողական խորհրդանշական ներկայացումն արդեն գոյություն ունի լեզվում, և դրա շնորհիվ ձեր ֆունկցիան անմիջապես համատեղելի է դառնում լեզվի այլ գործառույթների հետ:

Պահեստի ստեղծումը, որն իրականում լավ է աշխատում, հետաքրքիր մետածրագրավորման խնդիր է: Օրինակ, ծրագրում սահմանափակումների ավելցուկը թույլ չի տա ձեռք բերել ալգորիթմի պահանջվող միավորումը և ունիվերսալությունը: Ինչպես ֆունկցիոնալ սահմանափակումների անբավարար քանակի դեպքում, դուք չեք կարողանա իրականացնել ալգորիթմի կատարման բավականաչափ ճիշտ հաջորդականություն: Այս մոտեցումների փոխզիջման իրականացման մի քանի նախորդ օրինակներ, որոնք իրականացվել են մեր ընկերության կողմից, բավականին կայուն են աշխատել. սրանք են. Նախագիծ վոլֆրամի ցույցեր, գործարկվել է 2007 թվականին և այժմ աշխատում է առցանց՝ ավելի քան 12000 օգտագործողների ինտերակտիվ ցուցադրություններով: IN Wolfram տվյալների բազա կան ավելի քան 600 պատրաստի շտեմարաններ, որոնք կարող են օգտագործվել Wolfram լեզվով, և Wolfram նեյրոնային ցանցի պահեստավորում գրեթե ամեն շաբաթ համալրվում է նոր նեյրոնային ցանցերով (այժմ դրանք արդեն 118-ն են) և անմիջապես միանում են ֆունկցիայի միջոցով։ NetModel Վոլֆրամի լեզվով։

Վերոհիշյալ բոլոր օրինակներն ունեն մի հիմնարար առանձնահատկություն՝ նախագծում հավաքված օբյեկտներն ու գործառույթներն ունեն գործընթացների կառուցվածքի և բաշխման շատ բարձր աստիճան: Իհարկե, ցուցադրման կամ նեյրոնային ցանցի կամ այլ բանի կառուցվածքի մանրամասները կարող են շատ տարբեր լինել, բայց ցանկացած ընթացիկ պահոցի հիմնական կառուցվածքը միշտ մնում է նույնը: Այսպիսով, ինչպիսի՞ն է ձեր կարծիքը, հարգելի օգտատեր, Wolfram լեզվին ընդլայնումներ ավելացնող նման պահոց ստեղծելու մասին: Wolfram Language-ը նախագծված է չափազանց ճկուն լինելու համար, ուստի այն կարող է ընդլայնվել և փոփոխվել ցանկացած ձևով: Այս հանգամանքը չափազանց կարևոր է Wolfram լեզվով տարբեր լայնածավալ ծրագրային նախագծեր արագ ստեղծելու ունակության համար։ Այստեղ պետք է նշել, որ լեզվի ճկունության բարձրացման հետ մեկտեղ անխուսափելիորեն կբարձրանան նման լեզվով իրականացվող նախագծերի արժեքը։ Դա պայմանավորված է նրանով, որ որքան շատ օգտվողը օգտագործում է նման լեզու, այնքան ավելի նվիրված ֆունկցիոնալություն է ստանում, բայց չպետք է մոռանալ, որ այս մոտեցումը կարող է ունենալ նաև բացասական կողմեր՝ ծրագրի մոդուլների հետևողական հետևողականություն ապահովելու անկարողության առումով:

Ավանդական ծրագրավորման լեզուներով գրադարանների հետ ընդհանուր խնդիր կա. եթե, օրինակ, օգտագործում եք մեկ գրադարան, կոդը ճիշտ կաշխատի, բայց եթե փորձեք օգտագործել մի քանի գրադարաններ, երաշխիք չկա, որ դրանք ճիշտ կգործեն միմյանց հետ: . Նաև ավանդական ծրագրավորման լեզուներում, ի տարբերություն ամբողջական հաշվողական լեզվի, չկա որևէ կերպ երաշխավորելու հետևողական ներկառուցված ներկայացումների առկայությունը որևէ գործառույթի կամ տվյալների տեսակների համար, բացի դրանց հիմնական կառուցվածքներից: Բայց, փաստորեն, խնդիրը նույնիսկ ավելի մեծ է, քան թվում է առաջին հայացքից. եթե մեկը կառուցում է ֆունկցիոնալության լայնածավալ ուղղահայաց, ապա առանց կենտրոնացված նախագծերի ծրագրավորման հսկայական ծախսերի, որոնք մենք դնում ենք Wolfram լեզվի մեջ, անհնար է. հասնել հետևողականության. Ուստի կարևոր է, որ բոլոր ծրագրային մոդուլները միշտ ճիշտ աշխատեն միասին:

Այսպիսով, Wolfram-ի առանձնահատկությունների պահոցի գաղափարն այն է, որ խուսափենք վերը նկարագրված խնդրից՝ պարզապես լեզվին ավելացնելով ընդարձակումներ կոդի համեմատաբար փոքր կտորներով՝ անհատական ​​առանձնահատկությունների միջոցով, որոնք ավելի հեշտ են զարգացնել որպես համահունչ մոդուլներ: Այսպես ասվում է, որ կան ծրագրավորման առանձնահատկություններ, որոնք հնարավոր չէ հարմարեցնել անհատական ​​գործառույթների միջոցով (և մեր ընկերությունը մոտ ապագայում ծրագրում է թողարկել օպտիմիզացված ծրագրավորման ալգորիթմ, որը կօգնի իրականացնել լայնածավալ ծրագրային փաթեթներ): Այնուամենայնիվ, հիմնվելով Wolfram լեզվում արդեն ներկառուցված գործառույթների վրա, կան բազմաթիվ ծրագրավորման հնարավորություններ, որոնք իրականացվում են առանձին գործառույթների հիման վրա: Գաղափարն այստեղ այն է, որ համեմատաբար փոքր ծրագրավորման ջանքերով հնարավոր է ստեղծել մի շարք նոր և շատ օգտակար գործառույթներ, որոնք կապահովեն դիզայնի բավարար համահունչ, դրանք լավ կհամակարգվեն միմյանց հետ, և բացի այդ, նրանք ապագայում կկարողանա հեշտությամբ և լայնորեն կիրառել լեզվում:

Այս մոտեցումն, իհարկե, փոխզիջումային է։ Եթե ​​ավելի մեծ փաթեթ ներդրվեր, ապա կարելի էր պատկերացնել ֆունկցիոնալության մի ամբողջ նոր աշխարհ, որը չափազանց հզոր և օգտակար կլիներ: Եթե ​​կարիք կա ձեռք բերել նոր ֆունկցիոնալություն, որը կհամապատասխանի մնացած ամեն ինչին, բայց դուք պատրաստ չեք մեծ ջանք ծախսել նախագծի մշակման վրա, դա, ցավոք, կարող է հանգեցնել ձեր նախագծի շրջանակի կրճատմանը: Wolfram առանձնահատկությունների պահեստի գաղափարն այն է, որ ֆունկցիոնալությունը տրամադրվի նախագծի որոշիչ մասին, այս մոտեցումը կավելացնի հզոր ֆունկցիոնալություն՝ միաժամանակ հեշտացնելով լավ հետևողականությունը ծրագրավորման նախագծում:

Օգնեք ավելացնել հատուկ գործառույթներ գործառույթների պահոցում

Մեր թիմը քրտնաջան աշխատել է, որպեսզի օգտատերերը հեշտացնեն իրենց ներդրումը Wolfram պահեստի հնարավորությունների մեջ: Սեղանի վրա (արդեն մուտքագրված է տարբերակը 12.0), Դուք պարզապես կարող եք հաջորդաբար անցնել հիմնական ընտրացանկի ներդիրները՝ File > New > RepositoryItem > Function Repository Item և դուք կստանաք «Սահմանում Նոթատետր« (ծրագրային կերպով աշխատանքային սեղանի ներսում: Կարող եք նաև օգտագործել անալոգային գործառույթը. Ստեղծել նոթատետր[«FunctionResource»]):

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Գոյություն ունեն երկու հիմնական քայլ, որոնք դուք պետք է կատարեք. առաջինը, իրականում գրեք ձեր գործառույթի կոդը և, երկրորդը, գրեք փաստաթղթերը, որոնք ցույց են տալիս, թե ինչպես պետք է աշխատի ձեր գործառույթը:
Սեղմեք «Բացել նմուշ» կոճակը վերևում, որպեսզի տեսնեք այն, ինչ դուք պետք է անեք.

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Ըստ էության, դուք փորձում եք ստեղծել Wolfram լեզվում ներկառուցված ֆունկցիայի նման մի բան: Բացառությամբ, որ այն կարող է շատ ավելի կոնկրետ բան անել, քան ներկառուցված գործառույթը: Միևնույն ժամանակ, դրա ամբողջականության և հուսալիության հետ կապված ակնկալիքները շատ ավելի ցածր կլինեն։
Դուք պետք է ձեր գործառույթին անուն տաք, որը կհամապատասխանի Wolfram Language-ի գործառույթների անվանման ուղեցույցներին: Բացի այդ, ձեզ հարկավոր է փաստաթղթեր մշակել ձեր գործառույթի համար, որոնք նման են լեզվի ներկառուցված գործառույթներին: Այս մասին ավելի մանրամասն կխոսեմ ավելի ուշ: Առայժմ պարզապես ուշադրություն դարձրեք, որ սահմանման նոթատետրի ֆայլի վերևի կոճակների շարքում կա կոճակ. «Ոճի ուղեցույցներ», որը բացատրում է, թե ինչ անել, և «Գործիքներ» կոճակը, որն ապահովում է ձեր գործառույթի փաստաթղթերը ձևաչափելու գործիքներ:
Երբ համոզվեք, որ ամեն ինչ ճիշտ է լրացված և պատրաստ եք, սեղմեք «Ստուգել» կոճակը: Լրիվ նորմալ է, որ դեռ չեք պարզել բոլոր մանրամասները։ Այսպիսով, «Ստուգեք» գործառույթը ավտոմատ կերպով կաշխատի և կկատարի ոճի և հետևողականության բազմաթիվ ստուգումներ: Հաճախ դա անմիջապես հուշում է ձեզ հաստատել և ընդունել ուղղումները (Օրինակ՝ «Այս տողը պետք է ավարտվի երկու կետով», և այն կհուշի ձեզ մուտքագրել երկու կետ): Երբեմն նա ձեզ կխնդրի ինքներդ ինչ-որ բան ավելացնել կամ փոխել: Մենք անընդհատ կավելացնենք նոր հնարավորություններ «Ստուգել» կոճակի ավտոմատ ֆունկցիոնալությանը, բայց հիմնականում դրա նպատակն է ապահովել, որ այն ամենը, ինչ դուք ներկայացնում եք գործառույթների պահոց, արդեն իսկ հետևում է հնարավորինս շատ ոճի ուղեցույցներին:

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Այսպիսով, «Ստուգել» գործարկելուց հետո կարող եք օգտագործել «Նախադիտում»: «Նախադիտում»-ը ստեղծում է ձեր գործառույթի համար սահմանված փաստաթղթերի էջի նախադիտում: Կարող եք նաև նախադիտում ստեղծել ձեր համակարգչում ստեղծված ֆայլի կամ ամպային պահեստում գտնվող ֆայլի համար: Եթե ​​ինչ-ինչ պատճառներով ձեզ չի բավարարում այն, ինչ տեսնում եք նախադիտման մեջ, պարզապես վերադարձեք և կատարեք անհրաժեշտ ուղղումները, այնուհետև կրկին սեղմեք Preview կոճակը:
Այժմ դուք պատրաստ եք ձեր գործառույթը մղել պահոց: Deploy կոճակը տալիս է չորս տարբերակ.

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Այս քայլում կարևորն այն է, որ դուք կարող եք ներկայացնել ձեր գործառույթը Wolfram ֆունկցիայի պահոցում, որպեսզի այն հասանելի լինի բոլորին: Միևնույն ժամանակ, դուք կարող եք նաև տեղադրել ձեր գործառույթը սահմանափակ թվով օգտվողների համար: Օրինակ, դուք կարող եք ստեղծել մի գործառույթ, որը տեղայնացված է ձեր համակարգչում, որպեսզի այն հասանելի լինի տվյալ համակարգչից օգտվելիս: Կամ կարող եք տեղադրել այն ձեր մեջ ամպային հաշիվ, որպեսզի այն հասանելի լինի ձեզ, երբ միացված եք ամպին: Կարող եք նաև հրապարակայնորեն հյուրընկալել (տեղակայել) գործառույթը ձեր ամպային հաշվի միջոցով: Այն չի լինի Wolfram առանձնահատկությունների կենտրոնական պահոցում, բայց դուք կկարողանաք որևէ մեկին տալ URL, որը թույլ կտա նրան ստանալ ձեր հնարավորությունը ձեր հաշվից: (Ապագայում մենք նաև կաջակցենք կենտրոնական պահոցներին մեր ընկերության ողջ տարածքում):

Այսպիսով, ենթադրենք, որ ցանկանում եք իրականում ներկայացնել ձեր գործառույթը Wolfram ֆունկցիայի գիտելիքների բազա: Դա անելու համար սեղմում եք «Ներկայացնել» կոճակը պահոց: Այսպիսով, ի՞նչ է տեղի ունենում այս պահին: Ձեր դիմումը անմիջապես հերթագրվում է վերանայման և հաստատման մեր հատուկ կուրատորների թիմի կողմից:

Քանի որ ձեր դիմումն անցնում է հաստատման գործընթացում (որը սովորաբար տևում է մի քանի օր), դուք կստանաք հաղորդագրություններ դրա կարգավիճակի վերաբերյալ և, հնարավոր է, ապագա օգտագործման համար առաջարկներ: Բայց երբ ձեր հնարավորությունը հաստատվի, այն անմիջապես կհրապարակվի Wolfram Feature Repository-ում և հասանելի կլինի բոլորի համար՝ օգտագործելու համար: (Եվ սա կհայտնվի նորություններն ամփոփում են նոր առանձնահատկությունները և այլն)

Ինչ պետք է լինի պահեստում:

Հարկ է նշել, որ մեր ընկերությունն ունի ամբողջականության, հուսալիության և ընդհանուր որակի շատ բարձր չափանիշներ, և 6000+ գործառույթներից, որոնք մենք արդեն ներդրել ենք Wolfram լեզվում վերջին 30+ տարիների ընթացքում, բոլորը համապատասխանում են վերը նշված պահանջներին: Wolfram Function Repository-ի նպատակն է օգտագործել ամբողջ կառուցվածքն ու գործառույթը, որն արդեն գոյություն ունի Wolfram լեզվում, որպեսզի հնարավորինս շատ ավելի թեթև ֆունկցիաներ (այսինքն՝ ավելի բարձր կատարողականության գործառույթներ) ավելացնելու համար:

Իհարկե, գործառույթները Wolfram ֆունկցիայի պահոցում պետք է համապատասխանեն Wolfram Language-ի նախագծման սկզբունքներին, որպեսզի նրանք կարողանան լիովին փոխազդել այլ գործառույթների և օգտատերերի ակնկալիքների հետ, թե ինչպես պետք է գործառույթը ճիշտ աշխատի: Այնուամենայնիվ, պարտադիր չէ, որ գործառույթները լինեն հավասար ամբողջականության կամ հուսալիության:

Wolfram լեզվի ներկառուցված գործառույթներում մենք քրտնաջան աշխատում ենք ծրագրավորման գործառույթները հնարավորինս ընդհանուր դարձնելու համար: Երբ ասվում է, երբ Wolfram ֆունկցիայի պահոցում ոչ մի վատ բան չկա նրանում գործառույթ ունենալու մեջ, որը պարզապես լուծում է շատ կոնկրետ, բայց օգտակար գործ: Օրինակ՝ ֆունկցիան SendMailFromNotebook-ից կարող է ստանալ ֆայլեր մեկ կոնկրետ ձևաչափով և ստեղծել նամակներ մեկ կոնկրետ ձևով: Բազմանկյուն դիագրամ ստեղծում է գծապատկերներ միայն որոշակի գույներով և պիտակավորմամբ և այլն:

Ներկառուցված գործառույթների հետ կապված ևս մեկ կետ այն է, որ մեր ընկերությունը բոլոր ջանքերը գործադրում է բոլոր անտիպ դեպքերը կարգավորելու, սխալ մուտքագրումը ճիշտ վարելու և այլն: Ֆունկցիայի պահոցում լիովին նորմալ է, որ կա հատուկ գործառույթ, որը լուծում է խնդրի լուծման հիմնական դեպքերը և անտեսում է մնացած բոլորը:

Ակնհայտ կետն այն է, որ ավելի լավ է ունենալ գործառույթներ, որոնք ավելի շատ են անում և ավելի լավ են անում, բայց ֆունկցիաների պահեստի օպտիմիզացումը, ի տարբերություն Wolfram լեզվի ներկառուցված գործառույթների, պետք է ունենա ավելի շատ գործառույթներ, որոնք կցված են ավելի շատ գործառույթներով, այլ ոչ թե խորանալու մեջ: յուրաքանչյուր կոնկրետ գործառույթի իրականացման գործընթացները:

Հիմա եկեք նայենք պահեստում փորձարկման գործառույթների օրինակին: Նման գործառույթների հետևողականության ակնկալիքները, բնականաբար, շատ ավելի ցածր են, քան ներկառուցված լեզվական գործառույթների համար: Սա հատկապես ճիշտ է այն դեպքերում, երբ գործառույթները կախված են արտաքին ռեսուրսներից, ինչպիսիք են API-ները, կարևոր է անընդհատ հետևողական թեստեր անցկացնել, ինչը ավտոմատ կերպով տեղի է ունենում ստուգման ալգորիթմների շրջանակներում: nb ֆայլում դուք կարող եք բացահայտորեն նշել սահմանումները (Լրացուցիչ տեղեկություններ բաժնում) և նշել այնքան թեստեր, որքան սահմանված են մուտքային և ելքային տողերով կամ տիպի լրիվ նիշերի օբյեկտներով: Ստուգման թեստ, որքան հարմար եք գտնում։ Բացի այդ, համակարգը անընդհատ փորձում է ձեր տրամադրած փաստաթղթերի օրինակները վերածել ստուգման գործընթացի (և երբեմն դա կարող է բավականին ռեսուրսներ պահանջող լինել, օրինակ՝ մի ֆունկցիայի համար, որի արդյունքը կախված է պատահական թվերից կամ օրվա ժամից):

Արդյունքում ֆունկցիաների շտեմարանը կունենա իրականացման մի շարք բարդություններ։ Ոմանք լինելու են ընդամենը մեկ տող կոդի, մյուսները կարող են ներառել հազարավոր կամ տասնյակ հազարավոր տողեր՝ հավանաբար օգտագործելով բազմաթիվ օգնական գործառույթներ: Ե՞րբ է արժե ավելացնել գործառույթ, որը սահմանելու համար շատ քիչ կոդ է պահանջում: Հիմնականում, եթե ֆունկցիայի համար կա լավ մնեմոնիկ անուն, որը օգտատերերը հեշտությամբ կհասկանային, եթե տեսնեին այն կոդի մեջ, ապա այն արդեն կարող է ավելացվել։ Հակառակ դեպքում, ամենայն հավանականությամբ, ավելի լավ է ամեն անգամ, երբ անհրաժեշտ է այն օգտագործել, պարզապես նորից կցեք կոդը ձեր ծրագրին:

Ֆունկցիայի պահեստի հիմնական նպատակը (ինչպես ենթադրում է նրա անունը) լեզվի մեջ նոր առանձնահատկություններ ներմուծելն է։ Եթե ​​ցանկանում եք ավելացնել նոր տվյալներ կամ նոր սուբյեկտներ, օգտագործել Վոլֆրամի տվյալների շտեմարան. Բայց ի՞նչ, եթե ցանկանում եք նոր տեսակի օբյեկտներ ներկայացնել ձեր հաշվարկների համար:

Իրականում երկու ճանապարհ կա. Դուք կարող եք ներկայացնել նոր օբյեկտի տեսակ, որը կօգտագործվի գործառույթների պահեստի նոր գործառույթներում: Եվ այս դեպքում, դուք միշտ կարող եք պարզապես գրել դրա սիմվոլիկ ներկայացումը և օգտագործել այն գործառույթների պահոցում ֆունկցիաներ մուտքագրելիս կամ ելք անելիս:

Բայց ի՞նչ, եթե ցանկանում եք ներկայացնել օբյեկտը և այնուհետև Wolfram լեզվում գոյություն ունեցող գործառույթների միջոցով սահմանել, որ ցանկանում եք աշխատել դրա հետ: Վոլֆրամի լեզուն միշտ ունեցել է դրա համար թեթև մեխանիզմ, որը կոչվում է Բարձր արժեքներ. Որոշ սահմանափակումներով (հատկապես այն գործառույթների համար, որոնք չի կարող գնահատել նրանց փաստարկները), ֆունկցիայի պահոցը թույլ է տալիս պարզապես ներկայացնել ֆունկցիա և սահմանել դրա արժեքները: (Վոլֆրամի լեզվով ամբողջությամբ ինտեգրված նոր հիմնական դիզայնի ստեղծման ժամանակ հետևողականության ակնկալիքը բարձրացնելը, ընդհանուր առմամբ, շատ կարևոր ընթացակարգ է, որը հնարավոր չէ հասնել միայն նախագծի արժեքը մեծացնելով և մի բան է, որը մեր ընկերությունը անում է որպես նախագծերի մաս: լեզվի երկարաժամկետ զարգացման համար այս խնդիրը նպատակ չէ, որը դրված է որպես պահեստի մշակման մաս):

Այսպիսով, ի՞նչ կարող է լինել ֆունկցիայի կոդում ֆունկցիայի պահեստում: Ամեն ինչ կառուցված է Wolfram լեզվի մեջ, իհարկե (համենայն դեպս, եթե դա չի ներկայացնում սպառնալիքներ համար անվտանգություն և բուն ծրագրի կատարումը, որպես հաշվողական միջավայր), ինչպես նաև գործառույթների պահոցից ցանկացած գործառույթ: Այնուամենայնիվ, կան այլ ֆունկցիոնալություններ. ֆունկցիայի պահոցում գտնվող գործառույթը կարող է զանգահարել API կամ in Վոլֆրամ ամպԿամ մեկ այլ աղբյուրից. Իհարկե, դրա հետ կապված որոշ ռիսկեր կան: Պայմանավորված է նրանով, որ երաշխիքներ չկան, որ API-ն չի փոխվի, և ֆունկցիաների պահեստում գործառույթը կդադարի աշխատել: Նման խնդիրները բացահայտելու համար փաստաթղթերի էջում (Պահանջներ բաժնում) կա նշում ցանկացած գործառույթի համար, որը հիմնված է ոչ միայն Wolfram լեզվի ներկառուցված գործառույթների վրա: (Իհարկե, երբ խոսքը վերաբերում է իրական տվյալներին, կարող են խնդիրներ լինել նույնիսկ այս ֆունկցիոնալության հետ կապված, քանի որ իրական աշխարհի տվյալները անընդհատ փոխվում են, և երբեմն նույնիսկ դրանց սահմանումները և կառուցվածքը փոխվում են):

Արդյո՞ք Wolfram առանձնահատկությունների պահեստի բոլոր ծածկագրերը պետք է գրվեն Wolfram-ում: Իհարկե, արտաքին API-ի ներսում ծածկագիրը չպետք է գրվի Wolfram լեզվով, որը նույնիսկ լեզվի կոդ չի ստեղծում: Փաստորեն, եթե դուք գործառույթ եք գտնում գրեթե ցանկացած արտաքին լեզվով կամ գրադարանում, կարող եք ստեղծել փաթաթան, որը թույլ է տալիս օգտագործել այն Wolfram ֆունկցիայի պահոցում: (Սովորաբար դրա համար պետք է օգտագործեք ներկառուցված գործառույթները Արտաքին գնահատում կամ Արտաքին գործառույթ Wolfram լեզվի կոդով):

Այսպիսով, ո՞րն է սա անելու իմաստը: Ըստ էության, սա թույլ է տալիս օգտագործել Wolfram Language-ի ամբողջ ինտեգրված համակարգը և դրա ծրագրային ապահովման ողջ միասնական հնարավորությունները: Եթե ​​դուք ստանում եք հիմնական ներդրումը արտաքին գրադարանից կամ լեզվից, ապա կարող եք օգտագործել Wolfram Language-ի հարուստ խորհրդանշական կառուցվածքը՝ ստեղծելու վերին մակարդակի հարմար գործառույթ, որը թույլ է տալիս օգտվողներին հեշտությամբ օգտագործել արդեն իսկ ներդրված ցանկացած գործառույթ: Առնվազն, դա պետք է իրագործելի լինի իդեալական աշխարհում, որտեղ կան գրադարանների բեռնման բոլոր բլոկները և այլն, որի դեպքում դրանք ավտոմատ կերպով կմշակվեն Վոլֆրամի լեզվով: (Հարկ է նշել, որ գործնականում կարող են լինել խնդիրներ արտաքին լեզուների կարգավորում հատուկ համակարգչային համակարգ, և ամպային պահեստավորումը կարող է լրացուցիչ անվտանգության խնդիրներ առաջացնել):

Ի դեպ, երբ առաջին անգամ նայում եք տիպիկ արտաքին գրադարաններին, դրանք հաճախ չափազանց բարդ են թվում, որպեսզի ծածկվեն ընդամենը մի քանի գործառույթներով, բայց շատ դեպքերում բարդության մեծ մասը գալիս է գրադարանի համար անհրաժեշտ ենթակառուցվածքի և բոլոր գործառույթների ստեղծման հետ: աջակցել այն. Այնուամենայնիվ, Wolfram լեզուն օգտագործելիս ենթակառուցվածքը սովորաբար արդեն ներկառուցված է փաթեթների մեջ, և այդ պատճառով կարիք չկա մանրամասնորեն բացահայտել այս բոլոր աջակցության գործառույթները, այլ միայն ստեղծել գործառույթներ գրադարանի «ամենաբարձր» հավելվածին հատուկ գործառույթների համար: .

Գիտելիքների բազայի «էկոհամակարգ».

Եթե ​​դուք գրել եք գործառույթներ, որոնք պարբերաբար օգտագործում եք, ներկայացրեք դրանք Wolfram Function Repository-ին: Եթե ​​սրանից ավելին չստացվի (լեզվի զարգացում), ապա նույնիսկ այդ դեպքում ձեզ համար շատ ավելի հարմար կլինի օգտագործել գործառույթները անձնական օգտագործման համար: Այնուամենայնիվ, տրամաբանական է ենթադրել, որ եթե դուք կանոնավոր կերպով օգտագործում եք գործառույթները, միգուցե մյուս օգտատերերը նույնպես դրանք օգտակար կգտնեն։

Բնականաբար, դուք կարող եք հայտնվել այնպիսի իրավիճակում, երբ չկարողանաք կամ չցանկանաք կիսվել ձեր գործառույթներով կամ մասնավոր տեղեկատվական ռեսուրսներից օգտվելու դեպքում: Նույնիսկ նման դեպքերում, դուք կարող եք պարզապես տեղակայել գործառույթները ձեր սեփական ամպային հաշվում, իրավունքներ նշելով մուտք դեպի նրանց: (Եթե ձեր կազմակերպությունն ունի Wolfram Enterprise մասնավոր ամպ, այնուհետև այն շուտով կկարողանա հյուրընկալել իր սեփական առանձնահատկությունների պահոցը, որը կարող է կառավարվել ձեր կազմակերպության ներսում և սահմանել՝ հարկադրել դիտումները դիտել երրորդ կողմի օգտատերերի կողմից, թե ոչ:)

Պարտադիր չէ, որ այն գործառույթները, որոնք դուք ներկայացնում եք Wolfram ֆունկցիաների պահոցին, կատարյալ լինեն. նրանք պարզապես պետք է օգտակար լինեն: Սա մի փոքր նման է «Սխալներ» բաժնին դասական Unix փաստաթղթերում. «Սահմանումներ բաժնում» կա «Հեղինակային նշումներ» բաժինը, որտեղ կարող եք նկարագրել սահմանափակումներ, խնդիրներ և այլն, որոնք արդեն գիտեք ձեր գործառույթի մասին: Բացի այդ, երբ ձեր հատկանիշը ներկայացնում եք պահոց, կարող եք ավելացնել ներկայացման նշումներ, որոնք կկարդան համադրողների հատուկ թիմը:

Երբ հատկանիշը հրապարակվում է, դրա էջը միշտ ունի երկու հղում ներքևում.Ուղարկեք հաղորդագրություն այս գործառույթի մասին"Եւ"Քննարկեք Վոլֆրամ համայնքում« Եթե ​​դուք նշում եք կցում (օրինակ՝ ասեք ինձ սխալների մասին), կարող եք նշել վանդակը, որտեղ ասվում է, որ ցանկանում եք, որ ձեր հաղորդագրությունը և կոնտակտային տվյալները համօգտագործվեն հատկանիշի հեղինակի հետ:

Երբեմն դուք պարզապես ցանկանում եք օգտագործել գործառույթներ Wolfram ֆունկցիաների պահոցից, ինչպիսիք են ներկառուցված գործառույթները, առանց դրանց կոդը նայելու: Այնուամենայնիվ, եթե ցանկանում եք ներս նայել, ապա վերևում միշտ կա Notepad կոճակ: Սեղմեք դրա վրա, և դուք կստանաք բնօրինակի նոթատետրի ձեր սեփական պատճենը, որը ներկայացվել է գործառույթների պահոց: Երբեմն դուք կարող եք պարզապես օգտագործել այն որպես օրինակ ձեր կարիքների համար: Միևնույն ժամանակ, դուք կարող եք նաև մշակել այս գործառույթի ձեր սեփական փոփոխությունը: Դուք կարող եք տեղադրել այս գործառույթները, որոնք գտել եք պահոցից ձեր համակարգչում կամ ձեր aphid ամպային պահեստավորման հաշվում, միգուցե ցանկանում եք դրանք ներկայացնել գործառույթի գիտելիքների բազա, գուցե որպես սկզբնական ֆունկցիայի բարելավված, ընդլայնված տարբերակ:

Ապագայում մենք նախատեսում ենք աջակցել Git-ի ոճով պատառաքաղը հնարավորությունների պահոցների համար, սակայն առայժմ մենք փորձում ենք այն պարզ պահել, և մենք միշտ ունենք լեզվի մեջ ներկառուցված յուրաքանչյուր հատկանիշի միայն մեկ ընդունված տարբերակ: Ավելի հաճախ, քան ոչ (եթե ծրագրավորողները չհրաժարվեն իրենց մշակած գործառույթների պահպանումից և չպատասխանեն օգտատերերի ներկայացումներին), հատկանիշի սկզբնական հեղինակը վերահսկում է դրա թարմացումները և ներկայացնում նոր տարբերակներ, որոնք այնուհետև վերանայվում են և, եթե նրանք անցնում են վերանայման գործընթացը: , հրատարակված լեզվով.

Դիտարկենք այն հարցը, թե ինչպես է աշխատում մշակված գործառույթների «տարբերակումը»: Հենց հիմա, երբ դուք օգտագործում եք գործառույթի պահոցից որևէ գործառույթ, դրա սահմանումը մշտապես կպահվի ձեր համակարգչում (կամ ձեր ամպային հաշվում, եթե դուք օգտագործում եք ամպը): Եթե ​​որևէ գործառույթի նոր տարբերակը հասանելի է, հաջորդ անգամ այն ​​օգտագործելիս հաղորդագրություն կստանաք, որը կտեղեկացնի ձեզ այդ մասին: Եվ եթե ցանկանում եք թարմացնել գործառույթը նոր տարբերակով, կարող եք դա անել՝ օգտագործելով հրամանը ResourceUpdate. («Function blob»-ը իրականում պահպանում է ավելի շատ տարբերակների մասին տեղեկատվություն, և մենք նախատեսում ենք ապագայում դա ավելի հասանելի դարձնել մեր օգտատերերի համար):

Wolfram Function Repository-ի գեղեցիկ բաներից մեկն այն է, որ Wolfram լեզվի ցանկացած ծրագիր, ցանկացած վայրում, կարող է օգտագործել դրա գործառույթները: Եթե ​​ծրագիրը հայտնվում է նոթատետրում, ապա հաճախ հարմար է ֆորմատավորել պահեստի գործառույթները որպես հեշտ ընթեռնելի «գործառույթի երկուական օբյեկտ» գործառույթներ (գուցե համապատասխան տարբերակների հավաքածուով):

Դուք միշտ կարող եք մուտք գործել գործառույթների պահոցում գտնվող ցանկացած գործառույթ՝ օգտագործելով տեքստը Ռեսուրսի ֆունկցիան[...]. Եվ սա շատ հարմար է, եթե դուք գրում եք կոդ կամ սկրիպտներ ուղղակիորեն Wolfram Engine-ի համար, օրինակ, հետ օգտագործելով IDE կամ տեքստային կոդի խմբագրիչ (Հատկապես պետք է նշել, որ գործառույթների պահոցը լիովին համատեղելի է Անվճար Wolfram Engine մշակողների համար).

Ինչպես է դա աշխատում.

Վոլֆրամի պահեստի գործառույթների ներսում դա հնարավոր է ճիշտ նույնն օգտագործելով ռեսուրսային համակարգեր հիմքերը, ինչպես մեր բոլոր մյուս գոյություն ունեցող պահեստները (տվյալների պահեստ, Նյարդային ցանցի պահեստ, ցուցադրական նախագծերի հավաքածու և այլն), ինչպես Wolfram համակարգի մյուս բոլոր ռեսուրսները, ResourceFunction ի վերջո հիմնված է գործառույթի վրա ResourceObject.

Համարել ResourceFunction:

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Ներսում դուք կարող եք տեսնել որոշ տեղեկություններ՝ օգտագործելով գործառույթը Տեղեկատվություն:

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Ինչպե՞ս է աշխատում ռեսուրսի գործառույթի կարգավորումը: Ամենապարզը զուտ տեղային դեպք է։ Ահա մի օրինակ, որը վերցնում է ֆունկցիա (այս դեպքում պարզապես մաքուր ֆունկցիա) և սահմանում այն ​​որպես ռեսուրսային ֆունկցիա տվյալ ծրագրի նիստի համար.

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Սահմանումը կատարելուց հետո կարող եք օգտագործել ռեսուրսի գործառույթը.

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Նկատի ունեցեք, որ այս ֆունկցիայի բլոկում կա սև պատկերակ Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար. Սա նշանակում է, որ BLOB ֆունկցիան վերաբերում է ընթացիկ նստաշրջանի համար սահմանված հիշողության ռեսուրսի ֆունկցիային: Ռեսուրսների գործառույթը, որը մշտապես պահվում է ձեր համակարգչում կամ ամպային հաշվում, ունի մոխրագույն պատկերակ Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար. Եվ Wolfram Feature Repository-ում կա պաշտոնական ռեսուրսի հատկանիշի նարնջագույն պատկերակ Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար.

Այսպիսով, ի՞նչ է տեղի ունենում, երբ դուք օգտագործում եք «Ընդլայնել» ընտրացանկը Definition Notebook-ում: Նախ, այն վերցնում է նոթատետրում առկա բոլոր սահմանումները և դրանցից ստեղծում խորհրդանշական ResourceObject) (Եվ եթե օգտագործում եք տեքստի վրա հիմնված IDE կամ ծրագիր, ապա կարող եք նաև բացահայտ ստեղծել ResourceObject)

Ձեր համակարգչի պահեստից ֆունկցիայի տեղական տեղակայումը կատարվում է հրամանի միջոցով LocalCache ռեսուրսի օբյեկտի համար այն պահպանելու համար LocalObject ձեր ֆայլային համակարգում: Ամպային հաշվի տեղակայումը կատարվում է հրամանի միջոցով CloudDeploy ռեսուրսի օբյեկտի համար, և հանրային ամպի տեղակայումն է CloudPublish. Բոլոր դեպքերում ՌեսուրսԳրանցվել օգտագործվում է նաև ռեսուրսի ֆունկցիայի անունը գրանցելու համար, այսպես Ռեսուրսի ֆունկցիան["Անուն"] կաշխատի։

Եթե ​​դուք սեղմում եք «Ներկայացնել» կոճակը գործառույթների պահեստի համար, ինչ է տեղի ունենում դրա տակ ResourceSubmit կանչվել է ռեսուրսային օբյեկտ: (Եվ եթե օգտագործում եք տեքստի մուտքագրման ինտերֆեյս, կարող եք նաև զանգահարել ResourceSubmit ուղղակիորեն։)

Լռելյայնորեն, ներկայացումները կատարվում են ձեր Wolfram ID-ի հետ կապված անվան տակ: Բայց եթե դուք դիմում եք ներկայացնում զարգացման թիմի կամ կազմակերպության անունից, կարող եք սահմանել առանձին հրատարակչի ID և փոխարենը օգտագործեք այն որպես անուն՝ ձեր հայացքների հետ փոխազդելու համար:

Այն բանից հետո, երբ դուք ներկայացնեք ձեր գործառույթներից որևէ մեկը գործառույթի գիտելիքների բազա, այն կհերթագրվի վերանայման համար: Եթե ​​ի պատասխան մեկնաբանություններ ստանաք, դրանք սովորաբար կլինեն տեքստային ֆայլի տեսքով՝ ավելացված լրացուցիչ «մեկնաբանությունների բջիջներով»: Դուք միշտ կարող եք ստուգել ձեր դիմումի կարգավիճակը՝ այցելելով ռեսուրսների համակարգի անդամ պորտալ. Բայց երբ ձեր հնարավորությունը հաստատվի, դուք կտեղեկացվեք (էլ. փոստի միջոցով) և ձեր հնարավորությունը կտեղադրվի Wolfram գործառույթների պահոցում:

Որոշ նրբություններ աշխատանքում

Առաջին հայացքից կարող է թվալ, որ դուք կարող եք պարզապես վերցնել սահմանումների նոթատետրը և բառացիորեն տեղադրել այն գործառույթների պահոցում, սակայն իրականում կան բավականին շատ նրբություններ, և դրանց հետ աշխատելը պահանջում է բավականին բարդ մետածրագրավորում, խորհրդանշական մշակում: որպես կոդը, որը սահմանում է ֆունկցիան , և ինքը՝ Գրառման գրքույկը: Դրա մեծ մասը տեղի է ունենում ներսում, կուլիսների հետևում, բայց դա կարող է ունենալ որոշ հետևանքներ, որոնք արժե հասկանալ, եթե դուք պատրաստվում եք նպաստել առանձնահատկությունների գիտելիքների բազային:

Առաջին անմիջական նրբությունը. Երբ լրացնում եք Definition Notebook-ը, դուք կարող եք պարզապես հղում կատարել ձեր գործառույթին ամենուր՝ օգտագործելով այնպիսի անուն, ինչպիսին է. MyFunction, որը նման է Wolfram լեզվի ֆունկցիայի սովորական անունին, բայց ֆունկցիաների պահեստի փաստաթղթերի համար սա փոխարինված է Ռեսուրսի ֆունկցիան[«Իմ ֆունկցիան»] սա այն է, ինչ օգտվողներն իրականում կօգտագործեն ֆունկցիայի հետ աշխատելիս:

Երկրորդ նրբությունը. երբ դուք ստեղծում եք ռեսուրսային ֆունկցիա Definition Notebook-ից, ֆունկցիայի սահմանման մեջ ներգրավված բոլոր կախվածությունները պետք է ներառվեն և բացահայտորեն ներառվեն: Այնուամենայնիվ, ապահովելու համար, որ սահմանումները մնան մոդուլային, դուք պետք է ամեն ինչ տեղադրեք եզակի մեջ անվանատարածք. (Իհարկե, գործառույթներ, որոնք անում են ամեն ինչ, գտնվում են ֆունկցիաների պահոցում։)

Սովորաբար դուք երբեք չեք տեսնի այս անվանատարածքը կարգավորելու համար օգտագործվող կոդի որևէ հետք: Բայց եթե ինչ-ինչ պատճառներով ձեր ֆունկցիայի ներսում կանչեք թերակատարված նշան, ապա կտեսնեք, որ այս նշանը գտնվում է ֆունկցիայի ներքին համատեքստում: Այնուամենայնիվ, Definition Notepad-ը մշակելիս առնվազն ինքնին ֆունկցիային համապատասխանող նշանն է կարգավորելի լավագույն ցուցադրման համար որպես ֆունկցիոնալ BLOB, այլ ոչ թե հում կերպար ներքին համատեքստում:

Ֆունկցիայի պահոցը նոր գործառույթներ սահմանելու համար է։ Եվ այս գործառույթները կարող են տարբերակներ ունենալ: Հաճախ այդ պարամետրերը (օրինակ. Մեթոդ կամ Նկարի չափսը) հնարավոր կլինի օգտագործել ներկառուցված գործառույթների համար, ինչպես նաև նրանց համար, որոնց համար արդեն կան ներկառուցված նշաններ: Բայց երբեմն նոր գործառույթը կարող է պահանջել նոր տարբերակներ: Մոդուլյարությունը պահպանելու համար այս պարամետրերը պետք է լինեն յուրօրինակ ներքին համատեքստում սահմանված խորհրդանիշներ (կամ ռեսուրսների ամբողջ գործառույթների նման մի բան, այսինքն՝ իրենք): Պարզության համար ֆունկցիաների շտեմարանը թույլ է տալիս սահմանել նոր տարբերակներ լարային սահմանումների մեջ: Եվ օգտագործողի հարմարության համար այս սահմանումները (ենթադրելով, որ դրանք օգտագործվել են OptionValue и OptionsPattern) մշակվում են նաև այնպես, որ ֆունկցիաներ օգտագործելիս պարամետրերը կարող են նշվել ոչ միայն որպես տողեր, այլև որպես նույն անուններով գլոբալ նշաններ։

Ֆունկցիաների մեծ մասը պարզապես անում է այն, ինչ պետք է անեն ամեն անգամ, երբ կանչվում են, բայց որոշ գործառույթներ պետք է սկզբնավորվեն, նախքան դրանք գործարկվեն որոշակի նստաշրջանում, և այս խնդիրը լուծելու համար սահմանում բաժնում կա «Initialization» բաժինը:

Պահեստի գործառույթները կարող են օգտագործել այլ գործառույթներ, որոնք արդեն գտնվում են պահեստում։ Որպեսզի սահմանումներ սահմանեք ֆունկցիայի պահեստի համար, որը ներառում է երկու (կամ ավելի) միմյանց հղումներ կատարող ֆունկցիաներ, դուք պետք է դրանք տեղակայեք ձեր ծրագրի նիստում, որպեսզի կարողանաք։ հղում, ինչպես նրանց վրա Ռեսուրսի ֆունկցիան["Անուն"], այնուհետև կարող եք ստեղծել ձեզ անհրաժեշտ այս գործառույթների համակցությունները, օրինակներ (ես չհասկացա) և նոր գործառույթ ավելացնել պահեստում՝ հիմնվելով ավելի վաղ տեղադրվածների վրա: (կամ արդեն կամ նախկինում – երկու բառերն էլ անշնորհք են)

Զարգացման հեռանկարներ. Ի՞նչ պետք է տեղի ունենա, երբ պահեստն իսկապես մեծանա:

Այսօր մենք նոր ենք գործարկում Wolfram Feature Repository-ը, բայց ժամանակի ընթացքում մենք ակնկալում ենք, որ դրա չափը և ֆունկցիոնալությունը կարող են կտրուկ աճել, և քանի որ այն աճում է, կլինեն տարբեր խնդիրներ, որոնք մենք արդեն ակնկալում ենք, որ կարող են առաջանալ:

Առաջին խնդիրը վերաբերում է ֆունկցիաների անուններին և դրանց եզակիությանը։ Ֆունկցիայի պահոցը նախագծված է այնպես, որ, ինչպես Wolfram լեզվի ներկառուցված գործառույթները, կարող եք հղում կատարել ցանկացած ֆունկցիայի՝ պարզապես նշելով դրա անունը: Բայց դա անխուսափելիորեն նշանակում է, որ գործառույթների անունները պետք է լինեն գլոբալ եզակի ամբողջ պահեստում, այնպես որ, օրինակ, կարող է լինել միայն մեկը Ռեսուրսի ֆունկցիան[«MyFavoriteFunction»].

Սա կարող է առաջին հերթին մեծ խնդիր թվալ, բայց արժե հասկանալ, որ դա հիմնականում նույն խնդիրն է, ինչ ինտերնետ տիրույթների կամ սոցիալական մեդիայի բռնակների համար: Եվ փաստն այն է, որ համակարգը պարզապես պետք է ունենա գրանցող, և սա այն դերերից մեկն է, որը մեր ընկերությունը կկատարի Wolfram ֆունկցիայի գիտելիքների բազայի համար: (Պահեստի մասնավոր տարբերակների համար նրանց գրանցողները կարող են լինել ադմինիստրատորներ): Իհարկե, ինտերնետ տիրույթը կարող է գրանցվել առանց դրա վրա որևէ բան ունենալու, բայց ֆունկցիայի պահեստում գործառույթի անունը կարող է գրանցվել միայն այն դեպքում, եթե կա իրական սահմանում: ֆունկցիան։

Wolfram ֆունկցիայի գիտելիքների բազայի կառավարման գործում մեր դերի մի մասն այն է, որ համոզվենք, որ ֆունկցիայի համար ընտրված անունը տրամաբանական է՝ հաշվի առնելով ֆունկցիայի սահմանումը, և որ այն հետևում է Wolfram լեզվի անվանման կոնվենցիաներին: Մենք ունենք Wolfram լեզվով ներկառուցված գործառույթների անվանման ավելի քան 30 տարվա փորձ, և մեր կուրատորների թիմը այդ փորձը կբերի նաև գործառույթների շտեմարան: Իհարկե, միշտ էլ կան բացառություններ։ Օրինակ, կարող է նախընտրելի թվալ ինչ-որ ֆունկցիայի համար կարճ անուն ունենալը, բայց ավելի լավ է «պաշտպանել» ավելի երկար, ավելի կոնկրետ անունով, քանի որ քիչ հավանական է, որ հանդիպեք որևէ մեկի հետ, ով ցանկանում է ապագայում նման գործառույթի անուն ստեղծել: .

(Այստեղ պետք է նշել, որ ուղղակի որոշ անդամի պիտակ ավելացնելը ֆունկցիաների երեսարկմանը չի ունենա նախատեսված էֆեկտը: Քանի որ եթե չպնդեք միշտ հատկորոշել պիտակ, դուք պետք է սահմանեք լռելյայն թեգ ցանկացած տվյալ ֆունկցիայի համար, ինչպես նաև հատկացրեք հեղինակային պիտակներ: , որը կրկին կպահանջի գլոբալ համակարգում։)

Քանի որ Wolfram ֆունկցիաների գիտելիքների բազան մեծանում է, խնդիրներից մեկը, որը, հավանաբար, կառաջանա, գործառույթների հայտնաբերելիությունն է, որի համար համակարգը ապահովում է. հարցման գործառույթ (և սահմանման ֆայլերը կարող են ներառել հիմնաբառեր և այլն): Վոլֆրամի լեզվով ներկառուցված գործառույթների համար փաստաթղթերում կան բոլոր տեսակի խաչաձև հղումներ, որոնք կօգնեն «գովազդել» գործառույթները: Գործառույթների պահեստի գործառույթները կարող են հղում կատարել ներկառուցված գործառույթներին: Բայց ինչ վերաբերում է հակառակը: Դա անելու համար մենք պատրաստվում ենք փորձարկել տարբեր ձևավորումներ՝ ներկառուցված գործառույթների համար փաստաթղթային էջերում պահոցի գործառույթները բացահայտելու համար:

Վոլֆրամի լեզվում ներկառուցված գործառույթների համար կա այսպես կոչված հայտնաբերման շերտ, որը տրամադրվում է «օգնության էջերի» ցանց, որոնք տրամադրում են կոնկրետ ոլորտների հետ կապված հատկանիշների կազմակերպված ցուցակներ։ Միշտ դժվար է ճիշտ հավասարակշռել man pages-ը, և քանի որ Wolfram լեզուն աճում է, man pages-ը հաճախ անհրաժեշտ է ամբողջությամբ վերակազմավորել: Բավականին հեշտ է պահեստից գործառույթները դնել լայն կատեգորիաների, և նույնիսկ այդ կատեգորիաները հետևողականորեն բաժանել, բայց շատ ավելի արժեքավոր է ճիշտ կազմակերպված լեզվական տեղեկատու էջեր ունենալը: Դեռևս պարզ չէ, թե ինչպես կարելի է դրանք ստեղծել ամբողջ գործառույթի գիտելիքների բազայի համար: Օրինակ, CreateResourceObjectGallery հնարավորությունների պահոցում յուրաքանչյուրը կարող է տեղադրել վեբ էջ, որը պարունակում է իր «ընտրությունները» պահոցից.

Wolfram Function Repository. Բաց մուտքի հարթակ Wolfram լեզվի ընդլայնումների համար

Wolfram ֆունկցիայի պահոցը կազմաձևված է որպես կայուն ֆունկցիայի պահոց, որտեղ ցանկացած գործառույթ միշտ կաշխատի: Իհարկե, գործառույթների նոր տարբերակները կարող են հասանելի դառնալ, և մենք ակնկալում ենք, որ որոշ գործառույթներ, իհարկե, ժամանակի ընթացքում հնացած կլինեն: Գործառույթները կաշխատեն, եթե դրանք օգտագործվեն ծրագրերում, սակայն դրանց փաստաթղթերի էջերը կհղվեն դեպի նոր, ավելի առաջադեմ գործառույթներ:

Wolfram Feature Repository-ը նախատեսված է օգնելու ձեզ արագ բացահայտել նոր հնարավորություններ և սովորել Wolfram լեզուն օգտագործելու նոր ուղիներ: Մենք շատ լավատես ենք, որ առանձնահատկությունների պահոցում ուսումնասիրվածների մի մասն ի վերջո իմաստ կունենա դառնալ հիմնական Wolfram լեզվի ներկառուցված մասեր: Վերջին տասնամյակի ընթացքում մենք ունեցել ենք նմանատիպ հավաքածու հատկանիշներ, որոնք ի սկզբանե ներդրվել են Wolfram | Ալֆա. Եվ այս փորձից քաղված դասերից մեկն այն է, որ որակի և հետևողականության չափանիշներին հասնելը, որոնց վրա մենք կենտրոնանում ենք Wolfram լեզվի մեջ ներկառուցված ամեն ինչում, պահանջում է մեծ աշխատանք, որը հաճախ ավելի դժվար է, քան գաղափարի իրականացման սկզբնական ջանքերը: Այնուամենայնիվ, ֆունկցիայի գիտելիքների բազայի գործառույթը կարող է ծառայել որպես հայեցակարգի շատ օգտակար ապացույց ապագա ֆունկցիայի համար, որը կարող է ի վերջո ներկառուցվել Wolfram լեզվի մեջ:

Այստեղ ամենակարևորն այն է, որ ֆունկցիայի պահոցում գտնվող ֆունկցիան այն է, որը հասանելի է յուրաքանչյուր օգտագործողի համար հենց հիմա: Հնարավոր է, որ մայրենի լեզվի առանձնահատկությունը կարող է շատ ավելի լավ և արդյունավետ լինել, բայց առանձնահատկությունների պահոցը թույլ կտա օգտվողներին անմիջապես օգտվել բոլոր նոր հնարավորություններից: Եվ, ամենակարևորը, այս հայեցակարգը թույլ է տալիս բոլորին ավելացնել ցանկացած նոր հնարավորություն, որը ցանկանում է:

Ավելի վաղ Վոլֆրամի լեզվի պատմության մեջ այս գաղափարը չէր աշխատի այնպես, ինչպես դա եղել է, բայց այս փուլում լեզվի վրա այնքան մեծ ջանքեր են գործադրվում և լեզվի ձևավորման սկզբունքների այնքան խորը ըմբռնում, որ այժմ թվում է բավականին Օգտատերերի մեծ համայնքի համար հնարավոր է ավելացնել գործառույթներ, որոնք կպահպանեն դիզայնի հետևողականությունը՝ դրանք օգտակար դարձնելու համար օգտագործողների լայն շրջանակի համար:

Wolfram Language-ի օգտատերերի համայնքում տաղանդի անհավատալի ոգի կա(՞): (Իհարկե, այս համայնքը ներառում է բազմաթիվ առաջատար գիտահետազոտական ​​և մշակող մարդկանց տարբեր ոլորտներում:) Հուսով եմ, որ Wolfram Feature Repository-ն արդյունավետ հարթակ կապահովի տաղանդի այս ոգին բացելու և տարածելու համար: Միայն միասին մենք կարող ենք ստեղծել մի բան, որը զգալիորեն կընդլայնի այն տարածքը, որտեղ կարող է կիրառվել Wolfram լեզվի հաշվողական պարադիգմը:

Ավելի քան 30 տարվա ընթացքում մենք երկար ճանապարհ ենք անցել Wolfram լեզվով: Հիմա միասին գնանք ավելի հեռուն։ Ես խստորեն խրախուսում եմ ամբողջ աշխարհում Wolfram լեզվի բոլոր հարգված օգտվողներին օգտագործել ֆունկցիոնալ պահոցը որպես հարթակ դրա համար, ինչպես նաև նոր ծրագրային նախագիծը, ինչպիսին է Free Wolfram Engine-ը մշակողների համար:

Source: www.habr.com

Добавить комментарий