Bonjou, Habr! Mwen prezante bay atansyon w yon tradiksyon post Stephen Wolfram
Prekondisyon pou konsistans lang Wolfram la
Jodi a nou kanpe sou papòt gwo reyalizasyon ansanm ak langaj pwogramasyon an
Wolfram Fonksyon Repository la se yon bagay ki rann posib grasa nati inik Lang Wolfram lan non sèlman kòm yon langaj pwogramasyon, men tou kòm yon langaj.
Pou egzanp, repozitwa fonksyon Wolfram deja genyen
Menm jan an tou plis pase
Pou ale nan paj la, kopye objè ki anwo a (fonksyon BLOB), kole li nan liy opinyon an epi kouri fonksyon an - li deja bati nan lang Wolfram la ak sipòte pa default kòmanse ak
Li ta dwe remake isit la ke lè pwosesis
Mwen espere ke ak sipò a
Fonksyon ki soti nan depo a ka genyen ti moso kòd ki ekri nan lang Wolfram. Pou egzanp, sa yo ta ka apèl
Koki ak estrikti pwogramasyon Wolfram Feature Repository la fèt pou tout moun ka kontribye nan kòz komen nan fason ki pi senp ak pratik pou yo - an reyalite, jis.
Gen anpil konpwomi ak detay nan apwòch sa a, men objektif nou se optimize repozitwa karakteristik Wolfram pou eksperyans itilizatè a ak asire ke nouvo karakteristik itilizatè yo kontribye nan devlopman langaj la. Pandan n ap grandi, mwen pa gen okenn dout ke nou pral gen envante nouvo metòd pou manyen ak validation fonksyon ki bati nan repozitwa a, pa pi piti pou òganize yon gwo kantite fonksyon ak jwenn sa ke itilizatè yo bezwen. Sepandan, li ankourajan ke chemen nou te chwazi a se yon bon kòmansman. Mwen pèsonèlman
Ogmante efikasite pandan y ap diminye depans yo
Menm anvan entènèt la, te gen fason yo pataje kòd Wolfram Language (premye gwo pwojè santralize nou an te
Pou plis pase 30 ane, konpayi nou an te travay avèk dilijans pou kenbe entegrite estrikti lang Wolfram la, e sa enpòtan anpil pou asire lang Wolfram la vin pa sèlman yon lang pwogramasyon, men tou yon langaj pwogramasyon.
Plizyè pwosesis enfòmatik rive nan estrikti aplikasyon chak fonksyon. Li ta dwe remake isit la ke li nesesè ke fonksyon an gen yon aparans klè ak inifòm ak lizibilite vizyèl pou itilizatè a. Nan kontèks sa a, fonksyon entegre Wolfram Language yo prezante ak plis pase 6000 egzanp sekans sou fason pou byen pwograme fonksyon (sa yo se
Kreye yon depo ki aktyèlman travay byen se yon travay enteresan meta-pwogram. Pou egzanp, yon eksè restriksyon nan pwogram nan pa pral pèmèt jwenn inifikasyon ki nesesè yo ak inivèsalite algorithm la. Menm jan ak yon nimewo ensifizan nan restriksyon fonksyonèl, ou pa yo pral kapab aplike yon sekans ase kòrèk nan ekzekisyon algorithm. Plizyè egzanp anvan enplemante yon konpwomi nan apwòch sa yo, aplike pa konpayi nou an, te travay byen estab - sa yo se:
Tout egzanp ki anwo yo gen yon karakteristik fondamantal - objè yo ak fonksyon yo kolekte nan pwojè a gen yon degre trè wo nan estrikti ak distribisyon nan pwosesis. Natirèlman, detay nan estrikti a nan sa ki se yon Demo oswa yon rezo neral oswa yon lòt bagay ka varye anpil, men estrikti nan fondamantal pou nenpòt ki depo aktyèl toujou rete menm jan an. Se konsa, ki opinyon w, chè itilizatè, sou kreye tankou yon depo ki ajoute ekstansyon nan lang Wolfram la? Lang Wolfram la fèt pou li trè fleksib, kidonk li ka pwolonje ak modifye nan nenpòt fason. Sikonstans sa a trè enpòtan pou kapasite pou byen vit kreye plizyè pwojè lojisyèl gwo echèl nan Wolfram Language. Li ta dwe remake isit la ke kòm fleksibilite nan lang nan ogmante, pri a nan pwojè aplike nan yon lang konsa pral inevitableman ogmante. Sa a se akòz lefèt ke plis itilizatè a sèvi ak yon lang konsa, plis devwe fonctionnalités li resevwa, men nou pa ta dwe bliye ke apwòch sa a ka tou gen kote negatif an tèm de enkapasite a asire konsistans konsistan nan modil pwogram.
Gen yon pwoblèm komen ak bibliyotèk nan lang tradisyonèl pwogramasyon - si ou itilize yon bibliyotèk, pou egzanp, kòd la ap travay kòrèkteman, men si ou eseye sèvi ak bibliyotèk miltip, pa gen okenn garanti ke yo pral kominike kòrèkteman youn ak lòt. . Epitou, nan langaj pwogramasyon tradisyonèl yo - kontrèman ak yon langaj enfòmatik konplè - pa gen okenn fason pou garanti prezans nan reprezantasyon ki konsistan entegre pou nenpòt fonksyon oswa kalite done ki pa estrikti debaz yo. Men, an reyalite, pwoblèm nan se menm pi gwo pase sa li sanble nan premye gade: si yon moun ap bati yon gwo echèl vètikal nan fonksyonalite, Lè sa a, san yo pa gwo depans yo nan pwogram santralize pwojè ke nou mete nan lang Wolfram la, li enposib. reyalize konsistans. Se poutèt sa li enpòtan ke tout modil lojisyèl toujou travay ansanm kòrèkteman.
Se konsa, lide ki dèyè repozitwa karakteristik Wolfram la se pou evite pwoblèm ki endike anwo a pa senpleman ajoute ekstansyon nan lang nan relativman ti moso nan kòd atravè karakteristik endividyèl ki pi fasil yo devlope kòm modil aderan. Sa yo te di, gen karakteristik pwogramasyon ki pa ka fè pratik lè l sèvi avèk fonksyon endividyèl (ak konpayi nou an ap planifye lage yon algorithm pwogramasyon optimize nan fiti prè pou ede aplike pakè lojisyèl gwo echèl). Sepandan, baze sou fonksyon yo deja bati nan Wolfram Language, gen anpil posiblite pwogramasyon ki aplike ki baze sou fonksyon endividyèl. Lide a isit la se ke ak efò relativman ti kras pwogramasyon li posib yo kreye yon kantite nouvo fonksyon trè itil ki pral bay ase koerans nan konsepsyon an, yo pral byen kowòdone youn ak lòt, epi tou, anplis sa a, yo yo pral kapab fasil ak lajman itilize nan lang nan nan tan kap vini an.
Apwòch sa a se, nan kou, yon konpwomi. Si yo te aplike yon pi gwo pake, yo ta ka imajine yon nouvo mond nan fonksyonalite ki ta trè pwisan ak itil. Si gen yon bezwen jwenn nouvo fonctionnalités ki pral anfòm ak tout lòt bagay, men ou pa vle depanse anpil efò sou devlope pwojè a, sa a, malerezman, ka mennen nan yon rediksyon nan sijè ki abòde lan pwojè ou a. Lide ki dèyè repozitwa karakteristik Wolfram la se bay fonksyonalite nan yon pati defini nan yon pwojè; apwòch sa a pral ajoute fonksyonalite pwisan pandan y ap fè li pi fasil pou kenbe bon konsistans nan yon pwojè pwogramasyon.
Ede ajoute fonksyon koutim nan repozitwa fonksyon an
Ekip nou an te travay di pou rann li fasil pou itilizatè yo kontribye nan karakteristik depo Wolfram yo. Sou Desktop la (deja nan
Gen de etap prensipal ou pral bezwen fè: premye, aktyèlman ekri kòd la pou fonksyon ou a epi, dezyèmman, ekri dokiman ki montre kouman fonksyon ou ta dwe travay.
Klike sou bouton "Open Sample" ki anlè a pou wè yon egzanp sou sa ou bezwen fè:
Esansyèlman, w ap eseye kreye yon bagay ki sanble ak yon fonksyon entegre nan Lang Wolfram la. Eksepte ke li ka fè yon bagay pi plis espesifik pase yon fonksyon bati-an. An menm tan an, atant konsènan konplè li yo ak fyab yo pral pi ba anpil.
Ou bezwen bay fonksyon ou yon non ki swiv direktiv non fonksyon Wolfram Language la. Anplis de sa, w ap bezwen devlope dokiman pou fonksyon ou, menm jan ak fonksyon yo entegre nan lang lan. Mwen pral pale sou sa a nan plis detay pita. Pou kounye a, jis remake ke nan ranje a nan bouton nan tèt la nan dosye a kaye definisyon gen yon bouton
Lè w sèten tout bagay ranpli byen epi w pare, klike sou bouton "Tcheke". Li konplètman nòmal ke ou poko kalkile tout detay yo. Se konsa, "Tcheke" fonksyon an pral otomatikman kouri epi fè yon anpil nan chèk style ak konsistans. Souvan, li pral imedyatman mande w konfime ak aksepte koreksyon yo (Pa egzanp: "Liy sa a dwe fini ak yon kolon," epi li pral mande w pou antre yon kolon). Pafwa li pral mande w ajoute oswa chanje yon bagay tèt ou. Nou pral toujou ap ajoute nouvo karakteristik nan fonksyonalite otomatik bouton Tcheke a, men fondamantalman objektif li se asire ke tout bagay ou soumèt nan repozitwa karakteristik yo deja suiv anpil gid stil posib.
Se konsa, apre kouri "Tcheke", ou ka itilize "Aperçu". "Preview" kreye yon aperçu nan paj dokiman ou defini pou fonksyon ou a. Ou kapab tou kreye yon aperçu pou yon dosye ki te kreye sou òdinatè w lan oswa pou yon fichye ki sitiye nan depo nwaj. Si, pou kèk rezon, ou pa satisfè ak sa ou wè nan preview la, tou senpleman tounen epi fè koreksyon ki nesesè yo, epi klike sou bouton Preview la ankò.
Koulye a, ou pare pou pouse fonksyon ou nan repozitwa a. Bouton Deploye a ba ou kat opsyon:
Sa ki enpòtan nan etap sa a se ke ou ka soumèt fonksyon ou a nan repozitwa fonksyon Wolfram pou li disponib pou nenpòt moun. An menm tan an, ou kapab tou mete fonksyon ou pou yon kantite limite itilizatè yo. Pou egzanp, ou ka kreye yon fonksyon ki anime lokalman sou òdinatè w lan pou ke li disponib lè w itilize òdinatè sa a an patikilye. Oswa ou ka poste li nan ou
Se konsa, an n di ou vle aktyèlman soumèt fonksyon ou nan baz konesans fonksyon Wolfram. Pou fè sa, ou klike sou bouton "Soumèt" nan repozitwa a. Se konsa, sa k ap pase nan moman sa a? Aplikasyon w la imedyatman mete ann ann atandan pou revize ak apwobasyon pa ekip konsèvate nou an.
Pandan aplikasyon w lan ap pwogrese nan pwosesis apwobasyon an (ki anjeneral pran plizyè jou), w ap resevwa kominikasyon konsènan estati li a epi petèt sijesyon pou itilizasyon alavni. Men, yon fwa yo apwouve karakteristik ou a, li pral imedyatman pibliye nan Wolfram Feature Repository la epi yo pral disponib pou nenpòt moun ki itilize. (Epi sa a ap parèt nan
Ki sa ki ta dwe nan depo a?
Li ta dwe remake ke konpayi nou an gen estanda trè wo pou konplè, fyab ak bon jan kalite an jeneral, ak nan 6000 + fonksyon ke nou te deja bati nan lang nan Wolfram sou 30 + ane ki sot pase yo, tout satisfè kondisyon ki anwo yo. Objektif Wolfram Fonksyon Repository la se sèvi ak tout estrikti ak fonksyonalite ki deja egziste nan Wolfram Language pou ajoute fonksyon pi lejè (sa vle di, fonksyon pèfòmans ki pi wo) ke posib.
Natirèlman, fonksyon nan depo fonksyon Wolfram yo dwe konfòme yo ak prensip konsepsyon Wolfram Language - pou yo ka konplètman kominike avèk lòt fonksyon ak atant itilizatè yo sou fason fonksyon an ta dwe travay byen. Sepandan, fonksyon yo pa oblije egal-ego konplè oswa fyab.
Nan fonksyon yo entegre nan lang Wolfram, nou travay di pou fè fonksyon pwogramasyon yo jeneral ke posib. Sa yo te di, lè w ap nan depo fonksyon Wolfram la, pa gen anyen mal ak gen yon fonksyon nan li ki tou senpleman okipe kèk ka trè espesifik men itil. Pou egzanp, fonksyon an
Yon lòt pwen ki gen rapò ak fonksyon yo entegre se ke konpayi nou an fè tout efò yo okipe tout ka atipik, kòrèkteman okipe opinyon ki pa kòrèk, ak sou sa. Nan yon depo fonksyon, li konplètman nòmal pou gen yon fonksyon espesyal ki okipe ka prensipal yo nan rezoud yon pwoblèm ak inyore tout lòt.
Pwen evidan an se ke li pi bon pou gen fonksyon ki fè plis ak fè li pi byen, men optimize pou yon depo fonksyon - kòm opoze a fonksyon yo entegre nan lang Wolfram - ta dwe gen plis fonksyon fourni ak plis fonksyon olye ke fouye nan. pwosesis aplikasyon chak fonksyon espesifik.
Koulye a, ann gade nan yon egzanp tès fonksyon nan yon depo. Atant konsistans pou fonksyon sa yo natirèlman pi ba pase pou fonksyon langaj entegre yo. Sa a se laverite espesyalman nan ka kote fonksyon depann sou resous ekstèn tankou APIs, li enpòtan toujou ap fè tès ki konsistan, ki otomatikman rive nan algoritm verifikasyon yo. Nan fichye nb la, ou ka presize definisyon klèman (nan seksyon Enfòmasyon adisyonèl) epi presize anpil tès jan sa defini nan swa antre ak pwodiksyon fisèl oswa objè karaktè konplè nan kalite.
Kòm yon rezilta, repozitwa fonksyon an pral gen yon kantite konpleksite aplikasyon. Gen kèk ki pral jis yon liy sèl nan kòd, lòt moun ka enplike dè milye oswa dè dizèn de milye de liy, gen anpil chans lè l sèvi avèk anpil fonksyon èd. Ki lè li vo ajoute yon fonksyon ki mande anpil ti kòd pou defini? Fondamantalman, si pou yon fonksyon gen
Objektif prensipal yon depo fonksyon (jan non li sijere) se prezante nouvo karakteristik nan lang lan. Si ou vle ajoute nouvo done oswa
Gen aktyèlman de fason. Ou ka vle prezante yon nouvo kalite objè ki pral itilize nan nouvo fonksyon nan repozitwa fonksyon an. Ak nan ka sa a, ou ka toujou jis ekri reprezantasyon senbolik li yo epi sèvi ak li lè antre oswa pwodiksyon fonksyon nan yon depo fonksyon.
Men, e si ou vle reprezante yon objè epi Lè sa a, defini, atravè fonksyon ki deja egziste nan Lang Wolfram, ke ou vle travay avèk li? Lang nan Wolfram te toujou gen yon mekanis ki lejè pou sa a, ki rele
Se konsa, ki sa ki ta ka nan kòd la fonksyon nan yon depo fonksyon?
Èske yo ta dwe ekri tout kòd pou repozitwa karakteristik Wolfram nan Wolfram? Sètènman, kòd ki andedan API ekstèn lan pa ta dwe ekri nan lang Wolfram, ki pa menm fè kòd lang lan. An reyalite, si ou jwenn yon fonksyon nan prèske nenpòt lang ekstèn oswa bibliyotèk, ou ka kreye yon wrapper ki pèmèt ou sèvi ak li nan repozitwa fonksyon Wolfram. (Anjeneral ou ta dwe itilize fonksyon entegre yo pou sa
Se konsa, ki pwen nan fè sa a? Esansyèlman, sa pèmèt ou sèvi ak tout sistèm Wolfram Language entegre ak tout seri kapasite lojisyèl li yo. Si w jwenn aplikasyon baz la nan yon bibliyotèk ekstèn oswa yon lang, ou ka sèvi ak estrikti senbolik rich Wolfram Language pou kreye yon fonksyon siperyè ki pratik ki pèmèt itilizatè yo fasilman itilize nenpòt fonksyonalite ki deja aplike. Omwen a, sa ta dwe posib nan yon mond ideyal kote tout blòk bilding yo nan loading bibliyotèk elatriye egziste, nan ka sa a yo ta dwe okipe otomatikman pa Lang nan Wolfram. (Li ta dwe remake ke nan pratik ka gen pwoblèm ak
By wout la, lè ou premye gade nan bibliyotèk ekstèn tipik, yo souvan sanble twò konplèks yo dwe kouvri nan jis kèk fonksyon, men nan anpil ka, anpil nan konpleksite a soti nan kreye enfrastrikti ki nesesè pou bibliyotèk la ak tout fonksyon yo. sipòte li. Sepandan, lè w ap itilize Wolfram Language, anjeneral enfrastrikti a deja bati nan pakè yo, kidonk pa gen okenn nesesite pou ekspoze tout fonksyon sipò sa yo an detay, men sèlman kreye fonksyon pou fonksyon espesifik aplikasyon "pi wo" nan bibliyotèk la. .
"Ekosistèm" nan baz la konesans
Si ou te ekri fonksyon ou itilize regilyèman, voye yo bay Wolfram Function Repository! Si yon bagay plis pa soti nan sa a (devlopman lang), Lè sa a, menm lè sa a li pral pi bon pou ou sèvi ak fonksyon yo pou itilizasyon pèsonèl. Sepandan, li lojik asime ke si ou itilize fonksyon yo regilyèman, petèt lòt itilizatè yo ap jwenn yo itil tou.
Natirèlman, ou ka jwenn tèt ou nan yon sitiyasyon kote ou pa kapab - oswa ou pa vle - pataje fonksyon ou oswa nan ka jwenn aksè nan resous enfòmasyon prive. Menm nan ka sa yo, ou ka tou senpleman deplwaye fonksyon yo nan pwòp kont nwaj ou a,
Fonksyon ou soumèt nan repozitwa fonksyon Wolfram la pa oblije pafè; yo jis dwe itil. Sa a se yon ti jan tankou seksyon "Erè" nan dokiman klasik Unix - nan "Definisyon Seksyon" gen yon seksyon "Nòt otè" kote ou ka dekri limit, pwoblèm, elatriye ke ou deja konnen sou fonksyon ou. Anplis de sa, lè ou soumèt karakteristik ou a nan repozitwa a, ou ka ajoute nòt soumèt ke yon ekip konsèvate pral li.
Yon fwa ke yon karakteristik pibliye, paj li a toujou gen de lyen nan pati anba a: "
Pafwa ou jis vle sèvi ak fonksyon ki soti nan repozitwa fonksyon Wolfram, tankou fonksyon entegre, san gade kòd yo. Sepandan, si ou vle pran yon gade andedan, toujou gen yon bouton Notepad nan tèt la. Klike sou li epi w ap jwenn pwòp kopi kaye definisyon orijinal ou ki te soumèt nan depo karakteristik yo. Pafwa ou ka jis itilize li kòm yon egzanp pou bezwen ou yo. An menm tan an, ou kapab tou devlope pwòp modifikasyon ou nan fonksyon sa a. Ou ka vle afiche fonksyon sa yo ou te jwenn nan depo a sou òdinatè w lan oswa nan kont depo nwaj afid ou a, petèt ou vle soumèt yo nan baz konesans fonksyon an, petèt kòm yon vèsyon amelyore, elaji nan fonksyon orijinal la.
Nan lavni, nou planifye pou sipòte Git-style forking pou repozitwa karakteristik, men pou kounye a nou ap eseye kenbe li senp, epi nou toujou gen yon sèl vèsyon aksepte nan chak karakteristik bati nan lang lan. Pi souvan pase pa (sòf si devlopè yo abandone kenbe karakteristik yo te devlope epi reponn a soumèt itilizatè yo), otè orijinal la nan karakteristik nan pran kontwòl nan mizajou nan li epi li soumèt nouvo vèsyon, ki Lè sa a, revize epi, si yo pase pwosesis revizyon an. , pibliye nan lang lan.
Ann konsidere kesyon ki jan "vèsyon" fonksyon devlope yo ap travay. Kounye a, lè w sèvi ak yon fonksyon ki soti nan repozitwa fonksyon an, definisyon li yo pral estoke pou tout tan sou òdinatè w lan (oswa nan kont nwaj ou si w ap itilize nwaj la). Si gen yon nouvo vèsyon yon karakteristik ki disponib, pwochen fwa w ap itilize li w ap resevwa yon mesaj ki fè w konnen sa. Men, si ou vle mete ajou fonksyon an nan yon nouvo vèsyon, ou ka fè li lè l sèvi avèk lòd la
Youn nan bèl bagay sou Wolfram Fonksyon Repository la se ke nenpòt pwogram Wolfram Language, nenpòt kote ka itilize fonksyon nan li. Si yon pwogram parèt nan yon notepad, li souvan pratik pou fòma fonksyon depo yo kòm fonksyon "objè binè fonksyon" ki fasil pou li (petèt ak yon seri vèsyon apwopriye).
Ou ka toujou jwenn aksè nan nenpòt fonksyon nan repozitwa fonksyon an lè l sèvi avèk tèks
Kouman li travay?
Anndan fonksyon yo nan repozitwa Wolfram sa a posib lè l sèvi avèk egzakteman menm bagay la
Konsidere
Anndan ou ka wè kèk enfòmasyon lè l sèvi avèk fonksyon an
Ki jan mete yon fonksyon resous travay? Youn ki pi senp la se yon ka piman lokal. Men yon egzanp ki pran yon fonksyon (nan ka sa a jis yon fonksyon pi) epi ki defini li kòm yon fonksyon resous pou yon sesyon pwogram yo bay:
Yon fwa ou fin fè definisyon an, ou ka itilize fonksyon resous la:
Remake byen ke gen yon icon nwa nan blob fonksyon sa a . Sa vle di fonksyon BLOB la refere a fonksyon resous nan memwa ki defini pou sesyon aktyèl la. Yon karakteristik resous ki estoke pou tout tan sou òdinatè w lan oswa kont nwaj ou gen yon icon gri . Epi gen yon icon zoranj pou yon karakteristik resous ofisyèl nan Wolfram Feature Repository .
Se konsa, sa k ap pase lè ou itilize meni an Elaji nan Kaye Definisyon an? Premyèman, li pran tout definisyon yo nan notepad la ak nan yo kreye yon senbolik
Deplwaman lokal yon fonksyon ki soti nan yon depo sou òdinatè w lan fèt lè l sèvi avèk kòmandman an
Si ou klike sou bouton Soumèt pou yon Repozitwa Fonksyon, sa k ap pase anba li
Pa default, soumèt yo fèt sou non ki asosye ak ID Wolfram ou a. Men, si w ap soumèt yon aplikasyon sou non yon ekip devlopman oswa òganizasyon, ou kapab
Apre ou fin soumèt nenpòt nan fonksyon ou yo nan baz konesans fonksyon an, li pral nan keu pou revizyon. Si ou resevwa kòmantè kòm repons, yo pral anjeneral nan fòm lan nan yon dosye tèks ak "selil kòmantè" adisyonèl ajoute. Ou ka toujou tcheke estati aplikasyon w lan lè w vizite
Gen kèk sibtilite nan travay
Nan premye gade li ka sanble ke ou ka jis pran yon kaye definisyon epi mete li mo pou mo nan yon depo fonksyon, sepandan, gen aktyèlman yon anpil nan sibtilite ki enplike - ak manyen yo mande pou fè kèk trè konplèks meta-pwogramasyon, manyen pwosesis senbolik. kòm kòd la ki defini fonksyon an, ak Notepad la li menm se defini. Pifò nan sa rive anndan, dèyè sèn nan, men li ka gen kèk enplikasyon ki vo konpreyansyon si ou pral kontribye nan baz la konesans karakteristik.
Premye sibtilite imedya: Lè ou ranpli Kaye Definisyon an, ou ka tou senpleman refere a fonksyon ou toupatou lè l sèvi avèk yon non tankou MyFunction, ki sanble ak yon non regilye pou yon fonksyon nan Wolfram Language, men pou dokiman depo fonksyon sa a ranplase
Dezyèm sibtilite a: lè ou kreye yon fonksyon resous nan Kaye Definisyon an, tout depandans ki enplike nan definisyon fonksyon an dwe kaptire epi yo dwe enkli klèman. Sepandan, asire ke definisyon yo rete modilè, ou bezwen mete tout bagay nan yon inik
Tipikman ou p'ap janm wè okenn tras nan kòd ki itilize pou configure namespace sa a. Men, si pou kèk rezon ou rele yon senbòl ki pa egzekite andedan fonksyon ou, Lè sa a, ou pral wè ke senbòl sa a se nan yon kontèks entèn nan fonksyon an. Sepandan, lè w ap trete Notepad Definisyon an, omwen senbòl ki koresponn ak fonksyon an li menm se
Repozitwa fonksyon an se pou defini nouvo fonksyon. Ak fonksyon sa yo ka gen opsyon. Souvan paramèt sa yo (pa egzanp,
Pifò fonksyon tou senpleman fè sa yo sipoze fè chak fwa yo rele yo, men kèk fonksyon bezwen inisyalize anvan yo ka kouri nan yon sesyon patikilye - ak rezoud pwoblèm sa a, gen yon seksyon "Inisyalizasyon" nan seksyon an Definisyon.
Fonksyon ki soti nan yon repozitwa ka itilize lòt fonksyon ki deja nan repozitwa a; yo nan lòd yo mete definisyon pou yon repozitwa fonksyon ki gen ladan de (oswa plis) fonksyon ki fè referans youn ak lòt, ou dwe deplwaye yo nan sesyon pwogram ou an pou ou kapab referans tankou sou yo
Kandida devlopman. Kisa ki ta dwe rive lè repozitwa a vin vrèman gwo?
Jodi a nou jis lanse Wolfram Feature Repository la, men avèk yon tan, nou espere ke gwosè li yo ak fonksyonalite yo ka ogmante dramatikman, epi kòm li ap grandi nan devlopman pral gen divès pwoblèm ke nou deja antisipe ka leve.
Premye pwoblèm nan konsène non fonksyon ak inik yo. Repozitwa fonksyon an fèt yon fason pou, tankou fonksyon entegre nan Lang Wolfram la, ou ka fè referans a nenpòt fonksyon tou senpleman lè w espesifye non li. Men, sa inevitableman vle di ke non fonksyon yo dwe globalman inik atravè repozitwa a, pou ke, pou egzanp, kapab genyen sèlman yon sèl.
Sa a ka sanble tankou yon gwo pwoblèm nan premye, men li la vo reyalize ke li nan fondamantalman pwoblèm nan menm jan ak bagay sa yo tankou domèn entènèt oswa manch medya sosyal. Ak reyalite a se ke sistèm nan tou senpleman bezwen gen yon anrejistre - e sa a se youn nan wòl yo ke konpayi nou an pral fè pou baz konesans fonksyon Wolfram. (Pou vèsyon prive nan yon depo, rjistrè yo ka administratè.) Natirèlman, yon domèn entènèt ka anrejistre san yo pa gen anyen sou li, men nan yon depo fonksyon, non yon fonksyon ka anrejistre sèlman si gen yon definisyon aktyèl la. fonksyon an.
Yon pati nan wòl nou nan jere baz konesans fonksyon Wolfram se asire ke non yo chwazi pou yon fonksyon se lojik dapre definisyon fonksyon an epi ke li swiv konvansyon nonmen Wolfram Language. Nou gen plis pase 30 ane eksperyans nan nonmen fonksyon entegre nan Wolfram Language, epi ekip konsèvatè nou an pral pote eksperyans sa a nan depo fonksyon an tou. Natirèlman, toujou gen eksepsyon. Pa egzanp, li ka sanble pi bon pou gen yon non kout pou kèk fonksyon, men li pi bon pou "defann" ak yon non ki pi long, ki pi espesifik paske ou gen mwens chans rankontre yon moun ki vle fè yon non fonksyon menm jan an nan lavni. .
(Li ta dwe remake isit la ke tou senpleman ajoute kèk tag manm nan dezabigwate fonksyon yo pa pral gen efè a gen entansyon. Paske sof si ou ensiste pou toujou bay yon tag, w ap bezwen defini yon tag default pou nenpòt fonksyon bay yo, epi tou asiyen tag otè. , ki ankò ta mande kowòdinasyon mondyal.)
Kòm baz konesans nan fonksyon Wolfram ap grandi, youn nan pwoblèm ki pral gen anpil chans rive se dekouvèt fonksyon, pou ki sistèm nan bay.
Pou fonksyon entegre nan Wolfram Language gen yon sa yo rele kouch deteksyon ki ofri pa
Repozitwa fonksyon Wolfram configuré kòm yon depo fonksyon ki pèsistan, kote nenpòt fonksyon ladan l ap toujou travay. Natirèlman, nouvo vèsyon karakteristik yo ka vin disponib, epi nou espere ke kèk karakteristik pral nan kou vin demode sou tan. Fonksyon yo ap travay si yo itilize yo nan pwogram yo, men paj dokiman yo ap mennen nan nouvo fonksyon ki pi avanse.
Wolfram Feature Repository la fèt pou ede w dekouvri nouvo karakteristik byen vit epi aprann nouvo fason pou itilize lang Wolfram la. Nou trè optimis ke kèk nan sa ki te eksplore nan repozitwa karakteristik yo pral evantyèlman gen sans pou yo vin pati entegre nan nwayo Wolfram Language. Pandan dènye dekad la nou te gen yon seri menm jan an
Bagay ki pi enpòtan isit la se ke yon fonksyon nan yon depo fonksyon se yon bagay ki disponib pou chak itilizatè yo itilize kounye a. Li posib ke yon karakteristik lang natif natal ta ka pi bon ak plis pèfòmans, men yon repozitwa karakteristik ta pèmèt itilizatè yo gen aksè a tout nouvo karakteristik yo touswit. Epi, sa ki pi enpòtan, konsèp sa a pèmèt tout moun ajoute nenpòt nouvo karakteristik yo vle.
Byen bonè nan istwa a nan lang Wolfram, lide sa a pa t 'te travay kòm byen ke li te genyen, men nan etap sa a gen anpil efò yo mete nan lang lan, ak yon konpreyansyon byen fon nan prensip konsepsyon lang, ke li kounye a sanble anpil. posib pou yon gwo kominote itilizatè yo ajoute karakteristik ki pral kenbe konsistans konsepsyon pou fè yo itil nan yon pakèt itilizatè.
Gen yon espri talan enkwayab (?) nan kominote itilizatè Wolfram Language. (Natirèlman, kominote sa a gen ladann anpil moun dirijan R&D nan yon varyete domèn.) Mwen espere ke Wolfram Feature Repository la pral bay yon platfòm efikas pou debloke ak difize lespri talan sa a. Se sèlman ansanm nou ka kreye yon bagay ki pral siyifikativman elaji zòn nan kote paradigm nan enfòmatik lang Wolfram ka aplike.
Nan plis pase 30 ane, nou te vini yon fason lontan ak lang nan Wolfram. Koulye a, ansanm, ann ale menm pi lwen. Mwen ankouraje tout itilizatè ki respekte lang Wolfram atravè mond lan pou yo sèvi ak depo karakteristik yo kòm yon platfòm pou sa, ansanm ak nouvo pwojè lojisyèl tankou Free Wolfram Engine for Developers.
Sous: www.habr.com