Salam, Habr! Stiven Volframın yazısının tərcüməsini diqqətinizə təqdim edirəm
Volfram dilinin ardıcıllığı üçün ilkin şərtlər
Bu gün biz proqramlaşdırma dili ilə birlikdə böyük nailiyyətlərin astanasındayıq
Wolfram Function Repository Wolfram Dilinin unikal təbiəti sayəsində təkcə proqramlaşdırma dili kimi deyil, həm də proqramlaşdırma dili kimi mümkün olan bir şeydir.
Məsələn, Wolfram funksiyası deposunda artıq var
Eynilə daha çox
Səhifəyə daxil olmaq üçün yuxarıdakı obyekti (BLOB funksiyası) kopyalayın, onu giriş sətirinə yapışdırın və sonra funksiyanı işə salın - o, artıq Wolfram dilində qurulub və defolt olaraq bu dildən başlayaraq dəstəklənir.
Burada emal edərkən qeyd etmək lazımdır
Ümid edirəm ki, dəstəyi ilə
Repozitoriyadan gələn funksiyalar Wolfram dilində yazılmış kiçik və ya böyük kod hissələrini ehtiva edə bilər. Məsələn, bunlar zənglər ola bilər
Wolfram Feature Repository-nin qabığı və proqramlaşdırma strukturu elə qurulub ki, hamı ümumi işə onlar üçün ən sadə və rahat şəkildə töhfə verə bilsin - əslində, sadəcə
Bu yanaşmada bir çox güzəştlər və təfərrüatlar var, lakin bizim məqsədimiz həm istifadəçi təcrübəsi üçün Wolfram xüsusiyyət repozitoriyasını optimallaşdırmaq, həm də yeni istifadəçi xüsusiyyətlərinin dilin inkişafına mənalı töhfə verməsini təmin etməkdir. Böyüdükcə, şübhə etmirəm ki, biz repozitoriyada quraşdırılmış funksiyaların işlənməsi və təsdiqlənməsi üçün yeni metodlar icad etməli olacağıq, nəinki çoxlu sayda funksiyaları təşkil etmək və istifadəçilərə lazım olanları tapmaq üçün. Bununla belə, bizim seçdiyimiz yolun yaxşı başlanğıc olması ümidvericidir. şəxsən mən
Xərcləri azaldarkən səmərəliliyin artırılması
İnternetdən əvvəl də Wolfram Dil kodunu paylaşmağın yolları var idi (ilk böyük mərkəzləşdirilmiş layihəmiz
30 ildən artıqdır ki, şirkətimiz Wolfram dili strukturunun bütövlüyünü qorumaq üçün səylə çalışmışdır və bu, Wolfram dilinin təkcə proqramlaşdırma dili deyil, həm də bir proqramlaşdırma dili olmasını təmin etmək üçün çox vacibdir.
Hər bir funksiyanın icra strukturunda müxtəlif hesablama prosesləri baş verir. Burada qeyd etmək lazımdır ki, funksiyanın istifadəçi üçün aydın və vahid görünüşə və vizual oxunaqlılığa malik olması zəruridir. Bu kontekstdə Wolfram Dilinin daxili funksiyaları funksiyaları düzgün proqramlaşdırmağın 6000-dən çox ardıcıl nümunəsi ilə təqdim olunur (bunlar bizim
Əslində yaxşı işləyən bir anbar yaratmaq maraqlı bir meta-proqramlaşdırma işidir. Məsələn, proqramda məhdudiyyətlərin həddindən artıq olması alqoritmin tələb olunan unifikasiyasını və universallığını əldə etməyə imkan verməyəcəkdir. Qeyri-kafi sayda funksional məhdudiyyətdə olduğu kimi, alqoritmin icrasının kifayət qədər düzgün ardıcıllığını həyata keçirə bilməyəcəksiniz. Şirkətimiz tərəfindən həyata keçirilən bu yanaşmaların kompromis tətbiqinin bir neçə əvvəlki nümunələri kifayət qədər sabit işləmişdir - bunlar:
Yuxarıda göstərilən nümunələrin hamısı fundamental xüsusiyyətə malikdir - layihədə toplanan obyektlər və funksiyalar proseslərin çox yüksək strukturlaşdırılması və paylanması dərəcəsinə malikdir. Əlbəttə ki, demo və ya neyron şəbəkəsi və ya başqa bir şeyin strukturunun təfərrüatları çox fərqli ola bilər, lakin hər hansı bir cari depo üçün əsas struktur həmişə eyni qalır. Beləliklə, hörmətli istifadəçi, Wolfram dilinə genişləndirmələr əlavə edən belə bir repozitoriyanın yaradılması haqqında nə düşünürsünüz? Wolfram Dili son dərəcə çevik olmaq üçün nəzərdə tutulmuşdur, ona görə də istənilən şəkildə genişləndirilə və dəyişdirilə bilər. Bu vəziyyət Wolfram dilində müxtəlif irimiqyaslı proqram layihələrini tez bir zamanda yaratmaq bacarığı üçün son dərəcə vacibdir. Burada qeyd etmək lazımdır ki, dilin çevikliyi artdıqca, belə bir dildə həyata keçirilən layihələrin qiyməti qaçılmaz olaraq artacaqdır. Bu onunla bağlıdır ki, istifadəçi belə bir dildən nə qədər çox istifadə edirsə, bir o qədər xüsusi funksionallıq əldə edir, lakin unutmaq lazım deyil ki, proqram modullarının ardıcıl ardıcıllığını təmin edə bilməmək baxımından bu yanaşmanın mənfi tərəfləri də ola bilər.
Ənənəvi proqramlaşdırma dillərində kitabxanalarla bağlı ümumi problem var - bir kitabxanadan istifadə etsəniz, məsələn, kod düzgün işləyəcək, lakin birdən çox kitabxanadan istifadə etməyə çalışsanız, onların bir-biri ilə düzgün qarşılıqlı əlaqədə olacağına zəmanət yoxdur. . Həm də ənənəvi proqramlaşdırma dillərində - tam hüquqlu hesablama dilindən fərqli olaraq - əsas strukturlarından başqa hər hansı bir funksiya və ya məlumat növləri üçün ardıcıl daxili təmsillərin mövcudluğuna zəmanət vermək üçün heç bir yol yoxdur. Ancaq əslində problem ilk baxışdan göründüyündən də böyükdür: əgər geniş miqyaslı funksionallıq şaquli qurulursa, o zaman Wolfram dilinə qoyduğumuz mərkəzləşdirilmiş layihə proqramlaşdırmasının böyük xərcləri olmadan bunu etmək mümkün deyil. ardıcıllığa nail olmaq. Buna görə də bütün proqram modullarının həmişə birlikdə düzgün işləməsi vacibdir.
Beləliklə, Wolfram xüsusiyyətləri anbarının arxasında duran ideya, əlaqəli modullar kimi inkişaf etdirmək daha asan olan fərdi xüsusiyyətlər vasitəsilə nisbətən kiçik kod hissələrində dilə genişlənmələr əlavə etməklə yuxarıda göstərilən problemdən qaçmaqdır. Bununla belə, proqramlaşdırma xüsusiyyətləri var ki, onları fərdi funksiyalardan istifadə etməklə rahatlaşdırmaq mümkün deyil (və şirkətimiz irimiqyaslı proqram paketlərinin tətbiqinə kömək etmək üçün yaxın gələcəkdə optimallaşdırılmış proqramlaşdırma alqoritmini buraxmağı planlaşdırır). Bununla belə, artıq Wolfram Dilinə daxil edilmiş funksiyalara əsaslanaraq, fərdi funksiyalar əsasında həyata keçirilən bir çox proqramlaşdırma imkanları mövcuddur. Buradakı fikir ondan ibarətdir ki, nisbətən az proqramlaşdırma səyi ilə dizayna kifayət qədər uyğunluq təmin edəcək bir sıra yeni və çox faydalı funksiyalar yaratmaq mümkündür, onlar bir-biri ilə yaxşı əlaqələndiriləcək və bundan əlavə, onlar gələcəkdə dildə asanlıqla və geniş şəkildə istifadə edə biləcək.
Bu yanaşma, təbii ki, kompromisdir. Daha böyük bir paket həyata keçirilsəydi, son dərəcə güclü və faydalı olacaq tamamilə yeni bir funksionallıq dünyası təsəvvür edilə bilər. Hər şeyə uyğunlaşacaq yeni funksionallıq əldə etməyə ehtiyac varsa, lakin siz layihəni inkişaf etdirmək üçün çox səy sərf etmək istəmirsinizsə, bu, təəssüf ki, layihənizin əhatə dairəsinin azalmasına səbəb ola bilər. Wolfram xüsusiyyətləri anbarının arxasında duran ideya layihənin müəyyənedici hissəsinə funksionallıq təmin etməkdir; bu yanaşma proqramlaşdırma layihəsində yaxşı ardıcıllığı saxlamağı asanlaşdırarkən güclü funksionallıq əlavə edəcək.
Funksiya deposuna xüsusi funksiyalar əlavə etməyə kömək edin
Komandamız istifadəçilərin Wolfram repozitoriya xüsusiyyətlərinə töhfə verməsini asanlaşdırmaq üçün çox çalışıb. İş masasında (artıq
Sizə yerinə yetirməli olduğunuz iki əsas addım var: birincisi, əslində funksiyanızın kodunu yazın və ikincisi, funksiyanızın necə işləməli olduğunu göstərən sənədləri yazın.
Nə etməli olduğunuzun nümunəsini görmək üçün yuxarıdakı "Nümunəni açın" düyməsini klikləyin:
Əslində, siz Wolfram Dilində daxili funksiyaya bənzər bir şey yaratmağa çalışırsınız. Bundan başqa, o, daxili funksiyadan daha konkret bir şey edə bilər. Eyni zamanda, onun tamlığı və etibarlılığı ilə bağlı gözləntilər daha aşağı olacaq.
Siz öz funksiyanıza Wolfram Dilinin funksiya adlandırma qaydalarına uyğun ad verməlisiniz. Bundan əlavə, dilin daxili funksiyalarına bənzər funksiyanız üçün sənədlər hazırlamalısınız. Bu barədə sonra daha ətraflı danışacağam. Hələlik, qeyd edin ki, qeyd dəftəri faylının yuxarısındakı düymələr cərgəsində bir düymə var
Hər şeyin düzgün doldurulduğuna və hazır olduğunuza əmin olduqda, "Yoxlama" düyməsini basın. Hələ bütün təfərrüatları anlamamağınız tamamilə normaldır. Beləliklə, "Yoxlama" funksiyası avtomatik olaraq işləyəcək və bir çox üslub və ardıcıllıq yoxlanışı edəcək. Tez-tez o, dərhal düzəlişləri təsdiqləməyi və qəbul etməyinizi təklif edəcək (Məsələn: “Bu sətir iki nöqtə ilə bitməlidir” və o, iki nöqtəni daxil etməyinizi təklif edəcək). Bəzən o, sizdən özünüz nəsə əlavə etməyinizi və ya dəyişdirməyinizi xahiş edəcək. Yoxlama düyməsinin avtomatik funksionallığına daim yeni funksiyalar əlavə edəcəyik, lakin onun məqsədi funksiyalar anbarına təqdim etdiyiniz hər şeyin artıq mümkün qədər çox üslub qaydalarına əməl etməsini təmin etməkdir.
Beləliklə, "Yoxla" işə salındıqdan sonra "Ön baxış"dan istifadə edə bilərsiniz. "Ön baxış" funksiyanız üçün təyin etdiyiniz sənədləşmə səhifəsinin ön görünüşünü yaradır. Siz həmçinin kompüterinizdə yaradılmış fayl və ya bulud yaddaşında yerləşən fayl üçün önizləmə yarada bilərsiniz. Əgər nədənsə önizləmədə gördükləriniz sizi qane etmirsə, sadəcə olaraq geri qayıdın və lazımi düzəlişləri edin və sonra yenidən Preview düyməsini basın.
İndi funksiyanızı depoya itələməyə hazırsınız. Yerləşdirmə düyməsi sizə dörd seçim təqdim edir:
Bu addımda vacib olan odur ki, siz öz funksiyanızı hər kəs üçün əlçatan olması üçün Wolfram funksiya anbarına təqdim edə biləsiniz. Eyni zamanda, funksiyanızı məhdud sayda istifadəçi üçün də yerləşdirə bilərsiniz. Məsələn, siz kompüterinizdə yerli olaraq yerləşdirilən bir funksiya yarada bilərsiniz ki, o, həmin kompüterdən istifadə etdiyiniz zaman əlçatan olsun. Və ya öz səhifənizdə yerləşdirə bilərsiniz
Beləliklə, tutaq ki, siz həqiqətən öz funksiyanızı Wolfram funksiyası məlumat bazasına təqdim etmək istəyirsiniz. Bunu etmək üçün depoya “Göndər” düyməsini sıxmalısınız. Beləliklə, hazırda nə baş verir? Müraciətiniz xüsusi kuratorlar komandamız tərəfindən nəzərdən keçirilmək və təsdiqlənmək üçün dərhal növbəyə qoyulur.
Müraciətiniz təsdiqləmə prosesində irəlilədikcə (adətən bir neçə gün çəkir), siz onun statusu və gələcəkdə istifadə üçün təkliflər ilə bağlı məlumat alacaqsınız. Lakin funksiyanız təsdiqləndikdən sonra o, dərhal Wolfram Xüsusiyyətlər Anbarında dərc olunacaq və hər kəsin istifadəsinə veriləcək. (Və bu görünəcək
Anbarda nə olmalıdır?
Qeyd etmək lazımdır ki, şirkətimiz tamlıq, etibarlılıq və ümumi keyfiyyət üçün çox yüksək standartlara malikdir və son 6000+ il ərzində Wolfram dilində artıq qurduğumuz 30+ funksiyanın hamısı yuxarıda göstərilən tələblərə cavab verir. Wolfram Funksiya Repozitoriyasının məqsədi mümkün qədər çox yüngül funksiyaları (yəni daha yüksək performans funksiyaları) əlavə etmək üçün Wolfram Dilində artıq mövcud olan bütün struktur və funksionallıqdan istifadə etməkdir.
Əlbəttə ki, Wolfram funksiya anbarındakı funksiyalar Wolfram Dilinin dizayn prinsiplərinə uyğun olmalıdır - belə ki, onlar digər funksiyalarla və funksiyanın necə düzgün işləməsi ilə bağlı istifadəçilərin gözləntiləri ilə tam qarşılıqlı əlaqədə ola bilsinlər. Bununla belə, funksiyalar bərabər tamlıq və ya etibarlılıqda olmamalıdır.
Wolfram dilinin daxili funksiyalarında biz proqramlaşdırma funksiyalarını mümkün qədər ümumi etmək üçün çox çalışırıq. Deyilənə görə, Wolfram funksiya anbarında çox xüsusi, lakin faydalı işi idarə edən funksiyanın olmasında heç bir problem yoxdur. Məsələn, funksiya
Quraşdırılmış funksiyalarla əlaqəli başqa bir məqam ondan ibarətdir ki, şirkətimiz bütün atipik halları idarə etmək, səhv daxiletmələri düzgün idarə etmək və s. üçün hər cür səy göstərir. Funksiya anbarında problemin həllinin əsas hallarını idarə edən və bütün digərlərinə məhəl qoymayan xüsusi funksiyanın olması tamamilə normaldır.
Aydın məsələ ondan ibarətdir ki, daha çox funksiyanı yerinə yetirən və daha yaxşı edən funksiyalara sahib olmaq daha yaxşıdır, lakin funksiya anbarı üçün optimallaşdırma - Wolfram dilinin daxili funksiyalarından fərqli olaraq - daha çox funksiya ilə birləşdirilmiş daha çox funksiyaya sahib olmalıdır. hər bir konkret funksiyanın icrası prosesləri.
İndi depoda funksiyaların sınaqdan keçirilməsi nümunəsinə baxaq. Bu cür funksiyalar üçün ardıcıllıq gözləntiləri daxili dil funksiyalarına nisbətən təbii olaraq çox aşağıdır. Xüsusilə bu, funksiyaların API kimi xarici resurslardan asılı olduğu hallarda doğrudur, yoxlama alqoritmləri daxilində avtomatik olaraq baş verən ardıcıl testlərin daim aparılması vacibdir. nb faylında siz açıq şəkildə tərifləri təyin edə bilərsiniz (Əlavə məlumat bölməsində) və giriş və çıxış sətirləri və ya tam simvol tipli obyektlər tərəfindən müəyyən edilən çoxlu testlər təyin edə bilərsiniz.
Nəticə etibarilə, funksiya anbarı bir sıra icra mürəkkəbliyinə malik olacaqdır. Bəziləri sadəcə bir kod sətri olacaq, digərləri çox güman ki, bir çox köməkçi funksiyalardan istifadə edərək minlərlə və ya on minlərlə sətirləri əhatə edə bilər. Müəyyən etmək üçün çox az kod tələb edən funksiyanı əlavə etməyə nə vaxt dəyər? Əsasən, əgər bir funksiya üçün varsa
Funksiya anbarının əsas məqsədi (adından göründüyü kimi) dilə yeni funksiyalar daxil etməkdir. Yeni məlumat əlavə etmək istəyirsinizsə və ya
Əslində iki yol var. Siz funksiya deposunda yeni funksiyalarda istifadə olunacaq yeni obyekt tipini təqdim etmək istəyə bilərsiniz. Və bu halda, siz həmişə onun simvolik təsvirini yaza və funksiya deposuna funksiyaları daxil edərkən və ya çıxararkən istifadə edə bilərsiniz.
Bəs siz obyekti təmsil etmək və sonra Wolfram dilində mövcud funksiyalar vasitəsilə onunla işləmək istədiyinizi müəyyən etmək istəsəniz nə etməli? Wolfram Dilində həmişə bunun üçün yüngül mexanizm var idi
Beləliklə, funksiya anbarında funksiya kodunda nə ola bilər?
Wolfram xüsusiyyətləri anbarı üçün bütün kodlar Wolfram-da yazılmalıdır? Şübhəsiz ki, xarici API daxilindəki kod Wolfram dilində yazılmamalıdır, bu dil kodunu belə yaratmır. Əslində, demək olar ki, hər hansı bir xarici dildə və ya kitabxanada bir funksiya tapsanız, onu Wolfram funksiya deposunda istifadə etməyə imkan verən sarğı yarada bilərsiniz. (Adətən bunun üçün daxili funksiyalardan istifadə etməlisiniz
Yaxşı, bunu etməyin mənası nədir? Əsasən, bu, bütün inteqrasiya olunmuş Wolfram Language sistemindən və onun bütün vahid proqram imkanlarından istifadə etməyə imkan verir. Əgər siz əsas tətbiqetməni xarici kitabxanadan və ya dildən əldə etsəniz, o zaman istifadəçilərə artıq həyata keçirilmiş istənilən funksionallıqdan asanlıqla istifadə etməyə imkan verən rahat yüksək səviyyəli funksiya yaratmaq üçün Wolfram Dilinin zəngin simvolik strukturundan istifadə edə bilərsiniz. Ən azı, bu, kitabxanaların yüklənməsinin bütün struktur bloklarının və s. mövcud olduğu ideal bir dünyada mümkün olmalıdır, bu halda onlar avtomatik olaraq Volfram Dili tərəfindən idarə olunacaqdır. (Qeyd etmək lazımdır ki, praktikada problemlər ola bilər
Yeri gəlmişkən, siz tipik xarici kitabxanalara ilk dəfə baxdığınız zaman onlar çox vaxt bir neçə funksiya ilə əhatə oluna bilməyəcək qədər mürəkkəb görünür, lakin bir çox hallarda mürəkkəbliyin böyük hissəsi kitabxana üçün lazım olan infrastrukturun və bütün funksiyaların yaradılmasından irəli gəlir. dəstəkləyin. Bununla belə, Wolfram Dilindən istifadə edərkən, infrastruktur adətən artıq paketlərdə qurulur və buna görə də bütün bu dəstək funksiyalarını təfərrüatlı şəkildə ifşa etməyə ehtiyac yoxdur, ancaq kitabxanada yalnız "ən yüksək" proqrama aid funksiyalar üçün funksiyalar yaradın. .
Bilik bazasının "ekosistemi"
Əgər siz müntəzəm olaraq istifadə etdiyiniz funksiyaları yazmısınızsa, onları Wolfram Function Repository-ə təqdim edin! Bundan başqa bir şey çıxmazsa (dil inkişafı), o zaman belə funksiyalardan şəxsi istifadəniz üçün istifadə etmək sizin üçün daha rahat olacaq. Bununla belə, güman etmək məntiqlidir ki, əgər siz funksiyaları müntəzəm istifadə etsəniz, bəlkə də digər istifadəçilər də onları faydalı hesab edəcəklər.
Təbii ki, siz öz funksiyalarınızı bölüşə bilmədiyiniz və ya istəmədiyiniz bir vəziyyətdə və ya şəxsi məlumat resurslarına çıxış əldə etdiyiniz halda tapa bilərsiniz. Belə hallarda belə, siz sadəcə öz bulud hesabınızda funksiyaları yerləşdirə bilərsiniz,
Wolfram funksiya anbarına təqdim etdiyiniz funksiyaların mükəmməl olması lazım deyil; sadəcə faydalı olmalıdırlar. Bu, bir az klassik Unix sənədlərindəki "Səhvlər" bölməsinə bənzəyir - "Təriflər Bölməsində" funksiyanız haqqında artıq bildiyiniz məhdudiyyətləri, problemləri və s. təsvir edə biləcəyiniz "Müəllif qeydləri" bölməsi var. Bundan əlavə, siz öz funksiyanızı depoya təqdim etdiyiniz zaman xüsusi kuratorlar qrupu tərəfindən oxunacaq təqdimat qeydlərini əlavə edə bilərsiniz.
Xüsusiyyət dərc edildikdən sonra onun səhifəsində həmişə aşağıda iki keçid olur: "
Bəzən siz sadəcə Wolfram funksiya anbarındakı funksiyalardan, məsələn, daxili funksiyalardan onların koduna baxmadan istifadə etmək istəyirsiniz. Bununla belə, içəriyə baxmaq istəyirsinizsə, həmişə yuxarıda Notepad düyməsi var. Bunun üzərinə klikləyin və siz xüsusiyyət anbarına təqdim edilmiş orijinal təsvir dəftərinin öz nüsxəsini əldə edəcəksiniz. Bəzən ehtiyaclarınız üçün nümunə olaraq istifadə edə bilərsiniz. Eyni zamanda, siz bu funksiyanın öz modifikasiyasını da inkişaf etdirə bilərsiniz. Siz kompüterinizdəki repozitoriyadan və ya aphid bulud saxlama hesabınızda tapdığınız bu funksiyaları yerləşdirmək istəyə bilərsiniz, bəlkə də onları orijinal funksiyanın təkmilləşdirilmiş, genişləndirilmiş versiyası kimi funksiya məlumat bazasına təqdim etmək istəyə bilərsiniz.
Gələcəkdə biz xüsusiyyət anbarları üçün Git-stil çəngəllənməsini dəstəkləməyi planlaşdırırıq, lakin hələlik biz bunu sadə saxlamağa çalışırıq və bizdə həmişə hər bir funksiyanın dilə daxil edilmiş yalnız bir qəbul edilmiş versiyası var. Çox vaxt (əgər tərtibatçılar inkişaf etdirdikləri xüsusiyyətləri saxlamaqdan və istifadəçi təqdimatlarına cavab verməkdən imtina etməsələr), xüsusiyyətin orijinal müəllifi ona edilən yeniləmələrə nəzarət edir və yeni versiyaları təqdim edir, daha sonra nəzərdən keçirilir və əgər onlar nəzərdən keçirmə prosesindən keçsələr, , dilində nəşr edilmişdir.
İnkişaf etmiş funksiyaların "versiyalaşdırılması" nın necə işlədiyi sualına baxaq. Hal-hazırda, siz funksiya anbarından funksiyadan istifadə etdiyiniz zaman onun tərifi daimi olaraq kompüterinizdə (və ya buluddan istifadə edirsinizsə bulud hesabınızda) saxlanılacaq. Əgər funksiyanın yeni versiyası mövcuddursa, ondan növbəti dəfə istifadə etdiyiniz zaman bu barədə sizə bildiriş göndəriləcək. Və funksiyanı yeni versiyaya yeniləmək istəyirsinizsə, bunu əmrdən istifadə edərək edə bilərsiniz
Wolfram Function Repository-nin gözəl cəhətlərindən biri ondan ibarətdir ki, istənilən Wolfram Language proqramı istənilən yerdə onun funksiyalarından istifadə edə bilər. Proqram bloknotda görünürsə, çox vaxt depo funksiyalarını oxumaq üçün asan "funksiyanın ikili obyekti" funksiyaları kimi formatlaşdırmaq rahatdır (bəlkə də uyğun versiya dəsti ilə).
Siz həmişə mətndən istifadə edərək funksiya anbarında istənilən funksiyaya daxil ola bilərsiniz
Necə işləyir?
Wolfram deposundakı funksiyaların içərisində bu, eyni şəkildə istifadə edilə bilər
Saymaq
Funksiyadan istifadə edərək içəridə bəzi məlumatları görə bilərsiniz
Resurs funksiyasının qurulması necə işləyir? Ən sadəi sırf yerli haldır. Budur, bir funksiya götürən (bu halda yalnız təmiz funksiya) və onu verilmiş proqram sessiyası üçün resurs funksiyası kimi təyin edən bir nümunə:
Tərifi etdikdən sonra resurs funksiyasından istifadə edə bilərsiniz:
Qeyd edək ki, bu funksiya blobunda qara işarə var . Bu o deməkdir ki, BLOB funksiyası cari sessiya üçün müəyyən edilmiş yaddaşdaxili resurs funksiyasına aiddir. Kompüterinizdə və ya bulud hesabınızda daimi olaraq saxlanılan resurs funksiyasının boz simvolu var . Və Wolfram Feature Repository-də rəsmi resurs xüsusiyyəti üçün narıncı işarə var .
Beləliklə, Definition Notebook-da Genişləndirmə menyusundan istifadə etdikdə nə baş verir? Birincisi, notepaddakı bütün tərifləri götürür və onlardan simvolik yaradır
Kompüterinizdəki bir depodan funksiyanın yerli yerləşdirilməsi əmrdən istifadə etməklə həyata keçirilir
Funksiya Repozitoriyası üçün Göndər düyməsini klikləsəniz, onun altında nə baş verir
Varsayılan olaraq, təqdimatlar Wolfram ID ilə əlaqəli ad altında edilir. Ancaq bir inkişaf qrupu və ya təşkilat adından ərizə təqdim edirsinizsə, edə bilərsiniz
Siz funksiyalarınızdan hər hansı birini funksiya məlumat bazasına təqdim etdikdən sonra o, nəzərdən keçirmək üçün növbəyə qoyulacaq. Cavab olaraq şərhlər alsanız, onlar adətən əlavə "şərh hüceyrələri" əlavə edilmiş mətn faylı şəklində olacaqlar. Müraciətinizin statusunu həmişə ziyarət edərək yoxlaya bilərsiniz
İşdə bəzi incəliklər
İlk baxışdan elə görünə bilər ki, siz sadəcə olaraq bir tərif dəftərini götürüb onu sözbəsöz funksiya anbarına yerləşdirə bilərsiniz, lakin əslində burada kifayət qədər incəliklər var – və onların idarə edilməsi kifayət qədər mürəkkəb meta-proqramlaşdırma, simvolik emalla işləməyi tələb edir. funksiyanı təyin edən kod kimi , və Notepad özü müəyyən edilir. Bunların əksəriyyəti daxili olaraq, pərdə arxasında baş verir, lakin xüsusiyyət bilik bazasına töhfə vermək niyyətindəsinizsə, başa düşülməyə dəyər bəzi təsirləri ola bilər.
İlk dərhal incəlik: Definition Notebook-u doldurduqda siz sadəcə olaraq hər yerdə funksiyanıza aşağıdakı kimi bir adla müraciət edə bilərsiniz. MyFunction, Wolfram dilində funksiya üçün adi ad kimi görünür, lakin funksiya deposunun sənədləri üçün bu, əvəz olunur.
İkinci incəlik: Definition Notebook-dan resurs funksiyası yaratdığınız zaman, funksiya tərifində iştirak edən bütün asılılıqlar tutulmalı və açıq şəkildə daxil edilməlidir. Bununla belə, təriflərin modul qalmasını təmin etmək üçün hər şeyi unikal şəkildə yerləşdirmək lazımdır
Adətən bu ad məkanını konfiqurasiya etmək üçün istifadə olunan kodun izini heç vaxt görməyəcəksiniz. Amma nədənsə öz funksiyanızın daxilində az icra edilmiş simvolu çağırırsınızsa, onda siz bu simvolun funksiyanın daxili kontekstində olduğunu görəcəksiniz. Bununla belə, Definition Notepad-i işləyərkən ən azı funksiyanın özünə uyğun olan simvoldur
Funksiya deposu yeni funksiyaları təyin etmək üçündür. Və bu funksiyaların seçimləri ola bilər. Çox vaxt bu parametrlər (məsələn,
Əksər funksiyalar sadəcə olaraq hər dəfə çağırılanda etməli olduqları işi yerinə yetirirlər, lakin bəzi funksiyalar müəyyən seansda işə düşməzdən əvvəl işə salınmalıdır – və bu problemi həll etmək üçün Tərif bölməsində “İnsiallaşdırma” bölməsi var.
Repozitoriyadan olan funksiyalar artıq depoda olan digər funksiyalardan istifadə edə bilər; bir-birinə istinad edən iki (və ya daha çox) funksiyanı ehtiva edən funksiya anbarı üçün təriflər qurmaq üçün siz onları proqram sessiyanızda yerləşdirməlisiniz ki, siz onlar kimi istinad
İnkişaf perspektivləri. Anbar həqiqətən böyüdükdə nə baş verməlidir?
Bu gün biz yenicə Wolfram Feature Repository-ni işə salırıq, lakin zaman keçdikcə onun ölçüsü və funksionallığı kəskin şəkildə arta biləcəyini və inkişafda böyüdükcə artıq gözlədiyimiz müxtəlif problemlərin yaranacağını gözləyirik.
Birinci problem funksiya adlarına və onların unikallığına aiddir. Funksiya anbarı elə qurulub ki, Wolfram dilində quraşdırılmış funksiyalar kimi, sadəcə onun adını göstərməklə istənilən funksiyaya istinad edə bilərsiniz. Lakin bu, istər-istəməz o deməkdir ki, funksiya adları depoda qlobal miqyasda unikal olmalıdır, belə ki, məsələn, yalnız bir ola bilər.
Bu, ilk baxışdan böyük bir problem kimi görünə bilər, lakin bunun əsasən internet domenləri və ya sosial media tutacaqları kimi şeylərlə eyni problem olduğunu başa düşməyə dəyər. Fakt budur ki, sistemdə sadəcə qeydiyyatçı olmalıdır - və bu, şirkətimizin Wolfram funksiyası bilik bazası üçün yerinə yetirəcəyi rollardan biridir. (Repositoriyanın şəxsi versiyaları üçün onların registratorları administratorlar ola bilər.) Əlbəttə ki, İnternet domeni heç bir şey olmadan qeydiyyata alına bilər, lakin funksiya deposunda funksiya adı yalnız onun faktiki tərifi olduqda qeydiyyata alına bilər. funksiyası.
Wolfram funksiyası bilik bazasının idarə edilməsində rolumuzun bir hissəsi funksiya üçün seçilmiş adın funksiyanın tərifi əsasında məntiqi olmasını və onun Wolfram dilinin adlandırma konvensiyalarına uyğun olmasını təmin etməkdir. Bizim Wolfram dilində quraşdırılmış funksiyaların adlandırılmasında 30 ildən artıq təcrübəmiz var və kuratorlar komandamız bu təcrübəni funksiya anbarına da gətirəcək. Təbii ki, həmişə istisnalar olur. Məsələn, hansısa funksiyanın qısa adına sahib olmaq daha məqsədəuyğun görünə bilər, lakin daha uzun, daha konkret adla "müdafiə etmək" daha yaxşıdır, çünki gələcəkdə oxşar funksiya adı yaratmaq istəyən biri ilə rastlaşma ehtimalınız azdır. .
(Burada qeyd etmək lazımdır ki, funksiyaları qeyri-müəyyənləşdirmək üçün sadəcə bəzi üzv teqlərinin əlavə edilməsi nəzərdə tutulan effekti verməyəcək. Çünki hər zaman teq təyin olunduğunu israr etməsəniz, hər hansı bir funksiya üçün standart teq təyin etməli və həmçinin müəllifi ayırmalısınız. etiketlər, bu da yenə qlobal koordinasiya tələb edir.)
Wolfram funksiyalarının bilik bazası artdıqca, ortaya çıxa biləcək problemlərdən biri də sistemin təmin etdiyi funksiyaların aşkar edilməsidir.
Wolfram Dilində quraşdırılmış funksiyalar üçün tərəfindən təmin edilən sözdə aşkarlama təbəqəsi mövcuddur
Wolfram funksiya anbarı davamlı funksiyalar anbarı kimi konfiqurasiya edilmişdir, burada hər hansı bir funksiya həmişə işləyəcəkdir. Təbii ki, funksiyaların yeni versiyaları əlçatan ola bilər və biz gözləyirik ki, bəzi funksiyalar zaman keçdikcə köhnələcək. Funksiyalar proqramlarda istifadə olunarsa işləyəcək, lakin onların sənəd səhifələri yeni, daha təkmil funksiyalara keçid verəcək.
Wolfram Xüsusiyyətlər Anbarı yeni xüsusiyyətləri tez kəşf etməyə və Wolfram dilindən istifadə etməyin yeni yollarını öyrənməyə kömək etmək üçün nəzərdə tutulmuşdur. Biz çox optimistik ki, xüsusiyyətlər anbarında tədqiq edilmiş bəzi şeylər nəticədə əsas Wolfram Dilinin daxili hissələrinə çevriləcək. Son onillikdə oxşar dəstimiz oldu
Burada ən vacibi odur ki, funksiya anbarındakı funksiya hər bir istifadəçinin hazırda istifadə edə biləcəyi bir şeydir. Mümkündür ki, ana dil funksiyası daha yaxşı və daha effektiv ola bilər, lakin funksiyalar anbarı istifadəçilərə dərhal bütün yeni funksiyalara giriş imkanı verəcək. Və ən əsası, bu konsepsiya hər kəsə istədiyi yeni funksiyaları əlavə etməyə imkan verir.
Əvvəllər Volfram dilinin tarixində bu fikir əvvəlki kimi işləməyəcəkdi, lakin bu mərhələdə dilə o qədər səy sərf olunur və dilin dizayn prinsiplərini o qədər dərindən başa düşürlər ki, indi o, çox sadə görünür. istifadəçilərin geniş icması onları geniş istifadəçilər üçün faydalı etmək üçün dizayn ardıcıllığını qoruyacaq funksiyalar əlavə edə bilər.
Wolfram Language istifadəçi cəmiyyətində inanılmaz istedad ruhu(?) var. (Əlbəttə ki, bu icma müxtəlif sahələrdə çoxlu aparıcı Ar-Ge işçilərini əhatə edir.) Ümid edirəm ki, Wolfram Xüsusiyyətlər Anbarı bu istedad ruhunu açmaq və yaymaq üçün effektiv platforma təmin edəcək. Yalnız birlikdə biz Volfram dilinin hesablama paradiqmasının tətbiq oluna biləcəyi sahəni əhəmiyyətli dərəcədə genişləndirəcək bir şey yarada bilərik.
30 ildən çox müddət ərzində biz Wolfram dili ilə uzun bir yol qət etdik. İndi birlikdə, daha da irəli gedək. Mən bütün dünyada Wolfram dilinin bütün hörmətli istifadəçilərini bunun üçün funksional repozitoriyadan, eləcə də Tərtibatçılar üçün Pulsuz Wolfram Mühərriki kimi yeni proqram layihəsindən istifadə etməyə şiddətlə tövsiyə edirəm.
Mənbə: www.habr.com