Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Сәлем, Хабр! Назарларыңызға Стивен Вольфрамның жазбасының аудармасын ұсынамын «Вольфрам функциясының репозиторийі: Вольфрам тілін кеңейтуге арналған ашық платформаны іске қосу».

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Вольфрам тілінің жүйелілігінің алғы шарттары

Бүгін біз бағдарламалау тілімен бірге үлкен жетістіктердің табалдырығында тұрмыз Вольфрам тілі. Үш апта бұрын біз іске қостық әзірлеушілерге арналған тегін Wolfram қозғалтқышықолданушыларымызға Wolfram тілін кең ауқымды бағдарламалық жасақтама жобаларына біріктіруге көмектесу. Бүгін біз іске қосамыз Вольфрам функциясының репозиторийі, Wolfram тілін кеңейту үшін құрылған функциялар үшін үйлестірілген платформаны қамтамасыз ету үшін, сонымен қатар біз бағдарламалық өнімімізді дамытуға үлес қоса алатын кез келген адам үшін функциялар репозиторийін ашамыз.

Вольфрам функционалдық репозиторийі - бұл Wolfram тілінің тек бағдарламалау тілі ретінде ғана емес, сонымен қатар толық масштабты есептеу тілі. Дәстүрлі бағдарламалау тілдерінде маңызды жаңа функционалдылықты қосу әдетте бірге пайдаланған кезде жұмыс істей алатын немесе істемеуі мүмкін толық қосымша кітапханаларды жасауды қамтиды. Дегенмен, Вольфрам тілінде көп нәрсе тілдің өзінде салынған, бүкіл тілдің тұтас құрылымына бірден біріктірілген жаңа функцияларды қосу арқылы оның функционалдығын айтарлықтай кеңейтуге болатынын.

Мысалы, Wolfram функциясының репозиторийінде бұрыннан бар 532 жаңа мүмкіндік 26 тақырыптық категорияға бөлінген:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Сол сияқты артық 6000 стандартты функциялар, Вольфрам тіліне енгізілген, репозиторийдегі әрбір функцияда олардың егжей-тегжейлі сипаттамасы және жұмыс мысалдары бар құжаттама беті бар:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Бетке өту үшін жоғарыдағы нысанды көшіріңіз (BLOB функциясы), оны енгізу жолына қойыңыз, содан кейін функцияны іске қосыңыз - ол қазірдің өзінде Вольфрам тіліне енгізілген және әдепкі бойынша келесіден бастап қолдау көрсетіледі. 12.0 нұсқасы:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Бұл жерде айта кету керек, бұл өңдеу кезінде LogoQRCode Мысалы, «суреттерді өңдеу кітапханасын» орнатудың қажеті жоқ, өйткені біз Вольфрам тілінде дәйекті және мұқият алгоритмдік жолды енгіздік. кескінді өңдеу, оны әр түрлі графикалық тіл функцияларымен бірден өңдеуге болады:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

қолдауымен деп үміттенемін тамаша және талантты қауымдастық, ол соңғы бірнеше онжылдықтарда өсіп, кеңейіп келеді (Вольфрам тіліне негізделген). Вольфрам функцияларының репозиторийі жақын болашақта тілде қолжетімді функциялардың ауқымын (мүмкін әлеуетті маңызды, ғылым мен техниканың әртүрлі салаларында мамандандырылған) айтарлықтай кеңейтуге мүмкіндік береді. Осылайша, тілдің мазмұнын да (оның кіріктірілген функцияларын) да, сонымен қатар қолдану мүмкіндігі пайда болады даму принциптері, олар тіл негізінде жүзеге асырылады. (Бұл жерде Вольфрам тілінде қазірдің өзінде көп екенін атап өткен жөн 30 жылдық даму және тұрақты өсу тарихы).
Репозиторийдің функциялары Вольфрам тілінде жазылған шағын немесе үлкен код бөліктерін қамтуы мүмкін. Мысалы, бұл қоңыраулар болуы мүмкін сыртқы API және қызметтер немесе басқа тілдердегі сыртқы кітапханалар. Бұл тәсілдің бірегей ерекшелігі, пайдаланушы деңгейіндегі функционалдылыққа дейін төмендеген кезде, әлеуетті сәйкессіздіктер болмайды, өйткені тәсіл Вольфрам тілінің дәйекті құрылымының үстіне құрылған - және әрбір функция автоматты түрде дұрыс жұмыс істейді - дәл ол керек.
Wolfram мүмкіндіктер репозиторийінің қабықшасы мен бағдарламалау құрылымы әрбір адам ортақ іске олар үшін ең қарапайым және ыңғайлы жолмен үлес қоса алатындай етіп жасалған - шын мәнінде, жай ғана. блокнот мәтіндік файлын (nb кеңейтімімен) WL толтыру арқылы. Кірістірілген автоматты функциялар репозиторийге қосылған жаңа функцияларды олардың тілге біріктіруін тексеруге мүмкіндік береді. Біздің компания жаңа функциялардың күрделілігіне емес, өз функцияларын тілге біріктіре алатын пайдаланушылардың кең ауқымына бәс тігуде - және тексеру процесі болса да, біз мұндай нәрсені талап етпейміз. дизайнды мұқият талдау немесе жаңа пайдаланушы мүмкіндіктерінің толықтығы мен сенімділігі үшін қатаң стандарттар, біз қолданатын негізгі тілге енгізілген мүмкіндіктерді неғұрлым қатаң сынақтан өткізуге қарсы.

Бұл тәсілде көптеген келіссөздер мен егжей-тегжейлер бар, бірақ біздің мақсатымыз Wolfram мүмкіндіктері репозиторийін пайдаланушы тәжірибесі үшін оңтайландыру және жаңа пайдаланушы мүмкіндіктері тілдің дамуына маңызды үлес қосуын қамтамасыз ету. Біз өсіп келе жатқанда, біз репозиторийге енгізілген функцияларды өңдеу және тексерудің жаңа әдістерін ойлап табуға тура келетініне күмәнданбаймын, сонымен қатар көптеген функцияларды ұйымдастыру және пайдаланушыларға қажет нәрселерді табу үшін ғана емес. Әйтсе де, таңдаған жолымыздың игі бастама екені көңіл қуантады. Мен жеке бірнеше мүмкіндіктер қосылды бастапқы дерекқорға. Олардың көпшілігі мен біраз уақыт бойы жеке әзірлеген кодқа негізделген. Оларды репозиторийге итермелеу үшін маған бірнеше минут қажет болды. Енді олар репозиторийде болғандықтан, мен бұл функцияларды қажет болған жағдайда, файлдарды іздеу, бумаларды жүктеп алу және т.

Шығындарды азайту кезінде тиімділікті арттыру

Интернетке дейін де Вольфрам тілінің кодын ортақ пайдалану жолдары болған (біздің бірінші ірі орталықтандырылған жобамыз MathSource, 1991 жылы Mathematica үшін CD-ROM негізінде жасалған және т.б.). Әрине, Wolfram функциясының репозиторийіне негізделген іске асыру үшін ұсынылған тәсіл жоғарыда аталған міндеттерді жүзеге асыру үшін неғұрлым күшті және сенімді құрал болып табылады.

30 жылдан астам уақыт бойы біздің компания Вольфрам тілі құрылымының тұтастығын сақтау үшін аянбай жұмыс істеді және бұл Вольфрам тілі тек бағдарламалау тілі ғана емес, сонымен қатар толыққанды есептеу тілі. Сонымен, Wolfram функциясының репозиторийін енгізу тәсілінің мәні жүйелі түрде қосылатын және тіл шеңберіне сәйкес келетін жаңа функцияларды бағдарламалауға және әзірлеуге біртұтас тәсілді қолдану болып табылады, осылайша ол дамып, бірге дами алады.

Әрбір функцияның орындалу құрылымында әртүрлі есептеу процестері орын алады. Бұл жерде функцияның анық және біркелкі көрінісі және пайдаланушы үшін көрнекі оқу мүмкіндігі болуы қажет екенін атап өткен жөн. Осы тұрғыда Вольфрам тілінің кіріктірілген функциялары функцияларды қалай дұрыс бағдарламалау керектігінің 6000-нан астам дәйекті мысалдарымен ұсынылған (бұл біздің тікелей бағдарламалау бейнелерісоның ішінде стандартты бағдарламаларды құру процесі жүздеген сағат). Бұл тәсіл, сайып келгенде, Вольфрам мүмкіндіктері репозиторийін жақсы жұмыс істеуге қабілетті ететін нәрсе - Вольфрам тілінің құрылымдық табиғаты, оның тілге енгізілген көптеген қосымша және әртүрлі кітапханалары бар. Мысалы, сізде кескіндерді өңдейтін функция болса немесе сирек массивтер, немесе молекулалық құрылымдар, және де географиялық деректер немесе басқалары - олардың тұрақты символдық көрінісі тілде бұрыннан бар және осының арқасында сіздің функцияңыз тілдегі басқа функциялармен бірден үйлесімді болады.

Іс жүзінде жақсы жұмыс істейтін репозиторий жасау - қызықты мета-бағдарламалау тапсырмасы. Мысалы, бағдарламадағы шектеулердің асып кетуі алгоритмнің қажетті унификациясы мен әмбебаптығын алуға мүмкіндік бермейді. Функционалдық шектеулердің жеткіліксіз саны сияқты, сіз алгоритмді орындаудың жеткілікті дұрыс дәйектілігін жүзеге асыра алмайсыз. Біздің компания енгізген осы тәсілдердің ымыраға келуінің бірнеше алдыңғы мысалдары айтарлықтай тұрақты жұмыс істеді - бұл: Вольфрамды көрсету жобасы, 2007 жылы іске қосылды және қазір 12000 XNUMX-нан астам пайдаланушы интерактивті демонстрацияларымен онлайн режимінде жұмыс істейді. IN Вольфрам мәліметтер базасы Вольфрам тілінде қолдануға болатын 600-ден астам дайын мәліметтер базасы бар және Wolfram нейрондық желісінің қоймасы апта сайын дерлік жаңа нейрондық желілермен толықтырылады (қазір олардың 118-і бар) және олар функция арқылы бірден қосылады. NetModel Вольфрам тілінде.

Жоғарыда келтірілген мысалдардың барлығында іргелі қасиет бар - жобада жиналған объектілер мен функциялар процестерді құрылымдау мен бөлудің өте жоғары дәрежесіне ие. Әрине, демонстрация немесе нейрондық желі немесе басқа нәрсенің құрылымының егжей-тегжейлері әртүрлі болуы мүмкін, бірақ кез келген ағымдағы репозиторийдің негізгі құрылымы әрқашан өзгеріссіз қалады. Сонымен, Wolfram тіліне кеңейтімдерді қосатын осындай репозиторий жасау туралы сіздің пікіріңіз, құрметті қолданушы? Вольфрам тілі өте икемді етіп жасалған, сондықтан оны кез келген жолмен кеңейтуге және өзгертуге болады. Бұл жағдай Вольфрам тілінде әртүрлі ауқымды бағдарламалық жобаларды жылдам жасау мүмкіндігі үшін өте маңызды. Осы жерде айта кететін жайт, тілдің икемділігі артқан сайын мұндай тілде жүзеге асырылатын жобалардың құны да өсетіні сөзсіз. Бұл пайдаланушы мұндай тілді неғұрлым көп пайдаланса, соғұрлым ол арнайы функцияларды алатындығына байланысты, бірақ бұл тәсілдің бағдарламалық модульдердің бірізділігін қамтамасыз ету мүмкін еместігі тұрғысынан жағымсыз жақтары да болуы мүмкін екенін ұмытпаған жөн.

Дәстүрлі бағдарламалау тілдеріндегі кітапханалармен ортақ мәселе бар - егер сіз бір кітапхананы пайдалансаңыз, мысалы, код дұрыс жұмыс істейді, бірақ бірнеше кітапхананы қолдануға тырыссаңыз, олардың бір-бірімен дұрыс әрекеттесетініне кепілдік жоқ. . Сондай-ақ, дәстүрлі бағдарламалау тілдерінде - толыққанды есептеу тілінен айырмашылығы - олардың негізгі құрылымдарынан басқа кез келген функциялар немесе деректер түрлері үшін дәйекті кірістірілген өкілдіктердің болуына кепілдік берудің ешқандай жолы жоқ. Бірақ, шын мәнінде, мәселе бір қарағанда көрінгеннен де үлкен: егер функционалдылықтың кең ауқымды вертикалын құрастыратын болса, онда біз Вольфрам тіліне енгізетін орталықтандырылған жобалық бағдарламалаудың үлкен шығындарынсыз мүмкін емес. жүйелілікке қол жеткізу. Сондықтан барлық бағдарламалық модульдердің әрқашан бірге дұрыс жұмыс істеуі маңызды.

Сонымен, Wolfram мүмкіндіктері репозиторийінің идеясы когерентті модульдер ретінде әзірлеуге оңай жеке мүмкіндіктер арқылы салыстырмалы түрде шағын код бөліктерінде тілге кеңейтімдерді қосу арқылы жоғарыда сипатталған мәселені болдырмау болып табылады. Айтуынша, жеке функцияларды пайдалану арқылы ыңғайлы ету мүмкін емес бағдарламалау мүмкіндіктері бар (және біздің компания ауқымды бағдарламалық пакеттерді енгізуге көмектесу үшін жақын арада оңтайландырылған бағдарламалау алгоритмін шығаруды жоспарлап отыр). Дегенмен, Вольфрам тіліне енгізілген функциялардың негізінде жеке функцияларға негізделген көптеген бағдарламалау мүмкіндіктері бар. Бұл жерде идея мынада: салыстырмалы түрде аз бағдарламалау күш-жігерімен дизайнның жеткілікті үйлесімділігін қамтамасыз ететін бірқатар жаңа және өте пайдалы функцияларды жасауға болады, олар бір-бірімен жақсы үйлестіріледі, сонымен қатар, сонымен қатар, олар болашақта тілде оңай әрі кең қолданысқа ие болады.

Бұл тәсіл, әрине, ымыраға келу. Егер үлкенірек пакет іске асырылса, өте күшті және пайдалы болатын функционалдылықтың жаңа әлемін елестетуге болады. Егер барлық басқалармен үйлесетін жаңа функционалдылықты алу қажет болса, бірақ сіз жобаны әзірлеуге көп күш жұмсағыңыз келмесе, бұл, өкінішке орай, жобаңыздың ауқымын қысқартуға әкелуі мүмкін. Wolfram мүмкіндіктері репозиторийінің идеясы жобаның анықтайтын бөлігіне функционалдылықты қамтамасыз ету болып табылады; бұл тәсіл бағдарламалау жобасында жақсы үйлесімділікті сақтауды жеңілдете отырып, қуатты функционалдылықты қосады.

Функция репозиторийіне теңшелетін функцияларды қосуға көмектесіңіз

Біздің команда пайдаланушыларға Wolfram репозиторийінің мүмкіндіктеріне үлес қосуды жеңілдету үшін көп жұмыс жасады. Жұмыс үстелінде (қазірдің өзінде 12.0 нұсқасы), Сіз жай ғана негізгі мәзір қойындыларын ретімен өтуіңізге болады: Файл > Жаңа > Репозиторий элементі > Функция репозиторий элементі және сіз «Анықтама дәптері" (бағдарламалық түрде жұмыс үстелінің ішінде. Сондай-ақ аналогтық функцияны пайдалануға болады - Жазу кітапшасын жасау[«Функция ресурсы»]):

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Орындауыңыз қажет екі негізгі қадам бар: біріншіден, функцияңыздың кодын жазыңыз, екіншіден, функцияңыз қалай жұмыс істейтінін көрсететін құжаттаманы жазыңыз.
Не істеу керектігінің мысалын көру үшін жоғарғы жағындағы «Үлгіні ашу» түймесін басыңыз:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Негізінде, сіз Вольфрам тіліндегі кірістірілген функцияға ұқсас нәрсені жасауға тырысып жатырсыз. Кірістірілген функциядан әлдеқайда нақты нәрсені жасай алатынын қоспағанда. Сонымен бірге оның толықтығы мен сенімділігіне қатысты күту әлдеқайда төмен болады.
Функцияңызға Вольфрам тілінің функцияларды атау нұсқауларына сәйкес атау беруіңіз керек. Бұған қоса, тілдің кірістірілген функцияларына ұқсас функцияңыз үшін құжаттаманы әзірлеу қажет болады. Бұл туралы кейінірек толығырақ айтамын. Әзірге анықтамалық жазу кітапшасы файлының жоғарғы жағындағы түймелер қатарында түйме бар екенін байқаңыз «Стиль нұсқаулары»не істеу керектігін түсіндіретін , және функция құжаттамасын пішімдеуге арналған құралдарды қамтамасыз ететін Құралдар түймесі.
Барлығы дұрыс толтырылғанына және дайын екеніңізге сенімді болсаңыз, «Тексеру» түймесін басыңыз. Сіз әлі барлық мәліметтерді түсінбегеніңіз қалыпты жағдай. Осылайша, «Тексеру» функциясы автоматты түрде іске қосылады және көптеген мәнерлер мен дәйектілік тексерулерін жасайды. Көбінесе ол сізге түзетулерді растауды және қабылдауды бірден ұсынады (Мысалы: «Бұл жол қос нүктемен аяқталуы керек» және ол қос нүктені енгізуді ұсынады). Кейде ол сізден бір нәрсе қосуды немесе өзгертуді сұрайды. Біз «Тексеру» түймесінің автоматты функционалдығына үнемі жаңа мүмкіндіктерді қосатын боламыз, бірақ негізінен оның мақсаты мүмкіндіктер репозиторийіне жіберген барлық нәрсенің мүмкіндігінше көп мәнер нұсқауларына сәйкес келуін қамтамасыз ету.

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Сонымен, «Тексеруді» іске қосқаннан кейін «Алдын ала қарауды» пайдалануға болады. «Алдын ала қарау» функция үшін анықтаған құжаттама бетін алдын ала қарауды жасайды. Сондай-ақ, компьютерде жасалған файл үшін немесе бұлттық қоймада орналасқан файл үшін алдын ала қарауды жасауға болады. Егер қандай да бір себептермен алдын ала қарауда көргендеріңіз сізді қанағаттандырмаса, жай ғана артқа оралып, қажетті түзетулерді енгізіңіз, содан кейін «Алдын ала қарау» түймесін қайтадан басыңыз.
Енді сіз өзіңіздің функцияңызды репозиторийге енгізуге дайынсыз. Қолдану түймесі төрт опцияны береді:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Бұл қадамдағы маңызды нәрсе - сіз өз функцияңызды Wolfram функциясының репозиторийіне жібере аласыз, осылайша ол кез келген адамға қолжетімді болады. Сонымен қатар, сіз өзіңіздің функцияңызды шектеулі пайдаланушылар саны үшін де орналастыра аласыз. Мысалы, компьютерде жергілікті түрде орналастырылған функцияны жасауға болады, осылайша ол белгілі бір компьютерді пайдаланған кезде қолжетімді болады. Немесе сіз оны өз парақшаңызға жариялай аласыз бұлтты есептік жазба, бұлтқа қосылған кезде ол сізге қолжетімді болуы үшін. Сондай-ақ бұлт тіркелгісі арқылы мүмкіндікті жалпыға ортақ орналастыруға (орналастыруға) болады. Ол орталық Wolfram мүмкіндіктер репозиторийінде болмайды, бірақ сіз біреуге сіздің мүмкіндікті тіркелгіңізден алуға мүмкіндік беретін URL мекенжайын бере аласыз. (Болашақта біз бүкіл компаниямыздағы орталық репозиторийлерге қолдау көрсететін боламыз.)

Сонымен, сіз өз функцияңызды Wolfram функциясының білім қорына нақты жібергіңіз келеді делік. Ол үшін репозиторийге «Жіберу» түймесін басыңыз. Сонда қазір не болып жатыр? Сіздің өтінішіңізді біздің арнайы кураторлар тобы қарау және бекіту үшін дереу кезекке қояды.

Қолданбаңыз мақұлдау процесінде (әдетте бірнеше күнді алады) өтіп жатқанда, сіз оның күйіне және болашақта пайдалану үшін ұсыныстарға қатысты хабарлама аласыз. Бірақ сіздің мүмкіндік мақұлданғаннан кейін ол дереу Wolfram мүмкіндіктер репозиторийінде жарияланады және кез келген адам пайдалана алады. (Және бұл бетте пайда болады жаңа мүмкіндіктердің жаңалықтар дайджесттері және т.б.)

Қоймада не болуы керек?

Айта кету керек, біздің компания толықтық, сенімділік және жалпы сапа бойынша өте жоғары стандарттарға ие және соңғы 6000+ жыл ішінде біз Вольфрам тіліне енгізген 30+ функцияның барлығы жоғарыда аталған талаптарға сәйкес келеді. Вольфрам функционалдық репозиторийінің мақсаты - мүмкіндігінше жеңілірек функцияларды (яғни, өнімділігі жоғары функцияларды) қосу үшін Вольфрам тілінде бұрыннан бар барлық құрылым мен функцияларды пайдалану.

Әрине, Вольфрам функцияларының репозиторийіндегі функциялар Вольфрам тілінің жобалау принциптеріне сәйкес болуы керек - олар басқа функциялармен және функцияның қалай дұрыс жұмыс істеуі керектігі туралы пайдаланушылардың күтулерімен толық әрекеттесе алады. Дегенмен, функциялардың бірдей толықтығы немесе сенімділігі болуы міндетті емес.

Вольфрам тілінің кіріктірілген функцияларында біз бағдарламалау функцияларын мүмкіндігінше жалпылау үшін көп жұмыс жасаймыз. Айта кету керек, Wolfram функциясының репозиторийінде өте нақты, бірақ пайдалы жағдайды өңдейтін функцияның болуының ешбір қатесі жоқ. Мысалы, функция SendMailFromNotebook файлдарды белгілі бір пішімде қабылдай алады және белгілі бір жолмен пошта жасай алады. Көпбұрышты диаграмма тек белгілі бір түстермен және таңбалаумен диаграммалар жасайды және т.б.

Кірістірілген функцияларға қатысты тағы бір мәселе, біздің компания барлық атипикалық жағдайларды өңдеуге, қате енгізуді дұрыс өңдеуге және т.б. Функциялар репозиторийінде мәселені шешудің негізгі жағдайларын өңдейтін және қалғандарының барлығын елемейтін арнайы функцияның болуы әбден қалыпты жағдай.

Көрінетін мәселе, көбірек орындайтын және оны жақсырақ орындайтын функциялардың болғаны жақсы, бірақ функция репозиторийіне арналған оңтайландыру - Вольфрам тілінің кіріктірілген функцияларына қарағанда - тереңірек емес, көбірек функциялармен біріктірілген көбірек функцияларға ие болуы керек. әрбір нақты функцияны іске асыру процестері.

Енді репозиторийдегі функцияларды тестілеудің мысалын қарастырайық. Мұндай функциялар үшін жүйелілік күтулері, әрине, кірістірілген тіл функцияларына қарағанда әлдеқайда төмен. Бұл, әсіресе, функциялар API сияқты сыртқы ресурстарға тәуелді болған жағдайда, тексеру алгоритмдерінде автоматты түрде орындалатын дәйекті сынақтарды үнемі жүргізу маңызды. nb файлында анықтамаларды анық көрсетуге болады (Қосымша ақпарат бөлімінде) және енгізу және шығару жолдарымен немесе түрдегі толық таңба нысандарымен анықталғандай көп сынақтарды көрсетуге болады. Тексеру сынағы, сіз қаншалықты қолайлы деп тапсаңыз, соншалықты. Бұған қоса, жүйе үнемі сіз ұсынатын құжаттама мысалдарын тексеру процесіне айналдыруға тырысады (және кейде бұл өте ресурсты қажет етеді, мысалы, нәтижесі кездейсоқ сандарға немесе тәулік уақытына тәуелді функция үшін).

Нәтижесінде функция репозиторийінде іске асырудың бірқатар күрделілігі болады. Кейбіреулер кодтың бір жолы ғана болады, басқалары мыңдаған немесе он мыңдаған жолдарды қамтуы мүмкін, мүмкін көптеген көмекші функцияларды пайдаланады. Анықтау үшін өте аз кодты қажет ететін функцияны қашан қосу керек? Негізінде, егер функция үшін болса жақсы мнемоникалық атау, пайдаланушылар оны код бөлігінде көрсе, оны оңай түсінетін болса, оны қосуға болады. Әйтпесе, оны пайдалану қажет болған сайын бағдарламаға кодты қайта қосқан дұрыс.

Функциялар репозиторийінің негізгі мақсаты (аты айтып тұрғандай) тілге жаңа мүмкіндіктерді енгізу. Жаңа деректерді қосқыңыз келсе немесе жаңа нысандар, пайдаланыңыз Вольфрам деректер репозиторийі. Бірақ есептеулер үшін нысандардың жаңа түрлерін енгізгіңіз келсе ше?

Іс жүзінде екі жол бар. Функция репозиторийіндегі жаңа функцияларда қолданылатын жаңа нысан түрін енгізгіңіз келуі мүмкін. Және бұл жағдайда сіз әрқашан оның символдық көрінісін жазып, оны функция репозиторийіне функцияларды енгізу немесе шығару кезінде пайдалануға болады.

Бірақ егер сіз объектіні ұсынып, содан кейін Вольфрам тіліндегі бар функциялар арқылы онымен жұмыс істегіңіз келетінін анықтағыңыз келсе ше? Вольфрам тілінде бұл үшін әрқашан жеңіл механизм болды Жоғары мәндер. Кейбір шектеулермен (әсіресе функциялар үшін аргументтерін бағалай алмайды), функция репозиторийі функцияны жай ғана көрсетуге және оның мәндерін анықтауға мүмкіндік береді. (Вольфрам тіліне толығымен кіріктірілген жаңа негізгі дизайнды жасау кезінде үйлесімділікке деген үмітті арттыру, әдетте, жобаның құнын көбейту арқылы қол жеткізуге болмайтын өте маңызды процедура және біздің компания жобалардың бір бөлігі ретінде жасайтын нәрсе. тілдің ұзақ мерзімді дамуы үшін бұл міндет қойманы дамытудың бір бөлігі ретінде қойылған мақсат емес).

Сонымен, функция репозиторийіндегі функция кодында не болуы мүмкін? Барлығы Вольфрам тіліне енгізілген, әрине (кем дегенде егер ол көрсетпесе қауіптер үшін қауіпсіздік және бағдарламаның өзін есептеу ортасы ретіндегі өнімділігі), сондай-ақ функциялар репозиторийіндегі кез келген функция. Дегенмен, басқа да функциялар бар: функция репозиторийіндегі функция API немесе in Вольфрам бұлты, немесе басқа көзден. Әрине, бұған байланысты кейбір тәуекелдер бар. API өзгермейтініне кепілдік жоқ болғандықтан, функция қоймасындағы функция жұмысын тоқтатады. Осы сияқты мәселелерді анықтауға көмектесу үшін құжаттама бетінде (Талаптар бөлімінде) кіріктірілген Вольфрам тілінің функционалдығымен шектелмейтін кез келген мүмкіндікке арналған ескертпе бар. (Әрине, нақты деректерге келетін болсақ, бұл функционалдылыққа қатысты да проблемалар болуы мүмкін - өйткені нақты әлем деректері үнемі өзгеріп отырады, кейде тіпті оның анықтамалары мен құрылымы да өзгереді.)

Вольфрам мүмкіндіктері репозиторийінің барлық коды Вольфрамда жазылуы керек пе? Әрине, сыртқы API ішіндегі код Wolfram тілінде жазылмауы керек, ол тіпті тіл кодын жасамайды. Іс жүзінде кез келген дерлік сыртқы тілде немесе кітапханада функцияны тапсаңыз, оны Wolfram функциясының репозиторийінде пайдалануға мүмкіндік беретін қаптама жасауға болады. (Әдетте бұл үшін кірістірілген функцияларды пайдалану керек Сыртқы бағалау немесе Сыртқы функция Вольфрам тілінің кодында.)

Сонда мұны істеудің мәні неде? Негізінде, бұл Wolfram Language интеграцияланған жүйесін және оның бағдарламалық қамтамасыз ету мүмкіндіктерінің тұтас жиынтығын пайдалануға мүмкіндік береді. Негізгі іске асыруды сыртқы кітапханадан немесе тілден алсаңыз, пайдаланушыларға бұрыннан іске асырылған кез келген функцияны оңай пайдалануға мүмкіндік беретін ыңғайлы жоғарғы деңгейлі функцияны жасау үшін Вольфрам тілінің бай символдық құрылымын пайдалана аласыз. Кем дегенде, бұл жүктеу кітапханаларының барлық құрылымдық блоктары және т.б. бар идеалды әлемде мүмкін болуы керек, бұл жағдайда олар Вольфрам тілімен автоматты түрде өңделеді. (Тәжірибеде проблемалар болуы мүмкін екенін атап өткен жөн сыртқы тілдерді орнату арнайы компьютер жүйесі және бұлтты сақтау қосымша қауіпсіздік мәселелерін тудыруы мүмкін).

Айтпақшы, әдеттегі сыртқы кітапханаларды бірінші рет қараған кезде, олар көбінесе бірнеше функцияларды қамту үшін тым күрделі болып көрінеді, бірақ көп жағдайда күрделіліктің көп бөлігі кітапханаға қажетті инфрақұрылымды және барлық функцияларды жасаудан туындайды. оны қолдаңыз. Дегенмен, Wolfram тілін пайдаланған кезде, инфрақұрылым әдетте пакеттерге салынған, сондықтан осы қолдау функцияларының барлығын егжей-тегжейлі көрсетудің қажеті жоқ, тек кітапханадағы «ең жоғарғы» қолданбаға тән функциялар үшін функцияларды жасаңыз. .

Білім қорының «экожүйесі».

Егер сіз үнемі қолданатын функцияларды жазған болсаңыз, оларды Wolfram функциясының репозиторийіне жіберіңіз! Бұдан басқа бірдеңе шықпаса (тілді дамыту), сонда да жеке пайдалану үшін функцияларды пайдалану сізге әлдеқайда ыңғайлы болады. Дегенмен, егер сіз функцияларды үнемі пайдалансаңыз, басқа пайдаланушылар да оларды пайдалы деп санау қисынды.

Әрине, сіз өз функцияларыңызды бөлісе алмайтын немесе қаламайтын жағдайға тап болуыңыз мүмкін немесе жеке ақпараттық ресурстарға қол жеткізген жағдайда. Тіпті мұндай жағдайларда сіз өзіңіздің бұлттық тіркелгіңізде функцияларды жай ғана қолдана аласыз, құқықтарын белгілеу оларға қол жеткізу. (Егер сіздің ұйымыңыз болса Wolfram Enterprise жеке бұлт, содан кейін ол жақын арада ұйымыңыздан басқарылатын және үшінші тарап пайдаланушылары көру үшін көріністерді мәжбүрлеу немесе мәжбүрлемеуді орнатуға болатын жеке мүмкіндіктер репозиторийін орналастыра алады.)

Wolfram функцияларының репозиторийіне жіберетін функциялар мінсіз болуы міндетті емес; олар тек пайдалы болуы керек. Бұл Unix классикалық құжаттамасындағы «Қателер» бөліміне ұқсайды – «Анықтамалар бөлімінде» функцияңыз туралы бұрыннан білетін шектеулерді, мәселелерді және т.б. сипаттауға болатын «Авторлық ескертпелер» бөлімі бар. Оған қоса, мүмкіндікті репозиторийге жіберген кезде арнайы кураторлар тобы оқитын жіберу жазбаларын қосуға болады.

Мүмкіндік жарияланғаннан кейін оның бетінде әрқашан төменгі жағында екі сілтеме болады: "Осы мүмкіндік туралы хабарлама жіберіңіз«Ал»Вольфрам қауымдастығында талқылаңыз" Жазбаны тіркеп жатсаңыз (мысалы, қателер туралы айтып беріңіз), хабарыңыз бен байланыс ақпаратыңыздың мүмкіндік авторымен бөлісілуін қалайтыныңызды көрсететін құсбелгіні қоюға болады.

Кейде сіз Wolfram функциясының репозиторийіндегі функцияларды, мысалы, кірістірілген функцияларды, олардың кодын қарамай ғана пайдаланғыңыз келеді. Дегенмен, ішін көргіңіз келсе, әрқашан жоғарғы жағында Блокнот түймесі бар. Оны басыңыз және мүмкіндік репозиторийіне жіберілген түпнұсқа анықтамалық жазу кітапшасының жеке көшірмесін аласыз. Кейде сіз оны өз қажеттіліктеріңізге мысал ретінде пайдалана аласыз. Сонымен қатар, сіз осы функцияның өзіңіздің модификациясын жасай аласыз. Компьютеріңіздегі репозиторийден немесе aphid бұлтты сақтау тіркелгісінде тапқан осы функцияларды жариялағыңыз келуі мүмкін, мүмкін оларды бастапқы функцияның жақсартылған, кеңейтілген нұсқасы ретінде функциялар туралы білім қорына жібергіңіз келуі мүмкін.

Болашақта біз мүмкіндіктер репозиторийлері үшін Git стиліндегі форкингті қолдауды жоспарлап отырмыз, бірақ әзірге біз оны қарапайым ұстауға тырысамыз және бізде әрқашан тілге енгізілген әрбір мүмкіндіктің бір ғана қабылданған нұсқасы болады. Көбінесе (әзірлеушілер өздері әзірлеген мүмкіндіктерді сақтаудан бас тартпаса және пайдаланушының жіберулеріне жауап бермесе), мүмкіндіктің түпнұсқа авторы оған жаңартуларды бақылауға алады және жаңа нұсқаларды жібереді, содан кейін олар қаралады және егер олар тексеру процесінен өтсе. , тілінде жарияланған.

Әзірленген функцияларды «нұсқалау» қалай жұмыс істейтіні туралы мәселені қарастырайық. Дәл қазір функция репозиторийінен функцияны пайдаланған кезде оның анықтамасы компьютерде (немесе бұлтты пайдалансаңыз, бұлттық тіркелгіде) тұрақты сақталады. Мүмкіндіктің жаңа нұсқасы қол жетімді болса, оны келесі рет пайдаланған кезде сізге бұл туралы хабарлайтын хабарлама келеді. Ал егер функцияны жаңа нұсқаға жаңартқыңыз келсе, оны пәрмен арқылы орындауға болады ResourceUpdate. («Функция блогы» шын мәнінде нұсқалар туралы көбірек ақпаратты сақтайды және біз оны болашақта пайдаланушыларымызға қолжетімді етуді жоспарлап отырмыз.)

Wolfram Функциялар Репозиторийі туралы әдемі нәрселердің бірі - кез келген Wolfram Language бағдарламасы кез келген жерде оның функцияларын пайдалана алады. Егер бағдарлама блокнотта пайда болса, репозитарий функцияларын оңай оқылатын "функцияның екілік нысаны" функциялары ретінде пішімдеу жиі ыңғайлы (мүмкін сәйкес нұсқалар жиынтығымен).

Функция репозиторийіндегі кез келген функцияға мәтінді пайдаланып әрқашан қол жеткізе аласыз Ресурсфункциясы[...]. Және бұл өте ыңғайлы, егер сіз кодты немесе сценарийлерді тікелей Wolfram қозғалтқышына жазсаңыз, мысалы, көмегімен IDE немесе мәтіндік код өңдегішін пайдалану (функция репозиторийі толығымен үйлесімді екенін ерекше атап өту керек Әзірлеушілерге арналған тегін Wolfram қозғалтқышы).

Бұл қалай жұмыс істейді?

Вольфрам репозиторийіндегі функциялардың ішінде дәл солай қолдануға болады ресурстар жүйелері сияқты негіздер барлық басқа бар репозиторийлеріміз (деректер қоймасы, Нейрондық желі репозиторийі, демо жобалар жинағы басқа да Wolfram жүйесінің ресурстары сияқты, ResourceFunction сайып келгенде функцияға негізделген ResourceObject.

Қарастырыңыз ResourceFunction:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Ішінде функцияны пайдаланып кейбір ақпаратты көруге болады ақпарат:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Ресурс функциясын орнату қалай жұмыс істейді? Ең қарапайымы – таза жергілікті жағдай. Мұнда функцияны қабылдайтын (бұл жағдайда тек таза функция) және оны берілген бағдарлама сеансы үшін ресурс функциясы ретінде анықтайтын мысал келтірілген:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Анықтаманы жасағаннан кейін ресурс функциясын пайдалануға болады:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Бұл функция блогында қара белгіше бар екенін ескеріңіз Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы. Бұл BLOB функциясы ағымдағы сеанс үшін анықталған жадтағы ресурс функциясына қатысты екенін білдіреді. Компьютерде немесе бұлт тіркелгісінде тұрақты сақталатын ресурс мүмкіндігінде сұр белгіше бар Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы. Wolfram мүмкіндіктері репозиторийінде ресми ресурс мүмкіндігінің қызғылт сары белгішесі бар Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы.

Анықтама жазу кітапшасындағы Кеңейту мәзірін пайдаланғанда не болады? Біріншіден, ол блокноттағы барлық анықтамаларды алады және олардан символдық жасайды ResourceObject). (Егер сіз мәтіндік IDE немесе бағдарламаны пайдалансаңыз, онда сіз де анық жасай аласыз ResourceObject)

Функцияны компьютердегі репозиторийден жергілікті орналастыру пәрмен арқылы орындалады LocalCache ретінде сақтау үшін ресурс нысаны үшін LocalObject файлдық жүйеңізде. Бұлттық тіркелгіге орналастыру пәрмен арқылы орындалады CloudDeploy ресурс нысаны үшін және жалпы бұлтты орналастыру болып табылады CloudPublish. Барлық жағдайларда Ресурс тіркелімі ресурс функциясының атауын тіркеу үшін де пайдаланылады, сондықтан Ресурсфункциясы["аты"] жұмыс істейтін болады.

Функциялар репозиторийі үшін Жіберу түймесін бассаңыз, оның астында не болады ResourceSubmit ресурс объектісіне шақырылады. (Егер мәтін енгізу интерфейсін пайдалансаңыз, қоңырау шалуға да болады ResourceSubmit тікелей.)

Әдепкі бойынша, жіберулер Wolfram идентификаторыңызбен байланыстырылған атпен жасалады. Бірақ егер сіз әзірлеу тобының немесе ұйымның атынан өтінім жіберіп жатсаңыз, жасай аласыз бөлек жариялаушы идентификаторын орнатыңыз және оның орнына көзқарастарыңызбен әрекеттесу үшін атау ретінде пайдаланыңыз.

Функцияларыңыздың кез келгенін функционалдық білім қорына жібергеннен кейін ол тексеру үшін кезекке қойылады. Жауап ретінде түсініктемелер алсаңыз, олар әдетте қосымша «түсініктеме ұяшықтары» қосылған мәтіндік файл түрінде болады. Сіз әрқашан кіру арқылы өтінішіңіздің күйін тексере аласыз ресурстық жүйе мүше порталы. Бірақ сіздің мүмкіндік мақұлданғаннан кейін сізге хабарланады (электрондық пошта арқылы) және мүмкіндігіңіз Wolfram мүмкіндіктер репозиторийіне орналастырылады.

Жұмыстағы кейбір нәзіктіктер

Бір қарағанда, сіз жай ғана анықтамалық жазу кітапшасын алып, оны функционалдық репозиторийге сөзбе-сөз қоюға болатын сияқты көрінуі мүмкін, дегенмен, шын мәнінде көптеген нәзіктіктер бар - және оларды өңдеу өте күрделі мета-бағдарламалауды, символдық өңдеуді талап етеді. функциясын анықтайтын код ретінде және Блокноттың өзі анықталады. Мұның көпшілігі іште, сахна артында орын алады, бірақ егер сіз мүмкіндіктер туралы білім базасына үлес қосқыңыз келсе, оның түсінуге тұрарлық кейбір салдары болуы мүмкін.

Бірінші шұғыл нәзіктік: Анықтау жазу кітапшасын толтырған кезде, сияқты атауды пайдаланып, барлық жерде функцияңызға сілтеме жасай аласыз. MyFunction, ол Вольфрам тіліндегі функцияның әдеттегі атауы сияқты көрінеді, бірақ функция репозиторийінің құжаттамасы үшін бұл ауыстырылады Ресурсфункциясы[«Менің функциясы»] бұл функциямен жұмыс істегенде пайдаланушылар нақты пайдаланатын нәрсе.

Екінші нәзіктік: Анықтау жазу кітапшасынан ресурс функциясын жасағанда, функция анықтамасына қатысатын барлық тәуелділіктер түсіріліп, анық түрде қосылуы керек. Дегенмен, анықтамалардың модульдік болып қалуын қамтамасыз ету үшін бәрін бірегей етіп қою керек аттар кеңістігі. (Әрине, барлығын жасайтын функциялар, функция репозиторийінде.)

Әдетте бұл аттар кеңістігін конфигурациялау үшін пайдаланылатын кодтың ізін ешқашан көрмейсіз. Бірақ қандай да бір себептермен функцияның ішінде орындалмаған символды шақырсаңыз, онда бұл таңба функцияның ішкі контекстінде екенін көресіз. Дегенмен, анықтамалық блокнотты өңдеу кезінде, кем дегенде, функцияның өзіне сәйкес таңба болады жақсы көрсету үшін реттеледі ішкі контексте шикі таңбадан гөрі функционалды BLOB ретінде.

Функция репозиторийі жаңа функцияларды анықтауға арналған. Және бұл функциялардың опциялары болуы мүмкін. Көбінесе бұл параметрлер (мысалы, әдіс немесе Кескін өлшемі) кірістірілген функциялар үшін, сондай-ақ кірістірілген символдары бұрыннан бар функциялар үшін пайдаланылуы мүмкін. Бірақ кейде жаңа мүмкіндік жаңа опцияларды қажет етуі мүмкін. Модульділікті сақтау үшін бұл параметрлер бірегей ішкі контексте (немесе бүкіл ресурс функциялары сияқты нәрсе, яғни өздері) анықталған таңбалар болуы керек. Қарапайымдылық үшін функция репозиторийі жол анықтамаларында жаңа опцияларды анықтауға мүмкіндік береді. Пайдаланушыға ыңғайлы болу үшін бұл анықтамалар (олар қолданылған болса OptionValue и OptionsPattern) сонымен қатар функцияларды пайдаланған кезде параметрлерді тек жолдар ретінде емес, сонымен қатар бірдей атаулары бар ғаламдық белгілер ретінде де көрсетуге болатындай өңделеді.

Функциялардың көпшілігі шақырылған сайын орындауы тиіс нәрсені жай ғана орындайды, бірақ кейбір функциялар белгілі бір сеанста іске қосылмас бұрын инициализациялануы керек – және бұл мәселені шешу үшін Анықтама бөлімінде «Инициализация» бөлімі бар.

Репозиторийдің функциялары репозиторийде бұрыннан бар басқа функцияларды пайдалана алады; бір-біріне сілтеме жасайтын екі (немесе одан да көп) функцияларды қамтитын функция репозиторийіне анықтамаларды орнату үшін оларды бағдарлама сеансында орналастыру керек, осылайша сіз олардағы сияқты сілтеме Ресурсфункциясы["аты"], содан кейін сізге қажет осы функциялардың комбинацияларын, мысалдарды (түсінбедім) жасауға және бұрын жарияланғандардың негізінде репозиторийге жаңа функция қосуға болады. (немесе әлдеқашан немесе бұрын – екі сөз де ыңғайсыз)

Даму перспективалары. Репозиторий шынымен үлкен болған кезде не болуы керек?

Бүгін біз Wolfram мүмкіндіктері репозиторийін енді ғана іске қосып жатырмыз, бірақ уақыт өте келе оның көлемі мен функционалдығы күрт ұлғаюы мүмкін деп күтеміз және ол даму барысында өскен сайын біз күткен әртүрлі мәселелер туындауы мүмкін.

Бірінші мәселе функция атауларына және олардың бірегейлігіне қатысты. Функциялар репозиторийі Вольфрам тіліндегі кірістірілген функциялар сияқты кез келген берілген функцияға оның атын көрсету арқылы сілтеме жасай алатындай етіп жасалған. Бірақ бұл сөзсіз функция атаулары репозиторийде ғаламдық бірегей болуы керек дегенді білдіреді, осылайша, мысалы, бір ғана болуы мүмкін. Ресурсфункциясы[«Менің сүйікті функциясы»].

Бұл бастапқыда үлкен мәселе болып көрінуі мүмкін, бірақ бұл негізінен интернет домендері немесе әлеуметтік медиа тұтқалары сияқты нәрселермен бірдей мәселе екенін түсінген жөн. Және бұл жүйеде жай ғана тіркеуші болуы керек - бұл біздің компания Wolfram функциясының білім базасы үшін атқаратын рөлдердің бірі. (Репозиторийдің жеке нұсқалары үшін олардың тіркеушілері әкімшілер болуы мүмкін.) Әрине, Интернет доменін ешнәрсесіз тіркеуге болады, бірақ функция репозиторийінде функция атауын нақты анықтамасы болған жағдайда ғана тіркеуге болады. функциясы.

Вольфрам функциясының білім қорын басқарудағы біздің рөліміздің бір бөлігі функция үшін таңдалған атау функцияның анықтамасын ескере отырып логикалық болуын және оның Вольфрам тілінің атау конвенцияларына сәйкес келуін қамтамасыз ету болып табылады. Бізде Вольфрам тілінде кіріктірілген функцияларды атауда 30 жылдан астам тәжірибеміз бар және біздің кураторлар тобы бұл тәжірибені функциялар репозиторийіне де жеткізеді. Әрине, әрқашан ерекше жағдайлар болады. Мысалы, қандай да бір функцияның қысқа атауы болғаны дұрыс болып көрінуі мүмкін, бірақ ұзағырақ, нақтырақ атаумен «қорғау» жақсырақ, өйткені болашақта осыған ұқсас функция атауын жасағысы келетін біреуді кездестіру ықтималдығы аз. .

(Функцияларды ажырату үшін жай ғана кейбір мүше тегін қосу жоспарланған нәтижеге ие болмайтынын ескеру қажет. Өйткені әрқашан тег тағайындауды талап етпесеңіз, кез келген берілген функция үшін әдепкі тегті анықтауыңыз керек, сонымен қатар автор тегтерін бөлуіңіз керек. , бұл тағы да жаһандық үйлестіруді қажет етеді.)

Вольфрам функцияларының білім базасы ұлғайған сайын, туындауы мүмкін мәселелердің бірі функциялардың ашылуы болып табылады, олар үшін жүйе іздеу функциясы (және анықтамалық файлдар кілт сөздерді және т.б. қамтуы мүмкін). Вольфрам тіліндегі кіріктірілген функциялар үшін құжаттамада функцияларды «жарнамалауға» көмектесетін барлық түрлі сілтемелер бар. Функция репозиторийіндегі функциялар кірістірілген функцияларға сілтеме жасай алады. Бірақ керісінше ше? Бұл әрекетті орындау үшін, біз кірістірілген функцияларға арналған құжаттама беттеріндегі репозиторий функцияларын көрсету үшін әртүрлі конструкциялармен тәжірибе жасаймыз.

Вольфрам тіліндегі кірістірілген функциялар үшін қамтамасыз ететін анықтау қабаты бар «анықтамалық беттер» желісі, олар белгілі бір аймақтарға қатысты мүмкіндіктердің ұйымдастырылған тізімдерін береді. Адам беттерін дұрыс теңестіру әрқашан қиын, ал Вольфрам тілі өскен сайын адам беттерін жиі толығымен қайта ұйымдастыру қажет. Функцияларды репозиторийден кең санаттарға қою, тіпті бұл санаттарды дәйекті түрде бөлу оңай, бірақ дұрыс ұйымдастырылған тіл анықтамалық беттері әлдеқайда құнды. Бүкіл функциялық білім қоры үшін оларды қалай жақсы жасау керектігі әлі белгісіз. Мысалы, CreateResourceObjectGallery мүмкіндіктер репозиторийінде кез келген адам репозиторийден өзінің «таңдаулары» бар веб-бетті жариялай алады:

Wolfram функциясының репозиторийі: Вольфрам тілінің кеңейтімдері үшін ашық қолжетімділік платформасы

Wolfram функциясының репозиторийі тұрақты функция репозиторийі ретінде конфигурацияланған, ондағы кез келген функция әрқашан жұмыс істейді. Әрине, мүмкіндіктердің жаңа нұсқалары қол жетімді болуы мүмкін және кейбір мүмкіндіктер уақыт өте келе ескіреді деп күтеміз. Функциялар бағдарламаларда пайдаланылса жұмыс істейді, бірақ олардың құжаттама беттері жаңа, жетілдірілген функцияларға сілтеме жасайды.

Wolfram мүмкіндіктері репозиторийі жаңа мүмкіндіктерді жылдам ашуға және Вольфрам тілін пайдаланудың жаңа жолдарын үйренуге көмектесу үшін жасалған. Функциялар репозиторийінде зерттелгендердің кейбірі ақыр соңында негізгі Вольфрам тілінің кіріктірілген бөліктеріне айналуы мүмкін деген оптимистік сенім бар. Соңғы онжылдықта бізде осындай жиын болды бастапқыда Вольфрамда енгізілген мүмкіндіктер | Альфа. Және осы тәжірибеден алынған сабақтардың бірі - Вольфрам тіліне енгізілген барлық нәрседе біз назар аударатын сапа мен жүйелілік стандарттарына қол жеткізу көп жұмысты қажет етеді, бұл идеяны жүзеге асырудың бастапқы күш-жігерінен гөрі қиынырақ. Осыған қарамастан, функция туралы білім қорындағы функция, сайып келгенде, Вольфрам тіліне енгізілуі мүмкін болашақ функция үшін тұжырымдаманың өте пайдалы дәлелі бола алады.

Мұндағы ең маңызды нәрсе - функция репозиторийіндегі функция дәл қазір әрбір пайдаланушы үшін қол жетімді нәрсе. Ана тілінің мүмкіндігі әлдеқайда жақсырақ және тиімдірек болуы мүмкін, бірақ мүмкіндіктер репозиторийі пайдаланушыларға барлық жаңа мүмкіндіктерге бірден қол жеткізуге мүмкіндік береді. Және, ең бастысы, бұл тұжырымдама әркімге қалаған кез келген жаңа мүмкіндіктерді қосуға мүмкіндік береді.

Бұрынғы Вольфрам тілінің тарихында бұл идея бұрынғыдай жақсы жұмыс істемейтін еді, бірақ бұл кезеңде тілге көп күш жұмсалғаны сонша, тілдің дизайн принциптерін терең түсінгендіктен, ол қазір өте маңызды болып көрінеді. пайдаланушылардың үлкен қауымдастығы оларды пайдаланушылардың кең ауқымына пайдалы ету үшін дизайн сәйкестігін сақтайтын мүмкіндіктерді қосуы мүмкін.

Wolfram Language пайдаланушылар қауымдастығында керемет талант рухы(?) бар. (Әрине, бұл қауымдастық әртүрлі салалардағы көптеген жетекші ғылыми-зерттеу және тәжірибелік-конструкторлық жұмыстарды қамтиды.) Вольфрам мүмкіндіктері репозиторийі осы талант рухын ашу және тарату үшін тиімді платформа береді деп үміттенемін. Тек бірге ғана біз Вольфрам тілінің есептеу парадигмасын қолдануға болатын аумақты айтарлықтай кеңейтетін нәрсені жасай аламыз.

30 жылдан астам уақыт ішінде біз Вольфрам тілімен ұзақ жолдан өттік. Енді бірге, одан да әрі қарай жүрейік. Мен бүкіл әлем бойынша Вольфрам тілінің барлық құрметті пайдаланушыларын функционалдық репозиторийді платформа ретінде, сондай-ақ әзірлеушілерге арналған тегін Wolfram қозғалтқышы сияқты жаңа бағдарламалық жасақтама жобасын пайдалануға шақырамын.

Ақпарат көзі: www.habr.com

пікір қалдыру