Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Kaixo, Habr! Stephen Wolfram-en postaren itzulpena aurkezten dizuet "Wolfram funtzioen biltegia: Wolfram hizkuntza hedatzeko plataforma irekia abian jartzea".

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Wolfram hizkuntzaren koherentziarako aurrebaldintzak

Gaur programazio-lengoaiarekin batera lorpen handien atarian gaude Wolfram hizkuntza. Duela hiru aste jarri ginen martxan doako Wolfram motorra garatzaileentzatgure erabiltzaileei Wolfram Language beren eskala handiko software proiektuetan integratzen laguntzeko. Gaur martxan jartzen ari gara Wolfram funtzioen biltegia, Wolfram lengoaia zabaltzeko sortutako funtzioetarako plataforma koordinatu bat eskaintzeko, eta gure software-produktuaren garapenean lagundu dezakeen edonorentzat funtzioen biltegi bat ere irekitzen dugu.

Wolfram Function Repository Wolfram Lengoaiaren izaera bereziak posible egin duen zerbait da, ez bakarrik programazio-lengoaia gisa, baizik eta eskala osoko konputazio-lengoaia. Programazio lengoaia tradizionaletan, funtzionalitate berri esanguratsuak gehitzeak elkarrekin erabiltzen direnean funtziona dezaketen edo ez duten liburutegi osagarri osoak sortzea dakar normalean. Hala ere, Wolfram hizkuntzan hainbeste dago jada hizkuntzan bertan eraikia, posible dela bere funtzionaltasuna nabarmen zabaltzea hizkuntza osoaren egitura integralean berehala integratzen diren funtzio berriak gehituz besterik gabe.

Adibidez, Wolfram funtzioen biltegiak dagoeneko dauka 532 ezaugarri berri 26 kategoria tematikotan egituratuta:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Era berean, baino gehiago 6000 funtzio estandarrak, Wolfram lengoaian eraikia, biltegiko funtzio bakoitzak dokumentazio orri bat du haien deskribapen zehatza eta lan-adibideekin:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Orrialdera iristeko, kopiatu goiko objektua (BLOB funtzioa), itsatsi sarrera-lerroan eta exekutatu funtzioa - Wolfram hizkuntzan dago jadanik eta lehenespenez onartzen da. 12.0. bertsioa:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Kontuan izan behar da hemen prozesatzeko orduan LogotipoaQRCodea Ez duzu, adibidez, "irudiak prozesatzeko liburutegia" konfiguratu beharrik - Wolfram hizkuntzan modu koherente eta arretaz algoritmiko bat ezarri baitugu dagoeneko. irudien tratamendua, hizkuntza grafikoko hainbat funtziok berehala prozesatu dezaketena:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Hori espero dut laguntzarekin komunitate zoragarria eta talentua, azken hamarkadetan hazten eta hedatzen joan dena (Wolfram hizkuntzan oinarrituta). Wolfram funtzioen biltegiak etorkizun hurbilean hizkuntzan eskuragarri dauden funtzio sorta (baliteke esanguratsua izan daitekeena, zientziaren eta teknologiaren hainbat arlotan espezializatua) nabarmen zabaltzeko aukera emango du. Horrela, hizkuntzaren edukia (bere barnean dituen funtzioak) eta bai erabiltzea posible bihurtzen da garapen printzipioak, hizkuntzan oinarrituta ezartzen direnak. (Kontuan izan behar da hemen Wolfram Hizkuntzak dagoeneko baino gehiago duela 30 urteko garapena eta hazkunde egonkorra).
Biltegiko funtzioek Wolfram hizkuntzan idatzitako kode txikiak edo handiak izan ditzakete. Adibidez, hauek deiak izan daitezke kanpoko APIak eta zerbitzuak edo kanpoko liburutegiak beste hizkuntza batzuetan. Ikuspegi honen ezaugarri berezia da erabiltzaile-mailako funtzionalitateak sakontzen dituzunean, ez dela inkoherentzia potentzialrik egongo, ikuspegia Wolfram Hizkuntzaren egitura koherentearen gainean eraikita dagoelako, eta funtzio bakoitzak automatikoki behar bezala funtzionatuko duelako. egin behar zuen.
Wolfram Feature Repository-en shell-a eta programazio-egitura diseinatuta dago, denek kausa komunean lagundu ahal izateko modu erraz eta erosoenean, hain zuzen ere. Notepad testu fitxategia (nb luzapena duena) WL betez. Funtzio automatiko integratuek biltegian gehitutako funtzio berriak egiaztatzeko aukera ematen dute, hizkuntzan integratzea ziurtatzeko. Gure konpainiak bere funtzioak hizkuntzan integra ditzaketen erabiltzaile sorta zabalaren aldeko apustua egiten du, funtzio berrien konplexutasun handiaren alde egin beharrean, eta berrikuspen prozesu bat dagoen arren, ez dugu horrelakorik eskatzen. diseinuaren azterketa zorrotza edo erabiltzailearen funtzio berrien osotasun eta fidagarritasunerako estandar zorrotzak, erabiltzen dugun oinarrizko hizkuntzan integratutako funtzioen proba zorrotzagoen aurrean.

Konpromiso eta xehetasun asko daude ikuspegi honetan, baina gure helburua Wolfram ezaugarrien biltegia optimizatzea da, bai erabiltzailearen esperientziarako, bai erabiltzaile-eginbide berriek hizkuntzaren garapenean modu esanguratsuan laguntzen dutela ziurtatzea. Hazten goazen heinean, ez dut dudarik biltegian integratutako funtzioak prozesatzeko eta baliozkotzeko metodo berriak asmatu beharko ditugula, ez behintzat funtzio ugari antolatzeko eta erabiltzaileek behar dituztenak aurkitzeko. Hala ere, pozgarria da aukeratu dugun bidea hasiera ona izatea. Nik pertsonalki hainbat ezaugarri gehitu ditu jatorrizko datu-basera. Horietako asko denbora luzez pertsonalki garatu dudan kodean oinarritzen dira. Eta minutu batzuk bakarrik behar izan ditut biltegira bultzatzeko. Orain biltegian daudela, azkenean -berehala eta edozein unetan- erabil ditzaket funtzio hauek behar bezala, fitxategiak bilatzeko, paketeak deskargatzeko, etab.

Eraginkortasuna handitzea kostuak murriztuz

Internet baino lehen ere, Wolfram Language kodea partekatzeko moduak zeuden (gure lehen proiektu zentralizatua izan zen MathSource, 1991n Mathematicarako sortua CD-ROMean oinarrituta, etab.). Jakina, Wolfram funtzioen biltegian oinarrituta inplementatzeko proposatzen den ikuspegia tresna indartsuagoa eta fidagarriagoa da goiko zereginak ezartzeko.

30 urte baino gehiagoz, gure enpresak arduratsu lan egin du Wolfram lengoaiaren egituraren osotasuna mantentzeko, eta hori funtsezkoa da Wolfram lengoaia programazio-lengoaia ez ezik, programazio-lengoaia ere bihur dadin bermatzeko. erabateko informatika-lengoaia. Eta horrela, Wolfram funtzioen biltegia ezartzeko planteamenduaren funtsa programazio eta funtzio berriak garatzeko ikuspegi bateratua erabiltzea da, sekuentzialki gehitzen diren eta hizkuntzaren esparruan sartzen diren, garatu eta elkarrekin eboluzionatu ahal izateko.

Funtzio bakoitzaren ezarpen-egituran hainbat prozesu konputazional gertatzen dira. Kontuan izan behar da hemen beharrezkoa dela funtzioak itxura argia eta uniformea ​​eta erabiltzailearentzako irakurgarritasun bisuala izatea. Testuinguru honetan, Wolfram Hizkuntzaren funtzio integratuak funtzioak behar bezala programatzeko 6000 adibide sekuentzial baino gehiagorekin aurkezten dira (hauek dira gure zuzeneko programazio bideoakbarne hartzen dituena programa estandarrak sortzeko ehunka orduko prozesua). Ikuspegi honek, azken finean, Wolfram ezaugarrien biltegia ondo funtzionatzeko gai bihurtzen duena Wolfram Languageren egitura-izaera da, hizkuntzan dagoeneko eraikita dauden liburutegi gehigarri eta askotariko ugarirekin. Adibidez, irudiak prozesatzen dituen funtzio bat baduzu, edo array urriakEdo egitura molekularrakEta datu geografikoak edo beste batzuk - haien irudikapen sinboliko koherentea dagoeneko existitzen da hizkuntzan, eta horri esker, zure funtzioa berehala bihurtzen da bateragarria hizkuntzako beste funtzio batzuekin.

Benetan ondo funtzionatzen duen biltegi bat sortzea metaprogramazio lan interesgarria da. Adibidez, programan murrizketen gehiegizkoak ez du algoritmoaren beharrezko bateratzea eta unibertsaltasuna lortzea ahalbidetuko. Murrizketa funtzional kopuru nahikorik ez dagoen bezala, ezin izango duzu algoritmoen exekuzio-sekuentzia nahiko zuzena ezarri. Gure enpresak inplementatutako ikuspegi hauen konpromisoa ezartzearen aurreko hainbat adibide nahiko egonkor funtzionatu zuten - hauek dira: Tungsteno proiektuaren erakustaldiak, 2007an abian jarri zen eta gaur egun linean exekutatzen da erabiltzailearen 12000 demo interaktibo baino gehiagorekin. IN Wolfram datu-basea Wolfram Language-n erabil daitezkeen prest dauden 600 datu-base baino gehiago daude, eta Wolfram sare neuronalaren biltegiratzea ia astero sare neuronal berriez hornitzen da (dagoeneko 118 daude orain) eta berehala konektatzen dira funtzioaren bidez. NetModel Wolfram hizkuntzan.

Aurreko adibide guztiek oinarrizko ezaugarri bat dute: proiektuan bildutako objektu eta funtzioek prozesuen egituraketa eta banaketa maila oso altua dute. Jakina, demo edo neurona-sare bat edo beste zerbait denaren egituraren xehetasunak asko alda daitezke, baina egungo edozein biltegirako oinarrizko egiturak beti izaten jarraitzen du. Beraz, zein da zure iritzia, erabiltzaile maitea, Wolfram hizkuntzari luzapenak gehitzen dizkion biltegi bat sortzeari buruz? Wolfram Language oso malgua izateko diseinatuta dago, beraz, edozein modutan hedatu eta alda daiteke. Zirkunstantzia hau oso garrantzitsua da Wolfram hizkuntzan eskala handiko hainbat software proiektu azkar sortzeko gaitasuna izateko. Kontuan izan behar da hemen hizkuntzaren malgutasuna handitzen den heinean hizkuntza horretan gauzatutako proiektuen kostua ezinbestean handituko dela. Izan ere, erabiltzaileak zenbat eta gehiago erabili horrelako hizkuntza bat, orduan eta funtzionaltasun gehiago jasotzen du, baina ez dugu ahaztu behar ikuspegi honek alde negatiboak ere izan ditzakeela programa-moduluen koherentzia koherentea bermatzeko ezintasunari dagokionez.

Ohiko arazo bat dago programazio-lengoaia tradizionaletako liburutegiekin - liburutegi bat erabiltzen baduzu, adibidez, kodea behar bezala funtzionatuko du, baina liburutegi bat baino gehiago erabiltzen saiatzen bazara, ez dago bermatzen elkarren artean ondo interakzionatuko dutenik. . Era berean, programazio lengoaia tradizionaletan - konputazio-lengoaia oso batean ez bezala - ez dago inolako funtzio edo datu-motetarako oinarrizko egiturak ez diren irudikapen koherenteen presentzia bermatzeko modurik. Baina, egia esan, arazoa lehen begiratuan dirudiena baino are handiagoa da: eskala handiko funtzionalitate bertikal bat eraikitzen ari bada, Wolfram lengoaian jartzen dugun proiektu zentralizatuaren programazioaren kostu handirik gabe, ezinezkoa da koherentzia lortu. Beraz, garrantzitsua da software-modulu guztiak behar bezala lan egitea beti.

Beraz, Wolfram ezaugarrien biltegiaren atzean dagoen ideia goian azaldutako arazoa saihestea da, kode zati txiki samarretan hizkuntzari luzapenak gehituz modulu koherente gisa garatzeko errazagoak diren ezaugarri indibidualen bidez. Hori esanda, funtzio indibidualak erabiliz eroso egin ezin diren programazio-eginbideak daude (eta gure konpainiak etorkizun hurbilean programazio-algoritmo optimizatua kaleratzeko asmoa du, eskala handiko software paketeak inplementatzen laguntzeko). Hala ere, Wolfram Lengoaian dagoeneko eraikitako funtzioetan oinarrituta, funtzio indibidualetan oinarrituta inplementatzen diren programazio aukera asko daude. Hemen ideia da programazio-ahalegin txikiarekin diseinuari koherentzia nahikoa emango dioten funtzio berri eta oso erabilgarriak sortzea posible dela, ondo koordinatuta egongo direla eta, horretaz gain, Etorkizunean hizkuntzan erraz eta zabal erabiltzeko gai izango da.

Planteamendu hau, noski, konpromiso bat da. Pakete handiago bat ezarriko balitz, oso indartsua eta erabilgarria izango litzatekeen funtzionaltasun-mundu berri bat imajina liteke. Beste guztiarekin bat etorriko den funtzionaltasun berriak lortu beharra badago, baina ez bazaude prest proiektua garatzeko esfortzu handirik egiteko, honek, tamalez, zure proiektuaren esparrua murriztea ekar dezake. Wolfram ezaugarrien biltegiaren atzean dagoen ideia proiektu baten definizio-zati bati funtzionaltasuna ematea da; ikuspegi honek funtzionalitate indartsuak gehituko ditu programazio-proiektu batean koherentzia ona mantentzea errazten duen bitartean.

Lagundu funtzio pertsonalizatuak gehitzen funtzioen biltegian

Gure taldeak gogor lan egin du erabiltzaileek Wolfram biltegiaren eginbideetan ekarpenak egiteko. Mahaigainean (dagoeneko 12.0. bertsioa), menu nagusiko fitxetatik sekuentzialki joan zaitezke: Fitxategia > Berria > Biltegiaren elementua > Funtzioen biltegiaren elementua eta "Definizio Koadernoa" (programatikoki lan mahaiaren barruan. Funtzio analogikoa ere erabil dezakezu - Sortu Koadernoa["Funtzio Baliabidea"]):

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Bi urrats nagusi egin beharko dituzu: lehenik eta behin, idatzi zure funtzioaren kodea eta, bigarrenik, zure funtzioak nola funtzionatu behar duen azaltzen duen dokumentazioa idatzi.
Egin klik goiko "Ireki Lagina" botoian egin behar duzunaren adibide bat ikusteko:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Funtsean, Wolfram Language-n integratutako funtzio baten antzeko zerbait sortzen saiatzen ari zara. Funtzio integratua baino askoz zehatzagoa egin dezakeela izan ezik. Aldi berean, osotasunari eta fidagarritasunari buruzko itxaropenak askoz txikiagoak izango dira.
Zure funtzioari Wolfram Language-ren funtzioak izendatzeko jarraibideei jarraitzen dion izena eman behar diozu. Horrez gain, zure funtziorako dokumentazioa garatu beharko duzu, hizkuntzaren funtzio integratuen antzera. Geroago hitz egingo dut honetaz zehatzago. Oraingoz, ohartu besterik ez dago definizio-koadernoaren fitxategiaren goialdean dagoen botoien ilaran botoi bat dagoela "Estilo-gidalerroak", zer egin behar den azaltzen duena, eta Tresnak botoia, zure funtzioaren dokumentazioa formateatzeko tresnak eskaintzen dituena.
Dena behar bezala beteta dagoela eta prest zaudenean, egin klik "Egiaztatu" botoian. Guztiz normala da oraindik xehetasun guztiak argitu ez izana. Beraz, "Check" funtzioa automatikoki exekutatuko da eta estilo eta koherentzia egiaztapen asko egingo ditu. Askotan, zuzenketak berresteko eta onartzeko eskatuko dizu berehala (adibidez: "Lerro honek bi punturekin amaitu behar du" eta bi puntu bat idazteko eskatuko dizu). Batzuetan, zuk zeuk zerbait gehitzeko edo aldatzeko eskatuko dizu. Etengabe gehituko dizkiogu Egiaztatze botoiaren funtzionaltasun automatikoari eginbide berriak, baina funtsean funtzioen biltegian bidaltzen duzun guztia ahalik eta estilo-gidalerro gehien jarraitzen duela ziurtatzea da.

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Beraz, "Egiaztatu" exekutatu ondoren, "Aurrebista" erabil dezakezu. "Aurrebista"-k zure funtziorako definitu duzun dokumentazio-orriaren aurrebista sortzen du. Zure ordenagailuan sortutako fitxategi baterako edo hodeiko biltegian dagoen fitxategi baterako aurrebista bat ere sor dezakezu. Arrazoiren batengatik, aurrebistan ikusten duzunarekin konforme ez bazaude, atzera egin eta beharrezko zuzenketak egin, eta egin klik berriro Aurrebista botoian.
Orain prest zaude zure funtzioa biltegira bultzatzeko. Inplementatu botoiak lau aukera ematen dizkizu:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Urrats honetan garrantzitsuena zure funtzioa Wolfram funtzioen biltegian bidal dezakezula edonorentzat eskuragarri egon dadin. Aldi berean, zure funtzioa erabiltzaile kopuru mugatu baterako ere jar dezakezu. Adibidez, zure ordenagailuan lokalean ostatatutako funtzio bat sor dezakezu, ordenagailu jakin hori erabiltzen duzunean erabilgarri egon dadin. Edo zure webgunean argitaratu dezakezu hodeiko kontua, hodeira konektatuta zaudenean eskuragarri egon dadin. Era berean, funtzioa publikoki osta dezakezu zure hodeiko kontuaren bidez. Ez da Wolfram ezaugarrien biltegian egongo, baina zure kontutik zure funtzioa lortzeko aukera emango dion URL bat eman ahal izango diozu norbaiti. (Etorkizunean, gure enpresa osoko biltegi zentralak ere onartzen ditugu.)

Beraz, demagun zure funtzioa Wolfram funtzioaren ezagutza-basera bidali nahi duzula. Horretarako, egin klik "Bidali" botoia biltegira. Orduan, zer gertatzen da momentu honetan? Zure eskaera berehala jartzen da gure komisario talde dedikatuak berrikusteko eta onartzeko.

Zure eskaera onarpen-prozesuan aurrera doan heinean (normalean hainbat egun behar izaten ditu), haren egoerari buruzko komunikazioak jasoko dituzu eta, agian, etorkizunean erabiltzeko iradokizunak jasoko dituzu. Baina zure funtzioa onartu ondoren, berehala argitaratuko da Wolfram Feature Biltegian eta edonork erabil dezan egongo da. (Eta hau agertuko da ezaugarri berrien albisteen laburpena eta abar)

Zer egon behar du biltegian?

Kontuan izan behar da gure konpainiak oso estandar altuak dituela osotasun, fidagarritasun eta kalitate orokorrari dagokionez, eta azken 6000 urteotan Wolfram hizkuntzan dagoeneko eraiki ditugun 30 funtzio baino gehiagok, denek betetzen dituzte aurreko baldintzak. Wolfram Function Repository-en helburua Wolfram Language-n lehendik dauden egitura eta funtzionalitate guztiak erabiltzea da, ahalik eta funtzio arinagoak (hau da, errendimendu handiagoko funtzioak) gehitzeko.

Jakina, Wolfram funtzioen biltegiko funtzioek Wolfram Lengoaiaren diseinu-printzipioekin bat etorri behar dute; horrela, beste funtzioekin eta erabiltzaileek funtzioak behar bezala funtzionatu behar duten itxaropenekin guztiz elkarreragin ahal izateko. Hala ere, funtzioek ez dute osotasun edo fidagarritasun berdinekoa izan behar.

Wolfram lengoaiaren funtzio integratuetan, gogor egiten dugu lan programazio funtzioak ahalik eta orokorrenak izan daitezen. Hori esanda, Wolfram funtzioen biltegian ez dago ezer gaizki bertan kasu oso zehatz baina erabilgarria kudeatzen duen funtzio bat edukitzea. Adibidez, funtzioa Bidali PostaKoadernotik fitxategiak formatu zehatz batean jaso ditzake eta posta modu zehatz batean sortu. Diagrama poligonala grafikoak sortzen ditu kolore eta etiketa batzuekin soilik, etab.

Funtzio integratuei lotutako beste puntu bat da gure enpresak ahalegin guztiak egiten dituela kasu atipiko guztiak kudeatzeko, sarrera okerrak zuzen kudeatzeko, etab. Funtzio-biltegi batean, guztiz normala da arazo bat konpontzeko kasu nagusiak kudeatzen dituen eta beste guztiak alde batera uzten dituen funtzio berezi bat egotea.

Begi bistakoa da hobe dela gehiago egiten duten eta hobeto egiten duten funtzioak edukitzea, baina funtzioen biltegi baterako optimizazioak - Wolfram lengoaiaren funtzio integratuekin ez bezala - funtzio gehiagorekin bilduta egon beharko luke funtzio gehiagorekin sakondu beharrean. funtzio zehatz bakoitzaren ezarpen-prozesuak.

Ikus dezagun orain biltegi bateko funtzioak probatzeko adibide bat. Funtzio horien koherentzia-itxaropenak, berez, hizkuntza-funtzio integratuak baino askoz txikiagoak dira. Hau bereziki egia da funtzioak kanpoko baliabideen menpe dauden kasuetan, hala nola APIak, garrantzitsua da etengabe proba koherenteak egitea, eta hori automatikoki egiaztatze algoritmoen barruan gertatzen da. Nb fitxategian, definizioak esplizituki zehaztu ditzakezu (Informazio Gehigarria atalean) eta sarrerako eta irteerako kateek edo motako karaktere osoko objektuek definitutako adina proba zehaztu ditzakezu. Egiaztapen-proba, egoki iruditzen zaizun neurrian. Horrez gain, sistema etengabe saiatzen ari da ematen dituzun dokumentazio-adibideak egiaztapen-prozesu batean bihurtzen (eta batzuetan nahiko baliabide asko izan daitezke, adibidez, emaitza ausazko zenbakien edo eguneko orduaren araberakoa den funtzio baterako).

Ondorioz, funtzioen biltegiak hainbat inplementazio konplexu izango ditu. Batzuk kode-lerro bakarra izango dira, beste batzuk milaka edo dozenaka mila lerro izan ditzakete, ziurrenik funtzio laguntzaile asko erabiliz. Noiz merezi du definitzeko kode gutxi behar duen funtzio bat gehitzea? Funtsean, funtzio baterako badago izen mnemotekniko ona, erabiltzaileek erraz ulertuko lukete kode zati batean ikusiko balute, orduan dagoeneko gehi daiteke. Bestela, seguruenik hobe da kodea berriro gehitzea zure programan erabili behar duzun bakoitzean.

Funtzio-biltegi baten helburu nagusia (bere izenak dioen bezala) hizkuntzan ezaugarri berriak sartzea da. Datu berriak gehitu nahi badituzu edo entitate berriak, erabili Wolfram Datu biltegia. Baina zer gertatzen da zure kalkuluetarako objektu mota berriak sartu nahi badituzu?

Egia esan, bi modu daude. Baliteke funtzioen biltegian funtzio berrietan erabiliko den objektu mota berri bat sartu nahi izatea. Eta kasu honetan, beti idatzi dezakezu bere irudikapen sinbolikoa eta erabil dezakezu funtzioen biltegi batean funtzioak sartzeko edo ateratzeko.

Baina zer gertatzen da objektu bat irudikatu nahi baduzu eta ondoren definitu, Wolfram Language-n dauden funtzioen bidez, berarekin lan egin nahi duzula? Wolfram Hizkuntzak beti izan du horretarako mekanismo arin bat, izenekoa GoraBalioak. Murrizketa batzuekin (batez ere funtzioetarako ezin dituzte haien argudioak ebaluatu), funtzioen biltegi batek funtzio bat irudikatzeko eta haren balioak definitzeko aukera ematen du. (Wolfram hizkuntzan guztiz integratuta dagoen diseinu nagusi berri bat sortzean koherentziaren itxaropena areagotzea, oro har, oso prozedura garrantzitsua da, proiektuaren kostua handituz besterik gabe lortu ezin dena eta gure enpresak proiektuen barruan egiten duen zerbait da. hizkuntzaren epe luzerako garapenerako, zeregin hori ez da biltegiaren garapenaren baitan ezartzen den helburua).

Beraz, zer egon liteke funtzio-kodean funtzio-biltegi batean? Wolfram hizkuntzan eraikitako guztia, noski (ordezkatzen ez badu behintzat mehatxuak egiteko segurtasun eta programaren beraren errendimendua, informatika-ingurune gisa) bai eta funtzioen biltegiko edozein funtzio ere. Hala ere, badaude beste funtzionalitate batzuk: funtzioen biltegi bateko funtzio batek API bati dei diezaioke, edo in Wolfram hodeiaEdo beste iturri batetik. Jakina, honekin lotutako arrisku batzuk daude. Izan ere, APIa aldatuko ez den bermerik ez dagoelako eta funtzio dendako funtzioak funtzionatzeari utziko dio. Horrelako arazoak identifikatzen laguntzeko, ohar bat dago dokumentazio-orrian (Eskakizunak atalean) Wolfram Language-ren funtzionaltasun integratua baino gehiago oinarritzen den edozein eginbiderako. (Noski, datu errealei dagokienez, funtzionaltasun honekin ere arazoak egon daitezke - mundu errealeko datuak etengabe aldatzen ari direlako, eta batzuetan bere definizioak eta egitura ere aldatzen dira).

Wolfram ezaugarrien biltegirako kode guztia Wolfram-en idatzi behar al da? Zalantzarik gabe, kanpoko API barruko kodea ez da Wolfram hizkuntzan idatzi behar, eta horrek ez du hizkuntza kodea ere egiten. Izan ere, funtzio bat kanpoko edozein hizkuntzatan edo liburutegitan aurkitzen baduzu, Wolfram funtzioen biltegian erabiltzeko aukera ematen duen bilgarri bat sor dezakezu. (Normalean integratutako funtzioak erabili behar dituzu horretarako Kanpoko Ebaluazioa edo Kanpoko funtzioa Wolfram hizkuntza-kodean.)

Orduan, zertarako balio du hau egiteak? Funtsean, honek Wolfram Language sistema integratua eta bere software gaitasun multzo bateratua erabiltzeko aukera ematen du. Oinarrizko inplementazioa kanpoko liburutegi edo hizkuntza batetik lortzen baduzu, orduan Wolfram Languageren egitura sinboliko aberatsa erabil dezakezu goi-mailako funtzio eroso bat sortzeko, erabiltzaileek dagoeneko inplementatutako edozein funtzionalitate erraz erabiltzeko. Gutxienez, hori bideragarria izan beharko litzateke mundu ideal batean, non liburutegiak kargatzeko eta abarretako eraikuntza-bloke guztiak dauden, eta kasu horretan Wolfram Languagek automatikoki kudeatuko luke. (Kontuan izan behar da praktikan arazoak egon daitezkeela kanpoko hizkuntzak konfiguratzea ordenagailu-sistema zehatzak eta hodeiko biltegiratzeak segurtasun arazo gehigarriak sor ditzake).

Bide batez, kanpoko liburutegi tipikoak lehen aldiz begiratzen dituzunean, askotan konplexuegiak dirudite funtzio gutxi batzuetan estaltzeko, baina kasu askotan, konplexutasunaren zati handi bat liburutegirako beharrezkoak diren azpiegiturak eta funtzio guztiak sortzeatik dator. lagundu. Hala ere, Wolfram Lengoaia erabiltzean, normalean azpiegitura dagoeneko paketeetan sartuta dago, eta, beraz, ez dago laguntza-funtzio horiek guztiak zehatz-mehatz azaldu beharrik, baizik eta liburutegiko aplikazio-funtzio "goienak" egiteko funtzioak soilik sortu. .

Ezagutza oinarriaren "ekosistema".

Aldian-aldian erabiltzen dituzun funtzioak idatzi badituzu, bidali Wolfram Function Repository-ra! Honetatik zerbait gehiago ateratzen ez bada (hizkuntzaren garapena), orduan ere askoz erosoagoa izango zaizu funtzioak erabilera pertsonalerako erabiltzea. Hala ere, logikoa da funtzioak aldizka erabiltzen badituzu, agian beste erabiltzaile batzuek ere erabilgarriak izango dituztela pentsatzea.

Jakina, baliteke zure funtzioak partekatu ezin dituzun edo nahi ez dituzun egoera batean edo informazio-baliabide pribatuetara sarbidea lortuz gero. Halakoetan ere, funtzioak zure hodeiko kontuan zabaldu ditzakezu, eskubideak zehaztuz haietara sarbidea. (Zure erakundeak badu Wolfram Enterprise hodei pribatua, orduan laster bere eginbideen biltegi pribatua ostatatzeko gai izango da, zure erakundetik kudeatu eta hirugarrenen erabiltzaileek ikustaldiak ikustera behartu ala ez ezarri.)

Wolfram funtzioen biltegira bidaltzen dituzun funtzioek ez dute zertan perfektuak izan; erabilgarriak izan behar dute. Hau Unix-en dokumentazio klasikoko "Erroreak" atalaren antzekoa da - "Definizioak atalean" "Egilearen oharrak" atala dago, non dagoeneko ezagutzen dituzun mugak, arazoak eta abar deskriba ditzakezu zure funtzioari buruz. Gainera, zure funtzioa biltegira bidaltzen duzunean, komisario talde dedikatu batek irakurriko dituen bidalketa oharrak gehi ditzakezu.

Ezaugarri bat argitaratutakoan, bere orrialdeak bi esteka ditu beti behealdean: "Bidali mezu bat eginbide honi buruz"Eta"Eztabaidatu Wolfram komunitatean" Ohar bat eransten ari bazara (adibidez, esan akatsei buruz), zure mezua eta harremanetarako informazioa funtzioaren egilearekin partekatzea nahi duzula dioen laukia markatu dezakezu.

Batzuetan, Wolfram funtzioen biltegiko funtzioak erabili nahi dituzu, hala nola funtzio integratuak, haien kodea begiratu gabe. Hala ere, barrura begirada bat eman nahi baduzu, beti dago Notepad botoia goiko aldean. Egin klik gainean eta eginbideen biltegian bidalitako jatorrizko definizio-koadernoaren kopia propioa lortuko duzu. Batzuetan, zure beharretarako adibide gisa erabil dezakezu. Aldi berean, funtzio honen aldaketa propioa ere garatu dezakezu. Biltegitik aurkitu dituzun funtzio hauek zure ordenagailuan edo zure aphid hodeiko biltegiratze kontuan argitaratu nahi dituzu, agian funtzioen ezagutza-basera bidali nahi dituzu, agian jatorrizko funtzioaren bertsio hobetu eta zabaldu gisa.

Etorkizunean, Git estiloko bifurkazioa onartzen dugu ezaugarrien biltegietarako, baina oraingoz sinplea izaten saiatzen ari gara, eta hizkuntzan ezaugarri bakoitzaren bertsio onartu bakarra dugu beti. Gehienetan (garatzaileek garatu dituzten funtzioak mantentzeari uko egiten ez badiote eta erabiltzaileen bidalketei erantzuten ez badiote), eginbidearen jatorrizko egileak bere eguneratzeen kontrola hartzen du eta bertsio berriak bidaltzen ditu, ondoren berrikusi eta, berrikuspen-prozesua gainditzen badute. , hizkuntzan argitaratua.

Azter dezagun nola funtzionatzen duen garatutako funtzioen "bertsioa". Oraintxe bertan, funtzioen biltegiko funtzio bat erabiltzen duzunean, haren definizioa betirako gordeko da zure ordenagailuan (edo zure hodeiko kontuan hodeia erabiltzen ari bazara). Eginbide baten bertsio berri bat eskuragarri badago, hura erabiltzen duzun hurrengoan mezu bat jasoko duzu horren berri emateko. Eta funtzioa bertsio berri batera eguneratu nahi baduzu, komandoa erabiliz egin dezakezu Baliabidea eguneratzea. ("Funtzio blob"-ek bertsio-informazio gehiago gordetzen du, eta etorkizunean gure erabiltzaileentzat eskuragarriago egiteko asmoa dugu.)

Wolfram Function Repository-ren gauza ederretako bat Wolfram Language edozein programak, edonondik, bertatik funtzioak erabil ditzakeela da. Programa bat ohar-koadernoan agertzen bada, sarritan komenigarria da biltegiko funtzioak irakurtzeko erraza den "objektu bitar funtzionala" funtzio gisa formateatzea (agian bertsio egoki batekin).

Beti atzi dezakezu funtzioen biltegiko edozein funtzio testua erabiliz Baliabide Funtzioa[...]. Eta hau oso erosoa da, adibidez, Wolfram Engine-rako kodea edo script-ak zuzenean idazten badituzu IDE edo testu-kode editore bat erabiliz (Bereziki esan behar da funtzioen biltegia guztiz bateragarria dela Doako Wolfram Engine garatzaileentzako).

Nola funtzionatzen du?

Wolfram biltegiko funtzioen barruan hori gauza bera erabiliz posible da baliabide-sistemak oinarriak, atalean bezala dauden gure gainerako biltegi guztiak (datu biltegia, Neural Net biltegia, demo proiektuen bilduma etab.), Wolfram sistemaren beste baliabide guztiak bezala, Baliabide Funtzioa azken batean, funtzioan oinarrituta BaliabideObjektua.

Demagun Baliabide Funtzioa:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Barruan informazio batzuk ikus ditzakezu funtzioa erabiliz informazioa:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Nola funtzionatzen du baliabideen funtzio bat konfiguratzea? Errazena tokiko kasu hutsa da. Hona hemen funtzio bat hartzen duen adibide bat (kasu honetan funtzio hutsa) eta programa-saio jakin baterako baliabide-funtzio gisa definitzen duena:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Definizioa egin ondoren, baliabide funtzioa erabil dezakezu:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Kontuan izan funtzio-blob honetan ikono beltz bat dagoela Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma. Horrek esan nahi du BLOB funtzioak uneko saiorako definitutako memoria barneko baliabideen funtzioari egiten diola erreferentzia. Zure ordenagailuan edo hodeiko kontuan betirako gordetzen den baliabide-eginbide batek ikono grisa du Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma. Eta Wolfram Feature Repository-en baliabide ofizial baten ikono laranja bat dago Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma.

Beraz, zer gertatzen da Definizio Koadernoko Zabaldu menua erabiltzen duzunean? Lehenik eta behin, koadernoko definizio guztiak hartzen ditu eta horietatik sinboliko bat sortzen du BaliabideObjektua). (Eta testuan oinarritutako IDE edo programa bat erabiltzen ari bazara, esplizituki ere sor dezakezu BaliabideObjektua)

Zure ordenagailuko biltegi batetik funtzio baten tokiko hedapena komandoa erabiliz egiten da LocalCachea baliabide-objektu batek honela gorde dezan LocalObject zure fitxategi-sisteman. Hodeiko kontu batera inplementatzea komandoa erabiliz egiten da CloudDeploy baliabide-objektu baterako, eta hodei publikoaren inplementazioa da CloudPublish. Kasu guztietan BaliabideaErregistratu baliabide-funtzioaren izena erregistratzeko ere erabiltzen da, beraz Baliabide Funtzioa["izena"] funtzionatuko du.

Funtzio-biltegi baterako Bidali botoia sakatzen baduzu, zer gertatzen den horren azpian BaliabideaBidali baliabide-objektu bati deituta. (Eta testua idazteko interfazea erabiltzen ari bazara, deitu ere egin dezakezu BaliabideaBidali zuzenean.)

Lehenespenez, bidalketak zure Wolfram IDarekin lotutako izenarekin egiten dira. Baina garapen talde edo erakunde baten izenean eskaera bat bidaltzen baduzu, egin dezakezu ezarri argitaletxe ID bereizia eta, horren ordez, erabili izen gisa zure ikuspegiekin elkarreragiteko.

Funtzioren bat funtzioen ezagutza-basera bidali ondoren, ilaran jarriko da berrikusteko. Erantzun gisa iruzkinak jasotzen badituzu, normalean testu-fitxategi baten moduan egongo dira "iruzkin gelaxka" gehigarriak gehituta. Beti egiaztatu dezakezu zure aplikazioaren egoera bisitatuz baliabide-sistemako kideen ataria. Baina zure funtzioa onartu ondoren, jakinaraziko zaizu (posta elektroniko bidez) eta zure funtzioa Wolfram funtzioen biltegian argitaratuko da.

Sotiltasun batzuk lanean

Lehen begiratuan, badirudi definizio-koaderno bat hartu eta hitzez hitz funtzio-biltegi batean sartu dezakezula; hala ere, Γ±abardura asko daude tartean, eta horiek kudeatzeko meta-programazio nahiko konplexua egin behar da, prozesamendu sinbolikoa maneiatzea. funtzioa definitzen duen kodea bezala, eta Notepad bera definitzen da. Gehiena barnean gertatzen da, eszena atzean, baina ulertzea merezi duten inplikazio batzuk izan ditzake ezaugarrien ezagutza-baseari ekarpena egingo badiozu.

Berehalako lehen sotiltasuna: Definizio Koadernoa betetzen duzunean, zure funtzioa aipa dezakezu nonahi bezalako izen bat erabiliz. Nire Funtzioa, Wolfram Language-ko funtzio baten izen arrunt baten itxura duena, baina funtzioen biltegiaren dokumentaziorako hau ordezkatzen da Baliabide Funtzioa["Nire funtzioa"] funtzioarekin lan egiten dutenean erabiltzaileek benetan erabiliko dutena da.

Bigarren sotiltasuna: Definizio Koadernotik baliabide-funtzioa sortzen duzunean, funtzioaren definizioan parte hartzen duten mendekotasun guztiak jaso eta esplizituki sartu behar dira. Hala ere, definizioak modularrak izaten jarraitzeko, dena bakarrean jarri behar duzu izen-espazioa. (Noski, dena egiten duten funtzioak, funtzioen biltegian daude.)

Normalean ez duzu inoiz ikusiko izen-espazio hau konfiguratzeko erabilitako kodearen arrastorik. Baina arrazoiren batengatik zure funtzioaren barruan exekutatu gabeko ikurra deitzen baduzu, orduan ikusiko duzu ikur hau funtzioaren barneko testuinguruan dagoela. Hala ere, Definition Notepad prozesatzen denean, gutxienez funtzioari dagokion ikurra da erregulagarria pantaila onena lortzeko barne testuinguruko pertsonaia gordina baino BLOB funtzional gisa.

Funtzioen biltegia funtzio berriak definitzeko da. Eta funtzio hauek aukerak izan ditzakete. Askotan parametro hauek (adibidez, metodoa edo Irudiaren tamaina) funtzio integratuetarako erabili ahal izango da, baita sinbolo integratuak daudenetarako ere. Baina batzuetan eginbide berri batek aukera berriak eska ditzake. Modulartasunari eusteko, parametro hauek barne-testuinguru bakarrean definitutako sinboloak izan behar dute (edo baliabide osoen funtzioak, hau da, beraiek bezalako zerbait). Sinpletasuna lortzeko, funtzioen biltegiak aukera berriak defini ditzakezu kateen definizioetan. Eta erabiltzailearen erosotasunerako, definizio hauek (erabiltzen dutela suposatuz AukeraBalioa ΠΈ AukerakEredua) ere prozesatzen dira, funtzioak erabiltzean, parametroak kate gisa ez ezik, izen bereko ikur global gisa ere zehaztu daitezke.

Funtzio gehienek deitzen zaien bakoitzean egin behar dutena besterik ez dute egiten, baina funtzio batzuk hasieratu egin behar dira saio jakin batean exekutatu aurretik;

Biltegi bateko funtzioek biltegian dauden beste funtzio batzuk erabil ditzakete; elkarri erreferentzia egiten dioten bi (edo gehiago) funtzio biltzen dituen funtzio-biltegi baten definizioak konfiguratzeko, zure programa-saioan zabaldu behar dituzu, ahal izateko. haietan bezalako erreferentzia Baliabide Funtzioa["izena"], orduan behar dituzun funtzio horien konbinazioak sor ditzakezu, adibideak (ez nuen ulertu) eta lehen argitaratutakoetan oinarrituta funtzio berri bat gehi dezakezu biltegian. (edo dagoeneko edo lehenago - bi hitzak baldarrak dira)

Garapen-aukerak. Zer gertatu behar da biltegia benetan handitzen denean?

Gaur Wolfram Feature Repository abian jartzen ari gara, baina denborarekin bere tamaina eta funtzionalitatea izugarri handitzea espero dugu, eta garapenean hazten doan heinean aurreikusten ditugun hainbat arazo sortuko dira.

Lehenengo arazoa funtzio izenei eta haien berezitasunari buruzkoa da. Funtzio-biltegia honela diseinatuta dago, Wolfram Language-n integratutako funtzioak bezala, edozein funtzio erreferentzia egin dezakezu izena zehaztuz. Baina horrek ezinbestean esan nahi du funtzioen izenak globalki bakarrak izan behar direla biltegian, beraz, adibidez, bakarra egon daiteke. Baliabide Funtzioa["NireFuntzio gogokoena"].

Hasieran arazo handia dirudi, baina merezi du konturatzea funtsean Interneteko domeinuen edo sare sozialen heldulekuen arazo bera dela. Eta kontua da sistemak erregistratzaile bat izan behar duela, eta hau da gure enpresak Wolfram funtzioaren ezagutza-baserako beteko duen eginkizunetako bat. (Biltegi baten bertsio pribatuetarako, haien erregistratzaileak administratzaileak izan daitezke.) Jakina, Interneteko domeinu bat erregistratu daiteke ezer eduki gabe, baina funtzioen biltegi batean, funtzio-izen bat erregistratu daiteke benetako definizio bat badago. funtzioa.

Wolfram funtzioaren ezagutza-basea kudeatzeko gure eginkizunaren zati bat funtzio baterako aukeratutako izena logikoa dela ziurtatzea da, funtzioaren definizioa kontuan hartuta eta Wolfram Language izendatzeko konbentzioak betetzen dituela. 30 urte baino gehiagoko esperientzia dugu Wolfram hizkuntzan integratutako funtzioak izendatzen, eta gure komisario-taldeak esperientzia hori funtzioen biltegira eramango du. Jakina, beti daude salbuespenak. Esaterako, hobe dirudi funtzio batzuen izen labur bat izatea, baina hobe da izen luzeago eta zehatzago batekin "defentsa" egitea, etorkizunean funtzio-izen antzeko bat egin nahi duen norbaitekin topo egingo duzulako. .

(Kontuan izan behar da hemen funtzioak desanbiguatzeko kide etiketa batzuk gehitzeak ez duela nahi den ondoriorik izango. Etiketa bat beti esleitzen tematzen ez bazara, funtzio jakin baterako etiketa lehenetsi bat definitu beharko duzulako, eta egilearen etiketak ere esleitu beharko dituzu. , berriro ere koordinazio globala beharko luke.)

Wolfram funtzioen ezagutza-oinarria hazten doan heinean, sortuko den arazoetako bat funtzioen aurkigarritasuna da, eta horretarako sistemak eskaintzen du. bilaketa funtzioa (eta definizio-fitxategiek gako-hitzak eta abar izan ditzakete). Wolfram Language-n integratutako funtzioetarako, dokumentazioan era guztietako erreferentzia gurutzatuak daude funtzioak "iragartzen" laguntzeko. Funtzioen biltegi bateko funtzioek integratutako funtzioak erreferentzia ditzakete. Baina zer gertatzen da alderantziz? Horretarako, diseinu ezberdinekin esperimentatuko dugu biltegi-funtzioak integratutako funtzioen dokumentazio-orrietan erakusteko.

Wolfram Language-n integratutako funtzioetarako, detekzio-geruza deritzona dago "laguntza orrien" sarea, arlo zehatzei lotutako ezaugarrien zerrenda antolatuak eskaintzen dituztenak. Beti zaila da esku orriak behar bezala orekatzea, eta Wolfram hizkuntza hazten doan heinean, askotan, esku orriak guztiz berrantolatu behar dira. Nahiko erraza da biltegi bateko funtzioak kategoria zabaletan jartzea, eta baita kategoria horiek koherentziaz apurtzea ere, baina askoz ere baliotsuagoa da hizkuntza-erreferentzia-orriak behar bezala antolatuta edukitzea. Oraindik ez dago argi nola sortu hobekien funtzioaren ezagutza-base osorako. Adibidez, SortuResourceObjectGallery Ezaugarrien biltegian, edonork bidal dezake biltegiko "aukerak" dituen web orria:

Wolfram Function Repository: Wolfram hizkuntza-luzapenetarako sarbide irekiko plataforma

Wolfram funtzioen biltegia funtzioen biltegi iraunkor gisa konfiguratuta dago, non bertako edozein funtziok beti funtzionatuko duen. Jakina, eginbideen bertsio berriak erabilgarri egon daitezke, eta denborarekin eginbide batzuk zaharkituta geratuko direla espero dugu. Funtzioek funtzionatuko dute programetan erabiltzen badira, baina haien dokumentazio-orriek funtzio berri eta aurreratuagoetara estekatuko dute.

Wolfram Feature Repository funtzio berriak azkar ezagutzeko eta Wolfram hizkuntza erabiltzeko modu berriak ikasteko diseinatuta dago. Oso baikor gaude ezaugarrien biltegian aztertutako batzuk Wolfram Language oinarrizkoaren zati txertatuak izateko zentzua izango dutela azkenean. Azken hamarkadan antzeko multzo bat izan dugu Hasiera batean Wolfram |-en sartu ziren ezaugarriak Alfa. Eta esperientzia honetatik ateratako ikasgaietako bat da Wolfram hizkuntzan eraikitako guztian ardatz ditugun kalitate eta koherentzia estandarrak lortzeak lan handia eskatzen duela, eta hori ideia ezartzeko hasierako ahalegina baino zailagoa izaten da askotan. Hala eta guztiz ere, funtzio jakintza-baseko funtzio bat kontzeptuaren froga oso baliagarria izan daiteke azkenean Wolfram hizkuntzan eraiki daitekeen etorkizuneko funtzio baterako.

Hemen garrantzitsuena da funtzioen biltegi bateko funtzio bat erabiltzaile bakoitzak une honetan erabiltzeko erabilgarri dagoen zerbait dela. Baliteke jatorrizko hizkuntzaren funtzio bat askoz hobea eta errendimendu handiagoa izatea, baina ezaugarrien biltegi batek erabiltzaileei funtzio berri guztietarako sarbidea izango luke berehala. Eta, garrantzitsuena, kontzeptu honi esker, bakoitzak nahi dituen ezaugarri berriak gehi ditzake.

Wolfram hizkuntzaren historian lehenago, ideia honek ez zuen bezain ondo funtzionatuko, baina fase honetan hainbeste ahalegin egiten da hizkuntzan, eta hizkuntza-diseinuaren printzipioen ulermen sakona, non orain badirudi oso. erabiltzaile-komunitate handi batek diseinuaren koherentzia mantenduko duten funtzioak gehitzea posible da, erabiltzaile askorentzat erabilgarria izan dadin.

Wolfram Language erabiltzaileen komunitatean talentu izpiritu ikaragarria(?) dago. (Noski, komunitate honek hainbat arlotako I+G aditu nagusi asko biltzen ditu.) Espero dut Wolfram Feature Repository-ek talentu espiritu hori desblokeatzeko eta zabaltzeko plataforma eraginkor bat eskaintzea. Elkarrekin bakarrik sortu dezakegu Wolfram hizkuntzaren konputazioaren paradigma aplikatzeko eremua nabarmen zabalduko duen zerbait.

30 urte baino gehiagotan, bide luzea egin dugu Wolfram hizkuntzarekin. Orain elkarrekin, goazen are urrunago. Biziki gomendatzen ditut mundu osoko Wolfram hizkuntzaren erabiltzaile errespetatu guztiak biltegi funtzionala erabiltzeko plataforma gisa, baita software proiektu berria ere, hala nola Free Wolfram Engine for Developers.

Iturria: www.habr.com

Gehitu iruzkin berria