Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Hei, Habr! Esitän huomionne käännöksen Stephen Wolframin viestistä "The Wolfram Function Repository: Avaamme avoimen alustan Wolfram-kielen laajentamiseksi".

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Wolfram-kielen johdonmukaisuuden edellytykset

Nykyään seisomme suurten saavutusten kynnyksellä yhdessä ohjelmointikielen kanssa Wolfram-kieli. Vain kolme viikkoa sitten aloitimme ilmainen Wolfram-moottori kehittäjilleauttaaksemme käyttäjiämme integroimaan Wolfram-kielen suuriin ohjelmistoprojekteihinsa. Tänään lanseeraamme Wolfram-funktion arkisto, tarjotaksemme koordinoidun alustan Wolfram-kielen laajentamiseksi luoduille toiminnoille, ja avaamme myös toimintojen arkiston kaikille, jotka voivat osallistua ohjelmistotuotteemme kehittämiseen.

Wolfram Function Repository on jotain, jonka tekee mahdolliseksi Wolfram-kielen ainutlaatuinen luonne, ei vain ohjelmointikielenä, vaan myös täyden mittakaavan laskentakieli. Perinteisissä ohjelmointikielissä merkittävien uusien toimintojen lisääminen edellyttää yleensä kokonaisten lisäkirjastojen luomista, jotka voivat toimia tai eivät toimi yhdessä. Kuitenkin Wolfram-kielellä niin paljon on jo rakennettu itse kieleen, että sen toimivuutta on mahdollista laajentaa merkittävästi lisäämällä uusia toimintoja, jotka integroituvat välittömästi koko kielen kokonaisvaltaiseen rakenteeseen.

Esimerkiksi Wolfram-funktion arkisto sisältää jo 532 uutta ominaisuutta jaettu 26 teemaluokkaan:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Samoin enemmän kuin 6000 vakiotoimintoa, joka on sisäänrakennettu Wolfram-kieleen, jokaisella arkiston toiminnolla on dokumentaatiosivu, jossa on niiden yksityiskohtainen kuvaus ja esimerkkejä työstä:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Päästäksesi sivulle, kopioi yllä oleva objekti (funktio BLOB), liitä se syöttöriville ja suorita toiminto - se on jo sisäänrakennettu Wolfram-kieleen ja sitä tuetaan oletuksena alkaen versio 12.0:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Tässä on huomattava, että käsittelyssä LogoQRCode Sinun ei tarvitse esimerkiksi perustaa "kuvankäsittelykirjastoa" - koska olemme jo toteuttaneet johdonmukaisen ja huolellisesti algoritmisen tavan Wolfram-kielessä kuvankäsittely, joita voidaan välittömästi käsitellä erilaisilla graafisilla kielitoiminnoilla:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Toivon sitä tuella ihana ja lahjakas yhteisö, joka on kasvanut ja laajentunut (perustuu Wolfram-kieleen) viimeisten vuosikymmenten aikana. Wolfram-funktioarkiston avulla voidaan lähitulevaisuudessa merkittävästi laajentaa kielellä saatavilla olevien (mahdollisesti merkittävien, eri tieteen ja teknologian aloille erikoistuneiden) toimintojen valikoimaa. Siten on mahdollista käyttää sekä kielen sisältöä (sen sisäänrakennettuja toimintoja) että kehittämisen periaatteita, jotka toteutetaan kielen perusteella. (Tässä on huomattava, että Wolfram-kielessä on jo enemmän kuin 30 vuotta kehitystä ja vakaata kasvua).
Arkiston toiminnot voivat sisältää pieniä tai suuria koodinpätkiä, jotka on kirjoitettu Wolfram-kielellä. Nämä voivat olla esimerkiksi puheluita ulkoiset sovellusliittymät ja palvelut tai ulkoiset kirjastot muilla kielillä. Tämän lähestymistavan ainutlaatuinen piirre on, että kun perehdyt käyttäjätason toimintoihin, mahdollisia epäjohdonmukaisuuksia ei synny, koska lähestymistapa on rakennettu Wolfram-kielen johdonmukaisen rakenteen päälle - ja jokainen toiminto toimii automaattisesti oikein - täsmälleen kuten hänen pitäisi.
Wolfram Feature Repositoryn kuori ja ohjelmointirakenne on suunniteltu siten, että jokainen voi osallistua yhteiseen tarkoitukseen heille yksinkertaisimmalla ja kätevimmällä tavalla - itse asiassa vain täyttämällä notepad-tekstitiedosto (nb-tunniste) WL. Sisäänrakennettujen automaattisten toimintojen avulla voit tarkistaa arkistoon lisätyt uudet toiminnot varmistaaksesi niiden integroinnin kieleen. Yrityksemme panostaa useisiin käyttäjiin, jotka voivat integroida toimintonsa kieleen, eikä uusien toimintojen monimutkaisuuteen - ja vaikka tarkistusprosessi on käynnissä, emme vaadi mitään, kuten huolellinen suunnitteluanalyysi tai tiukat standardit uusien käyttäjäominaisuuksien täydellisyydelle ja luotettavuudelle, toisin kuin käyttämiämme ydinkieleen sisältyvien ominaisuuksien tiukempi testaus.

Tässä lähestymistavassa on monia kompromisseja ja yksityiskohtia, mutta tavoitteemme on optimoida Wolfram-ominaisuusvarasto sekä käyttökokemuksen kannalta että varmistaa, että uudet käyttäjäominaisuudet edistävät mielekkäästi kielen kehitystä. Kasvaessamme minulla ei ole epäilystäkään siitä, että joudumme keksimään uusia menetelmiä arkiston sisäänrakennettujen toimintojen käsittelyyn ja validointiin, ei vähiten suurten toimintojen järjestämiseen ja käyttäjien tarvitsemien löytämiseen. On kuitenkin rohkaisevaa, että valitsemamme polku on hyvä alku. Minä henkilökohtaisesti lisäsi useita ominaisuuksia alkuperäiseen tietokantaan. Monet niistä perustuvat koodiin, jota olen henkilökohtaisesti kehittänyt jo jonkin aikaa. Ja kesti vain muutaman minuutin työntämään ne arkistoon. Nyt kun ne ovat arkistossa, voin vihdoin - välittömästi ja milloin tahansa - käyttää näitä toimintoja tarpeen mukaan ilman, että minun tarvitsee huolehtia tiedostojen etsimisestä, pakettien lataamisesta jne.

Lisää tehokkuutta ja alentaa kustannuksia

Jo ennen Internetiä oli tapoja jakaa Wolfram Language -koodia (ensimmäinen suuri keskitetty projektimme oli MathSource, luotu Mathematicalle vuonna 1991 CD-ROM-levyn jne. perusteella). Toteutukseen ehdotettu Wolfram-funktioarkistoon perustuva lähestymistapa on luonnollisesti tehokkaampi ja luotettavampi työkalu yllä olevien tehtävien toteuttamiseen.

Yrityksemme on yli 30 vuoden ajan työskennellyt ahkerasti säilyttääkseen Wolfram-kielirakenteen eheyden, ja tämä on ratkaisevan tärkeää sen varmistamiseksi, että Wolfram-kielestä tulee paitsi ohjelmointikieli, myös täysi laskentakieli. Ja näin ollen lähestymistapa Wolfram-funktioarkiston toteuttamiseen on käyttää yhtenäistä lähestymistapaa ohjelmointiin ja uusien toimintojen kehittämiseen, jotka lisätään peräkkäin ja sopivat kielen kehykseen, jotta se voi kehittyä ja kehittyä yhdessä.

Kunkin funktion toteutusrakenteessa esiintyy erilaisia ​​laskennallisia prosesseja. Tässä on huomioitava, että toiminnolla on oltava selkeä ja yhtenäinen ulkoasu ja visuaalinen luettavuus käyttäjän kannalta. Tässä yhteydessä Wolfram-kielen sisäänrakennetut toiminnot esitetään yli 6000 XNUMX peräkkäisen esimerkin kanssa toimintojen ohjelmoinnista oikein (nämä ovat meidän live-ohjelmointivideoitajotka sisältävät satoja tunteja standardiohjelmien luomiseen). Tämä lähestymistapa tekee viime kädessä Wolfram-ominaisuusvaraston kykenevän toimimaan hyvin, on Wolfram-kielen rakenteellinen luonne ja sen suuri määrä lisäkirjastoja, jotka on jo rakennettu kieleen. Jos sinulla on esimerkiksi toiminto, joka käsittelee kuvia, tai harvat taulukotTai molekyylirakenteetJa maantieteelliset tiedot tai jotkut muut - niiden johdonmukainen symbolinen esitys on jo olemassa kielessä, ja tämän ansiosta toimintosi tulee välittömästi yhteensopivaksi muiden kielen toimintojen kanssa.

Hyvin toimivan arkiston luominen on mielenkiintoinen meta-ohjelmointitehtävä. Esimerkiksi ylimääräiset rajoitukset ohjelmassa eivät salli algoritmin vaaditun yhtenäisyyden ja universaalisuuden saavuttamista. Aivan kuten riittämättömällä määrällä toiminnallisia rajoituksia, et pysty toteuttamaan riittävän oikeaa algoritmin suoritusjärjestystä. Useat aiemmat esimerkit näiden lähestymistapojen kompromissin toteuttamisesta, joita yhtiömme on toteuttanut, toimivat melko vakaasti - nämä ovat: Projektin volframi-esittelyt, joka julkaistiin vuonna 2007 ja toimii nyt verkossa yli 12000 XNUMX interaktiivisella demolla. SISÄÄN Wolfram-tietokanta on olemassa yli 600 valmiita tietokantoja, joita voidaan käyttää Wolfram-kielellä, ja Wolfram-hermoverkkotallennus täydentyy uusilla neuroverkoilla lähes joka viikko (niitä on nyt jo 118) ja ne yhdistetään välittömästi toiminnon kautta NetModel Wolfram-kielellä.

Kaikilla yllä olevilla esimerkeillä on perustavanlaatuinen piirre - projektiin kerätyillä objekteilla ja toiminnoilla on erittäin korkea prosessien strukturoitumis- ja jakautumisaste. Tietysti demon, hermoverkon tai jonkin muun rakenteen yksityiskohdat voivat vaihdella suuresti, mutta minkä tahansa nykyisen arkiston perusrakenne pysyy aina samana. Joten mitä mieltä olet, hyvä käyttäjä, sellaisen arkiston luomisesta, joka lisää laajennuksia Wolfram-kieleen? Wolfram Language on suunniteltu erittäin joustavaksi, joten sitä voidaan laajentaa ja muokata millä tahansa tavalla. Tämä seikka on erittäin tärkeä kyvylle luoda nopeasti erilaisia ​​suuria ohjelmistoprojekteja Wolfram-kielellä. Tässä on huomattava, että kielen joustavuuden kasvaessa tällaisella kielellä toteutettujen hankkeiden kustannukset väistämättä nousevat. Tämä johtuu siitä, että mitä enemmän käyttäjä käyttää tällaista kieltä, sitä enemmän hän saa omistettuja toimintoja, mutta emme saa unohtaa, että tällä lähestymistavalla voi olla myös kielteisiä puolia, koska se ei pysty varmistamaan ohjelmamoduulien johdonmukaisuutta.

Perinteisten ohjelmointikielien kirjastoissa on yleinen ongelma - jos käytät esimerkiksi yhtä kirjastoa, koodi toimii oikein, mutta jos yrität käyttää useita kirjastoja, ei ole takeita siitä, että ne toimivat oikein toistensa kanssa. . Perinteisissä ohjelmointikielissä - toisin kuin täysimittaisessa laskentakielessä - ei myöskään voida taata johdonmukaisten sisäänrakennettujen esitysten läsnäoloa muille toiminnoille tai tietotyypeille kuin niiden perusrakenteille. Mutta itse asiassa ongelma on vielä suurempi kuin miltä ensi silmäyksellä näyttää: jos rakennetaan laajamittaista toiminnallisuuden vertikaalia, on mahdotonta tehdä valtavia kustannuksia keskitetystä projektiohjelmoinnista, jonka laitamme Wolfram-kieleen. saavuttaa johdonmukaisuus. Siksi on tärkeää, että kaikki ohjelmistomoduulit toimivat aina oikein yhdessä.

Wolfram-ominaisuusarkiston ideana on siis välttää yllä kuvattu ongelma lisäämällä kieleen laajennuksia suhteellisen pieninä koodinpätkinä yksittäisten ominaisuuksien avulla, joita on helpompi kehittää yhtenäisinä moduuleina. On kuitenkin olemassa ohjelmointiominaisuuksia, joita ei voida tehdä käteväksi yksittäisten toimintojen avulla (ja yrityksemme suunnittelee julkaisevansa lähitulevaisuudessa optimoidun ohjelmointialgoritmin suuren mittakaavan ohjelmistopakettien toteuttamiseksi). Wolfram-kieleen jo sisäänrakennettujen toimintojen perusteella on kuitenkin monia ohjelmointimahdollisuuksia, jotka toteutetaan yksittäisten toimintojen perusteella. Ajatuksena tässä on se, että suhteellisen pienellä ohjelmointiponnistelulla on mahdollista luoda useita uusia ja erittäin hyödyllisiä toimintoja, jotka tuovat suunnitteluun riittävän johdonmukaisuuden, ne ovat hyvin yhteensovitettuja keskenään, ja tämän lisäksi voidaan tulevaisuudessa käyttää kielessä helposti ja laajasti.

Tämä lähestymistapa on tietysti kompromissi. Jos otettaisiin käyttöön suurempi paketti, voitaisiin kuvitella kokonaan uusi toiminnallisuuden maailma, joka olisi erittäin tehokas ja hyödyllinen. Jos on tarve hankkia uusia toimintoja, jotka sopivat kaiken muun kanssa, mutta et ole valmis käyttämään paljon vaivaa projektin kehittämiseen, tämä voi valitettavasti johtaa projektisi laajuuden pienenemiseen. Wolfram-ominaisuusarkiston ideana on tarjota toimintoja projektin määrittävälle osalle; tämä lähestymistapa lisää tehokkaita toimintoja ja helpottaa ohjelmointiprojektin hyvän johdonmukaisuuden ylläpitämistä.

Auta mukautettujen funktioiden lisäämisessä toimintovarastoon

Tiimimme on työskennellyt kovasti tehdäkseen käyttäjien helpoksi osallistua Wolfram-arkiston ominaisuuksiin. Työpöydällä (jo sisään versio 12.0), Voit yksinkertaisesti käydä läpi päävalikon välilehdet peräkkäin: File > New > RepositoryItem > Function Repository Item ja saat "Määritelmä muistikirja" (ohjelmallisesti työpöydän sisällä. Voit myös käyttää analogista toimintoa - Luo muistikirja["FunctionResource"]):

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Sinun on suoritettava kaksi päävaihetta: ensinnäkin, kirjoita muistiin funktiosi koodi ja toiseksi kirjoita muistiin dokumentaatio, joka havainnollistaa toiminnon toimintaa.
Napsauta "Avaa näyte" -painiketta yläreunassa nähdäksesi esimerkin siitä, mitä sinun tulee tehdä:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Pohjimmiltaan yrität luoda jotain samanlaista kuin Wolfram-kielen sisäänrakennettu toiminto. Paitsi että se voi tehdä jotain paljon tarkempaa kuin sisäänrakennettu toiminto. Samalla odotukset sen täydellisyydestä ja luotettavuudesta ovat paljon alhaisemmat.
Sinun on annettava funktiollesi nimi, joka noudattaa Wolfram-kielen funktioiden nimeämisohjeita. Lisäksi sinun on kehitettävä toimintoasi varten dokumentaatio, joka on samanlainen kuin kielen sisäänrakennetut toiminnot. Kerron tästä myöhemmin tarkemmin. Toistaiseksi huomaa vain, että muistikirjatiedoston yläosassa olevalla painikerivillä on painike "Tyyliohjeet", joka selittää mitä tehdä, ja Työkalut-painike, joka tarjoaa työkaluja funktion dokumentaation muotoiluun.
Kun olet varma, että kaikki on täytetty oikein ja olet valmis, napsauta "Tarkista" -painiketta. On täysin normaalia, että et ole vielä ymmärtänyt kaikkia yksityiskohtia. Joten "Tarkista"-toiminto käynnistyy automaattisesti ja tekee paljon tyylin ja johdonmukaisuuden tarkistuksia. Usein se kehottaa sinua vahvistamaan ja hyväksymään korjaukset välittömästi (esimerkiksi: "Tämän rivin tulee päättyä kaksoispisteeseen", ja se kehottaa syöttämään kaksoispisteen). Joskus hän pyytää sinua lisäämään tai muuttamaan jotain itse. Lisäämme jatkuvasti uusia ominaisuuksia Tarkista-painikkeen automaattiseen toiminnallisuuteen, mutta periaatteessa sen tarkoituksena on varmistaa, että kaikki ominaisuusarkistoon lähettämäsi noudattaa jo tarkasti mahdollisimman monia tyyliohjeita.

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Joten, kun olet suorittanut "Check", voit käyttää "Esikatselu". "Esikatselu" luo esikatselun dokumentaatiosivusta, jonka määritit funktiollesi. Voit myös luoda esikatselun tietokoneellasi luodulle tiedostolle tai pilvitallennustilassa olevalle tiedostolle. Jos et jostain syystä ole tyytyväinen esikatselussa näkemääni, palaa takaisin ja tee tarvittavat korjaukset ja napsauta sitten Esikatselu-painiketta uudelleen.
Nyt olet valmis työntämään funktiosi arkistoon. Ota käyttöön -painike tarjoaa neljä vaihtoehtoa:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Tärkeää tässä vaiheessa on, että voit lähettää funktiosi Wolfram-toimintovarastoon niin, että se on kaikkien saatavilla. Samalla voit myös sijoittaa toimintosi rajoitetulle määrälle käyttäjiä. Voit esimerkiksi luoda toiminnon, jota isännöidään paikallisesti tietokoneellasi, jotta se on käytettävissä, kun käytät kyseistä tietokonetta. Tai voit julkaista sen omassasi pilvitili, jotta se on käytettävissäsi, kun olet yhteydessä pilveen. Voit myös isännöidä (ottaa käyttöön) ominaisuutta julkisesti pilvitilisi kautta. Se ei ole keskeisessä Wolframin ominaisuusvarastossa, mutta voit antaa jollekin URL-osoitteen, jonka avulla hän voi saada ominaisuutesi tililtäsi. (Jatkossa tuemme myös keskustietovarastoja koko yrityksessämme.)

Oletetaan siis, että haluat todella lähettää funktiosi Wolfram-funktion tietokantaan. Voit tehdä tämän napsauttamalla "Lähetä" -painiketta arkistoon. Mitä sitten tapahtuu tällä hetkellä? Hakemuksesi on välittömästi jonossa omistetun kuraattoritiimimme tarkastettavaksi ja hyväksyttäväksi.

Kun hakemuksesi etenee hyväksymisprosessin läpi (joka kestää yleensä useita päiviä), saat ilmoituksia sen tilasta ja mahdollisesti ehdotuksia tulevaa käyttöä varten. Mutta kun ominaisuutesi on hyväksytty, se julkaistaan ​​välittömästi Wolfram Feature Repositoryssa ja on kaikkien käytettävissä. (Ja tämä tulee näkyviin uutiset yhteenvedot uusista ominaisuuksista ja niin edelleen)

Mitä varastossa pitäisi olla?

On huomattava, että yrityksellämme on erittäin korkeat vaatimukset täydellisyyden, luotettavuuden ja yleisen laadun suhteen, ja yli 6000 toiminnosta, jotka olemme jo rakentaneet Wolfram-kieleen viimeisten 30+ vuoden aikana, kaikki täyttävät yllä olevat vaatimukset. Wolfram Function Repositoryn tavoitteena on käyttää kaikkea Wolfram-kielessä jo olemassa olevaa rakennetta ja toimintoja lisätäkseen mahdollisimman paljon kevyempiä toimintoja (eli tehokkaampia toimintoja).

Tietenkin Wolfram-funktioarkiston toimintojen on noudatettava Wolfram-kielen suunnitteluperiaatteita - jotta ne voivat olla täysin vuorovaikutuksessa muiden toimintojen ja käyttäjien odotusten kanssa siitä, miten toiminnon pitäisi toimia oikein. Toimintojen ei kuitenkaan tarvitse olla yhtä täydellisiä tai luotettavia.

Wolfram-kielen sisäänrakennetuissa toiminnoissa teemme kovasti töitä tehdäksemme ohjelmointitoiminnoista mahdollisimman yleisiä. Siitä huolimatta, kun Wolfram-toimintovarastossa ei ole mitään väärää siinä, että siinä on toiminto, joka yksinkertaisesti käsittelee joitain hyvin erityisiä mutta hyödyllisiä tapauksia. Esimerkiksi funktio SendMailFromNotebook voi vastaanottaa tiedostoja tietyssä muodossa ja luoda postia tietyllä tavalla. Monikulmiokaavio luo kaavioita vain tietyillä väreillä ja merkinnöillä jne.

Toinen sisäänrakennettuun toimintoon liittyvä seikka on, että yrityksemme tekee kaikkensa käsitelläkseen kaikki epätyypilliset tapaukset, käsitelläkseen virheellisiä syötteitä ja niin edelleen. Funktiovarastossa on täysin normaalia, että siellä on erityinen funktio, joka käsittelee ongelman ratkaisemisen päätapaukset ja jättää huomioimatta kaikki muut.

Ilmeinen pointti on, että on parempi olla toimintoja, jotka tekevät enemmän ja tekevät sen paremmin, mutta funktioarkiston optimoinnissa - toisin kuin Wolfram-kielen sisäänrakennetuissa funktioissa - pitäisi olla enemmän toimintoja niputettuna useampaan funktioon sen sijaan, että sukeltaa kunkin toiminnon toteutusprosessit.

Katsotaanpa nyt esimerkkiä arkiston toimintojen testaamisesta. Tällaisten toimintojen johdonmukaisuusodotukset ovat luonnollisesti paljon alhaisemmat kuin sisäänrakennetuilla kielitoiminnoilla. Tämä pätee erityisesti tapauksissa, joissa toiminnot ovat riippuvaisia ​​ulkoisista resursseista, kuten API:ista, on tärkeää suorittaa jatkuvasti johdonmukaisia ​​testejä, mikä tapahtuu automaattisesti vahvistusalgoritmien sisällä. nb-tiedostossa voit määrittää määritelmiä eksplisiittisesti (Lisätiedot-osiossa) ja määrittää niin monta testiä kuin syöte- ja lähtömerkkijonoilla tai tyyppisillä täydellisillä merkkiobjekteilla. Vahvistustesti, niin paljon kuin parhaaksi näet. Lisäksi järjestelmä yrittää jatkuvasti muuttaa toimittamasi dokumentaatioesimerkit varmennusprosessiksi (ja joskus tämä voi olla melko resurssiintensiivistä esimerkiksi funktiolle, jonka tulos riippuu satunnaisluvuista tai kellonajasta).

Seurauksena on, että toimintovarastossa on useita täytäntöönpanon monimutkaisia ​​tekijöitä. Jotkut ovat vain yksi koodirivi, toiset voivat sisältää tuhansia tai kymmeniä tuhansia rivejä, jotka todennäköisesti käyttävät monia aputoimintoja. Milloin kannattaa lisätä funktio, jonka määrittäminen vaatii hyvin vähän koodia? Periaatteessa, jos toimintoa varten on hyvä muistonimi, jonka käyttäjät ymmärtäisivät helposti, jos he näkisivät sen koodinpätkässä, niin se voidaan jo lisätä. Muuten on luultavasti parempi vain liittää koodi uudelleen ohjelmaan aina, kun sitä tarvitaan.

Funktioarkiston päätarkoitus (kuten sen nimi kertoo) on tuoda kieleen uusia ominaisuuksia. Jos haluat lisätä uusia tietoja tai uusia kokonaisuuksia, käytä Wolfram-tietovarasto. Mutta entä jos haluat ottaa käyttöön uudentyyppisiä objekteja laskelmiisi?

Itse asiassa on kaksi tapaa. Haluat ehkä ottaa käyttöön uuden objektityypin, jota käytetään funktioarkiston uusissa funktioissa. Ja tässä tapauksessa voit aina kirjoittaa sen symbolisen esityksen muistiin ja käyttää sitä syötettäessä tai tulostettaessa toimintoja funktioarkistoon.

Mutta entä jos haluat edustaa objektia ja määrittää sitten Wolfram-kielen olemassa olevien funktioiden avulla, että haluat työskennellä sen kanssa? Wolfram-kielellä on aina ollut tähän kevyt mekanismi, ns UpValues. Joillain rajoituksilla (etenkin toiminnoille, jotka ei voi arvioida argumenttejaan), funktioarkiston avulla voit yksinkertaisesti edustaa funktiota ja määrittää sille arvot. (Johdonmukaisuuden odotusten lisääminen luodessaan uutta suurta suunnittelua, joka on täysin integroitu koko Wolfram-kieleen, on yleensä erittäin tärkeä toimenpide, jota ei voida saavuttaa yksinkertaisesti lisäämällä projektin kustannuksia ja se on jotain, jota yrityksemme tekee osana projekteja. kielen pitkän aikavälin kehittämisen kannalta tämä tehtävä ei ole tavoite, joka asetetaan osana arkiston kehittämistä).

Joten mitä voi olla funktioarkiston funktiokoodissa? Kaikki Wolfram-kieleen rakennettu, tietysti (ainakin jos se ei edusta uhkaavaa varten Turvallisuus ja itse ohjelman suorituskyky laskentaympäristönä) sekä kaikki funktioarkiston toiminnot. On kuitenkin olemassa muita toimintoja: toimintovaraston funktio voi kutsua API:ta tai sisään Wolfram CloudTai toisesta lähteestä. Tietysti tähän liittyy joitain riskejä. Koska ei ole takeita siitä, että API ei muutu, ja toimintovaraston toiminto lakkaa toimimasta. Tällaisten ongelmien tunnistamisen helpottamiseksi dokumentaatiosivulla (Vaatimukset-osiossa) on huomautus kaikista toiminnoista, jotka perustuvat muuhun kuin sisäänrakennettuun Wolfram Language -toimintoon. (Tietenkin, kun on kyse todellisesta datasta, tässäkin toiminnallisuudessa voi olla ongelmia - koska reaalimaailman data muuttuu jatkuvasti, ja joskus jopa sen määritelmät ja rakenne muuttuvat.)

Pitäisikö kaikki Wolfram-ominaisuusarkiston koodi kirjoittaa Wolframissa? Ulkoisen API:n sisällä olevaa koodia ei tietenkään tule kirjoittaa Wolfram-kielellä, joka ei edes tee kielikoodia. Itse asiassa, jos löydät funktion melkein mistä tahansa ulkoisesta kielestä tai kirjastosta, voit luoda kääreen, jonka avulla voit käyttää sitä Wolfram-funktioarkistossa. (Yleensä sinun tulee käyttää sisäänrakennettuja toimintoja tähän ExternalEvaluate tai Ulkoinen toiminto Wolfram-kielikoodilla.)

Joten mitä järkeä on tehdä tämä? Pohjimmiltaan tämä antaa sinun käyttää koko integroitua Wolfram Language -järjestelmää ja sen kaikkia yhtenäisiä ohjelmistoominaisuuksia. Jos hankit perustoteutuksen ulkoisesta kirjastosta tai kielestä, voit käyttää Wolfram-kielen rikasta symbolista rakennetta luodaksesi kätevän huipputason toiminnon, jonka avulla käyttäjät voivat helposti käyttää kaikkia jo toteutettuja toimintoja. Ainakin tämän pitäisi olla mahdollista ideaalisessa maailmassa, jossa kaikki kirjastojen lataamisen rakennuspalikat jne. ovat olemassa, jolloin Wolfram-kieli hoitaisi ne automaattisesti. (On huomattava, että käytännössä voi olla ongelmia ulkoisten kielten asettaminen tietty tietokonejärjestelmä ja pilvitallennus voivat aiheuttaa lisätietoturvaongelmia).

Muuten, kun tarkastelet ensimmäistä kertaa tyypillisiä ulkoisia kirjastoja, ne näyttävät usein liian monimutkaisilta, jotta niitä voidaan kattaa vain muutamalla toiminnolla, mutta monissa tapauksissa suuri osa monimutkaisuudesta johtuu kirjaston ja sen kaikkien toimintojen tarvitseman infrastruktuurin luomisesta. tukea sitä. Wolfram-kieltä käytettäessä infrastruktuuri on kuitenkin tyypillisesti valmiiksi sisäänrakennettu paketteihin, joten kaikkia tukitoimintoja ei tarvitse paljastaa yksityiskohtaisesti, vaan funktiot luodaan vain kirjaston "ylisimmille" sovelluskohtaisille toiminnoille. .

Tietokannan "ekosysteemi".

Jos olet kirjoittanut funktioita, joita käytät säännöllisesti, lähetä ne Wolfram Function Repository -palveluun! Jos tästä ei tule mitään muuta (kielen kehitys), silloinkin on paljon mukavampaa käyttää toimintoja henkilökohtaiseen käyttöön. On kuitenkin loogista olettaa, että jos käytät toimintoja säännöllisesti, ehkä myös muille käyttäjille niistä on hyötyä.

Luonnollisesti saatat joutua tilanteeseen, jossa et pysty - tai et halua - jakaa tehtäviäsi tai jos pääset käsiksi yksityisiin tietoresursseihin. Tällaisissakin tapauksissa voit yksinkertaisesti ottaa toiminnot käyttöön omalla pilvitililläsi, oikeuksien määritteleminen pääsy niihin. (Jos organisaatiossasi on Wolfram Enterprisen yksityinen pilvi, se voi pian isännöidä omaa yksityistä ominaisuustietovarastoaan, jota voidaan hallita organisaatiosi sisällä ja määrittää, pakotetaanko ulkopuolisten käyttäjien katselemaan näkymiä.)

Wolfram-funktioarkistoon lähettämiesi funktioiden ei tarvitse olla täydellisiä; niiden on vain oltava hyödyllisiä. Tämä on vähän kuin klassisen Unix-dokumentaation "Virheet"-osio - "Määritelmät-osiossa" on "Tekijän huomautukset" -osio, jossa voit kuvata rajoituksia, ongelmia jne., jotka jo tiedät toiminnastasi. Lisäksi kun lähetät ominaisuutesi arkistoon, voit lisätä lähetyshuomautuksia, jotka omistettu kuraattoritiimi lukee.

Kun ominaisuus on julkaistu, sen sivulla on aina kaksi linkkiä alareunassa: "Lähetä viesti tästä ominaisuudesta"Ja"Keskustele Wolfram-yhteisössä" Jos liität muistiinpanon (esim. kerro minulle virheistä), voit valita ruudun, jossa sanotaan, että haluat viestisi ja yhteystietosi jaetun ominaisuuden tekijän kanssa.

Joskus haluat vain käyttää toimintoja Wolfram-funktiovarastosta, kuten sisäänrakennettuja toimintoja, katsomatta niiden koodia. Jos kuitenkin haluat katsoa sisälle, yläosassa on aina Muistio-painike. Napsauta sitä ja saat oman kopion alkuperäisestä määritelmämuistikirjasta, joka lähetettiin ominaisuusarkistoon. Joskus voit käyttää sitä vain esimerkkinä tarpeisiisi. Samalla voit myös kehittää oman muunnelman tähän toimintoon. Haluat ehkä lähettää nämä funktiot, jotka löysit tietokoneesi arkistosta tai aphid-pilvitallennustilistäsi, ehkä haluat lähettää ne funktioiden tietokantaan, ehkä alkuperäisen toiminnon paranneltua, laajennettuna versiona.

Tulevaisuudessa aiomme tukea Git-tyylistä haaroittelua ominaisuusvarastoissa, mutta toistaiseksi yritämme pitää sen yksinkertaisena, ja meillä on aina vain yksi hyväksytty versio kustakin kieleen sisäänrakennetusta ominaisuudesta. Useimmiten (elleivät kehittäjät luovu kehittämiensä ominaisuuksien ylläpidosta ja vastaa käyttäjien ilmoituksiin), ominaisuuden alkuperäinen kirjoittaja ottaa hallintaansa sen päivitykset ja lähettää uusia versioita, jotka sitten tarkistetaan ja jos ne läpäisevät tarkistusprosessin. , julkaistu kielellä.

Tarkastellaanpa kysymystä siitä, kuinka kehitettyjen funktioiden "versiointi" toimii. Tällä hetkellä, kun käytät funktiota funktioarkistosta, sen määritelmä tallennetaan pysyvästi tietokoneellesi (tai pilvitilillesi, jos käytät pilvipalvelua). Jos ominaisuudesta on saatavilla uusi versio, seuraavan kerran kun käytät sitä, saat tästä ilmoituksen. Ja jos haluat päivittää toiminnon uuteen versioon, voit tehdä sen komennolla Resource Update. ("Funktion blob" tallentaa itse asiassa enemmän versiotietoja, ja aiomme tuoda sen käyttäjien saataville tulevaisuudessa.)

Yksi Wolfram Function Repositoryn kauniista asioista on, että mikä tahansa Wolfram Language -ohjelma missä tahansa voi käyttää sen toimintoja. Jos ohjelma ilmestyy muistilehtiöön, on usein kätevää muotoilla arkistofunktiot helposti luettaviksi "funktion binääriobjekti" -funktioiksi (ehkä sopivalla versiojoukolla).

Voit aina käyttää mitä tahansa funktioarkiston toimintoa tekstin avulla ResourceFunction[...]. Ja tämä on erittäin kätevää, jos kirjoitat koodia tai komentosarjoja suoraan esimerkiksi Wolfram Enginelle käyttämällä IDE:tä tai tekstikoodieditoria (On erityisesti huomattava, että toimintovarasto on täysin yhteensopiva Ilmainen Wolfram Engine kehittäjille).

Miten se toimii?

Wolfram-arkiston toimintojen sisällä tämä on mahdollista täsmälleen samalla tavalla resurssijärjestelmät pohjat, kuten kaikki muut olemassa olevat arkistot (tietovarasto, Neuraaliverkkovarasto, kokoelma demoprojekteja jne.), kuten kaikki muut Wolfram-järjestelmäresurssit, ResourceFunction viime kädessä funktion perusteella ResourceObject.

Harkita ResourceFunction:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Sisällä näet joitain tietoja käyttämällä toimintoa Lisätietoja:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Miten resurssifunktion määrittäminen toimii? Yksinkertaisin tapaus on puhtaasti paikallinen. Tässä on esimerkki, joka ottaa funktion (tässä tapauksessa vain puhtaan funktion) ja määrittelee sen tietyn ohjelmaistunnon resurssifunktioksi:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Kun olet tehnyt määritelmän, voit käyttää resurssitoimintoa:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Huomaa, että tässä funktioblobissa on musta kuvake Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille. Tämä tarkoittaa, että BLOB-funktio viittaa nykyiselle istunnolle määritettyyn muistissa olevaan resurssifunktioon. Resurssiominaisuudessa, joka on pysyvästi tallennettu tietokoneellesi tai pilvitilillesi, on harmaa kuvake Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille. Ja Wolfram Feature Repositoryssa on oranssi kuvake viralliselle resurssiominaisuudelle Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille.

Mitä sitten tapahtuu, kun käytät Määritelmämuistikirjan Laajenna-valikkoa? Ensin se ottaa kaikki muistiinpanon määritelmät ja luo niistä symbolisen ResourceObject). (Ja jos käytät tekstipohjaista IDE:tä tai ohjelmaa, voit myös luoda eksplisiittisesti ResourceObject)

Toiminnon paikallinen käyttöönotto tietokoneesi arkistosta suoritetaan komennolla LocalCache jotta resurssiobjekti tallentaa sen nimellä LocalObject tiedostojärjestelmässäsi. Pilvitilille käyttöönotto tapahtuu komennolla CloudDeploy resurssiobjektille, ja julkinen pilvikäyttö on CloudPublish. Kaikissa tapauksissa Resurssirekisteri käytetään myös rekisteröimään resurssifunktion nimi, joten ResourceFunction["nimi"] tulee toimimaan.

Jos napsautat funktioarkiston Lähetä-painiketta, mitä sen alla tapahtuu ResourceSubmit kutsutaan resurssiobjektille. (Ja jos käytät tekstinsyöttöliittymää, voit myös soittaa ResourceSubmit suoraan.)

Oletusarvoisesti lähetykset tehdään nimellä, joka liittyy Wolfram-tunnukseesi. Mutta jos lähetät hakemuksen kehitystiimin tai organisaation puolesta, voit tehdä sen aseta erillinen julkaisijatunnus ja käytä sitä nimenä vuorovaikutuksessa näkemyksiesi kanssa.

Kun olet lähettänyt jonkin funktioistasi funktion tietokantaan, se asetetaan tarkistusjonoon. Jos saat kommentteja vastauksena, ne ovat yleensä tekstitiedoston muodossa, johon on lisätty "kommenttisoluja". Voit aina tarkistaa hakemuksesi tilan käymällä osoitteessa resurssijärjestelmän jäsenportaali. Mutta kun ominaisuutesi on hyväksytty, sinulle ilmoitetaan (sähköpostitse) ja ominaisuus lähetetään Wolfram-ominaisuusarkistoon.

Joitakin hienouksia työssä

Ensi silmäyksellä saattaa tuntua siltä, ​​että voit vain ottaa määritelmämuistikirjan ja laittaa sen sanatarkasti funktioarkistoon, mutta itse asiassa siihen liittyy melko paljon hienouksia - ja niiden käsitteleminen vaatii melko monimutkaista meta-ohjelmointia ja symbolisen käsittelyn käsittelyä. koodina, joka määrittelee toiminnon, ja itse Muistio on määritelty. Suurin osa tästä tapahtuu sisäisesti, kulissien takana, mutta sillä voi olla joitain seurauksia, jotka kannattaa ymmärtää, jos aiot osallistua ominaisuuksien tietopohjaan.

Ensimmäinen välitön hienovaraisuus: Kun täytät määritelmämuistikirjan, voit yksinkertaisesti viitata toimintoosi kaikkialla käyttämällä esimerkiksi MyFunction, joka näyttää tavalliselta funktion nimellä Wolfram-kielessä, mutta funktioarkiston dokumentaatiossa tämä korvataan ResourceFunction["Oma toiminto"] on mitä käyttäjät todella käyttävät työskennellessään toiminnon kanssa.

Toinen hienous: kun luot resurssifunktion Definition Notebookista, kaikki funktion määrittelyyn liittyvät riippuvuudet on kaapattava ja sisällytettävä eksplisiittisesti. Kuitenkin varmistaaksesi, että määritelmät pysyvät modulaarisina, sinun on asetettava kaikki yksilöllisesti nimiavaruus. (Tietysti, toiminnot, jotka tekevät kaiken, ovat funktioarkistossa.)

Tyypillisesti et koskaan näe jälkeäkään tämän nimitilan määrittämiseen käytetystä koodista. Mutta jos jostain syystä kutsut alisuoritettua symbolia funktiossasi, näet, että tämä symboli on funktion sisäisessä kontekstissa. Definition Notepadia käsiteltäessä tulee kuitenkin ainakin itse funktiota vastaava symboli säädettävissä parhaan näytön saamiseksi toiminnallisena BLOBina eikä raakana hahmona sisäisessä kontekstissa.

Funktiovarasto on tarkoitettu uusien funktioiden määrittämiseen. Ja näillä toiminnoilla voi olla vaihtoehtoja. Usein nämä parametrit (esim. Menetelmä tai Kuvan koko) voidaan käyttää sisäänrakennetuissa toiminnoissa sekä sellaisissa toiminnoissa, joille on jo olemassa sisäänrakennetut symbolit. Mutta joskus uusi ominaisuus saattaa vaatia uusia vaihtoehtoja. Modulaarisuuden säilyttämiseksi näiden parametrien on oltava symboleja, jotka on määritelty ainutlaatuisessa sisäisessä kontekstissa (tai jollain tapaa kokonaisia ​​resurssifunktioita, eli itseään). Yksinkertaisuuden vuoksi funktioarkiston avulla voit määrittää uusia vaihtoehtoja merkkijonomäärityksiin. Ja käyttäjän mukavuuden vuoksi nämä määritelmät (olettaen, että he käyttivät OptionValue и Options Pattern) käsitellään myös siten, että funktioita käytettäessä parametrit voidaan määrittää paitsi merkkijonoina, myös globaaleina symboleina, joilla on sama nimi.

Useimmat funktiot yksinkertaisesti tekevät sen, mitä niiden on tarkoitus tehdä joka kerta, kun niitä kutsutaan, mutta jotkin toiminnot on alustettava ennen kuin ne voidaan suorittaa tietyssä istunnossa - ja tämän ongelman ratkaisemiseksi Määritelmä-osiossa on "Alustus"-osio.

Arkiston funktiot voivat käyttää muita arkistossa jo olevia toimintoja. Jos haluat määrittää funktioarkiston määritelmiä, jotka sisältävät kaksi (tai useampia) toisiinsa viittaavia funktioita, sinun on otettava ne käyttöön ohjelmaistunnossasi, jotta voit viittaus kuten niihin ResourceFunction["nimi"], sitten voit luoda näiden funktioiden yhdistelmät, joita tarvitset, esimerkkejä (en ymmärtänyt) ja lisätä uuden funktion arkistoon jo aiemmin lähetettyjen funktioiden perusteella. (tai jo tai aiemmin – molemmat sanat ovat kömpelöitä)

Kehitysnäkymät. Mitä pitäisi tapahtua, kun arkisto kasvaa todella suureksi?

Tänään lanseeraamme vasta Wolfram Feature Repositoryn, mutta odotamme ajan mittaan sen koon ja toiminnallisuuden kasvavan dramaattisesti, ja kun se kasvaa kehityksen aikana, saattaa ilmaantua erilaisia ​​ongelmia, joita jo odotamme.

Ensimmäinen ongelma koskee toimintojen nimiä ja niiden ainutlaatuisuutta. Funktioarkisto on suunniteltu siten, että Wolfram-kielen sisäänrakennettujen funktioiden tavoin voit viitata mihin tahansa funktioon yksinkertaisesti määrittämällä sen nimi. Mutta tämä tarkoittaa väistämättä sitä, että funktionimien on oltava maailmanlaajuisesti ainutlaatuisia koko arkistossa, joten esimerkiksi niitä voi olla vain yksi ResourceFunction["My Favorite Function"].

Tämä saattaa aluksi tuntua suurelta ongelmalta, mutta on syytä ymmärtää, että se on pohjimmiltaan sama ongelma kuin Internet-verkkotunnuksissa tai sosiaalisen median kahvoissa. Ja tosiasia on, että järjestelmässä tarvitsee vain olla rekisterinpitäjä - ja tämä on yksi niistä rooleista, joita yrityksemme suorittaa Wolfram-toimintojen tietokannassa. (Arkiston yksityisissä versioissa niiden rekisterinpitäjät voivat olla järjestelmänvalvojia.) Tietysti Internet-toimialue voidaan rekisteröidä ilman, että siinä ei ole mitään, mutta funktiotietovarastossa funktion nimi voidaan rekisteröidä vain, jos sille on varsinainen määritelmä. toiminto.

Osa rooliamme Wolfram-funktion tietokannan hallinnassa on varmistaa, että funktiolle valittu nimi on looginen funktion määritelmän perusteella ja että se noudattaa Wolfram-kielen nimeämiskäytäntöjä. Meillä on yli 30 vuoden kokemus sisäänrakennettujen funktioiden nimeämisestä Wolfram-kielellä, ja kuraattoritiimimme tuo tämän kokemuksen myös toimintovarastoon. Tietysti aina on poikkeuksia. Saattaa esimerkiksi tuntua paremmalta, että jollekin funktiolle on lyhyt nimi, mutta on parempi "puolustaa" pidemmällä, tarkemmalla nimellä, koska et epätodennäköisemmin törmää johonkin, joka haluaa tehdä samanlaisen funktion nimen tulevaisuudessa. .

(Tässä on huomattava, että pelkkä jäsentunnisteen lisääminen funktioiden yksiselitteistämiseen ei tuota haluttua vaikutusta. Koska ellet vaadi aina tunnisteen määrittämistä, sinun on määritettävä oletustunniste mille tahansa funktiolle ja myös varattava tekijätunnisteet , mikä taas vaatisi maailmanlaajuista koordinointia.)

Kun Wolfram-toimintojen tietopohja kasvaa, yksi todennäköisesti esiin tulevista ongelmista on toimintojen löydettävyys, jota järjestelmä tarjoaa hakutoiminto (ja määritelmätiedostot voivat sisältää avainsanoja jne.). Wolfram-kielen sisäänrakennettujen toimintojen dokumentaatiossa on kaikenlaisia ​​ristiviittauksia, jotka auttavat "mainostamaan" toimintoja. Funktioarkiston funktiot voivat viitata sisäisiin funktioihin. Mutta entä toisinpäin? Tätä varten aiomme kokeilla erilaisia ​​malleja paljastaaksemme arkistofunktiot sisäänrakennettujen toimintojen dokumentaatiosivuilla.

Wolfram-kielen sisäänrakennetuille toiminnoille on olemassa ns. tunnistuskerros, jonka tarjoaa "apusivujen" verkosto, jotka tarjoavat järjestettyjä luetteloita tiettyihin alueisiin liittyvistä ominaisuuksista. Man-sivujen tasapainottaminen on aina vaikeaa, ja Wolfram-kielen kasvaessa man-sivut on usein järjestettävä kokonaan uudelleen. On melko helppoa jakaa toimintoja arkistosta laajoihin luokkiin ja jopa jakaa nämä luokat johdonmukaisesti, mutta on paljon arvokkaampaa, että kieliviitesivut on järjestetty oikein. Ei ole vielä selvää, kuinka ne parhaiten luodaan koko toimintotietokantaa varten. Esimerkiksi, CreateResourceObjectGallery ominaisuusarkistoon kuka tahansa voi lähettää web-sivun, joka sisältää hänen "valintojaan" arkistosta:

Wolfram Function Repository: avoimen pääsyn alusta Wolfram-kielilaajennuksille

Wolfram-funktioarkisto on määritetty pysyväksi funktioarkistoksi, jossa kaikki sen funktiot toimivat aina. Tietysti uusia versioita ominaisuuksista saattaa tulla saataville, ja odotamme, että jotkin ominaisuudet vanhenevat ajan myötä. Toiminnot toimivat, jos niitä käytetään ohjelmissa, mutta niiden dokumentaatiosivut linkittävät uusiin, edistyneempiin toimintoihin.

Wolfram Feature Repository on suunniteltu auttamaan sinua löytämään nopeasti uusia ominaisuuksia ja oppimaan uusia tapoja käyttää Wolfram-kieltä. Olemme erittäin optimistisia, että joistakin ominaisuusarkiston tutkituista asioista on lopulta järkeä tulla Wolfram-ytimen kielen sisäänrakennetuiksi osiksi. Viime vuosikymmenen aikana meillä on ollut samanlainen setti ominaisuuksia, jotka esiteltiin alun perin Wolfram | Alpha. Ja yksi tästä kokemuksesta opittu opetus on, että niiden laatu- ja johdonmukaisuusstandardien saavuttaminen, joihin keskitymme kaikessa Wolfram-kieleen sisäänrakennetussa asioissa, vaatii paljon työtä, joka on usein vaikeampaa kuin idean ensimmäinen ponnistus. Joka tapauksessa funktiotietokannan funktio voi toimia erittäin hyödyllisenä konseptin todisteena tulevalle funktiolle, joka voidaan lopulta rakentaa Wolfram-kieleen.

Tärkeintä tässä on, että funktioarkiston funktio on jokaisen käyttäjän käytettävissä juuri nyt. On mahdollista, että äidinkielinen ominaisuus voisi olla paljon parempi ja tehokkaampi, mutta ominaisuusvaraston avulla käyttäjät voivat käyttää kaikkia uusia ominaisuuksia heti. Ja mikä tärkeintä, tämän konseptin avulla jokainen voi lisätä mitä tahansa uusia ominaisuuksia.

Aikaisemmin Wolfram-kielen historiassa tämä ajatus ei olisi toiminut yhtä hyvin kuin on toiminut, mutta tässä vaiheessa kieleen panostetaan niin paljon ja kielen suunnittelun periaatteiden ymmärtäminen on niin syvää, että se nyt näyttää melkoiselta. suuri käyttäjäyhteisö voi lisätä ominaisuuksia, jotka ylläpitävät suunnittelun johdonmukaisuutta, jotta niistä olisi hyötyä useille käyttäjille.

Wolfram Language -käyttäjäyhteisössä vallitsee uskomaton lahjakkuuden henki(?). (Tietenkin tähän yhteisöön kuuluu monia johtavia T&K-asiantuntijoita useilla eri aloilla.) Toivon, että Wolfram Feature Repository tarjoaa tehokkaan alustan tämän lahjakkuuden hengen vapauttamiseen ja levittämiseen. Vain yhdessä voimme luoda jotain, joka laajentaa merkittävästi aluetta, jolla Wolfram-kielen laskentaparadigmaa voidaan soveltaa.

Yli 30 vuodessa olemme tulleet pitkälle Wolfram-kielen kanssa. Nyt mennään yhdessä vielä pidemmälle. Kannustan voimakkaasti kaikkia arvostettuja Wolfram-kielen käyttäjiä ympäri maailmaa käyttämään toiminnallista tietovarastoa alustana tälle, samoin kuin uutta ohjelmistoprojektia, kuten Free Wolfram Engine for Developers -ohjelmaa.

Lähde: will.com

Lisää kommentti