Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы

Салам, Хабр! Сиздердин назарыңыздарга Стивен Вольфрамдын постунун котормосун сунуштайм "Вольфрам функциясынын репозиторийи: Вольфрам тилин кеңейтүү үчүн ачык платформаны ишке киргизүү".

Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы

Вольфрам тилинин ырааттуулугунун шарты

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

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 тилинде ырааттуу жана кылдат алгоритмдик жолду ишке ашырганбыз. сүрөт иштетүү, ар кандай графикалык тил функциялары менен дароо иштетилет:

Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы

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

Бул ыкмада көптөгөн карама-каршылыктар жана майда-чүйдөсүнө чейин бар, бирок биздин максатыбыз Wolfram өзгөчөлүк репозиторийин колдонуучу тажрыйбасы үчүн оптималдаштыруу жана жаңы колдонуучу өзгөчөлүктөрү тилдин өнүгүшүнө олуттуу салым кошуусун камсыз кылуу. Биз өскөн сайын, биз репозиторийге орнотулган функцияларды иштеп чыгуу жана текшерүү үчүн жаңы ыкмаларды ойлоп табууга туура келет деп күмөн санабайм, көп сандагы функцияларды уюштуруу жана колдонуучуларга керектүүлөрдү табуу үчүн. Бирок, биз тандап алган жол жакшы башталыш экени кубандырат. Мен лично бир нече өзгөчөлүктөрдү кошкон баштапкы маалымат базасына. Алардын көбү бир топ убакыттан бери жеке өзүм иштеп чыккан кодго негизделген. Аларды репозиторийге түртүүгө бир нече мүнөт гана убакыт кетти. Эми алар репозиторийде болгондуктан, мен акыры - дароо жана каалаган убакта - файлдарды издөө, пакеттерди жүктөө ж.

Чыгымдарды кыскартуу менен бирге натыйжалуулукту жогорулатуу

Интернетке чейин эле Wolfram тилинин кодун бөлүшүү жолдору бар болчу (биздин биринчи ири борборлоштурулган долбоор MathSource, 1991-жылы Mathematica үчүн CD-ROM негизинде түзүлгөн ж.б.). Албетте, Wolfram функциясынын репозиторийинин негизинде ишке ашыруу үчүн сунушталган ыкма жогоруда аталган милдеттерди ишке ашыруу үчүн кыйла күчтүү жана ишенимдүү курал болуп саналат.

30 жылдан ашуун убакыттан бери биздин компания Wolfram тилинин структурасынын бүтүндүгүн сактоо үчүн тырышчаактык менен иштеп келет жана бул Wolfram тили программалоо тили гана эмес, ошондой эле толук кандуу эсептөө тили. Ошентип, Wolfram функциясынын репозиторийин ишке ашырууга болгон мамиленин маңызы ырааттуу түрдө кошулуучу жана тилдин алкактарына туура келген жаңы функцияларды программалоого жана иштеп чыгууга бирдиктүү мамилени колдонуу болуп саналат, ошондо ал өнүгүп, бирге өнүгө алат.

Ар бир функцияны ишке ашыруу структурасында ар кандай эсептөө процесстери пайда болот. Бул жерде белгилей кетүү керек, бул функция колдонуучу үчүн ачык жана бирдей көрүнүшкө жана визуалдык окууга ээ болушу керек. Бул контекстте Вольфрам тилинин орнотулган функциялары функцияларды кантип туура программалоонун 6000ден ашык ырааттуу мисалдары менен берилген (бул биздин жандуу программалоо видеолорукамтыйт стандарттуу программаларды түзүү процесси жүздөгөн саат). Бул ыкма акыры Wolfram өзгөчөлүктөр репозиторийин жакшы аткарууга жөндөмдүү кылган нерсе, Вольфрам тилинин структуралык табияты, анын көп сандагы кошумча жана ар түрдүү китепканалары бар, алар тилге мурунтан эле орнотулган. Мисалы, сизде сүрөттөрдү иштеткен функция болсо, же сейрек массивдерже молекулярдык структуралар, дагы географиялык маалыматтар же кээ бир башкалары - алардын ырааттуу символикалык чагылдырылышы тилде мурунтан эле бар жана мунун аркасында сиздин функцияңыз дароо тилдеги башка функциялар менен шайкеш келет.

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

Жогорудагы мисалдардын бардыгынын фундаменталдуу өзгөчөлүгү бар - долбоордо чогултулган объекттер жана функциялар процесстердин структураланышынын жана бөлүштүрүлүшүнүн өтө жогорку даражасына ээ. Албетте, демонстрациянын же нейрондук тармактын же башка нерсенин структурасынын чоо-жайы абдан ар түрдүү болушу мүмкүн, бирок учурдагы репозиторийдин фундаменталдык структурасы дайыма ошол эле бойдон калат. Анда, урматтуу колдонуучу, Wolfram тилине кеңейтүүлөрдү кошкон ушундай репозиторийди түзүү жөнүндө сиздин пикириңиз кандай? Wolfram тили өтө ийкемдүү болуп иштелип чыккан, ошондуктан аны каалаган жол менен узартууга жана өзгөртүүгө болот. Бул жагдай Wolfram тилинде ар кандай масштабдуу программалык долбоорлорду тез түзүү жөндөмдүүлүгү үчүн өтө маанилүү болуп саналат. Бул жерде айта кетчү нерсе, тилдин ийкемдүүлүгү жогорулаган сайын мындай тилде ишке ашырылып жаткан долбоорлордун баасы сөзсүз өсөт. Бул колдонуучу мындай тилди канчалык көп колдонсо, ал ошончолук көп арналган функционалдуулукка ээ боло тургандыгы менен түшүндүрүлөт, бирок бул ыкманын программалык модулдардын ырааттуу ырааттуулугун камсыз кыла албагандыгы жагынан терс жактары да болушу мүмкүн экенин унутпашыбыз керек.

Салттуу программалоо тилдериндеги китепканаларда жалпы көйгөй бар - эгер сиз бир китепкананы колдонсоңуз, мисалы, код туура иштейт, бирок бир нече китепкананы колдонууга аракет кылсаңыз, алар бири-бири менен туура иштешет деген кепилдик жок. . Ошондой эле, салттуу программалоо тилдеринде - толук кандуу эсептөө тилинен айырмаланып, алардын негизги структураларынан башка ар кандай функциялар же маалымат түрлөрү үчүн ырааттуу орнотулган өкүлчүлүктөрдүн болушуна кепилдик бере албайт. Бирок, чындыгында, маселе бир караганда көрүнгөндөн да чоңураак: эгер кимдир бирөө функционалдуулуктун масштабдуу вертикалын куруп жатса, анда биз Wolfram тилине киргизген борборлоштурулган долбоордук программалоо үчүн чоң чыгымдарсыз, бул мүмкүн эмес. ырааттуулукка жетишүү. Ошондуктан бардык программалык модулдар дайыма туура иштеши маанилүү.

Ошентип, Wolfram функцияларынын репозиторийинин идеясы жогоруда айтылган көйгөйдөн кутулуу болуп саналат, бул тилге когеренттүү модулдар катары иштеп чыгуу оңой болгон жеке функциялар аркылуу салыштырмалуу кичинекей коддорго кеңейтүүлөрдү кошуу. Айтылгандай, жеке функцияларды колдонуу менен ыңгайлуу кылуу мүмкүн болбогон программалоо функциялары бар (жана биздин компания масштабдуу программалык пакеттерди ишке ашырууга жардам берүү үчүн жакынкы келечекте оптималдаштырылган программалоо алгоритмин чыгарууну пландаштырууда). Бирок, Wolfram тилине мурунтан эле орнотулган функциялардын негизинде, жеке функциялардын негизинде ишке ашырылган көптөгөн программалоо мүмкүнчүлүктөрү бар. Бул жерде идея, салыштырмалуу аз программалоо аракети менен бир катар жаңы жана абдан пайдалуу функцияларды түзүүгө болот, алар дизайнга жетиштүү ырааттуулукту камсыз кылат, алар бири-бири менен жакшы координацияланат, жана андан тышкары, алар келечекте тилде оңой жана кеңири колдонула алат.

Бул ыкма, албетте, компромисс болуп саналат. Эгер чоңураак пакет ишке ашырылса, өтө күчтүү жана пайдалуу боло турган жаңы функция дүйнөсүн элестетүүгө болот. Эгер башка бардык нерсеге шайкеш келе турган жаңы функцияларды алуу зарылчылыгы келип чыкса, бирок сиз долбоорду иштеп чыгууга көп күч-аракет жумшоону каалабасаңыз, бул, тилекке каршы, сиздин долбоордун көлөмүнүн кыскарышына алып келиши мүмкүн. Wolfram өзгөчөлүктөр репозиторийинин идеясы долбоордун аныктоочу бөлүгүн функционалдуулук менен камсыз кылуу болуп саналат; бул ыкма программалоо долбоорунда жакшы ырааттуулукту сактоону жеңилдетип, күчтүү функцияларды кошот.

Функция репозиторийине ыңгайлаштырылган функцияларды кошууга жардам бериңиз

Биздин команда колдонуучулардын Wolfram репозиторийинин мүмкүнчүлүктөрүнө салым кошуусун жеңилдетүү үчүн көп эмгектенди. Иш тактада (учурдан эле 12.0), Сиз жөн гана ырааттуу түрдө негизги меню өтмөктөрү аркылуу өтсөңүз болот: Файл > Жаңы > RepositoryItem > Функция репозиторий пункту жана сиз "Аныктама дептер" (программалык түрдө жумушчу столдун ичинде. Сиз аналогдук функцияны да колдонсоңуз болот - Блокнот түзүү["FunctionResource"]):

Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы

Сиз аткарышыңыз керек болгон эки негизги кадам бар: биринчиден, иш жүзүндө функцияңыздын кодун жазыңыз, экинчиден, функцияңыз кандай иштеши керек экенин көрсөткөн документтерди жазыңыз.
Эмне кылуу керек экенин көрүү үчүн жогору жактагы "Үлгү ​​ачуу" баскычын басыңыз:

Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы

Негизи, сиз Wolfram тилиндеги орнотулган функцияга окшош нерсени түзүүгө аракет кылып жатасыз. Мындан тышкары, ал орнотулган функцияга караганда бир топ конкреттүү нерсени жасай алат. Ошол эле учурда, анын толуктугуна жана ишенимдүүлүгүнө карата күтүүлөр алда канча төмөн болот.
Функцияңызга Вольфрам тилинин функцияны атоо боюнча көрсөтмөлөрүнө ылайык ат беришиңиз керек. Мындан тышкары, тилдин орнотулган функцияларына окшош функцияңыз үчүн документтерди иштеп чыгышыңыз керек болот. Бул тууралуу кийинчерээк кененирээк айтып берем. Азырынча, аныктама дептер файлынын жогору жагындагы баскычтар сапында баскыч бар экенин байкаңыз "Стиль көрсөтмөлөрү"эмне кылуу керектигин түшүндүрүүчү , жана функцияңыздын документтерин форматтоо үчүн куралдар менен камсыз кылуучу Tools баскычы.
Баары туура толтурулганына жана даяр экениңизге ишенгениңизде, "Текшерүү" баскычын басыңыз. Азырынча бардык майда-чүйдөсүнө чейин түшүнө электигиңиз нормалдуу көрүнүш. Ошентип, "Текшерүү" функциясы автоматтык түрдө иштеп, көптөгөн стилди жана ырааттуулукту текшерет. Көбүнчө, ал дароо сизден оңдоолорду ырастап жана кабыл алууга түрткү берет (Мисалы: “Бул сап кош чекит менен бүтүшү керек” жана ал сизди кош чекитке киргизүүгө түрткү берет). Кээде ал сизден бир нерсе кошууну же өзгөртүүнү суранат. Биз "Текшерүү" баскычынын автоматтык иштөөсүнө ар дайым жаңы функцияларды кошуп турабыз, бирок, негизинен, анын максаты - сиз функциялар репозиторийине тапшырган нерселердин баары мүмкүн болушунча көп стилдик көрсөтмөлөргө тыкыр баш ийишин камсыз кылуу.

Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы

Ошентип, "Текшерүү" иштетилгенден кийин, "Алдын ала көрүү" функциясын колдоно аласыз. "Алдын ала көрүү" функцияңыз үчүн сиз аныктаган документация барагынын алдын ала көрүүсүн түзөт. Ошондой эле компьютериңизде түзүлгөн файлга же булут сактагычында жайгашкан файлга алдын ала кароо түзө аласыз. Эгер кандайдыр бир себептерден улам сиз алдын ала кароодо көргөн нерсеңизге канааттанбасаңыз, жөн гана артка кайтып, керектүү оңдоолорду киргизиңиз, андан кийин кайра көрүү баскычын чыкылдатыңыз.
Эми сиз функцияңызды репозиторийге түртүүгө даярсыз. Жайгаштыруу баскычы сизге төрт жолду берет:

Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы

Бул кадамда маанилүү нерсе, сиз өзүңүздүн функцияңызды Wolfram функциясынын репозиторийине тапшыра аласыз, ошондуктан ал каалаган адам үчүн жеткиликтүү болот. Ошол эле учурда, сиз өзүңүздүн функцияңызды чектелген сандагы колдонуучуларга да жайгаштырсаңыз болот. Мисалы, сиз компьютериңизде локалдык түрдө жайгаштырылган функцияны түзө аласыз, ал ошол компьютерди колдонгондо жеткиликтүү болот. Же өзүңүздүн баракчаңызга жайгаштырсаңыз болот булут эсеби, булутка туташканыңызда ал сизге жеткиликтүү болушу үчүн. Сиз ошондой эле булут эсебиңиз аркылуу өзгөчөлүктү жалпыга ачык жайгаштыра аласыз (жайласаңыз). Ал борбордук Wolfram мүмкүнчүлүктөр репозиторийинде болбойт, бирок сиз кимдир бирөөгө сиздин каттоо эсебиңизден функцияңызды алууга мүмкүндүк берген URL бере аласыз. (Келечекте биз ошондой эле биздин компаниянын борбордук репозиторийлерин колдойбуз.)

Демек, сиз чындыгында өзүңүздүн функцияңызды Wolfram функциясынын билим базасына тапшыргыңыз келет дейли. Бул үчүн, сиз репозиторийге "Тапшыруу" баскычын басыңыз. Ошентип, учурда эмне болуп жатат? Арызыңыз дароо биздин атайын кураторлор тобу тарабынан каралып, бекитилүүгө кезекке коюлат.

Колдонмоңуз жактыруу процессинен өткөн сайын (бул адатта бир нече күндү талап кылат), сиз анын статусу жана келечекте колдонуу боюнча сунуштарды аласыз. Бирок сиздин функцияңыз жактырылгандан кийин, ал дароо Wolfram Функциялар Репозиторийине жарыяланат жана каалагандар үчүн жеткиликтүү болот. (Жана бул пайда болот жаңы функциялардын жаңылык дайджесттери жана башкалар.)

Сактагычта эмне болушу керек?

Белгилей кетчү нерсе, биздин компания толуктук, ишенимдүүлүк жана жалпы сапат боюнча өтө жогорку стандарттарга ээ жана акыркы 6000+ жыл ичинде биз Wolfram тилине киргизген 30+ функциянын бардыгы жогорудагы талаптарга жооп берет. Вольфрам Функциялар Репозиторийинин максаты - мүмкүн болушунча көбүрөөк жеңилирээк функцияларды (башкача айтканда, жогорку аткаруу функцияларын) кошуу үчүн, Вольфрам тилинде буга чейин бар болгон бардык структураларды жана функцияларды колдонуу.

Албетте, Wolfram функциясынын репозиторийиндеги функциялар Вольфрам тилинин долбоорлоо принциптерине ылайык келиши керек - алар башка функциялар менен толук өз ара аракеттениши жана функциянын кантип туура иштеши керектиги жөнүндө колдонуучулардын күтүүлөрү. Бирок, функциялар бирдей толуктукта же ишенимдүүлүктө болууга тийиш эмес.

Вольфрам тилинин орнотулган функцияларында биз программалоо функцияларын мүмкүн болушунча жалпы кылуу үчүн көп аракет кылабыз. Айтор, Wolfram функция репозиторийинде кандайдыр бир өзгөчө, бирок пайдалуу ишти чечүүчү функциянын болушунун эч кандай жаман жери жок. Мисалы, функция SendMailFromNotebook файлдарды белгилүү бир форматта кабыл алып, белгилүү бир жол менен почта түзө алат. Полигоналдык Диаграмма белгилүү бир түстөр жана белгилөө менен гана диаграммаларды түзөт, ж.б.

Орнотулган функцияларга байланыштуу дагы бир жагдай, биздин компания бардык типтүү эмес учурларды чечүүгө, туура эмес киргизүүнү туура иштетүүгө жана башкаларга бардык күч-аракетин жумшайт. Функция репозиторийинде маселени чечүүнүн негизги учурларын чечүүчү жана калгандарынын баарын этибарга албаган атайын функциянын болушу толук нормалдуу көрүнүш.

Көрүнүп турган нерсе, көбүрөөк аткара турган жана аны жакшыраак аткарган функцияларга ээ болуу жакшы, бирок функция репозиторий үчүн оптималдаштыруу - Вольфрам тилинин орнотулган функцияларынан айырмаланып, көбүрөөк функциялар менен бириктирилген көбүрөөк функцияларга ээ болушу керек. ар бир конкреттүү функцияны ишке ашыруу процесстери.

Эми репозиторийдеги функцияларды тестирлөөнүн мисалын карап көрөлү. Мындай функциялар үчүн ырааттуулук күтүүлөрү, албетте, орнотулган тил функцияларына караганда алда канча төмөн. Бул, өзгөчө, функциялар API сыяктуу тышкы ресурстарга көз каранды болгон учурларда, текшерүү алгоритмдеринде автоматтык түрдө ишке ашкан ырааттуу сыноолорду дайыма жүргүзүү маанилүү. nb файлында сиз аныктамаларды (Кошумча маалымат бөлүмүндө) так көрсөтө аласыз жана киргизүү жана чыгаруу саптары же типтеги толук символдук объекттер менен аныкталган сандагы тесттерди белгилей аласыз. VerificationTest, сиз канчалык туура көрсөңүз. Мындан тышкары, система сиз берген документация мисалдарын текшерүү процессине айландыруу үчүн тынымсыз аракет кылып жатат (жана кээде бул абдан көп ресурсту талап кылышы мүмкүн, мисалы, натыйжасы кокус сандардан же күндүн убактысынан көз каранды болгон функция үчүн).

Натыйжада, функция репозиторийинде бир катар ишке ашыруу татаалдыктары болот. Кээ бирлери коддун бир эле сабы болот, башкалары миңдеген же он миңдеген саптарды камтышы мүмкүн, сыягы, көптөгөн жардамчы функцияларды колдонушат. Аныктоо үчүн өтө аз кодду талап кылган функцияны качан кошуу керек? Негизинен, эгерде функция бар болсо жакшы мнемоникалык аты, колдонуучулар аны коддун бир бөлүгүндө көрүшсө, оңой эле түшүнө турган болсо, анда аны мурунтан эле кошууга болот. Болбосо, кодду программаңызга колдонуу керек болгон сайын кайра кошуп койгонуңуз жакшы.

Функция репозиторийинин негизги максаты (аты айтып тургандай) тилге жаңы функцияларды киргизүү. Эгер сиз жаңы маалыматтарды кошууну кааласаңыз же жаңы объекттер, колдонуу Wolfram маалыматтар репозиторий. Бирок сиз эсептөөлөрүңүз үчүн объекттердин жаңы түрлөрүн киргизгиңиз келсечи?

Чынында эки жолу бар. Сиз функция репозиторийиндеги жаңы функцияларда колдонула турган жаңы объект түрүн киргизгиңиз келиши мүмкүн. Жана бул учурда, сиз ар дайым анын символикалык көрүнүшүн жазып, аны функция репозиторийине функцияларды киргизүүдө же чыгарууда колдоно аласыз.

Бирок, эгер сиз объектти чагылдырып, андан кийин Вольфрам тилиндеги функциялар аркылуу аны менен иштөөнү кааласаңызчы? Wolfram тили ар дайым бул үчүн жеңил механизмге ээ болгон UpValues. Кээ бир чектөөлөр менен (өзгөчө функциялар үчүн алардын аргументтерине баа бере албайт), функциянын репозиторийси жөн гана функцияны көрсөтүүгө жана анын маанилерин аныктоого мүмкүндүк берет. (Вольфрам тили боюнча толугу менен интеграцияланган жаңы негизги дизайнды түзүүдө ырааттуулукту күтүүнү көтөрүү жалпысынан долбоордун баасын жогорулатуу менен жетишүүгө мүмкүн болбогон абдан маанилүү процедура жана биздин компания долбоорлордун бир бөлүгү катары жасай турган нерсе. тилди узак мөөнөттүү өнүктүрүү үчүн бул милдет репозиторийди өнүктүрүүнүн алкагында коюлган максат эмес).

Демек, функция репозиторийиндеги функция кодунда эмне болушу мүмкүн? Баары Wolfram тилине курулган, албетте (жок дегенде, эгерде ал билдирбесе коркунуч үчүн коопсуздук жана программанын өзүнүн аткаруусу, эсептөө чөйрөсү катары), ошондой эле функция репозиторийинен каалаган функция. Бирок, башка функциялар бар: функция репозиторийиндеги функция API же ичинде чакыра алат Wolfram Cloudже башка булактан. Албетте, буга байланыштуу кээ бир тобокелдиктер бар. API өзгөрбөй турганына кепилдик жок болгондуктан, функциялар дүкөнүндөгү функция иштебей калат. Ушул сыяктуу маселелерди аныктоого жардам берүү үчүн документация бетинде (Талаптар бөлүмүндө) орнотулган Wolfram тилинин функционалдуулугуна гана таянган бардык функциялар үчүн эскертүү бар. (Албетте, чыныгы маалыматтарга келгенде, бул функцияда да көйгөйлөр болушу мүмкүн - анткени чыныгы дүйнөдөгү маалыматтар тынымсыз өзгөрүп турат, ал тургай кээде анын аныктамалары жана түзүмү өзгөрөт.)

Wolfram өзгөчөлүктөрү репозиторийинин бардык коду Вольфрамда жазылышы керекпи? Албетте, тышкы API ичиндеги код Wolfram тилинде жазылбашы керек, ал тил кодун да түзбөйт. Чынында, эгер сиз дээрлик бардык тышкы тилде же китепканада функцияны тапсаңыз, Wolfram функциясынын репозиторийинде аны колдонууга мүмкүндүк берген оромо түзө аласыз. (Көбүнчө бул үчүн сиз орнотулган функцияларды колдонушуңуз керек ExternalEvaluate же ExternalFunction Вольфрам тилинин кодунда.)

Анда муну кылуунун эмне кереги бар? Негизи, бул сиз Wolfram Language интегралдык тутумун жана анын бирдиктүү программалык мүмкүнчүлүктөрүн колдонууга мүмкүндүк берет. Эгерде сиз базалык ишке ашырууну тышкы китепканадан же тилден алсаңыз, анда Wolfram тилинин бай символикалык түзүмүн колдонуп, колдонуучуларга буга чейин ишке ашырылган каалаган функцияны оңой колдонууга мүмкүндүк берген ыңгайлуу жогорку деңгээлдеги функцияны түзө аласыз. Жок дегенде, бул идеалдуу дүйнөдө мүмкүн болушу керек, ал жерде жүктөө китепканаларынын бардык курулуш блоктору ж.б. бар, бул учурда алар Вольфрам тили тарабынан автоматтык түрдө иштетилет. (Иш жүзүндө көйгөйлөр болушу мүмкүн экенин белгилей кетүү керек тышкы тилдерди орнотуу белгилүү бир компьютер тутуму жана булуттагы сактагыч кошумча коопсуздук маселелерин жаратышы мүмкүн).

Баса, типтүү тышкы китепканаларды биринчи жолу карап чыкканда, алар көбүнчө бир нече функцияларды камтуу үчүн өтө татаалдай сезилет, бирок көп учурларда татаалдыктын көбү китепкана үчүн зарыл болгон инфраструктураны жана бардык функцияларды түзүүдөн келип чыгат. аны колдо. Бирок, Wolfram тилин колдонгондо, инфраструктура адатта пакеттерге курулган, ошондуктан бул колдоо функцияларынын бардыгын майда-чүйдөсүнө чейин ачып берүүнүн кереги жок, бирок китепканада "эң жогорку" колдонмого тиешелүү функциялар үчүн гана функцияларды түзүңүз. .

Билим базасынын "экосистемасы"

Эгер сиз үзгүлтүксүз колдонгон функцияларды жазган болсоңуз, аларды Вольфрам Функция Репозиторийине тапшырыңыз! Эгер мындан дагы бир нерсе чыкпаса (тилди өнүктүрүү), анда дагы жеке колдонуу үчүн функцияларды колдонуу сизге бир топ ыңгайлуу болот. Бирок, эгер сиз функцияларды үзгүлтүксүз колдонсоңуз, балким, башка колдонуучулар да аларды пайдалуу деп эсептешибиз логикалык.

Албетте, сиз өзүңүздүн функцияларыңызды бөлүшө албаган же каалабаган кырдаалга туш болушуңуз мүмкүн же жеке маалымат ресурстарына кирүү мүмкүнчүлүгүнө ээ болгон учурда. Мындай учурларда да, сиз жөн гана өз булут эсебиңизге функцияларды орното аласыз, укуктарын көрсөтүү аларга жетүү. (Эгер сиздин уюм бар болсо Wolfram Enterprise жеке булут, анда ал жакында өзүнүн жеке мүмкүнчүлүктөр репозиторийин жайгаштыра алат, аны сиздин уюмуңуздан башкара аласыз жана көрүүлөрдү үчүнчү тараптын колдонуучулары көрүүгө мажбурлоо же көрбөөнү коюуга болот.)

Wolfram функция репозиторийине тапшырган функциялар кемчиликсиз болушу шарт эмес; алар жөн гана пайдалуу болушу керек. Бул Unixтин классикалык документтериндеги "Каталар" бөлүмүнө окшош - "Аныктамалар бөлүмүндө" "Автордун эскертүүлөрү" бөлүмү бар, анда сиз өзүңүзгө белгилүү болгон чектөөлөрдү, көйгөйлөрдү ж.б. сүрөттөй аласыз. Кошумча, сиз репозиторийге өзүңүздүн өзгөчөлүгүңүздү тапшырганыңызда, атайын кураторлор тобу окуй турган жазууларды кошо аласыз.

Функция жарыялангандан кийин, анын бетинде дайыма эки шилтеме болот: "Бул функция жөнүндө билдирүү жөнөтүңүз"Ал эми"Wolfram коомчулугунда талкуулоо" Эгерде сиз эскертмени тиркеп жатсаңыз (мисалы, каталар жөнүндө айтып бериңиз), сиз билдирүүңүздүн жана байланыш маалыматыңыздын функциянын автору менен бөлүшүлүшүн каалаган кутучаны белгилесеңиз болот.

Кээде сиз жөн гана Wolfram функция репозиторийиндеги функцияларды, мисалы, орнотулган функцияларды, алардын кодун карабай эле колдонгуңуз келет. Бирок, эгер сиз ичин карагыңыз келсе, анда ар дайым жогору жагында Блокнот баскычы бар. Аны чыкылдатсаңыз, сиз функция репозиторийине берилген баштапкы аныктама дептердин өзүңүздүн көчүрмөсүн аласыз. Кээде сиз жөн гана муктаждыктарыңыз үчүн мисал катары колдоно аласыз. Ошол эле учурда, сиз да бул функциянын өз модификациясын иштеп чыга аласыз. Сиз компьютериңиздеги репозиторийден же aphid булут сактоо эсебиңизден тапкан бул функцияларды жайгаштыргыңыз келиши мүмкүн, балким, аларды функциялык билимдер базасына, балким, баштапкы функциянын жакшыртылган, кеңейтилген версиясы катары тапшыргыңыз келет.

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

Иштелип чыккан функциялардын “версиясы” кандай иштейт деген суроону карап көрөлү. Учурда, сиз функция репозиторийинен функцияны колдонгондо, анын аныктамасы компьютериңизде (же булутту колдонуп жатсаңыз, булут эсебиңизде) биротоло сакталат. Функциянын жаңы версиясы жеткиликтүү болсо, аны кийинки жолу колдонгонуңузда бул тууралуу эскерткен билдирүү аласыз. Жана эгер сиз функцияны жаңы версияга жаңырткыңыз келсе, аны буйрукту колдонуп аткарсаңыз болот ResourceUpdate. ("Функция блогу" чындыгында версия боюнча көбүрөөк маалыматты сактайт жана биз муну келечекте колдонуучуларыбызга жеткиликтүү кылууну пландаштырып жатабыз.)

Wolfram Функциялар Репозиторийиндеги эң сонун нерселердин бири - каалаган Wolfram Language программасы, каалаган жерде анын функцияларын колдоно алат. Эгерде программа блокнотто пайда болсо, анда репозиторий функцияларын окууга оңой "функция экилик объекти" функциялары катары форматтоо ыңгайлуу (балким, тиешелүү версиялар топтому менен).

Функция репозиторийиндеги каалаган функцияга текстти колдонуу менен ар дайым кире аласыз ResourceFunction[...]. Жана бул, мисалы, Wolfram Engine үчүн түздөн-түз кодду же скрипттерди жазсаңыз, абдан ыңгайлуу IDE же текст коду редакторун колдонуу (өзгөчө белгилей кетүү керек, функция репозиторий менен толук шайкеш келет Иштеп чыгуучулар үчүн акысыз Wolfram Engine).

Бул кандай иштейт?

Wolfram репозиторийиндеги функциялардын ичинде дал ушул нерсени колдонууга болот ресурстук системалар сыяктуу негиздер биздин башка бардык репозиторийлер (маалыматтар дүкөнү, Нейрондук таза репозиторий, демо долбоорлордун жыйнагы башка бардык 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 Функциялар Репозиторийинде расмий ресурс өзгөчөлүгү үчүн кызгылт сары сөлөкөт бар Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы.

Демек, аныктоо блокнотундагы Кеңейтүү менюсун колдонгондо эмне болот? Биринчиден, ал блокноттогу бардык аныктамаларды алат жана алардан символикалык түзөт ResourceObject). (Эгер сиз текстке негизделген IDE же программаны колдонуп жатсаңыз, анда сиз да ачык түзө аласыз ResourceObject)

Сиздин компьютериңиздеги репозиторийден функцияны локалдык жайылтуу буйрукту колдонуу менен ишке ашырылат LocalCache катары сактоо үчүн ресурстук объект үчүн LocalObject файл тутумуңузда. Булут эсебине жайгаштыруу буйрукту колдонуу менен ишке ашырылат CloudDeploy ресурстук объект үчүн, жана коомдук булут жайылтуу болуп саналат CloudPublish. Бардык учурларда ResourceRegister ошондой эле ресурс функциясынын атын каттоо үчүн колдонулат, ошондуктан ResourceFunction["аты"] Бул иш алып барат.

Функция репозиторийине тапшыруу баскычын чыкылдатсаңыз, анын астында эмне болот ResourceSubmit ресурстук объектке чакырды. (Эгер сиз текст киргизүү интерфейсин колдонуп жатсаңыз, чала аласыз ResourceSubmit түздөн-түз.)

Демейки боюнча, тапшыруулар Wolfram ID'ңиз менен байланышкан ат менен жүргүзүлөт. Бирок, эгер сиз иштеп чыгуу тобунун же уюмдун атынан арыз берип жатсаңыз, анда мүмкүн өзүнчө жарыялоочунун идентификаторун коюу жана анын ордуна өз көз караштарыңыз менен өз ара аракеттенүү үчүн аны ат катары колдонуңуз.

Функцияларыңыздын кайсынысын болбосун функциялык билимдер базасына тапшырганыңыздан кийин, ал текшерүү үчүн кезекке коюлат. Эгерде сиз жооп катары комментарийлерди алсаңыз, алар адатта кошумча "комментарий уячалары" кошулган текст файлы түрүндө болот. Ар дайым баруу менен арызыңыздын абалын текшере аласыз ресурс системасынын мүчө порталы. Бирок сиздин функцияңыз бекитилгенден кийин, сизге (электрондук почта аркылуу) кабар берилет жана сиздин функцияңыз Wolfram мүмкүнчүлүктөр репозиторийине жайгаштырылат.

Жумушта кээ бир кылдаттыктар

Бир караганда, сиз жөн гана аныктама дептерлерин алып, аны сөзмө-сөз функция репозиторийине киргизе тургандай сезилиши мүмкүн, бирок чындыгында бул жерде бир топ кылдаттыктар бар - жана аларды иштетүү абдан татаал мета-программалоону, символикалык иштетүүнү талап кылат. функцияны аныктаган код катары жана Блокноттун өзү аныкталат. Мунун көбү ички, көшөгө артында болот, бирок, эгер сиз өзгөчөлүк билимдер базасына салым кошкуңуз келсе, анда түшүнүүгө арзырлык кээ бир кесепеттер болушу мүмкүн.

Биринчи дароо кылдаттык: Аныктоо блокнотту толтурганыңызда, сиз жөн гана бул сыяктуу ат менен бардык жерде өзүңүздүн функцияңызга кайрыла аласыз MyFunction, бул Вольфрам тилиндеги функциянын кадимки аталышына окшош, бирок функциянын репозиторий документтери үчүн бул алмаштырылган ResourceFunction["Менин функциясы"] бул функция менен иштөөдө колдонуучулар иш жүзүндө колдоно турган нерсе.

Экинчи кылдаттык: Аныктоо блокнотунан ресурс функциясын түзгөнүңүздө, функциянын аныктамасына катышкан бардык көз карандылыктар камтылууга жана ачык түрдө камтылууга тийиш. Бирок, аныктамалар модулдук бойдон калуу үчүн, баарын уникалдуу коюу керек аттар мейкиндиги. (Албетте, мунун баарын аткарган функциялар, функция репозиторийинде.)

Адатта, сиз бул аттар мейкиндигин конфигурациялоо үчүн колдонулган коддун изин эч качан көрбөйсүз. Бирок кандайдыр бир себептерден улам сиз функцияңыздын ичинде аткарылбаган символду чакырсаңыз, анда бул символ функциянын ички контекстинде экенин көрөсүз. Бирок, Definition Notepad иштеп жатканда, жок эле дегенде, функциянын өзүнө тиешелүү белги мыкты дисплей үчүн жөнгө салынуучу ички контекстте чийки мүнөзгө караганда функционалдык BLOB катары.

Функция репозиторий жаңы функцияларды аныктоо үчүн. Жана бул функциялардын варианттары болушу мүмкүн. Көп учурда бул параметрлер (мисалы, ыкма же ImageSize) орнотулган функциялар үчүн, ошондой эле орнотулган символдор мурунтан эле бар болгондор үчүн колдонулушу мүмкүн. Бирок кээде жаңы функция жаңы опцияларды талап кылышы мүмкүн. Модулдуулукту сактоо үчүн, бул параметрлер уникалдуу ички контекстте аныкталган символдор болушу керек (же бүтүндөй ресурстук функциялар, башкача айтканда, өздөрү). Жөнөкөйлүк үчүн, функция репозиторий сап аныктамаларындагы жаңы опцияларды аныктоого мүмкүндүк берет. Ал эми колдонуучунун ынгайлуулугу үчүн, бул аныктамалар (алар колдонулган деп ойлосок OptionValue и OptionsPattern) ошондой эле функцияларды колдонууда параметрлерди сап катары гана эмес, ошол эле аталыштагы глобалдык символдор катары да көрсөтүүгө болот.

Көпчүлүк функциялар жөн гана алар чакырылган сайын эмне кылышы керек болсо, ошону аткарышат, бирок кээ бир функциялар белгилүү бир сеанста иштей алардан мурун инициализацияланышы керек - жана бул маселени чечүү үчүн Аныктоо бөлүмүндө "Инициалдаштыруу" бөлүмү бар.

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

Өнүгүү перспективалары. Репозиторий чындап чоңойгондо эмне болушу керек?

Бүгүн биз Wolfram Функциялар Репозиторийин жаңыдан ишке киргизип жатабыз, бирок убакыттын өтүшү менен анын көлөмү жана функционалдуулугу кескин көбөйүшү мүмкүн деп күтөбүз, ал эми өнүгүүдө биз күткөн ар кандай көйгөйлөр пайда болушу мүмкүн.

Биринчи маселе функциялардын аталыштарына жана алардын уникалдуулугуна тиешелүү. Функциялардын репозиторийлери Вольфрам тилиндеги орнотулган функциялар сыяктуу эле, анын атын көрсөтүү менен каалаган функцияга шилтеме кыла ала тургандай кылып иштелип чыккан. Бирок бул сөзсүз түрдө функция аттары репозиторий боюнча глобалдык уникалдуу болушу керек дегенди билдирет, ошондуктан, мисалы, бир гана болушу мүмкүн. ResourceFunction["Менин FavoriteFunction"].

Бул башында чоң көйгөй сыяктуу сезилиши мүмкүн, бирок бул негизинен интернет домендери же социалдык медиа туткалары сыяктуу нерселерге окшош көйгөй экенин түшүнүү керек. Ал эми система жөн гана регистрге ээ болушу керек экендигинде - бул биздин компания Wolfram функциясынын билим базасы үчүн аткара турган ролдордун бири. (Репозиторийдин жеке версиялары үчүн алардын регистраторлору администраторлор болушу мүмкүн.) Албетте, Интернет доменин эч нерсеси жок эле каттаса болот, бирок функция репозиторийинде функциянын аталышы анын чыныгы аныктамасы болгондо гана катталышы мүмкүн. функция.

Вольфрам функциясынын билим базасын башкаруудагы биздин ролубуздун бир бөлүгү функция үчүн тандалган аталыш функциянын аныктамасында логикалык болушун жана ал Вольфрам тилинин атоо конвенцияларына ылайык келишин камсыз кылуу болуп саналат. Бизде Вольфрам тилинде орнотулган функцияларды атоо боюнча 30 жылдан ашык тажрыйбабыз бар жана биздин кураторлор тобу бул тажрыйбаны функция репозиторийине да алып келет. Албетте, ар дайым өзгөчөлүктөр бар. Мисалы, кандайдыр бир функциянын кыска аталышы жакшыраак сезилиши мүмкүн, бирок узунураак, конкреттүү ат менен "коргоо" жакшыраак, анткени келечекте окшош функциянын атын жасагысы келген адамга жолугуп калуу ыктымалдыгы азыраак. .

(Бул жерде белгилей кетүүчү нерсе, функцияларды чечмелөө үчүн жөн гана мүчө тегин кошуу күтүлгөн эффектке ээ болбойт. Анткени сиз ар дайым тег ыйгарууну талап кылмайынча, кандайдыр бир функция үчүн демейки тегди аныктап, ошондой эле автор тегдерин бөлүштүрүшүңүз керек болот. , бул дагы глобалдык координацияны талап кылат.)

Wolfram функцияларынын билим базасы өскөн сайын, пайда боло турган көйгөйлөрдүн бири функциялардын табылышы болуп саналат, алар үчүн система камсыз кылат. издөө функциясы (жана аныктама файлдары ачкыч сөздөрдү, ж.б. камтышы мүмкүн). Вольфрам тилиндеги орнотулган функциялар үчүн, функцияларды "жарнамалоого" жардам берүү үчүн документацияда ар кандай кайчылаш шилтемелер бар. Функция репозиторийиндеги функциялар орнотулган функцияларга шилтеме жасай алат. Ал эми башка жол жөнүндө эмне айтууга болот? Бул үчүн, биз орнотулган функциялар үчүн документация беттеринде репозиторий функцияларын көрсөтүү үчүн ар кандай дизайндар менен эксперимент жасайбыз.

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

Wolfram Function Repository: Wolfram тил кеңейтүүлөрү үчүн ачык кирүү платформасы

Wolfram функция репозиторийси туруктуу функция репозиторий катары конфигурацияланган, андагы каалаган функция ар дайым иштей берет. Албетте, функциялардын жаңы версиялары жеткиликтүү болушу мүмкүн жана биз кээ бир функциялар, албетте, убакыттын өтүшү менен эскирип калат деп күтөбүз. Функциялар программаларда колдонулса иштейт, бирок алардын документация барактары жаңы, өркүндөтүлгөн функцияларга шилтеме берет.

Wolfram Feature Repository жаңы функцияларды тез табууга жана Wolfram тилин колдонуунун жаңы жолдорун үйрөнүүгө жардам берүү үчүн иштелип чыккан. Функциялар репозиторийинде изилденген нерселердин кээ бирлери акыры Wolfram тилинин негизги бөлүктөрү болуп калат деп абдан оптимисттик маанайдабыз. Акыркы он жылдын ичинде бизде ушундай эле топтом бар алгач Wolfram |да киргизилген өзгөчөлүктөр Альфа. Жана бул тажрыйбадан алынган сабактардын бири, биз Wolfram тилине курулган бардык нерседе көңүл бурган сапаттын жана ырааттуулуктун стандарттарына жетишүү көп эмгекти талап кылат, бул көбүнчө идеяны ишке ашыруунун алгачкы аракетине караганда кыйыныраак. Ошондой болсо да, функциянын билим базасындагы функция келечектеги функция үчүн түшүнүктүн абдан пайдалуу далили катары кызмат кыла алат, ал акыры Wolfram тилине киргизилиши мүмкүн.

Бул жерде эң негизгиси функция репозиторийиндеги функция азыр ар бир колдонуучу үчүн жеткиликтүү болгон нерсе. Эне тилинин өзгөчөлүгү алда канча жакшыраак жана натыйжалуураак болушу мүмкүн, бирок функция репозиторийси колдонуучуларга бардык жаңы функцияларды дароо колдонууга мүмкүнчүлүк берет. Жана эң негизгиси, бул концепция ар кимге каалаган жаңы функцияларды кошууга мүмкүндүк берет.

Мурда Вольфрам тилинин тарыхында бул идея мурдагыдай жакшы иштемек эмес, бирок бул этапта тилге ушунчалык көп күч-аракет жумшалып, тилди долбоорлоо принциптерин ушунчалык терең түшүнгөндүктөн, азыр ал абдан жакшы көрүнөт. колдонуучулардын кеңири чөйрөсү үчүн аларды пайдалуу кылуу үчүн дизайн ырааттуулугун сактай турган функцияларды кошууга мүмкүн.

Wolfram Language колдонуучуларынын коомчулугунда укмуштуудай талант (?) руху бар. (Албетте, бул жамаат ар түрдүү тармактарда көптөгөн алдыңкы R&D адамдарды камтыйт.) Мен Wolfram Feature Repository бул талант рухун ачуу жана жайылтуу үчүн эффективдүү платформаны камсыз кылат деп үмүттөнөм. Биз чогуу гана Вольфрам тилинин эсептөө парадигмасы колдонула турган аймакты кыйла кеңейте турган нерсени түзө алабыз.

30 жылдан ашык убакытта биз Вольфрам тили менен көп жолду басып өттүк. Эми чогуу, андан да ары кетели. Мен дүйнө жүзү боюнча бардык кадыр-барктуу Wolfram тилинин колдонуучуларын бул үчүн платформа катары функционалдык репозиторийди, ошондой эле Иштеп чыгуучулар үчүн Free Wolfram Engine сыяктуу жаңы программалык камсыздоо долбоорун колдонууга катуу чакырам.

Source: www.habr.com

Комментарий кошуу