Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

Salam, Habr! Stiven Volframın yazısının tərcüməsini diqqətinizə təqdim edirəm "Wolfram Funksiya Repository: Wolfram Dilinin genişləndirilməsi üçün açıq platformanın işə salınması".

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

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 Volfram dili. Cəmi üç həftə əvvəl biz işə başladıq Tərtibatçılar üçün pulsuz Wolfram mühərrikiistifadəçilərimizə Wolfram Dilini genişmiqyaslı proqram layihələrinə inteqrasiya etməkdə kömək etmək. Bu gün biz işə başlayırıq Wolfram funksiya deposu, Wolfram dilini genişləndirmək üçün yaradılmış funksiyalar üçün əlaqələndirilmiş platforma təmin etmək üçün, həmçinin proqram məhsulumuzun inkişafına töhfə verə biləcək hər kəs üçün funksiyalar deposunu açırı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. tam miqyaslı hesablama dili. Ənənəvi proqramlaşdırma dillərində əhəmiyyətli yeni funksionallıq əlavə etmək adətən birlikdə istifadə edildikdə işləyə bilən və ya işləməyən bütün əlavə kitabxanaların yaradılmasını nəzərdə tutur. Bununla belə, Wolfram dilində çox şey artıq dilin özündə qurulub, sadəcə olaraq bütün dilin vahid strukturuna dərhal inteqrasiya olunan yeni funksiyalar əlavə etməklə onun funksionallığını əhəmiyyətli dərəcədə genişləndirmək mümkündür.

Məsələn, Wolfram funksiyası deposunda artıq var 532 yeni funksiya 26 tematik kateqoriyaya bölünür:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

Eynilə daha çox 6000 standart funksiya, Wolfram dilində qurulmuş, depodakı hər bir funksiyada onların ətraflı təsviri və iş nümunələri olan bir sənəd səhifəsi var:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

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. versiya 12.0:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

Burada emal edərkən qeyd etmək lazımdır LogoQRCod Sizə, məsələn, “şəkil emalı kitabxanası” yaratmağa ehtiyac yoxdur, çünki biz artıq Wolfram dilində ardıcıl və diqqətlə alqoritmik üsul tətbiq etmişik. təsvirin işlənməsi, müxtəlif qrafik dil funksiyaları ilə dərhal emal edilə bilər:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

Ümid edirəm ki, dəstəyi ilə gözəl və istedadlı icma, son bir neçə onillikdə böyüyən və genişlənən (Volfram Dili əsasında). Wolfram funksiyalarının deposu yaxın gələcəkdə dildə mövcud olan funksiyaların (ehtimal ki, potensial əhəmiyyətli, elm və texnologiyanın müxtəlif sahələrində ixtisaslaşmış) diapazonunu əhəmiyyətli dərəcədə genişləndirməyə imkan verəcək. Beləliklə, həm dilin məzmunundan (onun daxili funksiyalarından) həm də istifadə etmək mümkün olur inkişaf prinsipləridil əsasında həyata keçirilir. (Burada qeyd etmək lazımdır ki, Wolfram Dilində artıq 30 illik inkişaf tarixi və sabit artım).
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 xarici API və xidmətlər və ya digər dillərdə xarici kitabxanalar. Bu yanaşmanın unikal xüsusiyyəti ondan ibarətdir ki, siz istifadəçi səviyyəli funksionallığa keçdiyiniz zaman potensial uyğunsuzluqlar olmayacaq, çünki yanaşma Wolfram Dilinin ardıcıl strukturu üzərində qurulub və hər bir funksiya avtomatik olaraq düzgün işləyəcək. nəzərdə tutulmuşdur.
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ə notepad mətn faylını (nb uzantısı ilə) WL doldurmaqla. Daxili avtomatik funksiyalar, dilə inteqrasiyasını təmin etmək üçün depoya əlavə edilmiş yeni funksiyaları yoxlamağa imkan verir. Şirkətimiz yeni funksiyaların böyük mürəkkəbliyinə deyil, öz funksiyalarını dilə inteqrasiya edə bilən istifadəçilərin geniş spektrinə mərc edir - və nəzərdən keçirmə prosesi olsa da, biz buna bənzər bir şeydə israr etmirik. zəhmətli dizayn təhlili və ya istifadə etdiyimiz əsas dildə qurulmuş xüsusiyyətlərin daha ciddi sınaqdan keçirilməsindən fərqli olaraq, yeni istifadəçi xüsusiyyətlərinin tamlığı və etibarlılığı üçün ciddi standartlar.

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 bir sıra xüsusiyyətlər əlavə etdi orijinal verilənlər bazasına. Onların bir çoxu mənim şəxsən uzun müddətdir hazırladığım koda əsaslanır. Və onları anbara itələmək mənə cəmi bir neçə dəqiqə çəkdi. İndi onlar repozitoriyada olduqlarına görə mən nəhayət - dərhal və istənilən vaxt - faylları axtarmaq, paketləri yükləmək və s.

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 MathSource, 1991-ci ildə Mathematica üçün CD-ROM əsasında yaradılmışdır və s.). Əlbəttə ki, Wolfram funksiyası repozitoriyası əsasında həyata keçirilməsi üçün təklif olunan yanaşma yuxarıda göstərilən vəzifələrin həyata keçirilməsi üçün daha güclü və etibarlı vasitədir.

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. tam hüquqlu hesablama dili. Beləliklə, Wolfram funksiyaları repozitoriyasının həyata keçirilməsinə yanaşmanın mahiyyəti ardıcıl olaraq əlavə olunan və dil çərçivəsinə uyğun gələn yeni funksiyaların proqramlaşdırılması və işlənməsi üçün vahid yanaşmadan istifadə etməkdir ki, o, inkişaf edə və birlikdə inkişaf edə bilsin.

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 canlı proqramlaşdırma videolarıolan daxildir standart proqramların yaradılması prosesi yüzlərlə saatdır). Bu yanaşmanın son nəticədə Wolfram xüsusiyyət repozitoriyasını yaxşı işləməyə qadir edən cəhəti artıq dilə daxil edilmiş çoxlu sayda əlavə və müxtəlif kitabxanaları ilə Wolfram Dilinin struktur xarakteridir. Məsələn, şəkilləri emal edən funksiyanız varsa və ya seyrək massivlərVə ya molekulyar strukturlarcoğrafi məlumatlar və ya bəzi başqaları - onların ardıcıl simvolik təmsili artıq dildə mövcuddur və bunun sayəsində funksiyanız dərhal dildəki digər funksiyalarla uyğunlaşır.

Ə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: Layihə Volfram Nümayişləri, 2007-ci ildə istifadəyə verilmiş və hazırda 12000-dən çox istifadəçi interaktiv demoları ilə onlayn rejimdə işləyir. IN Wolfram verilənlər bazası Wolfram dilində istifadə edilə bilən 600-dən çox hazır verilənlər bazası var və Wolfram neyron şəbəkə yaddaşı demək olar ki, hər həftə yeni neyron şəbəkələri ilə doldurulur (hazırda onlardan 118-i var) və onlar dərhal funksiya vasitəsilə birləşdirilir. NetModel Volfram dilində.

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 versiya 12.0), Siz sadəcə əsas menyu nişanlarını ardıcıllıqla keçə bilərsiniz: Fayl > Yeni > RepositoryItem > Funksiya Repository Elementi və siz "Tərif notebook" (proqramlı olaraq işçi dəzgahının içərisində. Siz analoq funksiyadan da istifadə edə bilərsiniz - Notebook yarat["Funksiya Resursu"]):

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

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:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

Ə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 "Üslub Təlimatları", nə edəcəyinizi izah edən və funksiyanızın sənədlərini formatlaşdırmaq üçün alətlər təqdim edən Alətlər düyməsi.
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.

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

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:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

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 bulud hesabı, beləliklə, buludunuza qoşulduğunuz zaman sizin üçün əlçatan olsun. Siz həmçinin bulud hesabınız vasitəsilə xüsusiyyəti açıq şəkildə yerləşdirə (yerləşdirə) bilərsiniz. O, mərkəzi Wolfram funksiyalar anbarında olmayacaq, lakin siz kiməsə hesabınızdan xüsusiyyətinizi əldə etməyə imkan verən URL verə biləcəksiniz. (Gələcəkdə biz bütün şirkətimizdə mərkəzi depoları dəstəkləyəcəyik.)

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 yeni funksiyalar haqqında xəbərlər toplusu və sair)

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 SendMailFromNotebook faylları müəyyən bir formatda qəbul edə və müəyyən bir şəkildə poçt yarada bilər. Çoxbucaqlı Diaqram yalnız müəyyən rənglər və etiketləmə ilə qrafiklər yaradır və s.

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. Doğrulama Testi, uyğun gördüyünüz qədər. Bundan əlavə, sistem daim təqdim etdiyiniz sənədləşdirmə nümunələrini yoxlama prosesinə çevirməyə çalışır (və bəzən bu, kifayət qədər resurs tələb edə bilər, məsələn, nəticəsi təsadüfi nömrələrdən və ya günün vaxtından asılı olan funksiya üçün).

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 yaxşı mnemonik ad, istifadəçilər onu bir kod parçasında görsələr, asanlıqla başa düşəcəklər, o zaman artıq əlavə edilə bilər. Əks təqdirdə, hər dəfə istifadə etməli olduğunuz zaman kodu proqramına yenidən əlavə etmək daha yaxşıdır.

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 yeni qurumlar, istifadə edin Wolfram məlumat anbarı. Bəs siz hesablamalarınız üçün yeni növ obyektlər təqdim etmək istəyirsinizsə nə etməli?

Ə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 UpValues. Bəzi məhdudiyyətlərlə (xüsusilə funksiyalar üçün arqumentlərini qiymətləndirə bilmirlər), bir funksiya deposu sadəcə bir funksiyanı təmsil etməyə və onun üçün dəyərlər təyin etməyə imkan verir. (Wolfram Dilinə tam inteqrasiya olunmuş yeni əsas dizayn yaratarkən ardıcıllıq gözləntisini artırmaq, ümumiyyətlə, layihənin dəyərini artırmaqla əldə edilə bilməyən çox vacib bir prosedurdur və şirkətimizin layihələrin bir hissəsi kimi etdiyi bir şeydir. dilin uzunmüddətli inkişafı üçün bu vəzifə deponun inkişafının bir hissəsi kimi qarşıya qoyulan məqsəd deyil).

Beləliklə, funksiya anbarında funksiya kodunda nə ola bilər? Hər şey Wolfram Dilində qurulmuşdur, əlbəttə (ən azı təmsil etmirsə təhdidlər uğrunda təhlükəsizlik və proqramın özünün, hesablama mühiti kimi performansı), eləcə də funksiya anbarından istənilən funksiya. Bununla belə, başqa funksiyalar da var: funksiya anbarındakı funksiya API-yə zəng edə bilər Volfram BuluduVə ya başqa mənbədən. Təbii ki, bununla bağlı müəyyən risklər var. API-nin dəyişməyəcəyinə dair heç bir zəmanət olmadığı və funksiyalar mağazasındakı funksiyanın fəaliyyətini dayandıracağına görə. Bu kimi problemləri müəyyən etməyə kömək etmək üçün sənədlər səhifəsində (Tələblər bölməsində) daxili Wolfram Dili funksionallığından daha çoxuna əsaslanan hər hansı bir xüsusiyyət üçün qeyd var. (Əlbəttə, real məlumatlara gəldikdə, hətta bu funksionallıqla bağlı problemlər ola bilər - çünki real dünya məlumatları daim dəyişir, bəzən hətta onun tərifləri və strukturu dəyişir.)

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 Xarici qiymətləndirmə və ya Xarici funksiya Wolfram dil kodunda.)

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 xarici dillərin qurulması xüsusi kompüter sistemi və bulud yaddaşı əlavə təhlükəsizlik problemləri yarada 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, hüquqlarını müəyyən edir onlara giriş. (Əgər təşkilatınız varsa Wolfram Enterprise şəxsi bulud, sonra o, tezliklə təşkilatınızın daxilindən idarə oluna bilən və baxışların üçüncü tərəf istifadəçiləri tərəfindən baxılmasına məcbur olub-olmamasını təyin edə bilən öz şəxsi xüsusiyyət deposunu yerləşdirə biləcək.)

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: "Bu xüsusiyyət haqqında mesaj göndərin"Və"Wolfram icmasında müzakirə edin" Əgər siz qeyd əlavə edirsinizsə (məsələn, səhvlər haqqında mənə məlumat verin), mesajınızın və əlaqə məlumatınızın xüsusiyyət müəllifi ilə paylaşılmasını istədiyinizi bildirən xananı işarələyə bilərsiniz.

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 Resurs Yeniləmə. (“Funksiya bloku” əslində daha çox versiya məlumatını saxlayır və biz bunu gələcəkdə istifadəçilərimiz üçün daha əlçatan etməyi planlaşdırırıq.)

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 ResursFunksiya[...]. Və bu, məsələn, Wolfram Mühərriki üçün birbaşa kod və ya skript yazsanız çox rahatdır IDE və ya mətn kodu redaktorundan istifadə etməklə (Xüsusilə qeyd etmək lazımdır ki, funksiya deposu ilə tam uyğundur Tərtibatçılar üçün pulsuz Wolfram Mühərriki).

Necə işləyir?

Wolfram deposundakı funksiyaların içərisində bu, eyni şəkildə istifadə edilə bilər resurs sistemləri kimi əsaslar bütün digər mövcud depolarımız (məlumat anbarı, Neyron Net Repository, demo layihələr toplusu və s.), bütün digər Wolfram sistem resursları kimi, Resurs funksiyası son nəticədə funksiyaya əsaslanır ResourceObject.

Saymaq Resurs funksiyası:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

Funksiyadan istifadə edərək içəridə bəzi məlumatları görə bilərsiniz məlumat:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

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ə:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

Tərifi etdikdən sonra resurs funksiyasından istifadə edə bilərsiniz:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

Qeyd edək ki, bu funksiya blobunda qara işarə var Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması. 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 Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması. Və Wolfram Feature Repository-də rəsmi resurs xüsusiyyəti üçün narıncı işarə var Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması.

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 ResourceObject). (Əgər siz mətn əsaslı IDE və ya proqramdan istifadə edirsinizsə, onda siz də açıq şəkildə yarada bilərsiniz ResourceObject)

Kompüterinizdəki bir depodan funksiyanın yerli yerləşdirilməsi əmrdən istifadə etməklə həyata keçirilir LocalCache kimi saxlamaq üçün resurs obyekti üçün LocalObject fayl sisteminizdə. Bulud hesabına yerləşdirmə əmrdən istifadə etməklə həyata keçirilir CloudDeploy resurs obyekti üçün və ictimai bulud yerləşdirilməsidir CloudPublish. Bütün hallarda Resurs Qeydiyyatı resurs funksiyasının adını qeyd etmək üçün də istifadə olunur, belə ki ResursFunksiya["ad"] işləyəcək.

Funksiya Repozitoriyası üçün Göndər düyməsini klikləsəniz, onun altında nə baş verir ResourceSubmit resurs obyektinə çağırılır. (Əgər siz mətn daxiletmə interfeysindən istifadə edirsinizsə, siz də zəng edə bilərsiniz ResourceSubmit birbaşa.)

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 ayrıca nəşriyyat identifikatoru təyin edin və bunun əvəzinə fikirlərinizlə əlaqə saxlamaq üçün ad kimi istifadə edin.

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 resurs sistemi üzv portalı. Lakin funksiyanız təsdiqləndikdən sonra sizə bildiriş göndəriləcək (e-poçt vasitəsilə) və funksiyanız Wolfram funksiyalar anbarında yerləşdiriləcək.

İş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. ResursFunksiya["Funksiyam"] istifadəçilərin funksiya ilə işləyərkən əslində istifadə edəcəyi şeydir.

İ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 sahəsi. (Əlbəttə, hamısını yerinə yetirən funksiyalar, funksiya deposundadı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 ən yaxşı ekran üçün tənzimlənə bilər daxili kontekstdə xam xarakter deyil, funksional BLOB kimi.

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, Üsul və ya Şəkil Ölçüsü) daxili funksiyalar üçün, eləcə də artıq quraşdırılmış simvollar mövcud olan funksiyalar üçün istifadə edilə biləcək. Ancaq bəzən yeni funksiya yeni seçimlər tələb edə bilər. Modulluğu qorumaq üçün bu parametrlər unikal daxili kontekstdə (və ya bütün resurs funksiyaları kimi bir şey, yəni özləri) müəyyən edilmiş simvollar olmalıdır. Sadəlik üçün funksiya anbarı sətir təriflərində yeni variantları müəyyən etməyə imkan verir. Və istifadəçinin rahatlığı üçün bu təriflər (istifadə etdiklərini nəzərə alsaq Seçim Dəyəri и SeçimlərPattern) də elə işlənir ki, funksiyalardan istifadə edərkən parametrlər təkcə sətir kimi deyil, həm də eyni adlı qlobal simvollar kimi göstərilə bilsin.

Ə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 ResursFunksiya["ad"], sonra sizə lazım olan bu funksiyaların birləşmələrini, nümunələri yarada bilərsiniz (başa düşmədim) və əvvəllər yerləşdirilənlərə əsaslanaraq depoya yeni funksiya əlavə edə bilərsiniz. (və ya artıq və ya əvvəl - hər iki söz yöndəmsizdir)

İ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. ResursFunksiya["Sevimli Funksiyam"].

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. axtarış funksiyası (və tərif fayllarına açar sözlər və s. daxil ola bilər). Wolfram Dilində quraşdırılmış funksiyalar üçün sənədlərdə funksiyaları “reklam etməyə” kömək edən hər cür çarpaz istinadlar var. Funksiya deposundakı funksiyalar daxili funksiyalara istinad edə bilər. Bəs əksinə? Bunu etmək üçün, biz daxili funksiyalar üçün sənədləşdirmə səhifələrində depo funksiyalarını ifşa etmək üçün müxtəlif dizaynlarla sınaqdan keçirəcəyik.

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 "yardım səhifələri" şəbəkəsi, xüsusi sahələrə aid xüsusiyyətlərin mütəşəkkil siyahılarını təmin edən. İnsan səhifələrini düzgün balanslaşdırmaq həmişə çətindir və Wolfram dili böyüdükcə, man səhifələri çox vaxt tamamilə yenidən təşkil edilməlidir. Bir depodan funksiyaları geniş kateqoriyalara yerləşdirmək və hətta bu kateqoriyaları ardıcıl olaraq parçalamaq olduqca asandır, lakin düzgün təşkil edilmiş dil istinad səhifələrinə sahib olmaq daha dəyərlidir. Onları bütün funksiya məlumat bazası üçün ən yaxşı şəkildə necə yaratmaq hələ aydın deyil. Misal üçün, ResourceObjectGallery yaradın xüsusiyyət deposunda hər kəs depodan öz "seçmələrini" ehtiva edən veb səhifəni yerləşdirə bilər:

Wolfram Function Repository: Wolfram dil genişləndirmələri üçün açıq giriş platforması

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 əvvəlcə Wolfram |-də təqdim edilmiş xüsusiyyətlər Alfa. Və bu təcrübədən alınan dərslərdən biri budur ki, Wolfram dilində qurulmuş hər şeydə diqqət yetirdiyimiz keyfiyyət və ardıcıllıq standartlarına nail olmaq çoxlu iş tələb edir ki, bu da ideyanın həyata keçirilməsi üçün ilkin səydən daha çətindir. Bununla belə, funksiya biliklər bazasındakı funksiya nəhayət Wolfram dilinə daxil edilə bilən gələcək funksiya üçün konsepsiyanın çox faydalı sübutu kimi xidmət edə bilər.

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

Добавить комментарий