Bună, Habr! Vă prezint atenției o traducere a postării lui Stephen Wolfram
Condiții preliminare pentru consistența limbajului Wolfram
Astăzi suntem în pragul unor mari realizări împreună cu limbajul de programare
Depozitul de funcții Wolfram este ceva posibil prin natura unică a limbajului Wolfram nu numai ca limbaj de programare, ci și ca
De exemplu, depozitul de funcții Wolfram conține deja
La fel mai mult decât
Pentru a ajunge la pagină, copiați obiectul de mai sus (funcția BLOB), inserați-l în linia de intrare și apoi rulați funcția - este deja încorporată în limbajul Wolfram și este acceptată implicit, începând cu
Trebuie remarcat aici că la procesare
Sper ca cu sprijinul
Funcțiile din depozit pot conține bucăți mici sau mari de cod scrise în limbajul Wolfram. De exemplu, acestea ar putea fi apeluri
Structura de shell și de programare a depozitului de caracteristici Wolfram este concepută astfel încât toată lumea să poată contribui la cauza comună în cel mai simplu și convenabil mod pentru ei - de fapt, doar
Există multe compromisuri și detalii în această abordare, dar scopul nostru este să optimizăm depozitul de caracteristici Wolfram atât pentru experiența utilizatorului, cât și pentru a ne asigura că noile funcții ale utilizatorului contribuie semnificativ la dezvoltarea limbajului. Pe măsură ce creștem, nu am nicio îndoială că va trebui să inventăm noi metode de procesare și validare a funcțiilor integrate în depozit, nu în ultimul rând pentru organizarea unui număr mare de funcții și găsirea celor de care utilizatorii au nevoie. Cu toate acestea, este încurajator faptul că drumul pe care l-am ales este un început bun. eu personal
Creșterea eficienței, reducând în același timp costurile
Chiar înainte de internet, existau modalități de a partaja codul Wolfram Language (primul nostru proiect major centralizat a fost
De peste 30 de ani, compania noastră a lucrat cu sârguință pentru a menține integritatea structurii limbajului Wolfram, iar acest lucru este esențial pentru a ne asigura că limbajul Wolfram devine nu doar un limbaj de programare, ci și un
În structura de implementare a fiecărei funcții apar diferite procese de calcul. Trebuie remarcat aici că este necesar ca funcția să aibă un aspect clar și uniform și o lizibilitate vizuală pentru utilizator. În acest context, funcțiile încorporate ale limbajului Wolfram sunt prezentate cu mai mult de 6000 de exemple secvențiale despre cum să programați corect funcțiile (acestea sunt
Crearea unui depozit care funcționează de fapt bine este o sarcină interesantă de meta-programare. De exemplu, un exces de restricții în program nu va permite obținerea unificării și universalității necesare a algoritmului. La fel ca în cazul unui număr insuficient de restricții funcționale, nu veți putea implementa o secvență suficient de corectă de execuție a algoritmului. Câteva exemple anterioare de implementare a unui compromis al acestor abordări, implementate de compania noastră, au funcționat destul de stabil - acestea sunt:
Toate exemplele de mai sus au o caracteristică fundamentală - obiectele și funcțiile colectate în proiect au un grad foarte ridicat de structurare și distribuție a proceselor. Desigur, detaliile structurii a ceea ce este un demo sau o rețea neuronală sau altceva poate varia foarte mult, dar structura fundamentală pentru orice depozit actual rămâne întotdeauna aceeași. Deci, ce părere aveți, dragă utilizator, despre crearea unui astfel de depozit care adaugă extensii la limbajul Wolfram? Wolfram Language este conceput pentru a fi extrem de flexibil, astfel încât poate fi extins și modificat în orice mod. Această împrejurare este extrem de importantă pentru capacitatea de a crea rapid diverse proiecte software la scară largă în limbajul Wolfram. Trebuie remarcat aici că, pe măsură ce flexibilitatea limbii crește, costul proiectelor implementate într-o astfel de limbă va crește inevitabil. Acest lucru se datorează faptului că, cu cât utilizatorul folosește mai mult un astfel de limbaj, cu atât primește mai multă funcționalitate dedicată, dar nu trebuie să uităm că această abordare poate avea și laturi negative în ceea ce privește incapacitatea de a asigura consistența consistentă a modulelor programului.
Există o problemă comună cu bibliotecile în limbaje tradiționale de programare - dacă utilizați o singură bibliotecă, de exemplu, codul va funcționa corect, dar dacă încercați să utilizați mai multe biblioteci, nu există nicio garanție că acestea vor interacționa corect între ele . De asemenea, în limbajele tradiționale de programare - spre deosebire de un limbaj de calcul cu drepturi depline - nu există nicio modalitate de a garanta prezența reprezentărilor încorporate consistente pentru orice funcții sau tipuri de date, altele decât structurile lor de bază. Dar, de fapt, problema este chiar mai mare decât pare la prima vedere: dacă cineva construiește o verticală de funcționalitate la scară largă, atunci fără costurile uriașe ale programării centralizate a proiectelor pe care le punem în limbajul Wolfram, este imposibil să atinge consistența. Prin urmare, este important ca toate modulele software să funcționeze întotdeauna împreună corect.
Așadar, ideea din spatele depozitului de caracteristici Wolfram este de a evita problema descrisă mai sus prin simpla adăugare de extensii la limbaj în bucăți relativ mici de cod prin funcții individuale care sunt mai ușor de dezvoltat ca module coerente. Acestea fiind spuse, există caracteristici de programare care nu pot fi făcute convenabile folosind funcții individuale (și compania noastră intenționează să lanseze un algoritm de programare optimizat în viitorul apropiat pentru a ajuta la implementarea pachetelor software la scară largă). Cu toate acestea, pe baza funcțiilor deja încorporate în limbajul Wolfram, există multe posibilități de programare care sunt implementate pe baza funcțiilor individuale. Ideea aici este că, cu un efort relativ mic de programare, este posibil să se creeze o serie de funcții noi și foarte utile, care vor oferi suficientă coerență designului, vor fi bine coordonate între ele și, de asemenea, în plus, ele. va putea să fie ușor și utilizat pe scară largă în limbă în viitor.
Această abordare este, desigur, un compromis. Dacă ar fi implementat un pachet mai mare, s-ar putea imagina o lume cu totul nouă de funcționalități, care ar fi extrem de puternică și utilă. Dacă este nevoie să obțineți o nouă funcționalitate care să se potrivească cu orice altceva, dar nu sunteți dispus să depuneți mult efort pentru dezvoltarea proiectului, acest lucru, din păcate, poate duce la o reducere a sferei de aplicare a proiectului dumneavoastră. Ideea din spatele depozitului de caracteristici Wolfram este de a oferi funcționalitate unei părți definitorii a unui proiect; această abordare va adăuga funcționalitate puternică, în timp ce va facilita menținerea unei coerențe bune într-un proiect de programare.
Ajută la adăugarea de funcții personalizate în depozitul de funcții
Echipa noastră a muncit din greu pentru a facilita contribuția utilizatorilor la caracteristicile depozitului Wolfram. Pe desktop (deja în
Există doi pași principali pe care va trebui să îi efectuați: în primul rând, notați codul pentru funcția dvs. și, în al doilea rând, notați documentația care ilustrează cum ar trebui să funcționeze funcția dvs.
Faceți clic pe butonul „Open Sample” din partea de sus pentru a vedea un exemplu de ceea ce trebuie să faceți:
În esență, încercați să creați ceva similar cu o funcție încorporată în limbajul Wolfram. Cu excepția faptului că poate face ceva mult mai specific decât o funcție încorporată. În același timp, așteptările cu privire la completitudinea și fiabilitatea acestuia vor fi mult mai mici.
Trebuie să dați funcției dvs. un nume care urmează regulile de denumire a funcțiilor Wolfram Language. În plus, va trebui să dezvoltați documentație pentru funcția dvs., similară cu funcțiile încorporate ale limbajului. Voi vorbi despre asta mai detaliat mai târziu. Deocamdată, observați doar că în rândul de butoane din partea de sus a fișierului caietul de definiții există un buton
Când sunteți sigur că totul este completat corect și sunteți gata, faceți clic pe butonul „Verifică”. Este absolut normal să nu ți-ai dat seama încă de toate detaliile. Deci, funcția „Verificare” va rula automat și va face o mulțime de verificări de stil și coerență. Adesea, vă va solicita imediat să confirmați și să acceptați corecțiile (de exemplu: „Această linie trebuie să se încheie cu două puncte” și vă va solicita să introduceți două puncte). Uneori, ea vă va cere să adăugați sau să schimbați ceva. Vom adăuga în mod constant noi funcții la funcționalitatea automată a butonului Verificare, dar, practic, scopul său este să ne asigurăm că tot ceea ce trimiteți la depozitul de caracteristici urmează deja cât mai multe linii directoare de stil posibil.
Deci, după ce rulați „Verificare”, puteți utiliza „Previzualizare”. „Previzualizare” creează o previzualizare a paginii de documentație pe care ați definit-o pentru funcția dvs. De asemenea, puteți crea o previzualizare pentru un fișier creat pe computer sau pentru un fișier aflat în stocarea în cloud. Dacă, dintr-un motiv oarecare, nu sunteți mulțumit de ceea ce vedeți în previzualizare, pur și simplu mergeți înapoi și faceți corecțiile necesare, apoi faceți clic din nou pe butonul Previzualizare.
Acum sunteți gata să vă împingeți funcția în depozit. Butonul Implementare vă oferă patru opțiuni:
Lucrul important la acest pas este că vă puteți trimite funcția în depozitul de funcții Wolfram, astfel încât să fie disponibilă oricui. În același timp, puteți plasa funcția pentru un număr limitat de utilizatori. De exemplu, puteți crea o funcție care este găzduită local pe computerul dvs., astfel încât să fie disponibilă atunci când utilizați acel computer. Sau îl puteți posta în dvs
Deci, să presupunem că doriți să vă trimiteți funcția la baza de cunoștințe pentru funcția Wolfram. Pentru a face acest lucru, faceți clic pe butonul „Trimite” către depozit. Deci, ce se întâmplă în acest moment? Aplicația dvs. este imediat pusă în așteptare pentru examinare și aprobare de către echipa noastră dedicată de curatori.
Pe măsură ce cererea dumneavoastră avansează prin procesul de aprobare (care durează de obicei câteva zile), veți primi comunicări cu privire la starea acesteia și, eventual, sugestii pentru utilizare ulterioară. Dar odată ce caracteristica dvs. este aprobată, aceasta va fi publicată imediat în Depozitul de caracteristici Wolfram și va fi disponibilă pentru utilizare de către oricine. (Și asta va apărea în
Ce ar trebui să fie în depozit?
Trebuie remarcat faptul că compania noastră are standarde foarte înalte pentru completitudine, fiabilitate și calitate generală, iar dintre cele peste 6000 de funcții pe care le-am integrat deja în limbajul Wolfram în ultimii 30 de ani, toate îndeplinesc cerințele de mai sus. Scopul Wolfram Function Repository este de a folosi toată structura și funcționalitatea care există deja în Wolfram Language pentru a adăuga cât mai multe funcții mai ușoare (adică funcții de performanță mai înaltă) posibil.
Desigur, funcțiile din depozitul de funcții Wolfram trebuie să se conformeze principiilor de proiectare ale Wolfram Language - astfel încât să poată interacționa pe deplin cu alte funcții și cu așteptările utilizatorilor cu privire la modul în care funcția ar trebui să funcționeze corect. Cu toate acestea, funcțiile nu trebuie să fie la fel de complete sau de fiabilitate.
În funcțiile încorporate ale limbajului Wolfram, muncim din greu pentru a face funcțiile de programare cât mai generale posibil. Acestea fiind spuse, atunci când în depozitul de funcții Wolfram, nu este nimic greșit în a avea o funcție în el care pur și simplu se ocupă de un caz foarte specific, dar util. De exemplu, funcția
Un alt punct legat de funcțiile încorporate este că compania noastră depune toate eforturile pentru a gestiona toate cazurile atipice, pentru a gestiona corect introducerea incorectă și așa mai departe. Într-un depozit de funcții, este complet normal să existe o funcție specială care se ocupă de principalele cazuri de rezolvare a unei probleme și ignoră toate celelalte.
Ideea evidentă este că este mai bine să aveți funcții care fac mai mult și mai bine, dar optimizarea pentru un depozit de funcții - spre deosebire de funcțiile încorporate ale limbajului Wolfram - ar trebui să aibă mai multe funcții împreună cu mai multe funcții, mai degrabă decât să se aprofundeze în procesele de implementare a fiecărei funcții specifice.
Acum să ne uităm la un exemplu de testare a funcțiilor într-un depozit. Așteptările de consistență pentru astfel de funcții sunt în mod natural mult mai mici decât pentru funcțiile de limbaj încorporate. Acest lucru este valabil mai ales în cazurile în care funcțiile depind de resurse externe, cum ar fi API-urile, este important să se efectueze constant teste consistente, ceea ce se întâmplă automat în cadrul algoritmilor de verificare. În fișierul nb, puteți specifica în mod explicit definiții (în secțiunea Informații suplimentare) și puteți specifica atâtea teste cât sunt definite fie de șirurile de intrare și de ieșire, fie de obiecte de tip caracter complet.
Ca rezultat, depozitul de funcții va avea o serie de complexități de implementare. Unele vor fi doar o singură linie de cod, altele pot implica mii sau zeci de mii de linii, probabil folosind multe funcții de ajutor. Când merită să adăugați o funcție care necesită foarte puțin cod pentru definire? Practic, dacă pentru o funcție există
Scopul principal al unui depozit de funcții (după cum sugerează și numele) este de a introduce noi caracteristici în limbaj. Dacă doriți să adăugați date noi sau
Există de fapt două moduri. Poate doriți să introduceți un nou tip de obiect care va fi folosit în funcții noi din depozitul de funcții. Și în acest caz, puteți întotdeauna să scrieți reprezentarea sa simbolică și să o utilizați atunci când introduceți sau scoateți funcții într-un depozit de funcții.
Dar dacă doriți să reprezentați un obiect și apoi să definiți, prin funcțiile existente în limbajul Wolfram, că doriți să lucrați cu el? Wolfram Language a avut întotdeauna un mecanism ușor pentru asta, numit
Deci, ce ar putea fi în codul funcției dintr-un depozit de funcții?
Ar trebui să fie scris tot codul pentru depozitul de caracteristici Wolfram în Wolfram? Cu siguranță, codul din interiorul API-ului extern nu ar trebui să fie scris în limbajul Wolfram, care nici măcar nu face codul de limbă. De fapt, dacă găsiți o funcție în aproape orice limbă externă sau bibliotecă, puteți crea un wrapper care vă permite să o utilizați în depozitul de funcții Wolfram. (De obicei, ar trebui să utilizați funcțiile încorporate pentru aceasta
Deci, ce rost are să faci asta? În esență, acest lucru vă permite să utilizați întregul sistem integrat Wolfram Language și întregul său set unificat de capabilități software. Dacă obțineți implementarea de bază dintr-o bibliotecă sau un limbaj extern, puteți utiliza apoi structura simbolică bogată a limbajului Wolfram pentru a crea o funcție convenabilă de nivel superior care permite utilizatorilor să utilizeze cu ușurință orice funcționalitate deja implementată. Cel puțin, acest lucru ar trebui să fie fezabil într-o lume ideală în care există toate blocurile de bază ale bibliotecilor de încărcare etc., caz în care acestea ar fi gestionate automat de Wolfram Language. (Trebuie remarcat faptul că în practică pot exista probleme cu
Apropo, atunci când te uiți pentru prima dată la bibliotecile externe tipice, acestea par adesea prea complexe pentru a fi acoperite doar în câteva funcții, dar în multe cazuri, o mare parte din complexitate provine din crearea infrastructurii necesare bibliotecii și a tuturor funcțiilor pentru susține-l. Cu toate acestea, atunci când utilizați limbajul Wolfram, infrastructura este de obicei deja încorporată în pachete și, prin urmare, nu este nevoie să expuneți toate aceste funcții de asistență în detaliu, ci doar să creați funcții pentru cele mai „de sus” funcții specifice aplicației din bibliotecă. .
„Ecosistemul” bazei de cunoștințe
Dacă ați scris funcții pe care le utilizați în mod regulat, trimiteți-le în Depozitul de funcții Wolfram! Dacă nu iese ceva mai mult din asta (dezvoltarea limbii), atunci chiar și atunci îți va fi mult mai convenabil să folosești funcțiile pentru uz personal. Cu toate acestea, este logic să presupunem că dacă utilizați funcțiile în mod regulat, poate că și alți utilizatori le vor găsi utile.
Desigur, s-ar putea să vă aflați într-o situație în care nu puteți - sau nu doriți - să vă împărtășiți funcțiile sau în cazul în care obțineți acces la resurse de informații private. Chiar și în astfel de cazuri, puteți implementa pur și simplu funcțiile în propriul cont cloud,
Funcțiile pe care le trimiteți la depozitul de funcții Wolfram nu trebuie să fie perfecte; trebuie doar să fie utile. Aceasta este un pic ca secțiunea „Erori” din documentația clasică Unix - în „Secțiunea Definiții” există o secțiune „Notele autorului” unde puteți descrie limitări, probleme etc. pe care le cunoașteți deja despre funcția dvs. În plus, atunci când trimiteți caracteristica dvs. în depozit, puteți adăuga note de trimitere care vor fi citite de o echipă dedicată de curatori.
Odată ce o caracteristică este publicată, pagina sa are întotdeauna două link-uri în partea de jos: "
Uneori doriți doar să utilizați funcții din depozitul de funcții Wolfram, cum ar fi funcțiile încorporate, fără să vă uitați la codul lor. Cu toate acestea, dacă doriți să aruncați o privire în interior, există întotdeauna un buton Notepad în partea de sus. Faceți clic pe el și veți obține propria copie a caietului de definiții original care a fost trimis în depozitul de caracteristici. Uneori îl poți folosi doar ca exemplu pentru nevoile tale. În același timp, puteți dezvolta și propria dvs. modificare a acestei funcții. Poate doriți să postați aceste funcții pe care le-ați găsit din depozit pe computer sau în contul dvs. de stocare în cloud afide, poate doriți să le trimiteți în baza de cunoștințe a funcției, poate ca o versiune îmbunătățită și extinsă a funcției originale.
În viitor, intenționăm să acceptăm forking în stil Git pentru depozitele de caracteristici, dar deocamdată încercăm să menținem totul simplu și avem întotdeauna o singură versiune acceptată a fiecărei caracteristici încorporată în limbaj. De cele mai multe ori (cu excepția cazului în care dezvoltatorii renunță la menținerea funcțiilor pe care le-au dezvoltat și răspund la trimiterile utilizatorilor), autorul original al caracteristicii preia controlul asupra actualizărilor acesteia și trimite versiuni noi, care sunt apoi revizuite și, dacă trec procesul de revizuire , publicat în limba.
Să luăm în considerare întrebarea cum funcționează „versiunea” funcțiilor dezvoltate. În acest moment, atunci când utilizați o funcție din depozitul de funcții, definiția acesteia va fi stocată permanent pe computerul dvs. (sau în contul dvs. cloud dacă utilizați cloud). Dacă este disponibilă o nouă versiune a unei funcții, data viitoare când o utilizați, veți primi un mesaj care vă anunță acest lucru. Și dacă doriți să actualizați funcția la o versiune nouă, o puteți face folosind comanda
Unul dintre lucrurile frumoase despre Wolfram Function Repository este că orice program Wolfram Language, oriunde poate folosi funcții din acesta. Dacă un program apare într-un bloc de note, este adesea convenabil să formatați funcțiile de depozit ca funcții ușor de citit „obiect binar funcțional” (poate cu un set de versiuni adecvat).
Puteți accesa oricând orice funcție din depozitul de funcții folosind text
Cum funcționează?
În interiorul funcțiilor din depozitul Wolfram, acest lucru este posibil folosind exact același lucru
Lua în considerare
În interior puteți vedea câteva informații folosind funcția
Cum funcționează configurarea unei funcții de resursă? Cel mai simplu este un caz pur local. Iată un exemplu care preia o funcție (în acest caz doar o funcție pură) și o definește ca o funcție de resursă pentru o anumită sesiune de program:
Odată ce ați făcut definiția, puteți utiliza funcția de resurse:
Rețineți că există o pictogramă neagră în acest blob de funcție . Aceasta înseamnă că funcția BLOB se referă la funcția de resurse în memorie definită pentru sesiunea curentă. O funcție de resursă care este stocată permanent pe computer sau în contul dvs. în cloud are o pictogramă gri . Și există o pictogramă portocalie pentru o funcție oficială de resursă în Depozitul de caracteristici Wolfram .
Deci, ce se întâmplă când utilizați meniul Expand din Definition Notebook? În primul rând, ia toate definițiile din blocnotes și din ele creează un simbol
Implementarea locală a unei funcții dintr-un depozit de pe computerul dvs. se realizează folosind comanda
Dacă faceți clic pe butonul Trimitere pentru un depozit de funcții, ce se întâmplă sub acesta
În mod implicit, trimiterile sunt făcute sub numele asociat ID-ului dumneavoastră Wolfram. Dar dacă depuneți o cerere în numele unei echipe de dezvoltare sau al unei organizații, puteți
După ce ați trimis oricare dintre funcțiile dvs. la baza de cunoștințe ale funcției, aceasta va fi pusă în coadă pentru examinare. Dacă primiți comentarii ca răspuns, acestea vor fi de obicei sub forma unui fișier text cu „celule de comentarii” suplimentare adăugate. Puteți verifica oricând starea cererii dvs. vizitând
Câteva subtilități la locul de muncă
La prima vedere, poate părea că poți doar să iei un caiet de definiții și să-l pui textual într-un depozit de funcții, cu toate acestea, există de fapt o mulțime de subtilități implicate - și gestionarea lor necesită realizarea unor meta-programare destul de complexe, gestionarea procesării simbolice ca codul care definește funcția, iar Notepad-ul în sine este definit. Cele mai multe dintre acestea se întâmplă în interior, în culise, dar poate avea unele implicații care merită înțelese dacă veți contribui la baza de cunoștințe a caracteristicilor.
Prima subtilitate imediată: când completați caietul de definiții, puteți pur și simplu să vă referiți la funcția dvs. peste tot folosind un nume precum Funcția mea, care arată ca un nume obișnuit pentru o funcție în limbajul Wolfram, dar pentru documentația depozitului de funcții aceasta este înlocuită
A doua subtilitate: atunci când creați o funcție de resursă din Definition Notebook, toate dependențele implicate în definirea funcției trebuie să fie capturate și incluse în mod explicit. Cu toate acestea, pentru a vă asigura că definițiile rămân modulare, trebuie să puneți totul într-un mod unic
De obicei, nu veți vedea niciodată nicio urmă a codului folosit pentru a configura acest spațiu de nume. Dar dacă din anumite motive apelați un simbol sub-executat în interiorul funcției dvs., atunci veți vedea că acest simbol se află în contextul intern al funcției. Cu toate acestea, atunci când se prelucrează Blocul de note cu definiții, cel puțin simbolul corespunzător funcției în sine este
Depozitul de funcții este pentru definirea de noi funcții. Și aceste funcții pot avea opțiuni. Adesea, acești parametri (de exemplu,
Majoritatea funcțiilor pur și simplu fac ceea ce ar trebui să facă de fiecare dată când sunt apelate, dar unele funcții trebuie inițializate înainte de a putea rula într-o anumită sesiune - și pentru a rezolva această problemă, există o secțiune „Inițializare” în secțiunea Definiție.
Funcțiile dintr-un depozit pot folosi alte funcții care sunt deja în depozit; pentru a seta definiții pentru un depozit de funcții care include două (sau mai multe) funcții care se referă una la alta, trebuie să le implementați în sesiunea de program, astfel încât să puteți referință ca pe ele
Perspective de dezvoltare. Ce ar trebui să se întâmple când depozitul devine cu adevărat mare?
Astăzi tocmai lansăm Depozitul de caracteristici Wolfram, dar în timp ne așteptăm ca dimensiunea și funcționalitatea acestuia să crească dramatic și, pe măsură ce crește în dezvoltare, vor apărea diverse probleme pe care deja anticipăm că pot apărea.
Prima problemă se referă la numele funcțiilor și unicitatea acestora. Depozitul de funcții este proiectat în așa fel încât, ca și funcțiile încorporate în limbajul Wolfram, puteți face referire la orice funcție dată pur și simplu specificând numele acesteia. Dar acest lucru înseamnă inevitabil că numele funcțiilor trebuie să fie unice la nivel global în depozit, astfel încât, de exemplu, să poată exista doar unul
Aceasta poate părea o problemă mare la început, dar merită să realizați că este practic aceeași problemă ca și pentru lucruri precum domeniile de internet sau mânerele rețelelor sociale. Și adevărul este că sistemul trebuie pur și simplu să aibă un registrator - și acesta este unul dintre rolurile pe care compania noastră le va îndeplini pentru baza de cunoștințe a funcției Wolfram. (Pentru versiunile private ale unui depozit, registratorii lor pot fi administratori.) Desigur, un domeniu de Internet poate fi înregistrat fără a avea nimic pe el, dar într-un depozit de funcții, un nume de funcție poate fi înregistrat numai dacă există o definiție reală a functia.
O parte a rolului nostru în gestionarea bazei de cunoștințe a funcției Wolfram este să ne asigurăm că numele ales pentru o funcție este logic, având în vedere definiția funcției și că respectă convențiile de denumire Wolfram Language. Avem peste 30 de ani de experiență în denumirea funcțiilor încorporate în limbajul Wolfram, iar echipa noastră de curatori va aduce această experiență și în depozitul de funcții. Desigur, există întotdeauna excepții. De exemplu, poate părea de preferat să aveți un nume scurt pentru o anumită funcție, dar este mai bine să „apărați” cu un nume mai lung și mai specific, deoarece este mai puțin probabil să întâlniți cineva care dorește să creeze un nume de funcție similar în viitor .
(Trebuie remarcat aici că simpla adăugare a unor etichete de membru pentru a dezambigua funcțiile nu va avea efectul dorit. Deoarece dacă nu insistați să atribuiți întotdeauna o etichetă, va trebui să definiți o etichetă implicită pentru orice funcție dată și, de asemenea, să alocați etichete de autor. , care din nou ar necesita o coordonare globală.)
Pe măsură ce baza de cunoștințe a funcțiilor Wolfram crește, una dintre problemele care va apărea probabil este descoperirea funcțiilor, pentru care sistemul oferă
Pentru funcțiile încorporate în limbajul Wolfram există un așa-numit strat de detectare oferit de
Depozitul de funcții Wolfram este configurat ca un depozit de funcții persistente, unde orice funcție din el va funcționa întotdeauna. Desigur, pot deveni disponibile versiuni noi de funcții și ne așteptăm ca unele caracteristici să devină depășite în timp. Funcțiile vor funcționa dacă sunt utilizate în programe, dar paginile lor de documentație vor face legătura cu funcții noi, mai avansate.
Depozitul de caracteristici Wolfram este conceput pentru a vă ajuta să descoperiți rapid noi funcții și să învățați noi moduri de a utiliza limbajul Wolfram. Suntem foarte optimiști că o parte din ceea ce a fost explorat în depozitul de caracteristici va avea sens în cele din urmă să devină părți încorporate ale limbajului Wolfram de bază. În ultimul deceniu am avut un set similar
Cel mai important lucru aici este că o funcție dintr-un depozit de funcții este ceva disponibil pentru fiecare utilizator pentru a o utiliza chiar acum. Este posibil ca o caracteristică a limbii native să fie mult mai bună și mai performantă, dar un depozit de caracteristici ar permite utilizatorilor să aibă acces imediat la toate funcțiile noi. Și, cel mai important, acest concept permite tuturor să adauge orice caracteristici noi doresc.
Mai devreme în istoria limbajului Wolfram, această idee nu ar fi funcționat la fel de bine cum a funcționat, dar în acest stadiu există atât de mult efort depus în limbaj și o înțelegere atât de profundă a principiilor de proiectare a limbajului, încât acum pare foarte este posibil ca o comunitate mare de utilizatori să adauge funcții care vor menține coerența designului pentru a le face utile unei game largi de utilizatori.
Există un spirit incredibil de talent(?) în comunitatea de utilizatori Wolfram Language. (Desigur, această comunitate include mulți oameni de top în cercetare și dezvoltare într-o varietate de domenii.) Sper că Wolfram Feature Repository va oferi o platformă eficientă pentru deblocarea și diseminarea acestui spirit de talent. Numai împreună putem crea ceva care să extindă semnificativ aria în care poate fi aplicată paradigma de calcul al limbajului Wolfram.
În mai bine de 30 de ani, am parcurs un drum lung cu limba Wolfram. Acum împreună, să mergem și mai departe. Încurajez cu tărie toți utilizatorii respectați ai limbajului Wolfram din întreaga lume să folosească depozitul funcțional ca platformă pentru aceasta, precum și noul proiect software, cum ar fi Free Wolfram Engine for Developers.
Sursa: www.habr.com