Zdravo, Habr! Predstavljam vašoj pažnji prijevod posta Stephena Wolframa
Preduvjeti za konzistentnost Wolfram jezika
Danas stojimo na pragu velikih dostignuća zajedno sa programskim jezikom
Wolfram Function Repository je nešto što je omogućeno jedinstvenom prirodom Wolfram jezika ne samo kao programskog jezika, već i kao
Na primjer, spremište Wolfram funkcija već sadrži
Isto tako više od
Da biste došli do stranice, kopirajte gornji objekt (funkcija BLOB), zalijepite ga u liniju za unos i zatim pokrenite funkciju - već je ugrađena u Wolfram jezik i podržana je po defaultu počevši od
Ovdje treba napomenuti da prilikom obrade
Nadam se da uz podršku
Funkcije iz spremišta mogu sadržavati male ili velike dijelove koda napisane na Wolfram jeziku. Na primjer, to mogu biti pozivi
Shell i programska struktura Wolfram Feature Repository je dizajnirana tako da svako može doprinijeti zajedničkom cilju na najjednostavniji i najprikladniji način za sebe - zapravo, samo
Postoji mnogo kompromisa i detalja u ovom pristupu, ali naš cilj je da optimiziramo spremište Wolfram funkcija i za korisničko iskustvo i da osiguramo da nove korisničke karakteristike značajno doprinose razvoju jezika. Kako rastemo, ne sumnjam da ćemo morati izmisliti nove metode za obradu i validaciju funkcija ugrađenih u spremište, ne samo za organiziranje velikog broja funkcija i pronalaženje onih koje su korisnicima potrebne. Međutim, ohrabruje činjenica da je put koji smo odabrali dobar početak. Ja lično
Povećanje efikasnosti uz smanjenje troškova
Čak i prije Interneta, postojali su načini za dijeljenje Wolfram Language koda (naš prvi veliki centralizirani projekt je bio
Više od 30 godina, naša kompanija je marljivo radila na održavanju integriteta jezičke strukture Wolfram, a to je ključno za osiguranje da Wolfram jezik postane ne samo programski jezik, već i
U implementacionoj strukturi svake funkcije javljaju se različiti računski procesi. Ovdje treba napomenuti da je neophodno da funkcija ima jasan i ujednačen izgled i vizualnu čitljivost za korisnika. U tom kontekstu, ugrađene funkcije Wolfram Languagea predstavljene su s više od 6000 uzastopnih primjera kako pravilno programirati funkcije (ovo su naše
Stvaranje spremišta koje stvarno dobro radi je zanimljiv zadatak metaprogramiranja. Na primjer, višak ograničenja u programu neće omogućiti postizanje potrebne unifikacije i univerzalnosti algoritma. Kao i kod nedovoljnog broja funkcionalnih ograničenja, nećete moći implementirati dovoljno ispravan slijed izvođenja algoritma. Nekoliko prethodnih primjera implementacije kompromisa ovih pristupa, koje je implementirala naša kompanija, radilo je prilično stabilno - a to su:
Svi gore navedeni primjeri imaju fundamentalnu osobinu - objekti i funkcije prikupljeni u projektu imaju vrlo visok stepen strukturiranja i distribucije procesa. Naravno, detalji strukture onoga što je demo ili neuronska mreža ili nešto drugo mogu uvelike varirati, ali osnovna struktura za bilo koje trenutno spremište uvijek ostaje ista. Dakle, kakvo je vaše mišljenje, dragi korisniče, o stvaranju takvog spremišta koje dodaje ekstenzije Wolfram jeziku? Wolfram Language je dizajniran da bude izuzetno fleksibilan, tako da se može proširiti i modificirati na bilo koji način. Ova okolnost je izuzetno važna za mogućnost brzog kreiranja raznih velikih softverskih projekata na jeziku Wolfram. Ovdje treba napomenuti da kako se fleksibilnost jezika povećava, troškovi projekata koji se implementiraju na takvom jeziku neizbježno će rasti. To je zbog činjenice da što više korisnik koristi takav jezik, dobija više namjenske funkcionalnosti, ali ne treba zaboraviti da ovaj pristup može imati i negativne strane u smislu nemogućnosti osiguravanja konzistentnosti programskih modula.
Postoji uobičajeni 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 garancije da će one međusobno pravilno komunicirati. . Također, u tradicionalnim programskim jezicima - za razliku od punopravnog računarskog jezika - ne postoji način da se jamči prisutnost dosljednih ugrađenih reprezentacija 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, onda je bez ogromnih troškova centraliziranog programiranja projekata koje stavljamo u Wolfram jezik nemoguće postići konzistentnost. Stoga je važno da svi softverski moduli uvijek ispravno rade zajedno.
Dakle, ideja iza spremišta Wolfram funkcija je da se izbjegne gore navedeni problem jednostavnim dodavanjem proširenja jeziku u relativno male dijelove koda preko pojedinačnih karakteristika koje je lakše razviti kao koherentne module. Imajući to u vidu, postoje programske karakteristike koje se ne mogu učiniti zgodnim korišćenjem pojedinačnih funkcija (a naša kompanija planira da objavi optimizovani algoritam za programiranje u bliskoj budućnosti kako bi pomogla u implementaciji velikih softverskih paketa). Međutim, na osnovu funkcija koje su već ugrađene u Wolfram Language, postoje mnoge mogućnosti programiranja koje se implementiraju na osnovu pojedinačnih funkcija. Ideja je da je uz relativno malo programskog napora moguće kreirati niz novih i vrlo korisnih funkcija koje će osigurati dovoljnu koherentnost dizajna, biti će međusobno dobro usklađene, a osim toga, 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 čitav novi svijet funkcionalnosti koji bi bio izuzetno moćan i koristan. Ako postoji potreba za nabavkom nove funkcionalnosti koja će se uklopiti u sve ostalo, ali niste voljni uložiti puno truda u razvoj projekta, to, nažalost, može dovesti do smanjenja obima vašeg projekta. Ideja iza repozitorija Wolfram funkcija je da se obezbedi funkcionalnost za definitivni deo projekta, ovaj pristup će dodati moćnu funkcionalnost dok će olakšati održavanje dobre konzistentnosti u projektu programiranja.
Pomozite u dodavanju prilagođenih funkcija u spremište funkcija
Naš tim je naporno radio kako bi korisnicima olakšao doprinos funkcijama 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 ilustruje kako bi vaša funkcija trebala raditi.
Kliknite na dugme "Otvori uzorak" na vrhu da vidite primjer onoga što trebate učiniti:
U suštini, pokušavate stvoriti nešto slično ugrađenoj funkciji u Wolfram Language. Osim što može učiniti nešto mnogo specifičnije od ugrađene funkcije. Istovremeno, očekivanja u pogledu njegove kompletnosti i pouzdanosti bit će znatno manja.
Morate svojoj funkciji dati ime koje slijedi smjernice za imenovanje funkcija u Wolfram Languageu. Osim toga, morat ćete razviti dokumentaciju za svoju funkciju, slično ugrađenim funkcijama jezika. Kasnije ću o tome detaljnije. Za sada, samo primijetite da se u redu dugmadi na vrhu datoteke bilježnice definicije nalazi dugme
Kada ste sigurni da je sve ispravno popunjeno i da ste spremni, kliknite na dugme „Proveri“. Potpuno je normalno da još niste shvatili sve detalje. Dakle, funkcija "Provjeri" će se automatski pokrenuti i obaviti mnogo provjera stila i konzistentnosti. Često će od vas odmah zatražiti da potvrdite i prihvatite ispravke (na primjer: „Ovaj red se mora završavati dvotočkom“, a od vas će se tražiti da unesete dvotočku). Ponekad će od vas tražiti da sami nešto dodate ili promijenite. Stalno ćemo dodavati nove značajke automatskoj funkcionalnosti gumba Provjeri, ali u osnovi njegova je svrha osigurati da sve što pošaljete u spremište značajki već pobliže slijedi što je više moguće stilskih smjernica
Dakle, nakon što pokrenete "Check", možete koristiti "Preview". "Pregled" kreira pregled stranice dokumentacije koju ste definirali za svoju funkciju. Također možete kreirati pregled za datoteku kreiranu na vašem računaru ili za datoteku koja se nalazi u pohrani u oblaku. Ako iz nekog razloga niste zadovoljni onim što vidite u pregledu, jednostavno se vratite i izvršite potrebne ispravke, a zatim ponovo kliknite na dugme Pregled.
Sada ste spremni da gurnete svoju funkciju u spremište. Dugme Deploy vam daje četiri opcije:
Važna stvar u ovom koraku je da svoju funkciju možete poslati u spremište Wolfram funkcija tako da bude dostupna svima. Istovremeno, svoju funkciju možete postaviti i za ograničen broj korisnika. Na primjer, možete kreirati funkciju koja se nalazi lokalno na vašem računalu tako da je dostupna kada koristite taj određeni računar. Ili ga možete objaviti u svom
Dakle, recimo da želite da svoju funkciju zapravo pošaljete u bazu znanja o funkciji Wolfram. Da biste to učinili, kliknite na dugme “Pošalji” u spremište. Pa šta se onda dešava u ovom trenutku? Vaša prijava je odmah u redu za pregled i odobrenje od strane našeg posvećenog tima kustosa.
Kako vaša aplikacija bude napredovala kroz proces odobravanja (koji obično traje nekoliko dana), primit ćete komunikacije u vezi sa njenim statusom i moguće prijedloge za buduću upotrebu. Ali kada vaša funkcija bude odobrena, odmah će biti objavljena u Wolfram Feature Repository i bit će dostupna svima za korištenje. (I ovo će se pojaviti u
Šta bi trebalo biti u skladištu?
Treba napomenuti da naša kompanija ima vrlo visoke standarde za kompletnost, pouzdanost i ukupni kvalitet, a od 6000+ funkcija koje smo već ugradili u Wolfram jezik u proteklih 30+ godina, sve ispunjavaju gore navedene zahtjeve. Cilj Wolfram Function Repository-a je da koristi svu strukturu i funkcionalnost koja već postoji u Wolfram Language-u kako bi se dodalo što više lakših funkcija (tj. funkcija viših performansi).
Naravno, funkcije u skladištu Wolfram funkcija moraju biti u skladu sa principima dizajna Wolfram jezika - tako da mogu u potpunosti komunicirati s drugim funkcijama i očekivanjima korisnika o tome kako funkcija treba ispravno raditi. Međutim, funkcije ne moraju biti jednake kompletnosti ili pouzdanosti.
U ugrađenim funkcijama jezika Wolfram, naporno radimo na tome da funkcije programiranja budu što je moguće općenitije. S obzirom na to, kada ste u spremištu Wolfram funkcija, nema ništa loše u tome da u njemu imate funkciju koja jednostavno obrađuje neke vrlo specifične, ali korisne slučajeve. Na primjer, funkcija
Još jedna stvar vezana za ugrađene funkcije je da se naša kompanija trudi da obradi sve netipične slučajeve, da pravilno rukuje netačnim unosom itd. U spremištu funkcija, sasvim je normalno da postoji posebna funkcija koja obrađuje glavne slučajeve rješavanja problema i zanemaruje sve ostale.
Očigledna stvar je da je bolje imati funkcije koje rade više i to rade bolje, ali optimizacija za spremište funkcija - za razliku od ugrađenih funkcija jezika Wolfram - trebala bi imati više funkcija u paketu s više funkcija umjesto da se udubljuje u procese implementacije svake specifične funkcije.
Pogledajmo sada primjer testiranja funkcija u spremištu. Očekivanja konzistentnosti za takve funkcije su prirodno mnogo niža nego za funkcije ugrađenog jezika. Ovo je posebno istinito u slučajevima kada funkcije zavise od vanjskih resursa kao što su API-ji, važno je stalno provoditi konzistentne testove, što se automatski dešava unutar algoritama za verifikaciju. U nb datoteci možete eksplicitno specificirati definicije (u odjeljku Dodatne informacije) i specificirati onoliko testova koliko je definirano bilo ulaznim i izlaznim nizovima ili objektima punog karaktera tipa
Kao rezultat toga, spremište funkcija će imati brojne složenosti implementacije. Neki će biti samo jedan red koda, drugi mogu uključivati hiljade ili desetine hiljada linija, vjerovatno koristeći mnoge pomoćne funkcije. Kada se isplati dodati funkciju koja zahtijeva vrlo malo koda za definiranje? U osnovi, ako za funkciju postoji
Glavna svrha spremišta funkcija (kao što mu ime govori) je uvođenje novih karakteristika 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 spremištu funkcija. I u ovom slučaju, uvijek možete jednostavno zapisati njegov simbolički prikaz i koristiti ga prilikom unosa ili izlaza funkcija u spremištu funkcija.
Ali šta ako želite da predstavite objekat, a zatim definišete, kroz postojeće funkcije u jeziku Wolfram, da želite da radite sa njim? Wolfram Language je oduvijek imao lagani mehanizam za ovo, tzv
Dakle, šta bi moglo biti u kodu funkcije u spremištu funkcija?
Treba li sav kod za spremište karakteristika Wolfram biti napisan u Wolframu? Svakako, kod unutar vanjskog API-ja ne bi trebao biti napisan na Wolfram jeziku, koji čak ne čini kod jezika. U stvari, ako pronađete funkciju u gotovo bilo kojem vanjskom jeziku ili biblioteci, možete kreirati omotač koji vam omogućava da je koristite u spremištu Wolfram funkcija. (Obično biste trebali koristiti ugrađene funkcije za ovo
Pa koja je svrha ovoga raditi? U suštini, ovo vam omogućava da koristite ceo integrisani Wolfram Language sistem i čitav njegov ujedinjeni skup softverskih mogućnosti. Ako dobijete osnovnu implementaciju iz vanjske biblioteke ili jezika, tada možete koristiti bogatu simboličku strukturu jezika Wolfram za kreiranje zgodne funkcije najvišeg nivoa koja omogućava korisnicima da lako koriste bilo koju funkcionalnost koja je već implementirana. U najmanju ruku, ovo bi trebalo biti izvodljivo u idealnom svijetu u kojem postoje svi gradivni blokovi biblioteka za učitavanje itd., u kom slučaju bi njima automatski rukovao Wolfram Language. (Treba napomenuti da u praksi može doći do problema sa
Usput, kada prvi put pogledate tipične eksterne biblioteke, one često izgledaju previše složene da bi bile pokrivene u samo nekoliko funkcija, ali u mnogim slučajevima, veliki dio složenosti dolazi od stvaranja infrastrukture potrebne za biblioteku i svih funkcija za podrži ga. Međutim, kada se koristi Wolfram Language, infrastruktura je obično već ugrađena u pakete, tako da nema potrebe detaljno izlagati sve ove funkcije podrške, već samo kreirati funkcije za „najviše“ funkcije specifične za aplikaciju u biblioteci .
"Ekosistem" baze znanja
Ako ste napisali funkcije koje redovno koristite, pošaljite ih u Wolfram Function Repository! Ako iz ovoga ne proizlazi nešto više (razvoj jezika), onda će vam i tada biti mnogo zgodnije koristiti funkcije za ličnu upotrebu. Međutim, logično je pretpostaviti da ako redovno 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 da dobijete pristup privatnim izvorima informacija. Čak i u takvim slučajevima, možete jednostavno implementirati funkcije na svoj račun u oblaku,
Funkcije koje šaljete u spremište Wolfram funkcija ne moraju biti savršene; samo moraju biti korisni. Ovo je pomalo poput odjeljka "Greške" u klasičnoj Unix dokumentaciji - u "Odjeljku definicija" postoji odjeljak "Napomene autora" gdje možete opisati ograničenja, probleme itd. koje već znate o svojoj funkciji. Osim toga, kada svoju funkciju pošaljete u spremište, možete dodati bilješke o podnošenju koje će pročitati posvećeni tim kustosa.
Kada se funkcija objavi, njena stranica uvijek ima dvije veze na dnu: "
Ponekad samo želite da koristite funkcije iz skladišta Wolfram funkcija, kao što su ugrađene funkcije, bez gledanja u njihov kod. Međutim, ako želite da bacite pogled unutra, uvijek postoji dugme Notepad na vrhu. Kliknite na nju i dobićete sopstvenu kopiju originalne bilježnice definicija koja je dostavljena u spremište karakteristika. Ponekad ga možete koristiti samo kao primjer za svoje potrebe. Istovremeno, možete razviti i vlastitu modifikaciju ove funkcije. Možda želite da objavite ove funkcije koje ste pronašli iz spremišta na vašem računaru ili na svom nalogu za skladištenje u oblaku aphid, možda želite da ih pošaljete u bazu znanja o funkcijama, možda kao poboljšanu, proširenu verziju originalne funkcije.
U budućnosti planiramo da podržimo račvanje u Git stilu za spremišta funkcija, ali za sada pokušavamo da bude jednostavno i uvek imamo samo jednu prihvaćenu verziju svake funkcije ugrađene u jezik. Češće nego ne (osim ako programeri odustanu od održavanja funkcija koje su razvili i odgovore na korisničke podneske), originalni autor funkcije preuzima kontrolu nad ažuriranjima i šalje nove verzije, koje se zatim pregledavaju i, ako prođu proces pregleda , objavljeno na jeziku.
Razmotrimo pitanje kako funkcionira “verzioniranje” razvijenih funkcija. Upravo sada, kada koristite funkciju iz skladišta funkcija, njena definicija će biti trajno pohranjena na vašem računalu (ili na vašem računu u oblaku ako koristite oblak). Ako je dostupna nova verzija neke funkcije, sljedeći put kada je budete koristili, dobit ćete poruku koja vas obavještava o tome. A ako želite da ažurirate funkciju na novu verziju, možete to učiniti pomoću naredbe
Jedna od lijepih stvari u vezi s Wolfram Function Repository je da bilo koji Wolfram Language program, bilo gdje, može koristiti funkcije iz njega. Ako se program pojavi u notesu, često je zgodno formatirati funkcije spremišta kao lako čitljive funkcije "binarnog objekta funkcije" (možda sa odgovarajućim skupom verzija).
Uvijek možete pristupiti bilo kojoj funkciji u spremištu funkcija koristeći tekst
Как это работает?
Unutar funkcija u Wolfram repozitorijumu ovo je moguće koristeći potpuno isto
Razmislite
Unutra možete vidjeti neke informacije koristeći funkciju
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 datu programsku sesiju:
Nakon što ste napravili definiciju, možete koristiti funkciju resursa:
Imajte na umu da se u ovoj funkcijskoj mrlji nalazi crna ikona . To znači da se BLOB funkcija odnosi na funkciju resursa u memoriji definiranu za trenutnu sesiju. Funkcija resursa koja je trajno pohranjena na vašem računalu ili računu u oblaku ima sivu ikonu . A tu je i narandžasta ikona za zvaničnu funkciju resursa u Wolfram Feature Repository .
Dakle, šta se dešava kada koristite meni Proširi u beležnici sa definicijama? Prvo, uzima sve definicije u notesu i od njih stvara simboličku
Lokalna implementacija funkcije iz spremišta na vašem računaru se izvodi pomoću naredbe
Ako kliknete na dugme Pošalji za Repozitorijum funkcija, šta se dešava ispod njega
Podrazumevano, podnošenje se vrši pod imenom koje je povezano sa vašim Wolfram ID-om. Ali ako podnosite aplikaciju u ime razvojnog tima ili organizacije, možete
Nakon što dostavite bilo koju od svojih funkcija u bazu znanja funkcija, ona će biti stavljena na čekanje za pregled. Ako dobijete komentare kao odgovor, oni će obično biti u obliku tekstualne datoteke s dodanim dodatnim „ćelijama za komentare“. Uvijek možete provjeriti status vaše prijave posjetom
Neke suptilnosti na poslu
Na prvi pogled može izgledati kao da možete samo 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 metaprogramiranje, rukovanje simboličkom obradom kao kod koji definira funkciju, a definiran je i sam Notepad. Većina ovoga se dešava interno, iza scene, ali može imati neke implikacije koje vredi razumeti ako želite da doprinesete bazi znanja o funkcijama.
Prva neposredna suptilnost: kada ispunite bilježnicu definicija, možete jednostavno upućivati na svoju funkciju svuda koristeći naziv kao što je MyFunction, koji izgleda kao regularno ime za funkciju u jeziku Wolfram, ali za dokumentaciju spremišta funkcija ovo je zamijenjeno
Druga stvar je da 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, da biste osigurali da definicije ostanu modularne, morate sve staviti u jedinstveno
Obično nikada nećete vidjeti nikakav trag koda koji se koristi za konfiguriranje ovog imenskog prostora. Ali ako iz nekog razloga pozovete nedovoljno izvršeni simbol unutar svoje funkcije, tada ćete vidjeti da je ovaj simbol u internom kontekstu funkcije. Međutim, kada se obrađuje Notepad za definiciju, barem je simbol koji odgovara samoj funkciji
Repozitorijum funkcija je za definisanje novih funkcija. I ove funkcije mogu imati opcije. Često ovi parametri (npr.
Većina funkcija jednostavno radi ono što bi trebalo da rade svaki put kada su pozvane, ali neke funkcije moraju biti inicijalizirane prije nego što se mogu pokrenuti u određenoj sesiji - a da bi se riješio ovaj problem, postoji odjeljak "Inicijalizacija" u odjeljku Definicija.
Funkcije iz spremišta mogu koristiti druge funkcije koje su već u spremištu kako bi postavile definicije za spremište funkcija koje uključuju dvije (ili više) funkcija koje upućuju jedna na drugu, morate ih implementirati u sesiji programa kako biste mogli; reference kao na njima
Perspektive razvoja. Šta bi se trebalo dogoditi kada spremište postane stvarno veliko?
Danas upravo pokrećemo Wolfram Feature Repository, ali s vremenom očekujemo da će se njegova veličina i funkcionalnost dramatično povećati, a kako raste u razvoju, pojavit će se različiti problemi za koje već predviđamo da će se pojaviti.
Prvi problem se tiče imena funkcija i njihove jedinstvenosti. Repozitorijum funkcija je dizajniran na takav način da, poput ugrađenih funkcija u Wolfram Language, možete referencirati bilo koju datu funkciju jednostavnim navođenjem njenog imena. Ali to neizbježno znači da imena funkcija moraju biti globalno jedinstvena u cijelom spremištu, tako da, na primjer, može postojati samo jedan
Ovo može izgledati kao veliki problem u početku, ali vrijedi shvatiti da je to u osnovi isti problem kao i za stvari poput internet domena ili društvenih medija. A činjenica je da sistem jednostavno treba da ima registratora - a to je jedna od uloga koju će naša kompanija obavljati za bazu znanja Wolfram funkcije. (Za privatne verzije spremišta, njihovi registratori mogu biti administratori.) Naravno, internet domena se može registrovati bez ičega na njoj, ali u spremištu funkcija ime funkcije može biti registrovano samo ako postoji stvarna definicija funkcija.
Dio naše uloge u upravljanju bazom znanja Wolfram funkcije je osigurati da je ime odabrano za funkciju logično s obzirom na definiciju funkcije i da slijedi konvencije o imenovanju Wolfram jezika. Imamo preko 30 godina iskustva u imenovanju ugrađenih funkcija na Wolfram jeziku, a naš tim kustosa će to iskustvo prenijeti iu repozitorijum funkcija. Naravno, uvijek postoje izuzeci. Na primjer, može se činiti poželjnijim imati kratko ime za neku funkciju, ali bolje je "braniti" dužim, konkretnijim imenom jer je manja vjerovatnoća da ćete naići na nekoga ko želi napraviti slično ime funkcije u budućnosti .
(Ovdje treba napomenuti da jednostavno dodavanje neke oznake člana radi razjašnjavanja funkcija neće imati željeni učinak. Jer osim ako ne insistirate da je oznaka uvijek dodijeljena, morat ćete definirati zadanu oznaku za bilo koju datu funkciju, a također i dodijeliti autora oznake, što bi opet zahtijevalo globalnu koordinaciju.)
Kako baza znanja o Wolframovim funkcijama raste, jedan od problema koji će se vjerovatno pojaviti je mogućnost otkrivanja funkcija, za koje sistem obezbjeđuje
Za ugrađene funkcije u jeziku Wolfram postoji takozvani sloj detekcije koji obezbeđuje
Repozitorijum Wolfram funkcija je konfigurisan kao trajni repozitorijum funkcija, gde će bilo koja funkcija u njemu uvek raditi. Naravno, nove verzije funkcija mogu postati dostupne, a očekujemo da će neke funkcije vremenom postati zastarjele. Funkcije će raditi ako se koriste u programima, ali njihove stranice dokumentacije će se povezivati s novim, naprednijim funkcijama.
Wolfram Feature Repository je dizajniran da vam pomogne da brzo otkrijete nove funkcije i naučite nove načine korištenja Wolfram jezika. Sa velikim optimizmom će nešto od onoga što je istraženo u repozitorijumu funkcija na kraju imati smisla da postanu ugrađeni delovi jezgra Wolfram jezika. Tokom protekle decenije imali smo sličan set
Najvažnija stvar ovdje je da je funkcija u spremištu funkcija nešto što je dostupno svakom korisniku za korištenje upravo sada. Moguće je da bi funkcija maternjeg jezika mogla biti mnogo bolja i učinkovitija, ali spremište funkcija bi omogućilo korisnicima da imaju pristup svim novim funkcijama odmah. I, što je najvažnije, ovaj koncept omogućava svima da dodaju bilo koje nove funkcije koje žele.
Ranije u istoriji Wolfram jezika, ova ideja ne bi funkcionisala tako dobro kao što je do sada, ali u ovoj fazi je toliko truda uloženo u jezik i tako duboko razumevanje principa jezičkog dizajna, da se sada čini prilično moguće da velika zajednica korisnika doda funkcije koje će održavati konzistentnost dizajna kako bi bile korisne za širok spektar korisnika.
Postoji nevjerovatan duh talenta(?) u korisničkoj zajednici Wolfram Language. (Naravno, ova zajednica uključuje mnoge vodeće ljude u istraživanju i razvoju u različitim oblastima.) Nadam se da će Wolfram Feature Repository pružiti efikasnu 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 računarska paradigma jezika Wolfram.
Za više od 30 godina, prešli smo dug put sa Wolfram jezikom. Sada zajedno, idemo još dalje. Snažno ohrabrujem sve uvažene korisnike Wolfram jezika širom svijeta da koriste funkcionalno spremište kao platformu za ovo, kao i novi softverski projekat kao što je Free Wolfram Engine for Developers.
izvor: www.habr.com