Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Сайн уу, Хабр! Би та бүхний анхааралд Стивен Вольфрамын нийтлэлийн орчуулгыг толилуулж байна "Волфрамын функцийн агуулах: Вольфрамын хэлийг өргөжүүлэх нээлттэй платформыг эхлүүлэх".

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Вольфрам хэлний нийцтэй байдлын урьдчилсан нөхцөл

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

Wolfram Function Repository нь Вольфрам хэлний өвөрмөц шинж чанараараа зөвхөн програмчлалын хэл төдийгүй бүрэн хэмжээний тооцоолох хэл. Уламжлалт програмчлалын хэлэнд чухал ач холбогдолтой шинэ функцуудыг нэмэх нь ихэвчлэн хамтад нь ашиглах үед ажиллах эсвэл ажиллахгүй байж болох бүхэл бүтэн нэмэлт сангуудыг бий болгодог. Гэсэн хэдий ч Вольфрамын хэлээр Хэлний дотор маш их зүйл аль хэдийн баригдсан байдагБүхэл бүтэн хэлний нэгдмэл бүтцэд нэн даруй нэгтгэгдсэн шинэ функцүүдийг нэмэх замаар түүний функцийг мэдэгдэхүйц өргөжүүлэх боломжтой.

Жишээ нь, Wolfram функцийн репозитор аль хэдийн агуулж байна 532 шинэ функц 26 сэдэвчилсэн ангилалд хуваагдсан:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Үүний нэгэн адил илүү 6000 стандарт функц, Wolfram хэл дээр бүтээгдсэн бөгөөд хадгалах сангийн функц бүр нь тэдгээрийн нарийвчилсан тайлбар, ажлын жишээ бүхий баримт бичгийн хуудастай байна.

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Хуудас руу орохын тулд дээрх объектыг (BLOB функц) хуулж, оролтын мөрөнд буулгаж, функцийг ажиллуулна уу - энэ нь аль хэдийн Вольфрам хэл дээр суурилагдсан бөгөөд анхдагч байдлаар дэмжигддэг. хувилбар 12.0:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Боловсруулах үед энд тэмдэглэх нь зүйтэй LogoQRCcode Жишээлбэл, та "зураг боловсруулах номын сан" үүсгэх шаардлагагүй - бид Wolfram хэл дээр тууштай, нарийн алгоритмын аргыг аль хэдийн хэрэгжүүлсэн. зураг боловсруулах, янз бүрийн график хэлний функцээр нэн даруй боловсруулж болно:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Дэмжлэгээр тэгнэ гэж найдаж байна гайхалтай, авъяаслаг нийгэмлэг, сүүлийн хэдэн арван жилийн хугацаанд өсөн нэмэгдэж, өргөжиж байгаа (Вольфрамын хэл дээр үндэслэсэн). Wolfram функцийн агуулах нь ойрын ирээдүйд хэл дээрх функцүүдийн хүрээг (шинжлэх ухаан, технологийн янз бүрийн салбарт мэргэшсэн, ач холбогдолтой байж магадгүй) мэдэгдэхүйц өргөжүүлэх боломжийг олгоно. Тиймээс хэлний агуулгыг (түүний суулгасан функцууд) хоёуланг нь ашиглах боломжтой болно хөгжлийн зарчим, тэдгээр нь хэл дээр тулгуурлан хэрэгждэг. (Вольфрамын хэлэнд аль хэдийн илүү байдаг гэдгийг энд тэмдэглэх нь зүйтэй 30 жилийн хөгжлийн түүх, тогтвортой өсөлт).
Хадгалах сангийн функцууд нь Wolfram хэл дээр бичигдсэн жижиг эсвэл том кодыг агуулж болно. Жишээлбэл, эдгээр нь дуудлага байж болно гадаад API болон үйлчилгээнүүд эсвэл бусад хэл дээрх гадаад номын сангууд. Энэхүү аргын өвөрмөц онцлог нь та хэрэглэгчийн түвшний функцийг өрөмдөж үзэхэд ямар ч зөрчил гарахгүй, учир нь уг арга нь Вольфрам хэлний тууштай бүтэц дээр суурилагдсан бөгөөд функц бүр автоматаар зөв ажиллах болно. зорилготой. Тэр хийх ёстой.
Wolfram Feature Repository-ийн бүрхүүл, програмчлалын бүтэц нь хүн бүр нийтлэг үйл хэрэгт хамгийн энгийн бөгөөд тохиромжтой байдлаар хувь нэмрээ оруулах боломжтой байхаар бүтээгдсэн. notepad текст файлыг бөглөх замаар (nb өргөтгөлтэй) WL. Суурилуулсан автомат функцууд нь репозиторд нэмэгдсэн шинэ функцуудыг хэлтэй нэгтгэх эсэхийг шалгах боломжийг олгодог. Манай компани шинэ функцүүдийн маш нарийн төвөгтэй байдлаас илүүтэйгээр өөрсдийн функцийг хэл рүү нэгтгэж чадах өргөн хүрээний хэрэглэгчдэд бооцоо тавьж байгаа бөгөөд хянан шалгах үйл явц байгаа ч бид үүнтэй адил зүйлийг шаарддаггүй. дизайны нарийн шинжилгээ эсвэл бидний ашигладаг үндсэн хэлэнд суулгасан функцуудыг илүү нарийн шалгахын оронд шинэ хэрэглэгчийн функцүүдийн бүрэн бүтэн байдал, найдвартай байдлын хатуу стандартууд.

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

Зардлыг бууруулахын зэрэгцээ үр ашгийг нэмэгдүүлэх

Интернэтээс өмнө ч гэсэн Вольфрам хэлний кодыг хуваалцах арга замууд байсан (бидний анхны томоохон төвлөрсөн төсөл Математикийн эх сурвалж, 1991 онд Mathematica-д зориулж CD-ROM гэх мэтээр бүтээгдсэн). Мэдээжийн хэрэг, Wolfram функцийн агуулах дээр суурилсан хэрэгжүүлэхэд санал болгож буй арга нь дээр дурдсан ажлуудыг хэрэгжүүлэх илүү хүчирхэг, найдвартай хэрэгсэл юм.

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

Функц бүрийн хэрэгжилтийн бүтцэд янз бүрийн тооцооллын процесс явагддаг. Функц нь тодорхой, жигд харагдах байдал, хэрэглэгчдэд харагдахуйц харагдахуйц байх шаардлагатай гэдгийг энд тэмдэглэх нь зүйтэй. Энэ хүрээнд Вольфрам хэлний суурилагдсан функцуудыг функцүүдийг хэрхэн зөв програмчлах тухай 6000 гаруй дараалсан жишээгээр толилуулж байна (эдгээр нь бидний шууд програмчлалын видеоҮүнд багтана стандарт программыг бий болгоход хэдэн зуун цаг зарцуулдаг). Энэ арга нь эцсийн дүндээ Вольфрамын функцийн агуулахыг сайн ажиллах чадвартай болгож байгаа зүйл бол Вольфрам хэлний бүтцийн шинж чанар бөгөөд хэлэнд аль хэдийн суулгасан олон тооны нэмэлт, олон төрлийн номын сангууд юм. Жишээлбэл, хэрэв танд зураг боловсруулах функц байгаа бол, эсвэл сийрэг массивболон молекулын бүтэцТэгээд газарзүйн өгөгдөл эсвэл зарим нь - тэдгээрийн тууштай бэлгэдлийн дүрслэл нь хэл дээр аль хэдийн байдаг бөгөөд үүний ачаар таны функц тэр даруй хэл дээрх бусад функцуудтай нийцдэг.

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

Дээрх бүх жишээнүүд нь үндсэн шинж чанартай байдаг - төсөлд цуглуулсан объект, функцууд нь үйл явцын бүтэц, хуваарилалтын маш өндөр түвшинд байдаг. Мэдээжийн хэрэг, демо, мэдрэлийн сүлжээ эсвэл өөр зүйл гэж юу болох бүтцийн нарийн ширийн зүйл нь маш өөр байж болох ч одоогийн агуулахын үндсэн бүтэц үргэлж ижил хэвээр байна. Эрхэм хэрэглэгч та Вольфрам хэлэнд нэмэлт өргөтгөл оруулсан ийм агуулахыг бий болгох талаар ямар бодолтой байна вэ? Wolfram хэл нь маш уян хатан байхаар бүтээгдсэн тул ямар ч аргаар өргөтгөж, өөрчлөх боломжтой. Энэ нөхцөл байдал нь Вольфрам хэл дээр янз бүрийн том хэмжээний програм хангамжийн төслүүдийг хурдан бүтээх чадварт маш чухал юм. Хэлний уян хатан байдал нэмэгдэхийн хэрээр ийм хэлээр хэрэгжсэн төслийн өртөг нь зайлшгүй өсөх болно гэдгийг энд тэмдэглэх хэрэгтэй. Энэ нь хэрэглэгч ийм хэлийг хэдий чинээ их ашиглах тусам илүү зориулалтын функцийг хүлээн авдагтай холбоотой боловч энэ арга нь програмын модулиудын тууштай байдлыг хангах боломжгүй сөрөг талуудтай байж болохыг мартаж болохгүй.

Уламжлалт програмчлалын хэл дээрх номын сангуудтай холбоотой нийтлэг асуудал байдаг - хэрэв та нэг номын сан ашиглавал код зөв ажиллах болно, гэхдээ хэрэв та олон номын сан ашиглахыг оролдвол тэдгээр нь хоорондоо зөв харьцах баталгаа байхгүй. . Түүнчлэн, уламжлалт програмчлалын хэлүүдэд - бүрэн хэмжээний тооцоолох хэлээс ялгаатай нь тэдгээрийн үндсэн бүтцээс өөр ямар ч функц эсвэл өгөгдлийн төрлүүдийн хувьд тууштай суурилуулсан дүрслэл байгаа эсэхийг баталгаажуулах арга байхгүй. Гэвч үнэн хэрэгтээ асуудал нь эхлээд харахад илүү том юм: хэрэв хүн том хэмжээний босоо функцийг барьж байгаа бол Вольфрам хэл рүү оруулсан төвлөрсөн төслийн програмчлалын асар их зардалгүйгээр үүнийг хийх боломжгүй юм. тууштай байдалд хүрэх. Тиймээс бүх програм хангамжийн модулиуд үргэлж зөв хамтран ажиллах нь чухал юм.

Тиймээс Wolfram функцийн агуулахын цаад санаа нь уялдаатай модулиуд болгон хөгжүүлэхэд хялбар бие даасан функцээр дамжуулан харьцангуй жижиг кодын хэсэг болгон хэлэнд өргөтгөл нэмэх замаар дээр дурдсан асуудлаас зайлсхийх явдал юм. Үүнийг хэлэхэд, бие даасан функцуудыг ашиглахад хялбар болгох боломжгүй програмчлалын функцууд байдаг (мөн манай компани том хэмжээний програм хангамжийн багцуудыг хэрэгжүүлэхэд туслах оновчтой програмчлалын алгоритмыг ойрын ирээдүйд гаргахаар төлөвлөж байна). Гэсэн хэдий ч, Wolfram хэл дээр аль хэдийн суулгасан функцууд дээр үндэслэн бие даасан функц дээр үндэслэн хэрэгждэг програмчлалын олон боломжууд байдаг. Энд байгаа санаа бол програмчлалын харьцангуй бага хүчин чармайлтаар дизайны хангалттай уялдаа холбоог хангах хэд хэдэн шинэ, маш ашигтай функцуудыг бий болгох боломжтой бөгөөд тэдгээр нь хоорондоо сайн уялдаатай байх болно, мөн үүнээс гадна тэд ирээдүйд хэлэнд хялбар, өргөн хэрэглэгдэх боломжтой болно.

Энэ арга нь мэдээж буулт хийх явдал юм. Хэрэв илүү том багцыг хэрэгжүүлбэл маш хүчирхэг, хэрэгцээтэй функцүүдийн цоо шинэ ертөнцийг төсөөлж болно. Хэрэв бусад бүх зүйлд нийцэх шинэ функцийг авах шаардлагатай байгаа ч та төслийг боловсруулахад маш их хүчин чармайлт гаргах хүсэлгүй байгаа бол харамсалтай нь энэ нь таны төслийн цар хүрээг багасгахад хүргэж болзошгүй юм. Wolfram функцын агуулахын цаад санаа нь төслийн тодорхой хэсгийг функцээр хангах явдал бөгөөд энэ арга нь програмчлалын төслийн тогтвортой байдлыг хадгалахад илүү хялбар болгохын зэрэгцээ хүчирхэг функцийг нэмэх болно.

Функцийн репозиторт тусгай функц нэмэхэд тусална уу

Манай баг хэрэглэгчдэд Вольфрам репозиторын боломжуудад хувь нэмрээ оруулахад хялбар болгохын тулд шаргуу ажилласан. Ширээний компьютер дээр (аль хэдийн орсон хувилбар 12.0), Та зүгээр л үндсэн цэсийн табуудыг дараалан үзэх боломжтой: File > New > RepositoryItem > Function Repository Item, та авах болно "Тодорхойлолт дэвтэр" (ажлын ширээний доторх программ ёсоор. Та мөн аналог функцийг ашиглаж болно - Тэмдэглэлийн дэвтэр үүсгэх["Function Resource"]):

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Та хийх ёстой хоёр үндсэн алхам байна: нэгдүгээрт, өөрийн функцийнхээ кодыг бичих, хоёрдугаарт, таны функц хэрхэн ажиллах ёстойг харуулсан баримт бичгийг бичих.
Та хийх ёстой зүйлсийнхээ жишээг харахын тулд дээд талд байгаа "Дээжийг нээх" товчийг дарна уу:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Үндсэндээ та Вольфрам хэл дээр суулгасан функцтэй төстэй зүйлийг бүтээхийг оролдож байна. Үүнээс гадна энэ нь суулгасан функцээс илүү тодорхой зүйлийг хийж чадна. Үүний зэрэгцээ түүний бүрэн бүтэн байдал, найдвартай байдлын талаархи хүлээлт хамаагүй бага байх болно.
Та өөрийн функцэд Вольфрам хэлний функцийг нэрлэх зааварчилгааны дагуу нэр өгөх хэрэгтэй. Нэмж дурдахад, та хэлний суулгасан функцтэй адил функцийнхээ баримт бичгийг боловсруулах шаардлагатай болно. Би энэ талаар дараа дэлгэрэнгүй ярих болно. Одоохондоо тодорхойлолтын дэвтэрийн файлын дээд талд байгаа товчлууруудын эгнээнд товчлуур байгааг анзаараарай "Загварын заавар", юу хийх ёстойг тайлбарлах ба Tools товчлуур нь функцийн баримт бичгийг форматлах хэрэгслээр хангана.
Бүх зүйл зөв бөглөгдсөн, бэлэн болсон гэдэгт итгэлтэй байвал "Шалгах" товчийг дарна уу. Та бүх нарийн ширийн зүйлийг хараахан олж амжаагүй байгаа нь хэвийн үзэгдэл юм. Тиймээс "Шалгах" функц автоматаар ажиллаж, маш олон загвар, тууштай байдлыг шалгах болно. Ихэнхдээ энэ нь таныг залруулгыг баталгаажуулж, зөвшөөрөхийг нэн даруй шаардах болно (Жишээ нь: "Энэ мөр нь хоёр цэгээр төгсөх ёстой" гэсэн бөгөөд энэ нь таныг хоёр цэг оруулахыг сануулдаг). Заримдаа тэр чамаас ямар нэг зүйл нэмж эсвэл өөрчлөхийг хүсэх болно. Бид Шалгах товчлуурын автомат функцэд шинэ боломжуудыг байнга нэмж байх болно, гэхдээ үндсэндээ түүний зорилго нь таны функцын агуулах руу илгээсэн бүх зүйл аль болох олон загварын удирдамжийг дагаж мөрдөх явдал юм.

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Тиймээс, "Шалгах" -ыг ажиллуулсны дараа та "Урьдчилан харах" -ыг ашиглаж болно. "Урьдчилан харах" нь таны функцэд зориулж тодорхойлсон баримт бичгийн хуудсыг урьдчилан харах боломжийг олгоно. Мөн та өөрийн компьютер дээр үүсгэсэн файл эсвэл үүлэн санд байрлах файлыг урьдчилан харах боломжтой. Хэрэв ямар нэг шалтгааны улмаас та урьдчилж үзсэн зүйлдээ сэтгэл хангалуун бус байвал зүгээр л буцаж очоод шаардлагатай засваруудыг хийж, "Урьдчилан харах" товчийг дахин дарна уу.
Одоо та функцээ репозитор руу оруулахад бэлэн боллоо. Байршуулах товч нь танд дөрвөн сонголтыг өгнө:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Энэ алхамын чухал зүйл бол та өөрийн функцийг Wolfram функцийн репозитор руу оруулах боломжтой бөгөөд ингэснээр хэн ч ашиглах боломжтой болно. Үүний зэрэгцээ та өөрийн функцийг хязгаарлагдмал тооны хэрэглэгчдэд зориулж байрлуулж болно. Жишээлбэл, та тухайн компьютерийг ашиглах үед ашиглах боломжтой байхын тулд компьютер дээрээ дотоодод байршуулсан функцийг үүсгэж болно. Эсвэл та үүнийг өөрийн хуудсанд нийтэлж болно үүл данс, ингэснээр таныг үүлэн сүлжээнд холбогдсон үед ашиглах боломжтой болно. Та мөн үүлэн дансаараа дамжуулан уг функцийг олон нийтэд байршуулах (байршуулах) боломжтой. Энэ нь Wolfram функцийн төв хадгалах санд байхгүй, гэхдээ та хэн нэгэнд таны акаунтаас таны функцийг авах боломжийг олгох URL-г өгөх боломжтой. (Цаашид бид мөн компанийхаа хэмжээнд төвлөрсөн агуулахуудыг дэмжих болно.)

Тиймээс та өөрийн функцийг Вольфрам функцын мэдээллийн санд оруулахыг хүсч байна гэж бодъё. Үүнийг хийхийн тулд та репозитор руу "Илгээх" товчийг дарна уу. Тэгвэл яг одоо юу болоод байна вэ? Таны өргөдлийг манай тусгай кураторуудын баг хянаж, батлахаар нэн даруй дараалалд байна.

Таны өргөдлийг батлах үйл явц (ихэвчлэн хэд хоног шаардагдана) ахих тусам та түүний статусын талаарх мэдээлэл болон цаашид ашиглах зөвлөмжийг хүлээн авах болно. Гэхдээ таны онцлогийг зөвшөөрсний дараа тэр даруй Wolfram Feature Repository-д нийтлэгдэх бөгөөд хэн ч ашиглах боломжтой болно. (Мөн энэ дотор гарч ирнэ шинэ боломжуудын мэдээний тойм гэх мэт)

Хадгалахад юу байх ёстой вэ?

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

Мэдээжийн хэрэг, Wolfram функцийн агуулах дахь функцууд нь Wolfram хэлний дизайны зарчимд нийцсэн байх ёстой бөгөөд ингэснээр тэдгээр нь бусад функцуудтай бүрэн харилцаж, функц хэрхэн зөв ажиллах ёстойг хэрэглэгчдийн хүлээлттэй уялдуулах болно. Гэсэн хэдий ч функцууд нь ижил бүрэн бүтэн эсвэл найдвартай байх албагүй.

Вольфрам хэлний суулгасан функцүүдэд бид програмчлалын функцийг аль болох ерөнхий болгохын тулд шаргуу ажилладаг. Үүнийг хэлэхэд, Wolfram функцын репозиторт маш тодорхой боловч хэрэгтэй тохиолдлуудыг зохицуулдаг функц байх нь буруу зүйл биш юм. Жишээлбэл, функц SendMailFromNotebook файлуудыг нэг форматаар хүлээн авч, тодорхой нэг аргаар шуудан үүсгэх боломжтой. Олон өнцөгт диаграм зөвхөн тодорхой өнгө, шошготой графикуудыг үүсгэдэг.

Суурилуулсан функцуудтай холбоотой өөр нэг зүйл бол манай компани бүх хэвийн бус тохиолдлуудыг шийдвэрлэх, буруу оролтыг зөв зохицуулах гэх мэт бүх хүчин чармайлтаа гаргадаг явдал юм. Функцийн агуулахад асуудлыг шийдвэрлэх үндсэн тохиолдлуудыг зохицуулдаг, бусад бүх зүйлийг үл тоомсорлодог тусгай функц байх нь хэвийн үзэгдэл юм.

Тодорхой зүйл бол илүү ихийг гүйцэтгэдэг, илүү сайн хийдэг функцуудтай байх нь илүү дээр юм, гэхдээ функцийн агуулахын оновчлол нь Вольфрам хэлний суулгасан функцээс ялгаатай нь илүү олон функцтэй байх ёстой. тодорхой функц бүрийн хэрэгжилтийн үйл явц.

Одоо репозитор дахь функцуудыг шалгах жишээг харцгаая. Ийм функцүүдийн тууштай байдлын хүлээлт нь угсарсан хэлний функцүүдээс хамаагүй бага байдаг. Энэ нь функцууд нь API гэх мэт гадаад эх сурвалжаас хамаардаг тохиолдолд үнэн зөв байдаг тул баталгаажуулалтын алгоритм дотор автоматаар явагддаг тууштай туршилтуудыг байнга хийх нь чухал юм. nb файлд та тодорхой тодорхойлолтуудыг (Нэмэлт мэдээлэл хэсэгт) зааж өгч, оролт, гаралтын мөрүүд эсвэл төрлийн бүрэн тэмдэгтийн объектуудаар тодорхойлсон олон тестийг зааж өгч болно. Баталгаажуулах тест, таны хүссэн хэмжээгээр. Нэмж дурдахад, систем нь таны өгсөн баримт бичгийн жишээг баталгаажуулах процесс болгон хувиргахыг байнга хичээдэг (мөн заримдаа энэ нь маш их нөөц шаарддаг, жишээлбэл, үр дүн нь санамсаргүй тоо эсвэл өдрийн цагаар хамаардаг функцийн хувьд).

Үүний үр дүнд функцын агуулах нь хэрэгжүүлэх хэд хэдэн хүндрэлтэй байх болно. Зарим нь зөвхөн нэг мөр код байх ба зарим нь мянга, арван мянган мөрийг агуулж болох бөгөөд олон туслах функцийг ашиглах магадлалтай. Тодорхойлоход маш бага код шаарддаг функцийг хэзээ нэмэх нь зүйтэй вэ? Үндсэндээ хэрэв функц байгаа бол сайн дурсамжийн нэр, хэрэв хэрэглэгчид үүнийг кодоор харвал амархан ойлгох байсан бол үүнийг аль хэдийн нэмж болно. Үгүй бол програмаа ашиглах болгондоо кодыг дахин хавсаргах нь дээр байх.

Функцийн агуулахын гол зорилго (түүний нэрээр) нь хэлэнд шинэ боломжуудыг нэвтрүүлэх явдал юм. Хэрэв та шинэ өгөгдөл нэмэхийг хүсвэл эсвэл шинэ аж ахуйн нэгжүүд, ашиглах Wolfram мэдээллийн сан. Гэхдээ та тооцоололдоо шинэ төрлийн объектуудыг нэвтрүүлэхийг хүсвэл яах вэ?

Үнэндээ хоёр арга бий. Та функцийн репозитор дахь шинэ функцүүдэд ашиглагдах шинэ объектын төрлийг танилцуулахыг хүсч болно. Мөн энэ тохиолдолд та үргэлж түүний бэлгэдлийн дүрслэлийг бичиж, функцийн агуулахад функц оруулах эсвэл гаргахдаа ашиглаж болно.

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

Тэгэхээр, функцийн агуулах дахь функцийн кодонд юу байж болох вэ? Бүх зүйлийг Вольфрамын хэлэнд суулгасанМэдээжийн хэрэг (ядаж л төлөөлөхгүй бол). аюул занал нь аюулгүй байдал болон програмын гүйцэтгэл, тооцоолох орчин) мөн функцийн агуулахаас ямар нэгэн функц. Гэсэн хэдий ч, өөр функцууд байдаг: функцийн агуулах дахь функц нь API эсвэл in дуудаж болно Вольфрам Үүл, эсвэл өөр эх сурвалжаас. Мэдээж үүнтэй холбоотой эрсдэлүүд бий. API өөрчлөгдөхгүй гэсэн баталгаа байхгүй тул функцийн дэлгүүрийн функц ажиллахаа болино. Иймэрхүү асуудлуудыг тодорхойлоход туслах үүднээс баримт бичгийн хуудсан дээр (Шаардлага хэсэгт) зөвхөн Вольфрам хэлний суулгасан функцээс илүү олон функцэд хамаарах тэмдэглэл байдаг. (Мэдээжийн хэрэг, бодит өгөгдлийн тухай ярихад энэ функцэд ч асуудал гарч болзошгүй - учир нь бодит ертөнцийн өгөгдөл байнга өөрчлөгдөж байдаг бөгөөд заримдаа түүний тодорхойлолт, бүтэц өөрчлөгддөг.)

Wolfram функцийн агуулахын бүх кодыг Wolfram дээр бичих ёстой юу? Мэдээжийн хэрэг, гадаад API доторх кодыг Wolfram хэлээр бичих ёсгүй бөгөөд энэ нь хэлний кодыг ч хийдэггүй. Үнэн хэрэгтээ, хэрэв та бараг ямар ч гадаад хэл эсвэл номын сангаас функц олдвол Wolfram функцийн агуулахад ашиглах боломжийг олгодог боодол үүсгэж болно. (Ихэвчлэн та үүнд суулгасан функцуудыг ашиглах хэрэгтэй Гадаад үнэлгээ буюу Гадаад функц Вольфрам хэлний кодоор.)

Тэгэхээр үүнийг хийх нь ямар учиртай юм бэ? Үндсэндээ энэ нь танд Wolfram Language-ийн нэгдсэн систем болон түүний бүхэл бүтэн програм хангамжийн чадавхийг ашиглах боломжийг олгоно. Хэрэв та гадаад номын сан эсвэл хэлнээс үндсэн хэрэгжилтийг олж авбал Волфрам хэлний баялаг бэлгэдлийн бүтцийг ашиглан хэрэглэгчдэд аль хэдийн хэрэгжүүлсэн функцийг хялбархан ашиглах боломжийг олгодог дээд түвшний тохиромжтой функцийг үүсгэж болно. Наад зах нь, ачаалах номын сан гэх мэт бүх барилгын блокууд байдаг, энэ тохиолдолд Вольфрамын хэлээр автоматаар зохицуулагддаг хамгийн тохиромжтой ертөнцөд үүнийг хэрэгжүүлэх боломжтой байх ёстой. (Практикт асуудал гарч болзошгүй гэдгийг тэмдэглэх нь зүйтэй гадаад хэлийг тохируулах тодорхой компьютерийн систем, үүл хадгалах нь аюулгүй байдлын нэмэлт асуудал үүсгэж болзошгүй).

Дашрамд хэлэхэд, та ердийн гадаад номын сангуудыг анх харахад зөвхөн цөөн хэдэн функцээр тайлбарлахад хэтэрхий төвөгтэй мэт санагддаг, гэхдээ ихэнх тохиолдолд номын санд шаардлагатай дэд бүтцийг бий болгох, номын санд шаардлагатай бүх функцийг бий болгохоос ихээхэн хүндрэл гардаг. дэмжээрэй. Гэсэн хэдий ч, Wolfram хэлийг ашиглах үед дэд бүтэц нь ихэвчлэн багцуудад суурилагдсан байдаг тул эдгээр бүх туслах функцийг нарийвчлан харуулах шаардлагагүй, зөвхөн номын сангийн "хамгийн дээд" програмын тусгай функцүүдэд зориулсан функцүүдийг бий болгодог. .

Мэдлэгийн сангийн "экосистем"

Хэрэв та байнга ашигладаг функцүүдээ бичсэн бол тэдгээрийг Wolfram Function Repository руу илгээнэ үү! Хэрэв үүнээс өөр зүйл гарахгүй бол (хэлний хөгжил) дараа нь хувийн хэрэгцээнд зориулж функцуудыг ашиглах нь танд илүү тохиромжтой байх болно. Гэсэн хэдий ч, хэрэв та функцуудыг тогтмол ашигладаг бол бусад хэрэглэгчид ч бас хэрэгтэй гэж үзэх нь логик юм.

Мэдээжийн хэрэг, та өөрийн чиг үүргээ хуваалцах боломжгүй эсвэл хүсэхгүй байгаа эсвэл хувийн мэдээллийн нөөцөд нэвтрэх эрх олж авах нөхцөл байдалд орж магадгүй юм. Ийм тохиолдолд ч гэсэн та зүгээр л өөрийн үүлэн дансанд функцуудыг байрлуулж болно. эрхийг тодорхойлох тэдэнд хандах. (Хэрэв танай байгууллагад байгаа бол Wolfram Enterprise хувийн үүл, дараа нь энэ нь удахгүй өөрийн хувийн функцын агуулахыг байршуулах боломжтой болох бөгөөд үүнийг танай байгууллага дотроос удирдаж, гуравдагч этгээдийн хэрэглэгчдэд үзэхийг албадах эсэхийг тохируулах боломжтой болно.)

Таны Wolfram функцийн репозитор руу илгээсэн функцууд төгс байх албагүй; Тэд зүгээр л ашигтай байх ёстой. Энэ нь Юниксийн сонгодог баримт бичгийн "Алдаа" хэсэгтэй бага зэрэг төстэй юм - "Тодорхойлолтын хэсэг" хэсэгт "Зохиогчийн тэмдэглэл" хэсэг байдаг бөгөөд та өөрийн үйл ажиллагааны талаар аль хэдийн мэддэг хязгаарлалт, асуудал гэх мэтийг тайлбарлаж болно. Нэмж дурдахад, та өөрийн онцлогийг хадгалах газарт илгээхдээ тусгай кураторуудын баг уншиж өгөх тэмдэглэлийг нэмж болно.

Онцлогыг нийтэлсний дараа түүний хуудасны доод талд үргэлж хоёр холбоос байдаг: "Энэ функцийн талаар мессеж илгээнэ үү"Мөн"Вольфрам нийгэмлэгт ярилц" Хэрэв та тэмдэглэл хавсаргаж байгаа бол (жишээлбэл, алдааны талаар надад хэлээрэй) та өөрийн мессеж болон холбоо барих мэдээллээ онцлог зохиогчтой хуваалцахыг хүсэж байгаа нүдийг чагтална уу.

Заримдаа та Wolfram функцийн агуулахаас суулгасан функц гэх мэт функцуудыг кодыг нь харахгүйгээр ашиглахыг л хүсдэг. Гэсэн хэдий ч хэрэв та дотор талыг нь харахыг хүсвэл дээд талд нь Notepad товчлуур үргэлж байдаг. Үүн дээр дарснаар та онцлог шинж чанаруудын санд илгээсэн анхны тодорхойлолтын дэвтэрийн хуулбарыг авах болно. Заримдаа та үүнийг өөрийн хэрэгцээнд зориулж жишээ болгон ашиглаж болно. Үүний зэрэгцээ та энэ функцийн өөрийн өөрчлөлтийг боловсруулж болно. Та өөрийн компьютер дээрх агуулахаас олсон эдгээр функцийг эсвэл aphid үүл хадгалах дансандаа нийтлэхийг хүсэж болох бөгөөд магадгүй та тэдгээрийг функцын мэдээллийн санд, магадгүй анхны функцийн сайжруулсан, өргөтгөсөн хувилбар болгон оруулахыг хүсэж болох юм.

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

Боловсруулсан функцүүдийн "хувилбар" хэрхэн ажилладаг тухай асуултыг авч үзье. Яг одоо, таныг функцийн агуулахаас функц ашиглах үед түүний тодорхойлолт таны компьютер дээр (эсвэл та үүлэн ашиглаж байгаа бол таны үүлэн дансанд) байнга хадгалагдах болно. Хэрэв функцийн шинэ хувилбар гарсан бол дараагийн удаа ашиглах үед танд энэ тухай мэдэгдэх мессеж ирэх болно. Хэрэв та функцийг шинэ хувилбар руу шинэчлэхийг хүсвэл тушаалыг ашиглан хийж болно Resource Update. ("Function blob" нь үнэндээ илүү олон хувилбарын мэдээллийг хадгалдаг бөгөөд бид үүнийг ирээдүйд хэрэглэгчиддээ илүү хүртээмжтэй болгохоор төлөвлөж байна.)

Wolfram Function Repository-ийн нэг сайхан зүйл бол Вольфрам хэлний ямар ч программ, хаана ч байсан функцийг ашиглах боломжтой юм. Хэрэв програм тэмдэглэлийн дэвтэрт гарч ирвэл хадгалах сангийн функцийг уншихад хялбар "функцын хоёртын объект" функц (магадгүй тохирох хувилбарын багц) болгон форматлах нь ихэвчлэн тохиромжтой байдаг.

Та текст ашиглан функцийн агуулахын дурын функцэд үргэлж хандах боломжтой Нөөцийн функц[...]. Хэрэв та Wolfram Engine-д шууд код эсвэл скрипт бичвэл энэ нь маш тохиромжтой IDE эсвэл текст код засварлагч ашиглан (Функцийн агуулах нь бүрэн нийцэж байгааг онцгой анхаарах хэрэгтэй Хөгжүүлэгчдэд зориулсан үнэгүй Wolfram хөдөлгүүр).

энэ нь хэрхэн ажилладаг вэ?

Wolfram репозиторын функцуудын дотор үүнийг яг ижилхэн ашиглах боломжтой нөөцийн системүүд гэх мэт суурь манай бусад бүх агуулахууд (мэдээлэл хадгалах, Мэдрэлийн сүлжээ хадгалах газар, Демо төслүүдийн цуглуулга бусад Wolfram системийн нөөцийн нэгэн адил, Нөөцийн функц эцэст нь функц дээр суурилдаг ResourceObject.

Санаа зов Нөөцийн функц:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Дотор нь функцийг ашиглан зарим мэдээллийг харж болно мэдээлэл:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Нөөцийн функцийг тохируулах нь хэрхэн ажилладаг вэ? Хамгийн энгийн нь зөвхөн орон нутгийн тохиолдол юм. Функцийг (энэ тохиолдолд зөвхөн цэвэр функц) авч, өгөгдсөн програмын сессийн нөөц функц гэж тодорхойлсон жишээ энд байна:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Тодорхойлолтыг хийсний дараа та нөөцийн функцийг ашиглаж болно:

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

Энэ функцийн блок дотор хар дүрс байгааг анхаарна уу Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ. Энэ нь BLOB функц нь одоогийн сессэд тодорхойлсон санах ойн нөөцийн функцийг хэлнэ гэсэн үг юм. Таны компьютер эсвэл үүлэн дансанд байнга хадгалагддаг нөөцийн функц нь саарал дүрстэй байна Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ. Wolfram Feature Repository-д албан ёсны нөөцийн функцийн улбар шар дүрс байдаг Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ.

Тодорхойлолтын дэвтэр дээрх Expand цэсийг ашиглавал юу болох вэ? Нэгдүгээрт, энэ нь тэмдэглэлийн дэвтэрт байгаа бүх тодорхойлолтыг авч, тэдгээрээс бэлгэдэл үүсгэдэг ResourceObject). (Хэрэв та текстэд суурилсан IDE эсвэл програм ашиглаж байгаа бол та мөн шууд үүсгэж болно ResourceObject)

Таны компьютер дээрх агуулахаас функцийг локал байршуулах нь тушаалыг ашиглан хийгддэг LocalCache нөөцийн объект болгон хадгалахын тулд LocalObject таны файлын систем дээр. Үүлэн данс руу байршуулах нь тушаалыг ашиглан хийгддэг CloudDeploy нөөцийн объектын хувьд, нийтийн үүлэн байршуулалт нь CloudPublish. Бүх тохиолдолд Нөөцийн бүртгэл мөн нөөцийн функцийн нэрийг бүртгэхэд ашигладаг, тиймээс Нөөцийн функц["нэр"] ажиллана.

Хэрэв та функцийн агуулахын "Илгээх" товчийг дарвал түүний доор юу болох вэ ResourceSubmit нөөцийн объект дээр дуудагдсан. (Хэрэв та текст оруулах интерфейс ашиглаж байгаа бол залгаж болно ResourceSubmit шууд.)

Өгөгдмөл байдлаар, таны Wolfram ID-тай холбоотой нэрээр илгээлтүүд хийгддэг. Гэхдээ хэрэв та хөгжлийн баг эсвэл байгууллагын нэрийн өмнөөс өргөдөл гаргаж байгаа бол та боломжтой тусдаа нийтлэгчийн ID-г тохируулах харин үүнийг өөрийн үзэл бодолтой харилцах нэр болгон ашигла.

Та функцийн мэдлэгийн санд аль нэг функцээ оруулсны дараа үүнийг шалгахаар дараалалд оруулна. Хэрэв та хариуд нь сэтгэгдэл хүлээн авбал тэдгээр нь ихэвчлэн нэмэлт "тайлбарын нүднүүд" нэмсэн текст файл хэлбэрээр байх болно. Та үргэлж зочилж өөрийн өргөдлийн статусыг шалгаж болно нөөцийн системийн гишүүн портал. Гэхдээ таны функцийг зөвшөөрсний дараа танд мэдэгдэх болно (имэйлээр) мөн таны функцийг Wolfram функцын агуулахад байршуулах болно.

Ажил дээрх зарим нарийн ширийн зүйлс

Өнгөц харахад та тодорхойлолтын дэвтэр аваад функцийн санд үгчлэн оруулж болох юм шиг санагдаж болох ч үнэндээ маш олон нарийн ширийн зүйл байдаг бөгөөд тэдгээрийг зохицуулахад нэлээд төвөгтэй мета програмчлал хийх, симбол боловсруулалт хийх шаардлагатай байдаг. функцийг тодорхойлсон код болон Notepad өөрөө тодорхойлогддог. Үүний ихэнх нь дотооддоо, тайзны ард тохиолддог боловч хэрэв та онцлог шинж чанаруудын мэдлэгийн санд хувь нэмрээ оруулах гэж байгаа бол энэ нь ойлгоход үнэ цэнэтэй үр дагавартай байж болно.

Анхны нарийн зүйл: Тодорхойлолтын дэвтэр бөглөхдөө та өөрийн функцийг хаа сайгүй нэрээр дурдаж болно. MyFunction, энэ нь Вольфрам хэл дээрх функцийн ердийн нэр шиг харагддаг боловч функцийн агуулахын баримт бичгийн хувьд үүнийг сольсон. Нөөцийн функц["Миний функц"] Энэ нь хэрэглэгчид функцтэй ажиллахдаа яг үнэндээ ашиглах зүйл юм.

Хоёрдахь нарийн зүйл: Тодорхойлолтын дэвтэрээс нөөцийн функц үүсгэх үед функцийн тодорхойлолтод хамаарах бүх хамаарлыг авч, тодорхой тусгасан байх ёстой. Гэсэн хэдий ч, тодорхойлолтууд нь модульчлагдсан хэвээр байхын тулд та бүх зүйлийг өвөрмөц байдлаар оруулах хэрэгтэй нэрийн орон зай. (Мэдээжийн хэрэг, бүгдийг хийдэг функцууд, функцийн агуулахад байна.)

Ерөнхийдөө та энэ нэрийн орон зайг тохируулахад ашигласан кодын ул мөрийг хэзээ ч харахгүй. Гэхдээ ямар нэг шалтгааны улмаас та өөрийн функц дотор дутуу гүйцэтгэсэн тэмдэгтийг дуудвал энэ тэмдэг функцийн дотоод контекст байгааг харах болно. Гэсэн хэдий ч, Definition Notepad-ийг боловсруулахдаа ядаж функцэд тохирох тэмдэг нь өөрөө байна хамгийн сайн харуулахын тулд тохируулж болно дотоод нөхцөл байдалд түүхий дүр гэхээсээ илүү функциональ BLOB байдлаар.

Функцийн агуулах нь шинэ функцуудыг тодорхойлоход зориулагдсан. Мөн эдгээр функцууд нь сонголттой байж болно. Ихэнхдээ эдгээр параметрүүд (жишээлбэл, арга буюу Зургийн хэмжээ) нь суурилагдсан функцууд болон суурилагдсан тэмдэгтүүдэд ашиглагдах боломжтой болно. Гэхдээ заримдаа шинэ функц нь шинэ сонголтуудыг шаарддаг. Модульчлагыг хадгалахын тулд эдгээр параметрүүд нь өвөрмөц дотоод контекст (эсвэл нөөцийн бүх функц, өөрөөр хэлбэл өөрсдөө) тодорхойлогдсон тэмдэгтүүд байх шаардлагатай. Энгийн болгох үүднээс функцийн агуулах нь мөрийн тодорхойлолтод шинэ сонголтуудыг тодорхойлох боломжийг олгодог. Хэрэглэгчийн тав тухыг хангах үүднээс эдгээр тодорхойлолтыг (тэдгээрийг ашигласан гэж үзвэл OptionValue и Сонголтууд Загвар) функцийг ашиглах үед параметрүүдийг зөвхөн мөр хэлбэрээр төдийгүй ижил нэртэй глобал тэмдэг болгон зааж өгөхийн тулд боловсруулдаг.

Ихэнх функцууд дуудагдах болгондоо хийх ёстой зүйлээ л хийдэг, гэхдээ зарим функцийг тодорхой сесс дотор ажиллуулахын өмнө эхлүүлэх шаардлагатай байдаг ба энэ асуудлыг шийдэхийн тулд Тодорхойлолт хэсэгт "Эхлэх" хэсэг байдаг.

Хадгалах сангийн функцууд нь хадгалах газарт байгаа бусад функцуудыг ашиглаж болно; бие биенээ лавласан хоёр (эсвэл түүнээс дээш) функцийг агуулсан функцийн агуулахын тодорхойлолтыг тохируулахын тулд та тэдгээрийг програмынхаа сесс дээр байрлуулах ёстой. тэдэн шиг лавлагаа Нөөцийн функц["нэр"], дараа нь та өөрт хэрэгтэй эдгээр функцүүдийн хослол, жишээг (би ойлгосонгүй) үүсгэж, өмнө нь байршуулсан функцууд дээр үндэслэн хадгалах санд шинэ функц нэмж болно. (эсвэл аль хэдийн эсвэл өмнө нь - хоёр үг нь болхи)

Хөгжлийн хэтийн төлөв. Хадгалах газар үнэхээр том болоход юу болох вэ?

Өнөөдөр бид Wolfram Feature Repository-г дөнгөж эхлүүлж байгаа боловч цаг хугацаа өнгөрөх тусам түүний хэмжээ, функциональ байдал эрс нэмэгдэж, хөгжихийн хэрээр бидний таамаглаж байсан янз бүрийн асуудал гарч болзошгүй гэж бид найдаж байна.

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

Энэ нь эхэндээ том асуудал мэт санагдаж болох ч энэ нь үндсэндээ интернетийн домэйн эсвэл олон нийтийн мэдээллийн хэрэгсэл зэрэгтэй ижил асуудал гэдгийг ойлгох нь зүйтэй. Үнэн хэрэгтээ систем нь зүгээр л бүртгэгчтэй байх шаардлагатай бөгөөд энэ нь манай компаний Wolfram функцын мэдлэгийн сангийн гүйцэтгэх үүргүүдийн нэг юм. (Репозиторын хувийн хувилбаруудын хувьд тэдгээрийн бүртгэгч нь администратор байж болно.) Мэдээжийн хэрэг, Интернет домэйн дээр юу ч байхгүй байж болно, гэхдээ функцийн репозиторийн хувьд функцийн нэрийг зөвхөн тодорхой тодорхойлолт байгаа тохиолдолд л бүртгэж болно. функц.

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

(Функцуудыг ялгахын тулд зүгээр л зарим гишүүн тагийг нэмэх нь хүссэн үр дүнд хүрэхгүй гэдгийг энд тэмдэглэх нь зүйтэй. Учир нь та үргэлж таг оноохыг шаардахгүй л бол өгөгдсөн функцэд өгөгдмөл тагийг тодорхойлох, мөн зохиогчийн тагуудыг хуваарилах шаардлагатай болно. , энэ нь дахин дэлхийн зохицуулалтыг шаарддаг.)

Вольфрамын функцүүдийн мэдлэгийн сан өсөхийн хэрээр системээс хангадаг функцүүдийг олж илрүүлэх асуудал үүсэх магадлалтай. хайлтын функц (мөн тодорхойлолт файлууд нь түлхүүр үг гэх мэтийг агуулж болно). Вольфрамын хэл дээрх суулгасан функцүүдийн хувьд функцуудыг "сурталчлахад" туслах бүх төрлийн хөндлөн лавлагаа баримт бичигт байдаг. Функцийн агуулах дахь функцууд нь суулгасан функцуудыг лавлаж болно. Харин эсрэгээрээ яах вэ? Үүнийг хийхийн тулд бид суулгасан функцүүдийн баримт бичгийн хуудсанд хадгалах функцийг харуулахын тулд янз бүрийн загваруудыг туршиж үзэх болно.

Вольфрамын хэлэнд суулгасан функцүүдийн хувьд илрүүлэгч давхарга гэж нэрлэгддэг давхарга байдаг "тусламжийн хуудасны" сүлжээ, тодорхой газар нутгуудтай холбоотой онцлогуудын зохион байгуулалттай жагсаалтыг өгдөг. Хүн хуудсыг зөв тэнцвэржүүлэх нь үргэлж хэцүү байдаг бөгөөд Вольфрам хэл өсөхийн хэрээр хүн хуудаснуудыг бүрэн өөрчлөх шаардлагатай болдог. Хадгалах сангаас функцуудыг өргөн ангилалд оруулах, тэр ч байтугай эдгээр ангиллыг тогтмол задлах нь маш хялбар боловч хэлний лавлах хуудсыг зөв зохион байгуулах нь илүү үнэ цэнэтэй юм. Функцийн мэдлэгийн санд зориулж тэдгээрийг хэрхэн хамгийн сайн бүтээх нь одоогоор тодорхойгүй байна. Жишээлбэл, ResourceObjectGallery үүсгэх Онцлогын санд хэн ч өөрийн "сонгосон" мэдээллийг агуулсан вэб хуудсыг нийтлэх боломжтой.

Wolfram Function Repository: Wolfram хэлний өргөтгөлүүдийн нээлттэй хандалтын платформ

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

Wolfram Feature Repository нь танд шинэ боломжуудыг хурдан олж мэдэх, Вольфрам хэлийг ашиглах шинэ аргуудыг сурахад туслах зорилготой юм. Онцлогын санд судлагдсан зарим зүйл нь эцэстээ Вольфрамын хэлний үндсэн хэсэг болох нь утга учиртай болно гэдэгт бид маш өөдрөг итгэлтэй байна. Сүүлийн арван жилийн хугацаанд бид ижил төстэй багцтай болсон Wolfram |-д анх нэвтрүүлсэн функцууд Альфа. Энэхүү туршлагаас олж авсан сургамжуудын нэг нь Вольфрам хэл дээр бүтээгдсэн бүх зүйлд бидний анхаардаг чанар, тууштай байдлын стандартад хүрэх нь маш их хөдөлмөр шаарддаг бөгөөд энэ нь санааг хэрэгжүүлэх анхны хүчин чармайлтаас илүү хэцүү байдаг. Гэсэн хэдий ч функциональ мэдлэгийн сан дахь функц нь эцэст нь Вольфрам хэлэнд суулгаж болох ирээдүйн функцийн үзэл баримтлалын маш хэрэгтэй нотолгоо болж чадна.

Энд байгаа хамгийн чухал зүйл бол функцийн агуулах дахь функц нь яг одоо хэрэглэгч бүр ашиглах боломжтой зүйл юм. Төрөлх хэлний онцлог нь илүү сайн, илүү гүйцэтгэлтэй байж болох ч функцын агуулах нь хэрэглэгчдэд бүх шинэ функцэд шууд хандах боломжийг олгоно. Хамгийн гол нь энэ үзэл баримтлал нь хүн бүрт хүссэн шинэ боломжуудыг нэмэх боломжийг олгодог.

Өмнө нь Вольфрам хэлний түүхэнд энэ санаа өмнөх шигээ үр дүнд хүрэхгүй байсан ч энэ үе шатанд хэлийг хөгжүүлэхэд маш их хүчин чармайлт гаргаж, хэлний дизайны зарчмуудыг маш гүнзгий ойлгож байгаа тул одоо маш их юм шиг санагдаж байна. хэрэглэгчдийн өргөн хүрээний хэрэглэгчдэд ашигтай байхын тулд дизайны тууштай байдлыг хадгалах онцлогуудыг нэмж оруулах боломжтой.

Wolfram Language хэрэглэгчийн нийгэмлэгт гайхалтай авьяас чадвар(?) байдаг. (Мэдээжийн хэрэг, энэ нийгэмлэгт янз бүрийн чиглэлээр ажилладаг олон тэргүүлэх R&D хүмүүс багтдаг.) ​​Wolfram Feature Repository нь энэхүү авъяас чадварыг нээж, түгээх үр дүнтэй платформоор хангана гэж найдаж байна. Зөвхөн хамтдаа л бид Вольфрам хэлний тооцооллын парадигмыг ашиглах талбарыг ихээхэн өргөжүүлэх зүйлийг бүтээж чадна.

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

Эх сурвалж: www.habr.com

сэтгэгдэл нэмэх