Saluton, Habr! Mi prezentas al via atento tradukon de la afiŝo de Stephen Wolfram
Antaŭkondiĉoj por la konsistenco de la Wolfram-lingvo
Hodiaŭ ni staras ĉe la sojlo de grandaj atingoj kune kun la programlingvo
La Wolfram Function Repository estas io ebligita de la unika naturo de la Wolfram Lingvo ne nur kiel programlingvo, sed ankaŭ kiel
Ekzemple, la Wolfram-funkcia deponejo jam enhavas
Same pli ol
Por atingi la paĝon, kopiu la supran objekton (funkcio BLOB), algluu ĝin en la eniglinion kaj poste rulu la funkcion - ĝi jam estas konstruita en la Wolfram-lingvo kaj subtenata defaŭlte komencante per
Oni devas rimarki ĉi tie, ke dum prilaborado
Mi esperas tion kun la subteno
Funkcioj de la deponejo povas enhavi malgrandajn aŭ grandajn pecojn de kodo skribita en la Wolfram Lingvo. Ekzemple, ĉi tiuj povus esti alvokoj
La ŝelo kaj programa strukturo de la Wolfram Feature Repository estas dizajnitaj por ke ĉiuj povu kontribui al la komuna afero en la plej simpla kaj oportuna maniero por ili - fakte, nur
Estas multaj kompromisoj kaj detaloj en ĉi tiu aliro, sed nia celo estas optimumigi la deponejon de funkcioj de Wolfram kaj por la sperto de uzanto kaj certigi, ke novaj uzantfunkcioj kontribuas signife al la evoluo de la lingvo. Dum ni kreskas, mi ne dubas, ke ni devos inventi novajn metodojn por prilabori kaj validigi funkciojn enkonstruitajn en la deponejo, ne laste por organizi grandajn nombrojn da funkcioj kaj trovi tiujn, kiujn uzantoj bezonas. Tamen estas kuraĝige, ke la vojo, kiun ni elektis, estas bona komenco. mi persone
Pliigante efikecon dum redukto de kostoj
Eĉ antaŭ la Interreto, ekzistis manieroj kunhavigi Wolfram Language-kodon (nia unua grava centralizita projekto estis
Dum pli ol 30 jaroj, nia firmao diligente laboris por konservi la integrecon de la Wolfram-lingva strukturo, kaj ĉi tio estas kritika por certigi, ke la Wolfram-lingvo fariĝu ne nur programlingvo, sed ankaŭ
Diversaj komputilaj procezoj okazas en la efektivigstrukturo de ĉiu funkcio. Oni notu ĉi tie, ke necesas, ke la funkcio havu klaran kaj unuforman aspekton kaj vidan legeblecon por la uzanto. En ĉi tiu kunteksto, la enkonstruitaj funkcioj de la Wolfram Lingvo estas prezentitaj kun pli ol 6000 sinsekvaj ekzemploj pri kiel ĝuste programi funkciojn (ĉi tiuj estas niaj
Krei deponejon, kiu efektive funkcias bone, estas interesa metaprograma tasko. Ekzemple, troo de limigoj en la programo ne permesos akiri la bezonatan unuiĝon kaj universalecon de la algoritmo. Same kiel kun nesufiĉa nombro da funkciaj limigoj, vi ne povos efektivigi sufiĉe ĝustan sinsekvon de algoritmo ekzekuto. Pluraj antaŭaj ekzemploj de efektivigo de kompromiso de ĉi tiuj aliroj, efektivigitaj de nia kompanio, funkciis sufiĉe stabile - ĉi tiuj estas:
Ĉiuj ĉi-supraj ekzemploj havas fundamentan trajton - la objektoj kaj funkcioj kolektitaj en la projekto havas tre altan gradon de strukturado kaj distribuado de procezoj. Kompreneble, la detalo de la strukturo de kio estas demo aŭ neŭrala reto aŭ io alia povas multe varii, sed la fundamenta strukturo por iu nuna deponejo ĉiam restas la sama. Kia do vi opinias, kara uzanto, pri kreado de tia deponejo, kiu aldonas etendaĵojn al la lingvo Wolfram? La Wolfram Lingvo estas desegnita por esti ekstreme fleksebla, do ĝi povas esti etendita kaj modifita iel ajn. Tiu ĉi cirkonstanco estas ege grava por la kapablo rapide krei diversajn grandskalajn programajn projektojn en la Wolfram Lingvo. Oni notu ĉi tie, ke laŭ la fleksebleco de la lingvo pligrandiĝas, la kosto de projektoj realigitaj en tia lingvo neeviteble plialtiĝos. Ĉi tio estas pro la fakto, ke ju pli la uzanto uzas tian lingvon, des pli dediĉita funkcieco li ricevas, sed ni ne forgesu, ke ĉi tiu aliro ankaŭ povas havi negativajn flankojn rilate la nekapablon certigi konsekvencan konsistencon de programmoduloj.
Estas ofta problemo kun bibliotekoj en tradiciaj programlingvoj - se vi uzas unu bibliotekon, ekzemple, la kodo funkcios ĝuste, sed se vi provos uzi plurajn bibliotekojn, ne garantias, ke ili interagas ĝuste inter si. . Ankaŭ en tradiciaj programlingvoj - male al plena komputika lingvo - ne ekzistas maniero garantii la ĉeeston de konsekvencaj enkonstruitaj reprezentoj por iuj funkcioj aŭ datumtipoj krom iliaj bazaj strukturoj. Sed, fakte, la problemo estas eĉ pli granda ol ĝi ŝajnas unuavide: se oni konstruas grandskalan vertikalon de funkcieco, tiam sen la grandegaj kostoj de centralizita projektprogramado, kiujn ni metas en la lingvo Wolfram, estas neeble. atingi konsistencon. Tial gravas, ke ĉiuj programaraj moduloj ĉiam funkcias kune ĝuste.
Do la ideo malantaŭ la Wolfram-trajtodeponejo estas eviti la problemon skizitan supre simple aldonante etendaĵojn al la lingvo en relative malgrandaj pecoj de kodo per individuaj funkcioj kiuj estas pli facile evoluigi kiel koheraj moduloj. Dirite, ekzistas programaj funkcioj, kiuj ne povas esti oportunaj uzante individuajn funkciojn (kaj nia kompanio planas liberigi optimumigitan programan algoritmon en proksima estonteco por helpi efektivigi grandskalajn programajn pakaĵojn). Tamen, surbaze de la funkcioj jam konstruitaj en la Wolfram Lingvo, ekzistas multaj programaj eblecoj kiuj estas efektivigitaj surbaze de individuaj funkcioj. La ideo ĉi tie estas, ke kun relative malmulte da programada penado eblas krei kelkajn novajn kaj tre utilajn funkciojn, kiuj provizos sufiĉan koherecon al la dezajno, ili estos bone kunordigitaj unu kun la alia, kaj ankaŭ, krom tio, ili estonte povos facile kaj vaste uzata en la lingvo.
Ĉi tiu aliro estas, kompreneble, kompromiso. Se pli granda pakaĵo estus efektivigita, tute nova mondo de funkcieco povus esti imagita, kiu estus ekstreme potenca kaj utila. Se necesas akiri novajn funkciojn, kiuj kongruos kun ĉio alia, sed vi ne pretas elspezi multan penon por disvolvi la projekton, ĉi tio, bedaŭrinde, povas konduki al redukto de la amplekso de via projekto. La ideo malantaŭ la Wolfram-funkcia deponejo estas disponigi funkciecon al difina parto de projekto; ĉi tiu aliro aldonos potencan funkciecon faciligante konservi bonan konsistencon en programa projekto.
Helpu aldoni kutimajn funkciojn al la funkcio-deponejo
Nia teamo multe laboris por faciligi al uzantoj kontribui al la funkcioj de la deponejo de Wolfram. Sur la labortablo (jam en
Estas du ĉefaj paŝoj, kiujn vi devos plenumi: unue, efektive skribu la kodon por via funkcio kaj, due, skribu dokumentadon ilustrantan kiel via funkcio devus funkcii.
Alklaku la butonon "Malfermu Specimeno" supre por vidi ekzemplon pri tio, kion vi devas fari:
Esence, vi provas krei ion similan al enkonstruita funkcio en la Wolfram Lingvo. Krom ke ĝi povas fari ion multe pli specifan ol enkonstruita funkcio. Samtempe, atendoj pri ĝia kompleteco kaj fidindeco estos multe pli malaltaj.
Vi devas doni al via funkcio nomon kiu sekvas la gvidliniojn pri nomado de funkcioj de Wolfram Language. Krome, vi devos evoluigi dokumentadon por via funkcio, simile al la enkonstruitaj funkcioj de la lingvo. Mi parolos pri tio pli detale poste. Nuntempe, nur rimarku, ke en la vico de butonoj supre de la difina kajero-dosiero estas butono
Kiam vi certas, ke ĉio estas plenigita ĝuste kaj vi estas preta, alklaku la butonon "Kontrolu". Estas tute normale, ke vi ankoraŭ ne eltrovis ĉiujn detalojn. Do la funkcio "Kontrolu" aŭtomate funkcios kaj faros multajn stilajn kaj konsekvencajn kontrolojn. Ofte, ĝi tuj instigos vin konfirmi kaj akcepti la korektojn (Ekzemple: "Ĉi tiu linio devas finiĝi per dupunkto", kaj ĝi instigos vin enigi dupunkton). Foje ŝi petos vin aldoni aŭ ŝanĝi ion mem. Ni konstante aldonos novajn funkciojn al la aŭtomata funkcieco de la butono Kontrolo, sed esence ĝia celo estas certigi, ke ĉio, kion vi sendas al la funkcio-deponejo, jam atente sekvas kiel eble plej multajn stilajn gvidliniojn.
Do, post funkciado de "Kontrolo", vi povas uzi "Antaŭrigardon". "Antaŭrigardo" kreas antaŭrigardon de la dokumenta paĝo, kiun vi difinis por via funkcio. Vi ankaŭ povas krei antaŭrigardon por dosiero kreita en via komputilo aŭ por dosiero situanta en nuba stokado. Se, ial, vi ne kontentas pri tio, kion vi vidas en la antaŭvido, simple reiru kaj faru la necesajn korektojn, kaj poste alklaku la butonon Antaŭrigardo denove.
Nun vi pretas puŝi vian funkcion en la deponejon. La butono Deploy donas al vi kvar eblojn:
La grava afero ĉe ĉi tiu paŝo estas, ke vi povas sendi vian funkcion al la Wolfram-funkcia deponejo por ke ĝi estu disponebla por iu ajn. Samtempe, vi ankaŭ povas meti vian funkcion por limigita nombro da uzantoj. Ekzemple, vi povas krei funkcion kiu estas gastigita loke sur via komputilo tiel ke ĝi estas havebla kiam vi uzas tiun apartan komputilon. Aŭ vi povas afiŝi ĝin en via
Do ni diru, ke vi volas efektive sendi vian funkcion al la Wolfram-funkcia sciobazo. Por fari tion, vi alklaku la butonon "Sendu" al la deponejo. Kio do okazas nun? Via kandidatiĝo tuj estas atendata por revizio kaj aprobo de nia diligenta teamo de kuratoroj.
Dum via kandidatiĝo progresas tra la aprobprocezo (kiu kutime daŭras plurajn tagojn), vi ricevos komunikadojn pri ĝia stato kaj eble sugestojn por estonta uzo. Sed post kiam via funkcio estas aprobita, ĝi tuj estos publikigita al la Wolfram Feature Depony kaj estos disponebla por iu ajn por uzi. (Kaj ĉi tio aperos en
Kio devus esti en la stokado?
Oni devas rimarki, ke nia kompanio havas tre altajn normojn pri kompleteco, fidindeco kaj ĝenerala kvalito, kaj el la 6000+ funkcioj, kiujn ni jam konstruis en la Wolfram-lingvon dum la pasintaj 30+ jaroj, ĉiuj plenumas la ĉi-suprajn postulojn. La celo de la Wolfram Funkcia Deponejo estas uzi la tutan strukturon kaj funkciojn kiuj jam ekzistas en la Wolfram Lingvo por aldoni kiel eble plej multe da pli malpezaj funkcioj (tio estas, pli altaj agadofunkcioj) kiel eble.
Kompreneble, funkcioj en la Wolfram-funkcia deponejo devas konformiĝi al la dezajnoprincipoj de la Wolfram Lingvo - tiel ke ili povas plene interagi kun aliaj funkcioj kaj la atendoj de uzantoj pri kiel la funkcio devus funkcii ĝuste. Tamen, la funkcioj ne devas esti de egala kompleteco aŭ fidindeco.
En la enkonstruitaj funkcioj de la lingvo Wolfram, ni multe laboras por ke programaj funkcioj kiel eble plej ĝeneralaj. Dirite, kiam en la Wolfram-funkcia deponejo estas nenio malbona havi funkcion en ĝi, kiu simple pritraktas iun tre specifan sed utilan kazon. Ekzemple, la funkcio
Alia punkto rilata al la enkonstruitaj funkcioj estas, ke nia kompanio faras ĉiujn klopodojn por trakti ĉiujn maltipajn kazojn, por ĝuste trakti malĝustan enigon, ktp. En funkcio-deponejo, estas tute normale, ke ekzistas speciala funkcio, kiu pritraktas la ĉefajn kazojn de solvado de problemo kaj ignoras ĉiujn aliajn.
La evidenta punkto estas, ke estas pli bone havi funkciojn kiuj faras pli kaj faras ĝin pli bone, sed optimumigo por funkcio-deponejo - kontraste al la enkonstruitaj funkcioj de la lingvo Wolfram - devus havi pli da funkcioj kunigitaj kun pli da funkcioj prefere ol enprofundiĝi en. la efektivigprocezoj de ĉiu specifa funkcio.
Nun ni rigardu ekzemplon de testado de funkcioj en deponejo. Konsekvencaj atendoj por tiaj funkcioj estas nature multe pli malaltaj ol por enkonstruitaj lingvofunkcioj. Ĉi tio estas precipe vera en kazoj kie funkcioj dependas de eksteraj rimedoj kiel APIoj, estas grave konstante fari konsekvencajn testojn, kio aŭtomate okazas ene de la kontrolaj algoritmoj. En la nb-dosiero, vi povas eksplicite specifi difinojn (en la sekcio Aldonaj Informoj) kaj specifi tiom da testoj kiel difinitaj per aŭ enigo kaj eligo ĉenoj aŭ plenaj signobjektoj de tipo.
Kiel rezulto, la funkcio-deponejo havos kelkajn efektivigkompleksaĵojn. Iuj estos nur unuopa linio de kodo, aliaj povas impliki milojn aŭ dekojn da miloj da linioj, verŝajne uzante multajn helpajn funkciojn. Kiam indas aldoni funkcion, kiu postulas tre malmulte da kodo por difini? Esence, se por funkcio ekzistas
La ĉefa celo de funkcio-deponejo (kiel ĝia nomo sugestas) estas enkonduki novajn funkciojn en la lingvon. Se vi volas aldoni novajn datumojn aŭ
Estas fakte du manieroj. Vi eble volas enkonduki novan objektotipon, kiu estos uzata en novaj funkcioj en la funkcio-deponejo. Kaj en ĉi tiu kazo, vi ĉiam povas simple noti ĝian simbolan reprezenton kaj uzi ĝin dum enigo aŭ eligo de funkcioj en funkcio-deponejo.
Sed kio se vi volas reprezenti objekton kaj poste difini, per ekzistantaj funkcioj en la Wolfram Lingvo, ke vi volas labori kun ĝi? La Wolfram Lingvo ĉiam havis malpezan mekanismon por tio, nomita
Do, kio povus esti en la funkciokodo en funkcio-deponejo?
Ĉu ĉiu kodo por la Wolfram-funkcia deponejo estu skribita en Wolfram? Certe, la kodo ene de la ekstera API ne estu skribita en la lingvo Wolfram, kiu eĉ ne faras la lingvokodon. Fakte, se vi trovas funkcion en preskaŭ ajna ekstera lingvo aŭ biblioteko, vi povas krei envolvaĵon, kiu ebligas uzi ĝin en la Wolfram-funkcia deponejo. (Kutime vi devus uzi la enkonstruitajn funkciojn por tio
Do kio estas la signifo fari ĉi tion? Esence, tio ebligas al vi uzi la tutan integran Wolfram Language-sistemon kaj ĝian tutan unuigitan aron de programaraj kapabloj. Se vi akiras la bazan efektivigon de ekstera biblioteko aŭ lingvo, vi povas tiam uzi la riĉan simbolan strukturon de la Wolfram Lingvo por krei oportunan altnivelan funkcion, kiu ebligas al uzantoj facile uzi ajnan funkciecon jam efektivigitan. Almenaŭ, tio devus esti farebla en ideala mondo kie ĉiuj konstrubriketoj de ŝarĝado de bibliotekoj ktp ekzistas, en kiu kazo ili estus aŭtomate pritraktitaj de la Wolfram Lingvo. (Indas rimarki, ke praktike povas esti problemoj kun
Cetere, kiam vi unue rigardas tipajn eksterajn bibliotekojn, ili ofte ŝajnas tro kompleksaj por esti kovritaj per nur kelkaj funkcioj, sed en multaj kazoj, multe de la komplekseco venas de kreado de la infrastrukturo necesa por la biblioteko kaj ĉiuj funkcioj por subteni ĝin. Tamen, kiam oni uzas la Wolfram Lingvon, la infrastrukturo estas kutime jam enkonstruita en la pakaĵojn, kaj do ne necesas elmontri ĉiujn ĉi tiujn subtenajn funkciojn detale, sed nur krei funkciojn por la "plej supraj" aplikaĵ-specifaj funkcioj en la biblioteko. .
"Ekosistemo" de la sciobazo
Se vi skribis funkciojn, kiujn vi uzas regule, sendu ilin al la Funkcia Deponejo de Wolfram! Se io plia ne eliras el tio (lingva evoluo), tiam eĉ tiam estos multe pli oportune por vi uzi la funkciojn por persona uzo. Tamen, estas logike supozi, ke se vi uzas la funkciojn regule, eble ankaŭ aliaj uzantoj trovos ilin utilaj.
Kompreneble, vi povas trovi vin en situacio, kie vi ne povas - aŭ ne volas - kunhavigi viajn funkciojn aŭ okaze de aliro al privataj informaj rimedoj. Eĉ en tiaj kazoj, vi povas simple disfaldi la funkciojn en via propra nuba konto,
La funkcioj, kiujn vi sendas al la Wolfram-funkcia deponejo, ne devas esti perfektaj; ili nur devas esti utilaj. Ĉi tio iom similas al la sekcio "Eraroj" en klasika Unix-dokumentado - en la "Sekcio de Difinoj" estas sekcio "Notoj de Aŭtoro", kie vi povas priskribi limigojn, problemojn ktp, kiujn vi jam konas pri via funkcio. Aldone, kiam vi sendas vian funkcion al la deponejo, vi povas aldoni prezento-notojn, kiuj estos legataj de dediĉita teamo de kuratoroj.
Post kiam funkcio estas publikigita, ĝia paĝo ĉiam havas du ligilojn malsupre: "
Kelkfoje vi nur volas uzi funkciojn de la Wolfram-funkcia deponejo, kiel enkonstruitaj funkcioj, sen rigardi ilian kodon. Tamen, se vi volas rigardi enen, ĉiam estas Notepad-butono supre. Alklaku ĝin kaj vi ricevos vian propran kopion de la originala difina kajero, kiu estis sendita al la deponejo de funkcioj. Kelkfoje vi povas nur uzi ĝin kiel ekzemplon por viaj bezonoj. Samtempe, vi ankaŭ povas evoluigi vian propran modifon de ĉi tiu funkcio. Vi eble volas afiŝi ĉi tiujn funkciojn, kiujn vi trovis el la deponejo en via komputilo aŭ en via afida nuba stokado-konto, eble vi volas sendi ilin al la funkcia sciobazo, eble kiel plibonigita, vastigita versio de la originala funkcio.
En la estonteco, ni planas subteni Git-stilan forkadon por funkcio-deponejoj, sed nuntempe ni provas konservi ĝin simpla, kaj ni ĉiam havas nur unu akceptitan version de ĉiu funkcio konstruita en la lingvo. Pli ofte ol ne (krom se programistoj rezignas konservi la funkciojn kiujn ili evoluigis kaj respondas al uzantsubmetadoj), la origina aŭtoro de la funkcio prenas kontrolon de ĝisdatigoj al ĝi kaj sendas novajn versiojn, kiuj tiam estas reviziitaj kaj, se ili trapasas la revizian procezon. , eldonita en la lingvo.
Ni konsideru la demandon kiel funkcias "versiado" de evoluintaj funkcioj. Ĝuste nun, kiam vi uzas funkcion de la funkcio-deponejo, ĝia difino estos konstante konservita en via komputilo (aŭ en via nuba konto se vi uzas la nubon). Se nova versio de funkcio estas disponebla, la venontan fojon kiam vi uzos ĝin, vi ricevos mesaĝon informante vin pri tio. Kaj se vi volas ĝisdatigi la funkcion al nova versio, vi povas fari ĝin per la komando
Unu el la belaj aferoj pri la Wolfram Function Depository estas ke iu ajn Wolfram Language programo, ie ajn povas uzi funkciojn de ĝi. Se programo aperas en notbloko, estas ofte oportune formati la deponajn funkciojn kiel facile legeblajn funkciojn de "funkcia binara objekto" (eble kun taŭga versio-aro).
Vi ĉiam povas aliri ajnan funkcion en la funkcio-deponejo uzante tekston
Kiel ĝi funkcias?
Ene de la funkcioj en la Wolfram-deponejo tio eblas uzante ĝuste la samon
Konsideru
Ene vi povas vidi iujn informojn uzante la funkcion
Kiel funkcias agordo de rimeda funkcio? La plej simpla estas pure loka kazo. Jen ekzemplo, kiu prenas funkcion (en ĉi tiu kazo nur puran funkcion) kaj difinas ĝin kiel rimedfunkcion por antaŭfiksita programsesio:
Post kiam vi faris la difinon, vi povas uzi la rimedan funkcion:
Notu, ke estas nigra piktogramo en ĉi tiu funkcio blob . Ĉi tio signifas, ke la BLOB-funkcio rilatas al la enmemora rimedfunkcio difinita por la nuna sesio. Rimeda funkcio, kiu estas konstante konservita en via komputilo aŭ nuba konto, havas grizan ikonon . Kaj estas oranĝa ikono por oficiala rimeda funkcio en la Wolfram Feature Depony .
Kio do okazas kiam vi uzas la Ekspandi menuon en la Difina Kajero? Unue, ĝi prenas ĉiujn difinojn en la notbloko kaj el ili kreas simbolan
Loka deplojo de funkcio de deponejo sur via komputilo estas farita per la komando
Se vi alklakas la butonon Sendi por Funkcia Deponejo, kio okazas sub ĝi
Defaŭlte, sendadoj estas faritaj sub la nomo asociita kun via Wolfram ID. Sed se vi sendas kandidatiĝon nome de evolua teamo aŭ organizo, vi povas
Post kiam vi sendis iun el viaj funkcioj al la funkcia sciobazo, ĝi estos atendata por revizio. Se vi ricevas komentojn kiel respondo, ili kutime estos en formo de tekstdosiero kun pliaj "komentaj ĉeloj" aldonitaj. Vi ĉiam povas kontroli la staton de via kandidatiĝo vizitante
Kelkaj subtilecoj en la laboro
Unuavide eble ŝajnas, ke vi povas simple preni difinan kajeron kaj meti ĝin laŭvorte en funkcio-deponejon, tamen efektive estas sufiĉe multaj subtilecoj implikitaj - kaj pritrakti ilin postulas fari iom da kompleksa meta-programado, pritraktado de simbola prilaborado. kiel la kodo, kiu difinas la funkcion, kaj la Notepad mem estas difinita. Plejparto de ĉi tio okazas interne, malantaŭ la scenoj, sed ĝi povas havi kelkajn implicojn kompreneblajn, se vi kontribuos al la funkcio-sciobazo.
Unua tuja subtileco: Kiam vi plenigas la Difinan Kajeron, vi povas simple referenci vian funkcion ĉie uzante nomon kiel Mia Funkcio, kiu aspektas kiel regula nomo por funkcio en la Wolfram Lingvo, sed por funkcio-deponejo-dokumentado tio estas anstataŭigita
La dua subtileco: kiam vi kreas rimedfunkcion el la Difina Kajero, ĉiuj dependecoj implikitaj en la funkciodifino devas esti kaptitaj kaj eksplicite inkluzivitaj. Tamen, por certigi, ke la difinoj restas modulaj, vi devas meti ĉion en unikaĵo
Kutime vi neniam vidos spuron de la kodo uzata por agordi ĉi tiun nomspacon. Sed se ial vi nomas subefektitan simbolon ene de via funkcio, tiam vi vidos, ke ĉi tiu simbolo estas en la interna kunteksto de la funkcio. Tamen, kiam oni prilaboras la Difinan Notepad, almenaŭ la simbolo responda al la funkcio mem estas
La funkcio-deponejo estas por difini novajn funkciojn. Kaj ĉi tiuj funkcioj povas havi eblojn. Ofte ĉi tiuj parametroj (ekzemple,
Plej multaj funkcioj simple faras tion, kion ili devas fari ĉiun fojon kiam ili estas vokataj, sed kelkaj funkcioj devas esti pravaligitaj antaŭ ol ili povas ruliĝi en aparta sesio - kaj por solvi ĉi tiun problemon, estas sekcio "Initigo" en la sekcio Difino.
Funkcioj de deponejo povas uzi aliajn funkciojn, kiuj jam estas en la deponejo; por agordi difinojn por funkcio deponejo, kiu inkluzivas du (aŭ pli) funkciojn, kiuj referencas unu la alian, vi devas disfaldi ilin en via programa sesio por ke vi povu. referenco kiel sur ili
Evoluperspektivoj. Kio devus okazi kiam la deponejo iĝas vere granda?
Hodiaŭ ni ĵus lanĉas la Wolfram Feature Repository, sed kun la tempo ni atendas, ke ĝia grandeco kaj funkcieco eble pliiĝos draste, kaj dum ĝi kreskos en evoluo, estos diversaj problemoj, kiujn ni jam antaŭvidas, ke eble aperos.
La unua problemo koncernas funkcionomojn kaj ilian unikecon. La funkcio-deponejo estas desegnita tiel ke, kiel la enkonstruitaj funkcioj en la Wolfram Lingvo, vi povas referenci ajnan antaŭfiksitan funkcion simple specifante ĝian nomon. Sed tio neeviteble signifas, ke funkcionomoj devas esti tutmonde unikaj tra la deponejo, tiel ke, ekzemple, povas ekzisti nur unu
Ĉi tio eble ŝajnas granda problemo komence, sed indas rimarki, ke ĝi estas esence la sama problemo kiel por aferoj kiel interretaj domajnoj aŭ sociaj amaskomunikiloj. Kaj la fakto estas, ke la sistemo simple bezonas havi registrilon - kaj ĉi tiu estas unu el la roloj, kiujn nia kompanio plenumos por la Wolfram-funkcia sciobazo. (Por privataj versioj de deponejo, iliaj registriloj povas esti administrantoj.) Kompreneble, Interreta domajno povas esti registrita sen havi ion ajn sur ĝi, sed en funkciodeponejo, funkcionomo povas esti registrita nur se ekzistas reala difino de la funkcio.
Parto de nia rolo en administrado de la Wolfram-funkcia scio-bazo estas certigi, ke la nomo elektita por funkcio estas logika pro la difino de la funkcio kaj ke ĝi sekvas la nomkonvenciojn de Wolfram Language. Ni havas pli ol 30 jarojn da sperto nomi enkonstruitajn funkciojn en la Wolfram Lingvo, kaj nia teamo de kuratoroj alportos tiun sperton ankaŭ al la funkcio-deponejo. Kompreneble, ĉiam estas esceptoj. Ekzemple, eble ŝajnas preferinde havi mallongan nomon por iu funkcio, sed estas pli bone "defendi" per pli longa, pli specifa nomo ĉar vi malpli verŝajne renkontos iun, kiu volas fari similan funkcionomon estonte. .
(Oni notu ĉi tie, ke simple aldoni iun membro-etikedon por malambiguigi funkciojn ne havos la celitan efikon. Ĉar krom se vi insistas pri ĉiam atribui etikedon, vi devos difini defaŭltan etikedon por iu ajn donita funkcio, kaj ankaŭ asigni aŭtorajn etikedojn. , kiu denove postulus tutmondan kunordigon.)
Ĉar la sciobazo de Wolfram-funkcioj kreskas, unu el la problemoj kiuj verŝajne ekestiĝos estas la eltrovebleco de funkcioj, por kiuj la sistemo provizas
Por enkonstruitaj funkcioj en la Wolfram Lingvo ekzistas tiel nomata detekta tavolo provizita de
La Wolfram-funkcia deponejo estas agordita kiel konstanta funkcio-deponejo, kie ajna funkcio en ĝi ĉiam funkcios. Kompreneble, novaj versioj de funkcioj eble estos disponeblaj, kaj ni atendas, ke iuj funkcioj kompreneble malnoviĝos kun la tempo. La funkcioj funkcios se ili estas uzataj en programoj, sed iliaj dokumentaj paĝoj ligos al novaj, pli altnivelaj funkcioj.
La Wolfram Feature-Deponejo estas dizajnita por helpi vin rapide malkovri novajn funkciojn kaj lerni novajn manierojn uzi la Wolfram-lingvon. Ni estas tre optimismaj, ke iuj el tio, kio estis esplorita en la funkcio-deponejo, poste havos sencon fariĝi enkonstruitaj partoj de la kerna Wolfram Language. Dum la lasta jardeko ni havis similan aron
La plej grava afero ĉi tie estas, ke funkcio en funkcio-deponejo estas io disponebla por ĉiu uzanto nun. Eblas, ke gepatra lingvo trajto povus esti multe pli bona kaj pli efika, sed trajto-deponejo permesus al uzantoj havi aliron al ĉiuj novaj funkcioj tuj. Kaj, plej grave, ĉi tiu koncepto permesas al ĉiuj aldoni iujn ajn novajn funkciojn, kiujn ili volas.
Pli frue en la historio de la lingvo Wolfram, ĉi tiu ideo ne funkcius tiel bone kiel ĝi, sed en ĉi tiu etapo estas tiom da penado metita en la lingvon, kaj tiom profunda kompreno de lingvodezajnprincipoj, ke ĝi nun ŝajnas tre tre. ebla por granda komunumo de uzantoj aldoni funkciojn kiuj konservos projektan konsistencon por igi ilin utilaj al larĝa gamo de uzantoj.
Estas nekredebla spirito de talento(?) en la uzantkomunumo de Wolfram Language. (Kompreneble, ĉi tiu komunumo inkluzivas multajn ĉefajn spertulojn pri R&D en diversaj kampoj.) Mi esperas, ke la Wolfram Feature Repository provizos efikan platformon por malŝlosi kaj disvastigi ĉi tiun spiriton de talento. Nur kune ni povas krei ion kiu signife vastigos la areon al kiu la Wolfram-lingva komputikparadigmo povas esti aplikita.
En pli ol 30 jaroj, ni faris longan vojon kun la lingvo Wolfram. Nun kune, ni iru eĉ plu. Mi forte instigas ĉiujn respektatajn uzantojn de la lingvo Wolfram tra la mondo uzi la funkcian deponejon kiel platformon por tio, same kiel la novan programaran projekton kiel la Free Wolfram Engine for Developers.
fonto: www.habr.com