Hei, Habr! Esitän huomionne käännöksen Stephen Wolframin viestistä
Wolfram-kielen johdonmukaisuuden edellytykset
Nykyään seisomme suurten saavutusten kynnyksellä yhdessä ohjelmointikielen kanssa
Wolfram Function Repository on jotain, jonka tekee mahdolliseksi Wolfram-kielen ainutlaatuinen luonne, ei vain ohjelmointikielenä, vaan myös
Esimerkiksi Wolfram-funktion arkisto sisältää jo
Samoin enemmän kuin
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
Tässä on huomattava, että käsittelyssä
Toivon sitä tuella
Arkiston toiminnot voivat sisältää pieniä tai suuria koodinpätkiä, jotka on kirjoitettu Wolfram-kielellä. Nämä voivat olla esimerkiksi puheluita
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ä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ää tehokkuutta ja alentaa kustannuksia
Jo ennen Internetiä oli tapoja jakaa Wolfram Language -koodia (ensimmäinen suuri keskitetty projektimme oli
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
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
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:
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
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ä:
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
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.
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:
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
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
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
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.
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
Funktioarkiston päätarkoitus (kuten sen nimi kertoo) on tuoda kieleen uusia ominaisuuksia. Jos haluat lisätä uusia tietoja tai
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
Joten mitä voi olla funktioarkiston funktiokoodissa?
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
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
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,
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: "
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
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
Miten se toimii?
Wolfram-arkiston toimintojen sisällä tämä on mahdollista täsmälleen samalla tavalla
Harkita
Sisällä näet joitain tietoja käyttämällä toimintoa
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:
Kun olet tehnyt määritelmän, voit käyttää resurssitoimintoa:
Huomaa, että tässä funktioblobissa on musta kuvake . 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 . Ja Wolfram Feature Repositoryssa on oranssi kuvake viralliselle resurssiominaisuudelle .
Mitä sitten tapahtuu, kun käytät Määritelmämuistikirjan Laajenna-valikkoa? Ensin se ottaa kaikki muistiinpanon määritelmät ja luo niistä symbolisen
Toiminnon paikallinen käyttöönotto tietokoneesi arkistosta suoritetaan komennolla
Jos napsautat funktioarkiston Lähetä-painiketta, mitä sen alla tapahtuu
Oletusarvoisesti lähetykset tehdään nimellä, joka liittyy Wolfram-tunnukseesi. Mutta jos lähetät hakemuksen kehitystiimin tai organisaation puolesta, voit tehdä sen
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
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
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
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
Funktiovarasto on tarkoitettu uusien funktioiden määrittämiseen. Ja näillä toiminnoilla voi olla vaihtoehtoja. Usein nämä parametrit (esim.
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
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
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
Wolfram-kielen sisäänrakennetuille toiminnoille on olemassa ns. tunnistuskerros, jonka tarjoaa
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
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