Pozdrav, Habr! Vašoj pozornosti predstavljam prijevod posta Stephena Wolframa
Preduvjeti za konzistentnost Wolfram jezika
Danas stojimo na pragu velikih postignuća zajedno s programskim jezikom
Wolfram Function Repository nešto je što je omogućila jedinstvena priroda Wolfram jezika ne samo kao programskog jezika, već i kao
Na primjer, spremište funkcija Wolfram već sadrži
Isto tako više od
Da biste došli do stranice, kopirajte gornji objekt (funkcija BLOB), zalijepite ga u redak za unos i zatim pokrenite funkciju - već je ugrađena u jezik Wolfram i podržana prema zadanim postavkama počevši od
Ovdje treba napomenuti da prilikom obrade
Nadam se da uz podršku
Funkcije iz repozitorija mogu sadržavati male ili velike dijelove koda napisane u jeziku Wolfram. Na primjer, to mogu biti pozivi
Shell i programska struktura Wolfram Feature Repository dizajnirana je tako da svatko može doprinijeti zajedničkoj stvari na najjednostavniji i najprikladniji način za njih - zapravo, samo
Postoji mnogo kompromisa i detalja u ovom pristupu, ali naš je cilj optimizirati skladište značajki Wolfram za korisničko iskustvo i osigurati da nove korisničke značajke značajno pridonose razvoju jezika. Kako rastemo, ne sumnjam da ćemo morati izmisliti nove metode za obradu i provjeru valjanosti funkcija ugrađenih u repozitorij, ne samo za organiziranje velikog broja funkcija i pronalaženje onih koje su korisnicima potrebne. Ipak, ohrabruje činjenica da je put koji smo odabrali dobar početak. Ja osobno
Povećanje učinkovitosti uz smanjenje troškova
Čak i prije interneta, postojali su načini dijeljenja koda jezika Wolfram (naš prvi veliki centralizirani projekt bio je
Više od 30 godina naša tvrtka marljivo radi na održavanju integriteta strukture jezika Wolfram, a to je ključno za osiguranje da jezik Wolfram postane ne samo programski jezik, već i
U strukturi implementacije svake funkcije pojavljuju se različiti računalni procesi. Ovdje treba napomenuti da je nužno da funkcija ima jasan i ujednačen izgled te vizualnu čitljivost za korisnika. U tom kontekstu, ugrađene funkcije jezika Wolfram predstavljene su s više od 6000 sekvencijalnih primjera kako pravilno programirati funkcije (ovo su naši
Stvaranje repozitorija koji zapravo dobro radi zanimljiv je zadatak metaprogramiranja. Na primjer, višak ograničenja u programu neće omogućiti postizanje potrebne unifikacije i univerzalnosti algoritma. Kao što kod nedovoljnog broja funkcionalnih ograničenja nećete moći implementirati dovoljno točan slijed izvršavanja algoritma. Nekoliko prethodnih primjera implementacije kompromisa ovih pristupa, koje je implementirala naša tvrtka, radilo je prilično stabilno - to su:
Svi navedeni primjeri imaju temeljnu značajku - objekti i funkcije prikupljeni u projektu imaju vrlo visok stupanj strukturiranosti i distribucije procesa. Naravno, detalji strukture onoga što je demo ili neuronska mreža ili nešto drugo mogu uvelike varirati, ali temeljna struktura za bilo koje trenutno spremište uvijek ostaje ista. Dakle, koje je vaše mišljenje, dragi korisniče, o stvaranju takvog repozitorija koji dodaje proširenja jeziku Wolfram? Wolfram Language je dizajniran da bude izuzetno fleksibilan, tako da se može proširivati i modificirati na bilo koji način. Ova je okolnost izuzetno važna za mogućnost brzog stvaranja raznih softverskih projekata velikih razmjera u jeziku Wolfram. Ovdje treba napomenuti da će se s povećanjem fleksibilnosti jezika troškovi projekata koji se implementiraju na takvom jeziku neizbježno povećati. To je zbog činjenice da što više korisnik koristi takav jezik, dobiva više namjenske funkcionalnosti, ali ne treba zaboraviti da ovakav pristup može imati i negativne strane u smislu nemogućnosti osiguranja konzistentne konzistentnosti programskih modula.
Postoji čest problem s bibliotekama u tradicionalnim programskim jezicima - ako koristite jednu biblioteku, na primjer, kod će raditi ispravno, ali ako pokušate koristiti više biblioteka, nema jamstva da će one međusobno ispravno komunicirati . Također, u tradicionalnim programskim jezicima - za razliku od punopravnog računalnog jezika - ne postoji način da se jamči prisutnost dosljednih ugrađenih prikaza za bilo koje funkcije ili tipove podataka osim njihovih osnovnih struktura. Ali, zapravo, problem je čak i veći nego što se čini na prvi pogled: ako se gradi vertikala funkcionalnosti velikih razmjera, tada je nemoguće bez ogromnih troškova centraliziranog projektnog programiranja koje stavljamo u jezik Wolfram postići dosljednost. Stoga je važno da svi softverski moduli uvijek ispravno rade zajedno.
Dakle, ideja iza repozitorija značajki Wolfram je izbjeći gore navedeni problem jednostavnim dodavanjem proširenja jeziku u relativno malim dijelovima koda putem pojedinačnih značajki koje je lakše razviti kao koherentne module. Imajući to u vidu, postoje značajke programiranja koje se ne mogu učiniti praktičnim korištenjem pojedinačnih funkcija (i naša tvrtka planira objaviti optimizirani algoritam programiranja u bliskoj budućnosti kako bi pomogla u implementaciji velikih softverskih paketa). Međutim, na temelju funkcija koje su već ugrađene u jezik Wolfram, postoje mnoge mogućnosti programiranja koje se implementiraju na temelju pojedinačnih funkcija. Ideja ovdje je da je uz relativno malo programiranja moguće stvoriti niz novih i vrlo korisnih funkcija koje će osigurati dovoljnu koherentnost dizajna, one će biti međusobno dobro usklađene, a također, uz to, moći će se lako i široko koristiti u jeziku u budućnosti.
Ovaj pristup je, naravno, kompromis. Kada bi se implementirao veći paket, mogao bi se zamisliti cijeli novi svijet funkcionalnosti koji bi bio iznimno moćan i koristan. Ako postoji potreba za novom funkcionalnošću koja će se uklopiti u sve ostalo, ali niste spremni uložiti puno truda u razvoj projekta, to, nažalost, može dovesti do smanjenja opsega vašeg projekta. Ideja koja stoji iza repozitorija značajki Wolfram je pružiti funkcionalnost definirajućem dijelu projekta; ovaj pristup će dodati snažnu funkcionalnost istovremeno olakšavajući održavanje dobre dosljednosti u programskom projektu.
Pomoć pri dodavanju prilagođenih funkcija u spremište funkcija
Naš tim naporno je radio kako bi korisnicima olakšao doprinos značajkama Wolfram repozitorija. Na radnoj površini (već u
Postoje dva glavna koraka koja ćete morati izvršiti: prvo, zapravo zapišite kod za svoju funkciju i, drugo, zapišite dokumentaciju koja ilustrira kako vaša funkcija treba raditi.
Kliknite gumb "Otvori uzorak" na vrhu kako biste vidjeli primjer onoga što trebate učiniti:
U biti, pokušavate stvoriti nešto slično ugrađenoj funkciji u jeziku Wolfram. Osim što može učiniti nešto puno specifičnije od ugrađene funkcije. Istovremeno, očekivanja u pogledu njegove cjelovitosti i pouzdanosti bit će znatno niža.
Svojoj funkciji trebate dati naziv koji slijedi smjernice za imenovanje funkcija jezika Wolfram. Osim toga, trebat ćete razviti dokumentaciju za svoju funkciju, sličnu ugrađenim funkcijama jezika. O tome ću detaljnije govoriti kasnije. Za sada samo primijetite da se u redu gumba na vrhu datoteke definicije bilježnice nalazi gumb
Kada ste sigurni da je sve ispravno popunjeno i da ste spremni, kliknite gumb "Provjeri". Sasvim je normalno da još niste shvatili sve detalje. Tako će se funkcija "Provjeri" automatski pokrenuti i izvršiti mnoge provjere stila i dosljednosti. Često će vas odmah tražiti da potvrdite i prihvatite ispravke (Na primjer: "Ovaj redak mora završavati dvotočkom," i od vas će se tražiti da unesete dvotočku). Ponekad će vas zamoliti da sami nešto dodate ili promijenite. Neprestano ćemo dodavati nove značajke automatskoj funkciji gumba Provjeri, ali u osnovi je njegova svrha osigurati da sve što pošaljete u repozitorij značajki već pobliže slijedi što više stilskih smjernica
Dakle, nakon pokretanja "Provjeri", možete koristiti "Pregled". "Pregled" stvara pregled stranice dokumentacije koju ste definirali za svoju funkciju. Također možete stvoriti pregled za datoteku stvorenu na vašem računalu ili za datoteku koja se nalazi u pohrani u oblaku. Ako iz nekog razloga niste zadovoljni onim što vidite u pretpregledu, jednostavno se vratite i izvršite potrebne ispravke, a zatim ponovno kliknite gumb Pregled.
Sada ste spremni gurnuti svoju funkciju u repozitorij. Gumb Deploy daje vam četiri mogućnosti:
Važna stvar u ovom koraku je da možete poslati svoju funkciju u Wolframov repozitorij funkcija tako da bude dostupna svima. Istodobno, svoju funkciju možete postaviti i za ograničeni broj korisnika. Na primjer, možete stvoriti funkciju koja se nalazi lokalno na vašem računalu tako da bude dostupna kada koristite to određeno računalo. Ili ga možete objaviti u svom
Recimo da zapravo želite poslati svoju funkciju u bazu znanja o funkcijama Wolfram. Da biste to učinili, kliknite gumb "Pošalji" u repozitorij. Pa što se onda događa u ovom trenutku? Vaša prijava odmah je stavljena u red čekanja za pregled i odobrenje našeg predanog tima kustosa.
Kako vaša prijava bude prolazila kroz proces odobravanja (koji obično traje nekoliko dana), primit ćete obavijesti o njenom statusu i moguće prijedloge za buduću upotrebu. Ali nakon što vaša značajka bude odobrena, bit će odmah objavljena u Wolfram Feature Repository i bit će dostupna svima za korištenje. (I ovo će se pojaviti u
Što bi trebalo biti u spremištu?
Treba napomenuti da naša tvrtka ima vrlo visoke standarde za cjelovitost, pouzdanost i ukupnu kvalitetu, a od 6000+ funkcija koje smo već ugradili u jezik Wolfram tijekom proteklih 30+ godina, sve ispunjavaju gore navedene zahtjeve. Cilj Wolfram Function Repository je koristiti svu strukturu i funkcionalnost koja već postoji u jeziku Wolfram kako bi se dodalo što više lakših funkcija (to jest, funkcija s većom izvedbom).
Naravno, funkcije u repozitoriju funkcija Wolfram moraju biti u skladu s načelima dizajna jezika Wolfram - tako da mogu u potpunosti komunicirati s drugim funkcijama i očekivanjima korisnika o tome kako bi funkcija trebala ispravno raditi. Međutim, funkcije ne moraju biti jednake cjelovitosti ili pouzdanosti.
U ugrađenim funkcijama jezika Wolfram naporno radimo na tome da programske funkcije budu što općenitije moguće. Uz to, kada ste u repozitoriju funkcija Wolfram, nema ništa loše u tome da u njemu imate funkciju koja jednostavno obrađuje neki vrlo specifičan, ali koristan slučaj. Na primjer, funkcija
Još jedna točka povezana s ugrađenim funkcijama je da naša tvrtka ulaže sve napore da obradi sve atipične slučajeve, da ispravno obradi netočan unos i tako dalje. U repozitoriju funkcija potpuno je normalno da postoji posebna funkcija koja obrađuje glavne slučajeve rješavanja problema i zanemaruje sve ostale.
Očigledno je da je bolje imati funkcije koje rade više i bolje, ali optimizacija za repozitorij funkcija - za razliku od ugrađenih funkcija jezika Wolfram - trebala bi imati više funkcija u paketu s više funkcija umjesto da se zadubljuje u procese implementacije svake specifične funkcije.
Sada pogledajmo primjer testiranja funkcija u repozitoriju. Očekivanja dosljednosti za takve funkcije su prirodno mnogo niža nego za funkcije ugrađenog jezika. To je osobito istinito u slučajevima kada funkcije ovise o vanjskim resursima kao što su API-ji, važno je stalno provoditi dosljedna testiranja, što se automatski događa unutar algoritama verifikacije. U nb datoteci možete eksplicitno navesti definicije (u odjeljku Dodatne informacije) i navesti onoliko testova koliko je definirano ulaznim i izlaznim nizovima ili punim karakternim objektima tipa
Kao rezultat toga, repozitorij funkcija će imati brojne složenosti implementacije. Neki će biti samo jedan redak koda, drugi mogu uključivati tisuće ili desetke tisuća redaka, vjerojatno koristeći mnoge pomoćne funkcije. Kada se isplati dodati funkciju koja zahtijeva vrlo malo koda za definiranje? Uglavnom, ako za funkciju postoji
Glavna svrha repozitorija funkcija (kao što mu ime sugerira) je uvođenje novih značajki u jezik. Ako želite dodati nove podatke ili
Zapravo postoje dva načina. Možda ćete htjeti uvesti novi tip objekta koji će se koristiti u novim funkcijama u repozitoriju funkcija. I u ovom slučaju, uvijek možete samo zapisati njegovu simboličku reprezentaciju i koristiti je prilikom unosa ili izlaza funkcija u repozitorij funkcija.
Ali što ako želite predstaviti objekt i zatim definirati, kroz postojeće funkcije u jeziku Wolfram, da želite raditi s njim? Wolfram Language je uvijek imao lagani mehanizam za to, tzv
Dakle, što bi moglo biti u kodu funkcije u repozitoriju funkcija?
Treba li sav kod za repozitorij značajki Wolfram biti napisan u Wolframu? Svakako, kod unutar vanjskog API-ja ne bi trebao biti napisan na jeziku Wolfram, koji čak i ne čini jezični kod. Zapravo, ako pronađete funkciju u gotovo bilo kojem vanjskom jeziku ili biblioteci, možete stvoriti omot koji vam omogućuje da je koristite u Wolfram repozitoriju funkcija. (Obično biste za to trebali koristiti ugrađene funkcije
Dakle, koja je svrha raditi ovo? U biti, ovo vam omogućuje da koristite cijeli integrirani sustav Wolfram Language i njegov cijeli objedinjeni skup softverskih mogućnosti. Ako dobijete osnovnu implementaciju iz vanjske biblioteke ili jezika, tada možete koristiti bogatu simboličku strukturu jezika Wolfram za stvaranje prikladne funkcije najviše razine koja korisnicima omogućuje jednostavnu upotrebu bilo koje već implementirane funkcionalnosti. U najmanju ruku, ovo bi trebalo biti izvedivo u idealnom svijetu u kojem postoje svi sastavni dijelovi učitavanja knjižnica itd., u kojem bi slučaju njima automatski upravljao jezik Wolfram. (Treba napomenuti da u praksi može biti problema s
Usput, kada prvi put pogledate tipične vanjske knjižnice, često se čine previše složene da bi bile pokrivene u samo nekoliko funkcija, ali u mnogim slučajevima, velik dio složenosti dolazi od stvaranja infrastrukture potrebne za knjižnicu i sve funkcije za podržati to. Međutim, kada koristite jezik Wolfram, infrastruktura je obično već ugrađena u pakete, pa nema potrebe detaljno izlagati sve ove funkcije podrške, već samo stvoriti funkcije za "najviše" funkcije specifične za aplikaciju u biblioteci. .
"Ekosustav" baze znanja
Ako ste napisali funkcije koje redovito koristite, pošaljite ih u Wolfram Function Repository! Ako iz ovoga ne proizađe nešto više (jezični razvoj), čak i tada će vam biti mnogo prikladnije koristiti funkcije za osobnu upotrebu. Međutim, logično je pretpostaviti da ako redovito koristite funkcije, možda će i drugim korisnicima biti korisne.
Naravno, možete se naći u situaciji u kojoj ne možete - ili ne želite - dijeliti svoje funkcije ili u slučaju dobivanja pristupa privatnim izvorima informacija. Čak i u takvim slučajevima, možete jednostavno implementirati funkcije na svom vlastitom računu u oblaku,
Funkcije koje šaljete u Wolframov repozitorij funkcija ne moraju biti savršene; samo moraju biti korisni. Ovo je pomalo poput odjeljka "Pogreške" u klasičnoj Unix dokumentaciji - u "Odjeljku definicija" postoji odjeljak "Bilješke autora" gdje možete opisati ograničenja, probleme itd. koje već znate o svojoj funkciji. Osim toga, kada pošaljete svoju značajku u repozitorij, možete dodati bilješke o predaji koje će pročitati posvećeni tim kustosa.
Nakon što je značajka objavljena, njena stranica uvijek ima dvije veze na dnu: "
Ponekad samo želite koristiti funkcije iz Wolfram repozitorija funkcija, kao što su ugrađene funkcije, bez gledanja njihovog koda. Međutim, ako želite baciti pogled unutra, na vrhu uvijek postoji gumb Notepad. Kliknite na nju i dobit ćete vlastitu kopiju izvorne definicijske bilježnice koja je poslana u repozitorij značajki. Ponekad ga možete koristiti samo kao primjer za svoje potrebe. U isto vrijeme, također možete razviti vlastitu modifikaciju ove funkcije. Možda ćete htjeti objaviti ove funkcije koje ste pronašli iz repozitorija na svom računalu ili u svom računu za pohranu u oblaku lisnih uši, možda ih želite poslati u bazu znanja o funkcijama, možda kao poboljšanu, proširenu verziju originalne funkcije.
U budućnosti planiramo podržati račvanje u Git stilu za repozitorije značajki, ali za sada se trudimo da bude jednostavno i uvijek imamo samo jednu prihvaćenu verziju svake značajke ugrađene u jezik. Češće nego ne (osim ako razvojni programeri odustanu od održavanja značajki koje su razvili i odgovore na podneske korisnika), izvorni autor značajke preuzima kontrolu nad njezinim ažuriranjima i podnosi nove verzije, koje se zatim pregledavaju i, ako prođu postupak pregleda, , objavljeno na jeziku.
Razmotrimo pitanje kako funkcionira "versioniranje" razvijenih funkcija. Upravo sada, kada koristite funkciju iz repozitorija funkcija, njena će definicija biti trajno pohranjena na vašem računalu (ili na vašem računu u oblaku ako koristite oblak). Ako je dostupna nova verzija značajke, sljedeći put kada je koristite primit ćete poruku koja vas obavještava o tome. A ako želite ažurirati funkciju na novu verziju, možete to učiniti pomoću naredbe
Jedna od lijepih stvari kod Wolfram Function Repository je ta da svaki program na jeziku Wolfram, bilo gdje, može koristiti funkcije iz njega. Ako se program pojavi u bilježnici, često je zgodno formatirati funkcije repozitorija kao jednostavne funkcije "funkcijski binarni objekt" (možda s odgovarajućim postavljenim verzijama).
Uvijek možete pristupiti bilo kojoj funkciji u repozitoriju funkcija pomoću teksta
Kako se to radi?
Unutar funkcija u Wolfram repozitoriju to je moguće pomoću potpuno istih
Uzeti u obzir
Unutra možete vidjeti neke informacije pomoću funkcije
Kako funkcionira postavljanje funkcije resursa? Najjednostavniji je čisto lokalni slučaj. Evo primjera koji uzima funkciju (u ovom slučaju samo čistu funkciju) i definira je kao funkciju resursa za danu sesiju programa:
Nakon što napravite definiciju, možete koristiti funkciju resursa:
Imajte na umu da postoji crna ikona u ovoj funkcijskoj mrljici . To znači da se funkcija BLOB odnosi na funkciju resursa u memoriji definiranu za trenutnu sesiju. Značajka resursa koja je trajno pohranjena na vašem računalu ili računu u oblaku ima sivu ikonu . Tu je i narančasta ikona za značajku službenog resursa u Wolfram Feature Repository .
Dakle, što se događa kada koristite izbornik Proširi u Bilježnici definicija? Prvo, uzima sve definicije u bilježnici i iz njih stvara simboliku
Lokalna implementacija funkcije iz repozitorija na vašem računalu izvodi se pomoću naredbe
Ako kliknete gumb Pošalji za repozitorij funkcija, što se događa ispod njega
Prema zadanim postavkama, podnesci se podnose pod imenom povezanim s vašim Wolfram ID-om. Ali ako podnosite prijavu u ime razvojnog tima ili organizacije, možete
Nakon što pošaljete bilo koju od svojih funkcija u bazu znanja o funkcijama, ona će biti u redu za pregled. Ako dobijete komentare kao odgovor, oni će obično biti u obliku tekstualne datoteke s dodanim dodatnim "ćelijama komentara". Uvijek možete provjeriti status svoje prijave posjetom
Neke suptilnosti na djelu
Na prvi pogled može se činiti da jednostavno možete uzeti bilježnicu s definicijama i doslovno je staviti u spremište funkcija, međutim, zapravo je uključeno dosta suptilnosti - a rukovanje njima zahtijeva prilično složeno meta-programiranje, rukovanje simboličkom obradom kao kod koji definira funkciju, a definiran je i sam Notepad. Većina toga događa se interno, iza scene, ali može imati neke implikacije koje vrijedi razumjeti ako namjeravate pridonijeti bazi znanja o značajkama.
Prva neposredna suptilnost: kada ispunite Bilježnicu definicija, možete se jednostavno svugdje pozivati na svoju funkciju koristeći naziv kao što je Moja Funkcija, koji izgleda kao uobičajeni naziv za funkciju u jeziku Wolfram, ali za dokumentaciju repozitorija funkcija ovo je zamijenjeno
Druga suptilnost: kada kreirate funkciju resursa iz Bilježnice definicija, sve ovisnosti uključene u definiciju funkcije moraju biti uhvaćene i eksplicitno uključene. Međutim, kako biste osigurali da definicije ostanu modularne, sve trebate staviti u jedinstveni
Obično nikada nećete vidjeti nikakav trag koda korištenog za konfiguraciju ovog prostora imena. Ali ako iz nekog razloga pozovete nedovoljno izvršen simbol unutar svoje funkcije, tada ćete vidjeti da je taj simbol u unutarnjem kontekstu funkcije. Međutim, kada se obrađuje Definition Notepad, postoji barem simbol koji odgovara samoj funkciji
Repozitorij funkcija služi za definiranje novih funkcija. I ove funkcije mogu imati opcije. Često ovi parametri (npr.
Većina funkcija jednostavno radi ono što bi trebale raditi svaki put kad se pozovu, ali neke funkcije moraju biti inicijalizirane prije nego što se mogu pokrenuti u određenoj sesiji - a za rješavanje ovog problema postoji odjeljak "Inicijalizacija" u odjeljku Definicija.
Funkcije iz repozitorija mogu koristiti druge funkcije koje su već u repozitoriju; kako biste postavili definicije za repozitorij funkcija koje uključuju dvije (ili više) funkcija koje se međusobno referiraju, morate ih implementirati u svojoj programskoj sesiji tako da možete referenca kao na njima
Izgledi razvoja. Što bi se trebalo dogoditi kada skladište postane stvarno veliko?
Danas upravo pokrećemo Wolfram Feature Repository, ali s vremenom očekujemo da bi se njegova veličina i funkcionalnost mogle dramatično povećati, a kako bude rastao u razvoju, pojavit će se različiti problemi za koje već predviđamo da bi se mogli pojaviti.
Prvi problem odnosi se na nazive funkcija i njihovu jedinstvenost. Repozitorij funkcija dizajniran je na takav način da, poput ugrađenih funkcija u jeziku Wolfram, možete referencirati bilo koju funkciju jednostavnim navođenjem njezina naziva. Ali to neizbježno znači da nazivi funkcija moraju biti globalno jedinstveni u čitavom repozitoriju, tako da, na primjer, može postojati samo jedan
Ovo se u početku može činiti kao veliki problem, ali vrijedi shvatiti da je to u osnovi isti problem kao i za stvari kao što su internetske domene ili ručke društvenih medija. A činjenica je da sustav jednostavno mora imati registratora - a to je jedna od uloga koju će naša tvrtka obavljati za bazu znanja Wolfram funkcije. (Za privatne verzije repozitorija, njihovi registrari mogu biti administratori.) Naravno, internetska domena se može registrirati bez ičega na njoj, ali u repozitoriju funkcije, naziv funkcije može se registrirati samo ako postoji stvarna definicija funkcija.
Dio naše uloge u upravljanju bazom znanja o funkcijama Wolfram je osigurati da je naziv odabran za funkciju logičan s obzirom na definiciju funkcije i da slijedi konvencije imenovanja jezika Wolfram. Imamo više od 30 godina iskustva u imenovanju ugrađenih funkcija u jeziku Wolfram, a naš tim kustosa to će iskustvo prenijeti i na repozitorij funkcija. Naravno, uvijek postoje iznimke. Na primjer, može se činiti poželjnijim imati kratak naziv za neku funkciju, ali bolje je "braniti" se dužim, konkretnijim nazivom jer je manja vjerojatnost da ćete u budućnosti naići na nekoga tko želi napraviti sličan naziv funkcije .
(Ovdje treba imati na umu da jednostavno dodavanje neke oznake člana za razjašnjavanje funkcija neće imati željeni učinak. Jer osim ako ne inzistirate na uvijek dodjeljivanju oznake, morat ćete definirati zadanu oznaku za bilo koju datu funkciju i također dodijeliti oznake autora , što bi opet zahtijevalo globalnu koordinaciju.)
Kako baza znanja o Wolframovim funkcijama raste, jedan od problema koji će se vjerojatno pojaviti jest otkrivanje funkcija za koje sustav pruža
Za ugrađene funkcije u jeziku Wolfram postoji takozvani sloj otkrivanja koji osigurava
Wolframov repozitorij funkcija konfiguriran je kao trajni repozitorij funkcija, gdje će svaka funkcija u njemu uvijek raditi. Naravno, nove verzije značajki mogu postati dostupne i očekujemo da će neke značajke s vremenom postati zastarjele. Funkcije će raditi ako se koriste u programima, ali će njihove stranice s dokumentacijom povezivati na nove, naprednije funkcije.
Wolfram Feature Repository osmišljen je kako bi vam pomogao da brzo otkrijete nove značajke i naučite nove načine korištenja jezika Wolfram. Vrlo smo optimistični da će nešto od onoga što je istraženo u repozitoriju značajki na kraju imati smisla da postane ugrađeni dio jezgre jezika Wolfram. Tijekom posljednjeg desetljeća imali smo sličan skup
Najvažnija stvar ovdje je da je funkcija u repozitoriju funkcija nešto što je dostupno svakom korisniku za korištenje upravo sada. Moguće je da bi značajka materinjeg jezika mogla biti mnogo bolja i učinkovitija, ali repozitorij značajki omogućio bi korisnicima da odmah imaju pristup svim novim značajkama. I što je najvažnije, ovaj koncept omogućuje svakome dodavanje bilo koje nove značajke koju želi.
Ranije u povijesti jezika Wolfram ova ideja ne bi funkcionirala tako dobro kao što jest, ali u ovoj fazi toliko je truda uloženo u jezik i tako duboko razumijevanje načela dizajna jezika da se sada čini vrlo velika zajednica korisnika može dodati značajke koje će održati dosljednost dizajna kako bi bile korisne širokom rasponu korisnika.
Postoji nevjerojatan duh talenta (?) u zajednici korisnika jezika Wolfram. (Naravno, ova zajednica uključuje mnoge vodeće ljude iz istraživanja i razvoja u raznim područjima.) Nadam se da će Wolfram Feature Repository pružiti učinkovitu platformu za otključavanje i širenje ovog duha talenta. Samo zajedno možemo stvoriti nešto što će značajno proširiti područje na koje se može primijeniti paradigma računarstva jezika Wolfram.
U više od 30 godina, prešli smo dug put s jezikom Wolfram. Sada zajedno, idemo još dalje. Snažno potičem sve poštovane korisnike jezika Wolfram diljem svijeta da koriste funkcionalni repozitorij kao platformu za to, kao i novi softverski projekt kao što je Free Wolfram Engine for Developers.
Izvor: www.habr.com