Բարև, Հաբր: Ձեր ուշադրությանն եմ ներկայացնում Սթիվեն Վոլֆրամի գրառման թարգմանությունը
Վոլֆրամի լեզվի հետևողականության նախադրյալները
Այսօր մենք ծրագրավորման լեզվի հետ միասին կանգնած ենք մեծ ձեռքբերումների շեմին
Wolfram Function Repository-ը մի բան է, որը հնարավոր է դարձել Wolfram լեզվի յուրահատուկ բնույթի շնորհիվ ոչ միայն որպես ծրագրավորման լեզու, այլ նաև որպես
Օրինակ, Wolfram ֆունկցիայի պահոցն արդեն պարունակում է
Նույնպես ավելի քան
Էջին հասնելու համար պատճենեք վերը նշված օբյեկտը (BLOB ֆունկցիան), տեղադրեք այն մուտքագրման տողում և այնուհետև գործարկեք գործառույթը. այն արդեն ներկառուցված է Wolfram լեզվի մեջ և աջակցվում է լռելյայնորեն՝ սկսած
Այստեղ պետք է նշել, որ մշակելիս
Հուսով եմ, որ աջակցությամբ
Պահեստի գործառույթները կարող են պարունակել Wolfram լեզվով գրված կոդի փոքր կամ մեծ կտորներ: Օրինակ, դրանք կարող են լինել զանգեր
Wolfram Feature Repository-ի կեղևը և ծրագրավորման կառուցվածքը նախագծված են այնպես, որ բոլորը կարողանան նպաստել ընդհանուր գործին իրենց համար ամենապարզ և հարմար եղանակով. իրականում պարզապես
Այս մոտեցման մեջ կան բազմաթիվ փոխզիջումներ և մանրամասներ, բայց մեր նպատակն է օպտիմալացնել Wolfram-ի առանձնահատկությունների պահոցը և՛ օգտագործողի փորձի համար, և՛ ապահովել, որ օգտատերերի նոր առանձնահատկությունները նշանակալիորեն նպաստեն լեզվի զարգացմանը: Քանի որ մենք աճում ենք, ես կասկած չունեմ, որ մենք ստիպված կլինենք նոր մեթոդներ հորինել պահեստում ներկառուցված գործառույթների մշակման և վավերացման համար, հատկապես մեծ թվով գործառույթներ կազմակերպելու և օգտատերերի կարիքները գտնելու համար: Այնուամենայնիվ, հուսադրող է, որ մեր ընտրած ճանապարհը լավ սկիզբ է։ Ես անձամբ
Արդյունավետության բարձրացում՝ միաժամանակ նվազեցնելով ծախսերը
Նույնիսկ ինտերնետից առաջ եղանակներ կային Wolfram Language կոդը կիսելու համար (մեր առաջին խոշոր կենտրոնացված նախագիծն էր
Ավելի քան 30 տարի մեր ընկերությունը ջանասիրաբար աշխատել է Wolfram լեզվի կառուցվածքի ամբողջականությունը պահպանելու համար, և դա կարևոր է ապահովելու համար, որ Wolfram լեզուն դառնա ոչ միայն ծրագրավորման լեզու, այլ նաև
Յուրաքանչյուր ֆունկցիայի իրականացման կառուցվածքում տեղի են ունենում տարբեր հաշվողական գործընթացներ: Այստեղ պետք է նշել, որ անհրաժեշտ է, որ ֆունկցիան ունենա հստակ և միատեսակ տեսք և տեսողական ընթեռնելիություն օգտագործողի համար: Այս համատեքստում Wolfram լեզվի ներկառուցված գործառույթները ներկայացված են ավելի քան 6000 հաջորդական օրինակներով, թե ինչպես ճիշտ ծրագրավորել գործառույթները (սրանք մեր
Պահեստի ստեղծումը, որն իրականում լավ է աշխատում, հետաքրքիր մետածրագրավորման խնդիր է: Օրինակ, ծրագրում սահմանափակումների ավելցուկը թույլ չի տա ձեռք բերել ալգորիթմի պահանջվող միավորումը և ունիվերսալությունը: Ինչպես ֆունկցիոնալ սահմանափակումների անբավարար քանակի դեպքում, դուք չեք կարողանա իրականացնել ալգորիթմի կատարման բավականաչափ ճիշտ հաջորդականություն: Այս մոտեցումների փոխզիջման իրականացման մի քանի նախորդ օրինակներ, որոնք իրականացվել են մեր ընկերության կողմից, բավականին կայուն են աշխատել. սրանք են.
Վերոհիշյալ բոլոր օրինակներն ունեն մի հիմնարար առանձնահատկություն՝ նախագծում հավաքված օբյեկտներն ու գործառույթներն ունեն գործընթացների կառուցվածքի և բաշխման շատ բարձր աստիճան: Իհարկե, ցուցադրման կամ նեյրոնային ցանցի կամ այլ բանի կառուցվածքի մանրամասները կարող են շատ տարբեր լինել, բայց ցանկացած ընթացիկ պահոցի հիմնական կառուցվածքը միշտ մնում է նույնը: Այսպիսով, ինչպիսի՞ն է ձեր կարծիքը, հարգելի օգտատեր, Wolfram լեզվին ընդլայնումներ ավելացնող նման պահոց ստեղծելու մասին: Wolfram Language-ը նախագծված է չափազանց ճկուն լինելու համար, ուստի այն կարող է ընդլայնվել և փոփոխվել ցանկացած ձևով: Այս հանգամանքը չափազանց կարևոր է Wolfram լեզվով տարբեր լայնածավալ ծրագրային նախագծեր արագ ստեղծելու ունակության համար։ Այստեղ պետք է նշել, որ լեզվի ճկունության բարձրացման հետ մեկտեղ անխուսափելիորեն կբարձրանան նման լեզվով իրականացվող նախագծերի արժեքը։ Դա պայմանավորված է նրանով, որ որքան շատ օգտվողը օգտագործում է նման լեզու, այնքան ավելի նվիրված ֆունկցիոնալություն է ստանում, բայց չպետք է մոռանալ, որ այս մոտեցումը կարող է ունենալ նաև բացասական կողմեր՝ ծրագրի մոդուլների հետևողական հետևողականություն ապահովելու անկարողության առումով:
Ավանդական ծրագրավորման լեզուներով գրադարանների հետ ընդհանուր խնդիր կա. եթե, օրինակ, օգտագործում եք մեկ գրադարան, կոդը ճիշտ կաշխատի, բայց եթե փորձեք օգտագործել մի քանի գրադարաններ, երաշխիք չկա, որ դրանք ճիշտ կգործեն միմյանց հետ: . Նաև ավանդական ծրագրավորման լեզուներում, ի տարբերություն ամբողջական հաշվողական լեզվի, չկա որևէ կերպ երաշխավորելու հետևողական ներկառուցված ներկայացումների առկայությունը որևէ գործառույթի կամ տվյալների տեսակների համար, բացի դրանց հիմնական կառուցվածքներից: Բայց, փաստորեն, խնդիրը նույնիսկ ավելի մեծ է, քան թվում է առաջին հայացքից. եթե մեկը կառուցում է ֆունկցիոնալության լայնածավալ ուղղահայաց, ապա առանց կենտրոնացված նախագծերի ծրագրավորման հսկայական ծախսերի, որոնք մենք դնում ենք Wolfram լեզվի մեջ, անհնար է. հասնել հետևողականության. Ուստի կարևոր է, որ բոլոր ծրագրային մոդուլները միշտ ճիշտ աշխատեն միասին:
Այսպիսով, Wolfram-ի առանձնահատկությունների պահոցի գաղափարն այն է, որ խուսափենք վերը նկարագրված խնդրից՝ պարզապես լեզվին ավելացնելով ընդարձակումներ կոդի համեմատաբար փոքր կտորներով՝ անհատական առանձնահատկությունների միջոցով, որոնք ավելի հեշտ են զարգացնել որպես համահունչ մոդուլներ: Այսպես ասվում է, որ կան ծրագրավորման առանձնահատկություններ, որոնք հնարավոր չէ հարմարեցնել անհատական գործառույթների միջոցով (և մեր ընկերությունը մոտ ապագայում ծրագրում է թողարկել օպտիմիզացված ծրագրավորման ալգորիթմ, որը կօգնի իրականացնել լայնածավալ ծրագրային փաթեթներ): Այնուամենայնիվ, հիմնվելով Wolfram լեզվում արդեն ներկառուցված գործառույթների վրա, կան բազմաթիվ ծրագրավորման հնարավորություններ, որոնք իրականացվում են առանձին գործառույթների հիման վրա: Գաղափարն այստեղ այն է, որ համեմատաբար փոքր ծրագրավորման ջանքերով հնարավոր է ստեղծել մի շարք նոր և շատ օգտակար գործառույթներ, որոնք կապահովեն դիզայնի բավարար համահունչ, դրանք լավ կհամակարգվեն միմյանց հետ, և բացի այդ, նրանք ապագայում կկարողանա հեշտությամբ և լայնորեն կիրառել լեզվում:
Այս մոտեցումն, իհարկե, փոխզիջումային է։ Եթե ավելի մեծ փաթեթ ներդրվեր, ապա կարելի էր պատկերացնել ֆունկցիոնալության մի ամբողջ նոր աշխարհ, որը չափազանց հզոր և օգտակար կլիներ: Եթե կարիք կա ձեռք բերել նոր ֆունկցիոնալություն, որը կհամապատասխանի մնացած ամեն ինչին, բայց դուք պատրաստ չեք մեծ ջանք ծախսել նախագծի մշակման վրա, դա, ցավոք, կարող է հանգեցնել ձեր նախագծի շրջանակի կրճատմանը: Wolfram առանձնահատկությունների պահեստի գաղափարն այն է, որ ֆունկցիոնալությունը տրամադրվի նախագծի որոշիչ մասին, այս մոտեցումը կավելացնի հզոր ֆունկցիոնալություն՝ միաժամանակ հեշտացնելով լավ հետևողականությունը ծրագրավորման նախագծում:
Օգնեք ավելացնել հատուկ գործառույթներ գործառույթների պահոցում
Մեր թիմը քրտնաջան աշխատել է, որպեսզի օգտատերերը հեշտացնեն իրենց ներդրումը Wolfram պահեստի հնարավորությունների մեջ: Սեղանի վրա (արդեն մուտքագրված է
Գոյություն ունեն երկու հիմնական քայլ, որոնք դուք պետք է կատարեք. առաջինը, իրականում գրեք ձեր գործառույթի կոդը և, երկրորդը, գրեք փաստաթղթերը, որոնք ցույց են տալիս, թե ինչպես պետք է աշխատի ձեր գործառույթը:
Սեղմեք «Բացել նմուշ» կոճակը վերևում, որպեսզի տեսնեք այն, ինչ դուք պետք է անեք.
Ըստ էության, դուք փորձում եք ստեղծել Wolfram լեզվում ներկառուցված ֆունկցիայի նման մի բան: Բացառությամբ, որ այն կարող է շատ ավելի կոնկրետ բան անել, քան ներկառուցված գործառույթը: Միևնույն ժամանակ, դրա ամբողջականության և հուսալիության հետ կապված ակնկալիքները շատ ավելի ցածր կլինեն։
Դուք պետք է ձեր գործառույթին անուն տաք, որը կհամապատասխանի Wolfram Language-ի գործառույթների անվանման ուղեցույցներին: Բացի այդ, ձեզ հարկավոր է փաստաթղթեր մշակել ձեր գործառույթի համար, որոնք նման են լեզվի ներկառուցված գործառույթներին: Այս մասին ավելի մանրամասն կխոսեմ ավելի ուշ: Առայժմ պարզապես ուշադրություն դարձրեք, որ սահմանման նոթատետրի ֆայլի վերևի կոճակների շարքում կա կոճակ.
Երբ համոզվեք, որ ամեն ինչ ճիշտ է լրացված և պատրաստ եք, սեղմեք «Ստուգել» կոճակը: Լրիվ նորմալ է, որ դեռ չեք պարզել բոլոր մանրամասները։ Այսպիսով, «Ստուգեք» գործառույթը ավտոմատ կերպով կաշխատի և կկատարի ոճի և հետևողականության բազմաթիվ ստուգումներ: Հաճախ դա անմիջապես հուշում է ձեզ հաստատել և ընդունել ուղղումները (Օրինակ՝ «Այս տողը պետք է ավարտվի երկու կետով», և այն կհուշի ձեզ մուտքագրել երկու կետ): Երբեմն նա ձեզ կխնդրի ինքներդ ինչ-որ բան ավելացնել կամ փոխել: Մենք անընդհատ կավելացնենք նոր հնարավորություններ «Ստուգել» կոճակի ավտոմատ ֆունկցիոնալությանը, բայց հիմնականում դրա նպատակն է ապահովել, որ այն ամենը, ինչ դուք ներկայացնում եք գործառույթների պահոց, արդեն իսկ հետևում է հնարավորինս շատ ոճի ուղեցույցներին:
Այսպիսով, «Ստուգել» գործարկելուց հետո կարող եք օգտագործել «Նախադիտում»: «Նախադիտում»-ը ստեղծում է ձեր գործառույթի համար սահմանված փաստաթղթերի էջի նախադիտում: Կարող եք նաև նախադիտում ստեղծել ձեր համակարգչում ստեղծված ֆայլի կամ ամպային պահեստում գտնվող ֆայլի համար: Եթե ինչ-ինչ պատճառներով ձեզ չի բավարարում այն, ինչ տեսնում եք նախադիտման մեջ, պարզապես վերադարձեք և կատարեք անհրաժեշտ ուղղումները, այնուհետև կրկին սեղմեք Preview կոճակը:
Այժմ դուք պատրաստ եք ձեր գործառույթը մղել պահոց: Deploy կոճակը տալիս է չորս տարբերակ.
Այս քայլում կարևորն այն է, որ դուք կարող եք ներկայացնել ձեր գործառույթը Wolfram ֆունկցիայի պահոցում, որպեսզի այն հասանելի լինի բոլորին: Միևնույն ժամանակ, դուք կարող եք նաև տեղադրել ձեր գործառույթը սահմանափակ թվով օգտվողների համար: Օրինակ, դուք կարող եք ստեղծել մի գործառույթ, որը տեղայնացված է ձեր համակարգչում, որպեսզի այն հասանելի լինի տվյալ համակարգչից օգտվելիս: Կամ կարող եք տեղադրել այն ձեր մեջ
Այսպիսով, ենթադրենք, որ ցանկանում եք իրականում ներկայացնել ձեր գործառույթը Wolfram ֆունկցիայի գիտելիքների բազա: Դա անելու համար սեղմում եք «Ներկայացնել» կոճակը պահոց: Այսպիսով, ի՞նչ է տեղի ունենում այս պահին: Ձեր դիմումը անմիջապես հերթագրվում է վերանայման և հաստատման մեր հատուկ կուրատորների թիմի կողմից:
Քանի որ ձեր դիմումն անցնում է հաստատման գործընթացում (որը սովորաբար տևում է մի քանի օր), դուք կստանաք հաղորդագրություններ դրա կարգավիճակի վերաբերյալ և, հնարավոր է, ապագա օգտագործման համար առաջարկներ: Բայց երբ ձեր հնարավորությունը հաստատվի, այն անմիջապես կհրապարակվի Wolfram Feature Repository-ում և հասանելի կլինի բոլորի համար՝ օգտագործելու համար: (Եվ սա կհայտնվի
Ինչ պետք է լինի պահեստում:
Հարկ է նշել, որ մեր ընկերությունն ունի ամբողջականության, հուսալիության և ընդհանուր որակի շատ բարձր չափանիշներ, և 6000+ գործառույթներից, որոնք մենք արդեն ներդրել ենք Wolfram լեզվում վերջին 30+ տարիների ընթացքում, բոլորը համապատասխանում են վերը նշված պահանջներին: Wolfram Function Repository-ի նպատակն է օգտագործել ամբողջ կառուցվածքն ու գործառույթը, որն արդեն գոյություն ունի Wolfram լեզվում, որպեսզի հնարավորինս շատ ավելի թեթև ֆունկցիաներ (այսինքն՝ ավելի բարձր կատարողականության գործառույթներ) ավելացնելու համար:
Իհարկե, գործառույթները Wolfram ֆունկցիայի պահոցում պետք է համապատասխանեն Wolfram Language-ի նախագծման սկզբունքներին, որպեսզի նրանք կարողանան լիովին փոխազդել այլ գործառույթների և օգտատերերի ակնկալիքների հետ, թե ինչպես պետք է գործառույթը ճիշտ աշխատի: Այնուամենայնիվ, պարտադիր չէ, որ գործառույթները լինեն հավասար ամբողջականության կամ հուսալիության:
Wolfram լեզվի ներկառուցված գործառույթներում մենք քրտնաջան աշխատում ենք ծրագրավորման գործառույթները հնարավորինս ընդհանուր դարձնելու համար: Երբ ասվում է, երբ Wolfram ֆունկցիայի պահոցում ոչ մի վատ բան չկա նրանում գործառույթ ունենալու մեջ, որը պարզապես լուծում է շատ կոնկրետ, բայց օգտակար գործ: Օրինակ՝ ֆունկցիան
Ներկառուցված գործառույթների հետ կապված ևս մեկ կետ այն է, որ մեր ընկերությունը բոլոր ջանքերը գործադրում է բոլոր անտիպ դեպքերը կարգավորելու, սխալ մուտքագրումը ճիշտ վարելու և այլն: Ֆունկցիայի պահոցում լիովին նորմալ է, որ կա հատուկ գործառույթ, որը լուծում է խնդրի լուծման հիմնական դեպքերը և անտեսում է մնացած բոլորը:
Ակնհայտ կետն այն է, որ ավելի լավ է ունենալ գործառույթներ, որոնք ավելի շատ են անում և ավելի լավ են անում, բայց ֆունկցիաների պահեստի օպտիմիզացումը, ի տարբերություն Wolfram լեզվի ներկառուցված գործառույթների, պետք է ունենա ավելի շատ գործառույթներ, որոնք կցված են ավելի շատ գործառույթներով, այլ ոչ թե խորանալու մեջ: յուրաքանչյուր կոնկրետ գործառույթի իրականացման գործընթացները:
Հիմա եկեք նայենք պահեստում փորձարկման գործառույթների օրինակին: Նման գործառույթների հետևողականության ակնկալիքները, բնականաբար, շատ ավելի ցածր են, քան ներկառուցված լեզվական գործառույթների համար: Սա հատկապես ճիշտ է այն դեպքերում, երբ գործառույթները կախված են արտաքին ռեսուրսներից, ինչպիսիք են API-ները, կարևոր է անընդհատ հետևողական թեստեր անցկացնել, ինչը ավտոմատ կերպով տեղի է ունենում ստուգման ալգորիթմների շրջանակներում: nb ֆայլում դուք կարող եք բացահայտորեն նշել սահմանումները (Լրացուցիչ տեղեկություններ բաժնում) և նշել այնքան թեստեր, որքան սահմանված են մուտքային և ելքային տողերով կամ տիպի լրիվ նիշերի օբյեկտներով:
Արդյունքում ֆունկցիաների շտեմարանը կունենա իրականացման մի շարք բարդություններ։ Ոմանք լինելու են ընդամենը մեկ տող կոդի, մյուսները կարող են ներառել հազարավոր կամ տասնյակ հազարավոր տողեր՝ հավանաբար օգտագործելով բազմաթիվ օգնական գործառույթներ: Ե՞րբ է արժե ավելացնել գործառույթ, որը սահմանելու համար շատ քիչ կոդ է պահանջում: Հիմնականում, եթե ֆունկցիայի համար կա
Ֆունկցիայի պահեստի հիմնական նպատակը (ինչպես ենթադրում է նրա անունը) լեզվի մեջ նոր առանձնահատկություններ ներմուծելն է։ Եթե ցանկանում եք ավելացնել նոր տվյալներ կամ
Իրականում երկու ճանապարհ կա. Դուք կարող եք ներկայացնել նոր օբյեկտի տեսակ, որը կօգտագործվի գործառույթների պահեստի նոր գործառույթներում: Եվ այս դեպքում, դուք միշտ կարող եք պարզապես գրել դրա սիմվոլիկ ներկայացումը և օգտագործել այն գործառույթների պահոցում ֆունկցիաներ մուտքագրելիս կամ ելք անելիս:
Բայց ի՞նչ, եթե ցանկանում եք ներկայացնել օբյեկտը և այնուհետև Wolfram լեզվում գոյություն ունեցող գործառույթների միջոցով սահմանել, որ ցանկանում եք աշխատել դրա հետ: Վոլֆրամի լեզուն միշտ ունեցել է դրա համար թեթև մեխանիզմ, որը կոչվում է
Այսպիսով, ի՞նչ կարող է լինել ֆունկցիայի կոդում ֆունկցիայի պահեստում:
Արդյո՞ք Wolfram առանձնահատկությունների պահեստի բոլոր ծածկագրերը պետք է գրվեն Wolfram-ում: Իհարկե, արտաքին API-ի ներսում ծածկագիրը չպետք է գրվի Wolfram լեզվով, որը նույնիսկ լեզվի կոդ չի ստեղծում: Փաստորեն, եթե դուք գործառույթ եք գտնում գրեթե ցանկացած արտաքին լեզվով կամ գրադարանում, կարող եք ստեղծել փաթաթան, որը թույլ է տալիս օգտագործել այն Wolfram ֆունկցիայի պահոցում: (Սովորաբար դրա համար պետք է օգտագործեք ներկառուցված գործառույթները
Այսպիսով, ո՞րն է սա անելու իմաստը: Ըստ էության, սա թույլ է տալիս օգտագործել Wolfram Language-ի ամբողջ ինտեգրված համակարգը և դրա ծրագրային ապահովման ողջ միասնական հնարավորությունները: Եթե դուք ստանում եք հիմնական ներդրումը արտաքին գրադարանից կամ լեզվից, ապա կարող եք օգտագործել Wolfram Language-ի հարուստ խորհրդանշական կառուցվածքը՝ ստեղծելու վերին մակարդակի հարմար գործառույթ, որը թույլ է տալիս օգտվողներին հեշտությամբ օգտագործել արդեն իսկ ներդրված ցանկացած գործառույթ: Առնվազն, դա պետք է իրագործելի լինի իդեալական աշխարհում, որտեղ կան գրադարանների բեռնման բոլոր բլոկները և այլն, որի դեպքում դրանք ավտոմատ կերպով կմշակվեն Վոլֆրամի լեզվով: (Հարկ է նշել, որ գործնականում կարող են լինել խնդիրներ
Ի դեպ, երբ առաջին անգամ նայում եք տիպիկ արտաքին գրադարաններին, դրանք հաճախ չափազանց բարդ են թվում, որպեսզի ծածկվեն ընդամենը մի քանի գործառույթներով, բայց շատ դեպքերում բարդության մեծ մասը գալիս է գրադարանի համար անհրաժեշտ ենթակառուցվածքի և բոլոր գործառույթների ստեղծման հետ: աջակցել այն. Այնուամենայնիվ, Wolfram լեզուն օգտագործելիս ենթակառուցվածքը սովորաբար արդեն ներկառուցված է փաթեթների մեջ, և այդ պատճառով կարիք չկա մանրամասնորեն բացահայտել այս բոլոր աջակցության գործառույթները, այլ միայն ստեղծել գործառույթներ գրադարանի «ամենաբարձր» հավելվածին հատուկ գործառույթների համար: .
Գիտելիքների բազայի «էկոհամակարգ».
Եթե դուք գրել եք գործառույթներ, որոնք պարբերաբար օգտագործում եք, ներկայացրեք դրանք Wolfram Function Repository-ին: Եթե սրանից ավելին չստացվի (լեզվի զարգացում), ապա նույնիսկ այդ դեպքում ձեզ համար շատ ավելի հարմար կլինի օգտագործել գործառույթները անձնական օգտագործման համար: Այնուամենայնիվ, տրամաբանական է ենթադրել, որ եթե դուք կանոնավոր կերպով օգտագործում եք գործառույթները, միգուցե մյուս օգտատերերը նույնպես դրանք օգտակար կգտնեն։
Բնականաբար, դուք կարող եք հայտնվել այնպիսի իրավիճակում, երբ չկարողանաք կամ չցանկանաք կիսվել ձեր գործառույթներով կամ մասնավոր տեղեկատվական ռեսուրսներից օգտվելու դեպքում: Նույնիսկ նման դեպքերում, դուք կարող եք պարզապես տեղակայել գործառույթները ձեր սեփական ամպային հաշվում,
Պարտադիր չէ, որ այն գործառույթները, որոնք դուք ներկայացնում եք Wolfram ֆունկցիաների պահոցին, կատարյալ լինեն. նրանք պարզապես պետք է օգտակար լինեն: Սա մի փոքր նման է «Սխալներ» բաժնին դասական Unix փաստաթղթերում. «Սահմանումներ բաժնում» կա «Հեղինակային նշումներ» բաժինը, որտեղ կարող եք նկարագրել սահմանափակումներ, խնդիրներ և այլն, որոնք արդեն գիտեք ձեր գործառույթի մասին: Բացի այդ, երբ ձեր հատկանիշը ներկայացնում եք պահոց, կարող եք ավելացնել ներկայացման նշումներ, որոնք կկարդան համադրողների հատուկ թիմը:
Երբ հատկանիշը հրապարակվում է, դրա էջը միշտ ունի երկու հղում ներքևում.
Երբեմն դուք պարզապես ցանկանում եք օգտագործել գործառույթներ Wolfram ֆունկցիաների պահոցից, ինչպիսիք են ներկառուցված գործառույթները, առանց դրանց կոդը նայելու: Այնուամենայնիվ, եթե ցանկանում եք ներս նայել, ապա վերևում միշտ կա Notepad կոճակ: Սեղմեք դրա վրա, և դուք կստանաք բնօրինակի նոթատետրի ձեր սեփական պատճենը, որը ներկայացվել է գործառույթների պահոց: Երբեմն դուք կարող եք պարզապես օգտագործել այն որպես օրինակ ձեր կարիքների համար: Միևնույն ժամանակ, դուք կարող եք նաև մշակել այս գործառույթի ձեր սեփական փոփոխությունը: Դուք կարող եք տեղադրել այս գործառույթները, որոնք գտել եք պահոցից ձեր համակարգչում կամ ձեր aphid ամպային պահեստավորման հաշվում, միգուցե ցանկանում եք դրանք ներկայացնել գործառույթի գիտելիքների բազա, գուցե որպես սկզբնական ֆունկցիայի բարելավված, ընդլայնված տարբերակ:
Ապագայում մենք նախատեսում ենք աջակցել Git-ի ոճով պատառաքաղը հնարավորությունների պահոցների համար, սակայն առայժմ մենք փորձում ենք այն պարզ պահել, և մենք միշտ ունենք լեզվի մեջ ներկառուցված յուրաքանչյուր հատկանիշի միայն մեկ ընդունված տարբերակ: Ավելի հաճախ, քան ոչ (եթե ծրագրավորողները չհրաժարվեն իրենց մշակած գործառույթների պահպանումից և չպատասխանեն օգտատերերի ներկայացումներին), հատկանիշի սկզբնական հեղինակը վերահսկում է դրա թարմացումները և ներկայացնում նոր տարբերակներ, որոնք այնուհետև վերանայվում են և, եթե նրանք անցնում են վերանայման գործընթացը: , հրատարակված լեզվով.
Դիտարկենք այն հարցը, թե ինչպես է աշխատում մշակված գործառույթների «տարբերակումը»: Հենց հիմա, երբ դուք օգտագործում եք գործառույթի պահոցից որևէ գործառույթ, դրա սահմանումը մշտապես կպահվի ձեր համակարգչում (կամ ձեր ամպային հաշվում, եթե դուք օգտագործում եք ամպը): Եթե որևէ գործառույթի նոր տարբերակը հասանելի է, հաջորդ անգամ այն օգտագործելիս հաղորդագրություն կստանաք, որը կտեղեկացնի ձեզ այդ մասին: Եվ եթե ցանկանում եք թարմացնել գործառույթը նոր տարբերակով, կարող եք դա անել՝ օգտագործելով հրամանը
Wolfram Function Repository-ի գեղեցիկ բաներից մեկն այն է, որ Wolfram լեզվի ցանկացած ծրագիր, ցանկացած վայրում, կարող է օգտագործել դրա գործառույթները: Եթե ծրագիրը հայտնվում է նոթատետրում, ապա հաճախ հարմար է ֆորմատավորել պահեստի գործառույթները որպես հեշտ ընթեռնելի «գործառույթի երկուական օբյեկտ» գործառույթներ (գուցե համապատասխան տարբերակների հավաքածուով):
Դուք միշտ կարող եք մուտք գործել գործառույթների պահոցում գտնվող ցանկացած գործառույթ՝ օգտագործելով տեքստը
Ինչպես է դա աշխատում.
Վոլֆրամի պահեստի գործառույթների ներսում դա հնարավոր է ճիշտ նույնն օգտագործելով
Համարել
Ներսում դուք կարող եք տեսնել որոշ տեղեկություններ՝ օգտագործելով գործառույթը
Ինչպե՞ս է աշխատում ռեսուրսի գործառույթի կարգավորումը: Ամենապարզը զուտ տեղային դեպք է։ Ահա մի օրինակ, որը վերցնում է ֆունկցիա (այս դեպքում պարզապես մաքուր ֆունկցիա) և սահմանում այն որպես ռեսուրսային ֆունկցիա տվյալ ծրագրի նիստի համար.
Սահմանումը կատարելուց հետո կարող եք օգտագործել ռեսուրսի գործառույթը.
Նկատի ունեցեք, որ այս ֆունկցիայի բլոկում կա սև պատկերակ . Սա նշանակում է, որ BLOB ֆունկցիան վերաբերում է ընթացիկ նստաշրջանի համար սահմանված հիշողության ռեսուրսի ֆունկցիային: Ռեսուրսների գործառույթը, որը մշտապես պահվում է ձեր համակարգչում կամ ամպային հաշվում, ունի մոխրագույն պատկերակ . Եվ Wolfram Feature Repository-ում կա պաշտոնական ռեսուրսի հատկանիշի նարնջագույն պատկերակ .
Այսպիսով, ի՞նչ է տեղի ունենում, երբ դուք օգտագործում եք «Ընդլայնել» ընտրացանկը Definition Notebook-ում: Նախ, այն վերցնում է նոթատետրում առկա բոլոր սահմանումները և դրանցից ստեղծում խորհրդանշական
Ձեր համակարգչի պահեստից ֆունկցիայի տեղական տեղակայումը կատարվում է հրամանի միջոցով
Եթե դուք սեղմում եք «Ներկայացնել» կոճակը գործառույթների պահեստի համար, ինչ է տեղի ունենում դրա տակ
Լռելյայնորեն, ներկայացումները կատարվում են ձեր Wolfram ID-ի հետ կապված անվան տակ: Բայց եթե դուք դիմում եք ներկայացնում զարգացման թիմի կամ կազմակերպության անունից, կարող եք
Այն բանից հետո, երբ դուք ներկայացնեք ձեր գործառույթներից որևէ մեկը գործառույթի գիտելիքների բազա, այն կհերթագրվի վերանայման համար: Եթե ի պատասխան մեկնաբանություններ ստանաք, դրանք սովորաբար կլինեն տեքստային ֆայլի տեսքով՝ ավելացված լրացուցիչ «մեկնաբանությունների բջիջներով»: Դուք միշտ կարող եք ստուգել ձեր դիմումի կարգավիճակը՝ այցելելով
Որոշ նրբություններ աշխատանքում
Առաջին հայացքից կարող է թվալ, որ դուք կարող եք պարզապես վերցնել սահմանումների նոթատետրը և բառացիորեն տեղադրել այն գործառույթների պահոցում, սակայն իրականում կան բավականին շատ նրբություններ, և դրանց հետ աշխատելը պահանջում է բավականին բարդ մետածրագրավորում, խորհրդանշական մշակում: որպես կոդը, որը սահմանում է ֆունկցիան , և ինքը՝ Գրառման գրքույկը: Դրա մեծ մասը տեղի է ունենում ներսում, կուլիսների հետևում, բայց դա կարող է ունենալ որոշ հետևանքներ, որոնք արժե հասկանալ, եթե դուք պատրաստվում եք նպաստել առանձնահատկությունների գիտելիքների բազային:
Առաջին անմիջական նրբությունը. Երբ լրացնում եք Definition Notebook-ը, դուք կարող եք պարզապես հղում կատարել ձեր գործառույթին ամենուր՝ օգտագործելով այնպիսի անուն, ինչպիսին է. MyFunction, որը նման է Wolfram լեզվի ֆունկցիայի սովորական անունին, բայց ֆունկցիաների պահեստի փաստաթղթերի համար սա փոխարինված է
Երկրորդ նրբությունը. երբ դուք ստեղծում եք ռեսուրսային ֆունկցիա Definition Notebook-ից, ֆունկցիայի սահմանման մեջ ներգրավված բոլոր կախվածությունները պետք է ներառվեն և բացահայտորեն ներառվեն: Այնուամենայնիվ, ապահովելու համար, որ սահմանումները մնան մոդուլային, դուք պետք է ամեն ինչ տեղադրեք եզակի մեջ
Սովորաբար դուք երբեք չեք տեսնի այս անվանատարածքը կարգավորելու համար օգտագործվող կոդի որևէ հետք: Բայց եթե ինչ-ինչ պատճառներով ձեր ֆունկցիայի ներսում կանչեք թերակատարված նշան, ապա կտեսնեք, որ այս նշանը գտնվում է ֆունկցիայի ներքին համատեքստում: Այնուամենայնիվ, Definition Notepad-ը մշակելիս առնվազն ինքնին ֆունկցիային համապատասխանող նշանն է
Ֆունկցիայի պահոցը նոր գործառույթներ սահմանելու համար է։ Եվ այս գործառույթները կարող են տարբերակներ ունենալ: Հաճախ այդ պարամետրերը (օրինակ.
Ֆունկցիաների մեծ մասը պարզապես անում է այն, ինչ պետք է անեն ամեն անգամ, երբ կանչվում են, բայց որոշ գործառույթներ պետք է սկզբնավորվեն, նախքան դրանք գործարկվեն որոշակի նստաշրջանում, և այս խնդիրը լուծելու համար սահմանում բաժնում կա «Initialization» բաժինը:
Պահեստի գործառույթները կարող են օգտագործել այլ գործառույթներ, որոնք արդեն գտնվում են պահեստում։ Որպեսզի սահմանումներ սահմանեք ֆունկցիայի պահեստի համար, որը ներառում է երկու (կամ ավելի) միմյանց հղումներ կատարող ֆունկցիաներ, դուք պետք է դրանք տեղակայեք ձեր ծրագրի նիստում, որպեսզի կարողանաք։ հղում, ինչպես նրանց վրա
Զարգացման հեռանկարներ. Ի՞նչ պետք է տեղի ունենա, երբ պահեստն իսկապես մեծանա:
Այսօր մենք նոր ենք գործարկում Wolfram Feature Repository-ը, բայց ժամանակի ընթացքում մենք ակնկալում ենք, որ դրա չափը և ֆունկցիոնալությունը կարող են կտրուկ աճել, և քանի որ այն աճում է, կլինեն տարբեր խնդիրներ, որոնք մենք արդեն ակնկալում ենք, որ կարող են առաջանալ:
Առաջին խնդիրը վերաբերում է ֆունկցիաների անուններին և դրանց եզակիությանը։ Ֆունկցիայի պահոցը նախագծված է այնպես, որ, ինչպես Wolfram լեզվի ներկառուցված գործառույթները, կարող եք հղում կատարել ցանկացած ֆունկցիայի՝ պարզապես նշելով դրա անունը: Բայց դա անխուսափելիորեն նշանակում է, որ գործառույթների անունները պետք է լինեն գլոբալ եզակի ամբողջ պահեստում, այնպես որ, օրինակ, կարող է լինել միայն մեկը
Սա կարող է առաջին հերթին մեծ խնդիր թվալ, բայց արժե հասկանալ, որ դա հիմնականում նույն խնդիրն է, ինչ ինտերնետ տիրույթների կամ սոցիալական մեդիայի բռնակների համար: Եվ փաստն այն է, որ համակարգը պարզապես պետք է ունենա գրանցող, և սա այն դերերից մեկն է, որը մեր ընկերությունը կկատարի Wolfram ֆունկցիայի գիտելիքների բազայի համար: (Պահեստի մասնավոր տարբերակների համար նրանց գրանցողները կարող են լինել ադմինիստրատորներ): Իհարկե, ինտերնետ տիրույթը կարող է գրանցվել առանց դրա վրա որևէ բան ունենալու, բայց ֆունկցիայի պահեստում գործառույթի անունը կարող է գրանցվել միայն այն դեպքում, եթե կա իրական սահմանում: ֆունկցիան։
Wolfram ֆունկցիայի գիտելիքների բազայի կառավարման գործում մեր դերի մի մասն այն է, որ համոզվենք, որ ֆունկցիայի համար ընտրված անունը տրամաբանական է՝ հաշվի առնելով ֆունկցիայի սահմանումը, և որ այն հետևում է Wolfram լեզվի անվանման կոնվենցիաներին: Մենք ունենք Wolfram լեզվով ներկառուցված գործառույթների անվանման ավելի քան 30 տարվա փորձ, և մեր կուրատորների թիմը այդ փորձը կբերի նաև գործառույթների շտեմարան: Իհարկե, միշտ էլ կան բացառություններ։ Օրինակ, կարող է նախընտրելի թվալ ինչ-որ ֆունկցիայի համար կարճ անուն ունենալը, բայց ավելի լավ է «պաշտպանել» ավելի երկար, ավելի կոնկրետ անունով, քանի որ քիչ հավանական է, որ հանդիպեք որևէ մեկի հետ, ով ցանկանում է ապագայում նման գործառույթի անուն ստեղծել: .
(Այստեղ պետք է նշել, որ ուղղակի որոշ անդամի պիտակ ավելացնելը ֆունկցիաների երեսարկմանը չի ունենա նախատեսված էֆեկտը: Քանի որ եթե չպնդեք միշտ հատկորոշել պիտակ, դուք պետք է սահմանեք լռելյայն թեգ ցանկացած տվյալ ֆունկցիայի համար, ինչպես նաև հատկացրեք հեղինակային պիտակներ: , որը կրկին կպահանջի գլոբալ համակարգում։)
Քանի որ Wolfram ֆունկցիաների գիտելիքների բազան մեծանում է, խնդիրներից մեկը, որը, հավանաբար, կառաջանա, գործառույթների հայտնաբերելիությունն է, որի համար համակարգը ապահովում է.
Վոլֆրամի լեզվում ներկառուցված գործառույթների համար կա այսպես կոչված հայտնաբերման շերտ, որը տրամադրվում է
Wolfram ֆունկցիայի պահոցը կազմաձևված է որպես կայուն ֆունկցիայի պահոց, որտեղ ցանկացած գործառույթ միշտ կաշխատի: Իհարկե, գործառույթների նոր տարբերակները կարող են հասանելի դառնալ, և մենք ակնկալում ենք, որ որոշ գործառույթներ, իհարկե, ժամանակի ընթացքում հնացած կլինեն: Գործառույթները կաշխատեն, եթե դրանք օգտագործվեն ծրագրերում, սակայն դրանց փաստաթղթերի էջերը կհղվեն դեպի նոր, ավելի առաջադեմ գործառույթներ:
Wolfram Feature Repository-ը նախատեսված է օգնելու ձեզ արագ բացահայտել նոր հնարավորություններ և սովորել Wolfram լեզուն օգտագործելու նոր ուղիներ: Մենք շատ լավատես ենք, որ առանձնահատկությունների պահոցում ուսումնասիրվածների մի մասն ի վերջո իմաստ կունենա դառնալ հիմնական Wolfram լեզվի ներկառուցված մասեր: Վերջին տասնամյակի ընթացքում մենք ունեցել ենք նմանատիպ հավաքածու
Այստեղ ամենակարևորն այն է, որ ֆունկցիայի պահոցում գտնվող ֆունկցիան այն է, որը հասանելի է յուրաքանչյուր օգտագործողի համար հենց հիմա: Հնարավոր է, որ մայրենի լեզվի առանձնահատկությունը կարող է շատ ավելի լավ և արդյունավետ լինել, բայց առանձնահատկությունների պահոցը թույլ կտա օգտվողներին անմիջապես օգտվել բոլոր նոր հնարավորություններից: Եվ, ամենակարևորը, այս հայեցակարգը թույլ է տալիս բոլորին ավելացնել ցանկացած նոր հնարավորություն, որը ցանկանում է:
Ավելի վաղ Վոլֆրամի լեզվի պատմության մեջ այս գաղափարը չէր աշխատի այնպես, ինչպես դա եղել է, բայց այս փուլում լեզվի վրա այնքան մեծ ջանքեր են գործադրվում և լեզվի ձևավորման սկզբունքների այնքան խորը ըմբռնում, որ այժմ թվում է բավականին Օգտատերերի մեծ համայնքի համար հնարավոր է ավելացնել գործառույթներ, որոնք կպահպանեն դիզայնի հետևողականությունը՝ դրանք օգտակար դարձնելու համար օգտագործողների լայն շրջանակի համար:
Wolfram Language-ի օգտատերերի համայնքում տաղանդի անհավատալի ոգի կա(՞): (Իհարկե, այս համայնքը ներառում է բազմաթիվ առաջատար գիտահետազոտական և մշակող մարդկանց տարբեր ոլորտներում:) Հուսով եմ, որ Wolfram Feature Repository-ն արդյունավետ հարթակ կապահովի տաղանդի այս ոգին բացելու և տարածելու համար: Միայն միասին մենք կարող ենք ստեղծել մի բան, որը զգալիորեն կընդլայնի այն տարածքը, որտեղ կարող է կիրառվել Wolfram լեզվի հաշվողական պարադիգմը:
Ավելի քան 30 տարվա ընթացքում մենք երկար ճանապարհ ենք անցել Wolfram լեզվով: Հիմա միասին գնանք ավելի հեռուն։ Ես խստորեն խրախուսում եմ ամբողջ աշխարհում Wolfram լեզվի բոլոր հարգված օգտվողներին օգտագործել ֆունկցիոնալ պահոցը որպես հարթակ դրա համար, ինչպես նաև նոր ծրագրային նախագիծը, ինչպիսին է Free Wolfram Engine-ը մշակողների համար:
Source: www.habr.com