Viitteellinen läpinäkyvyys

Viittausten avoimuus on tietokoneohjelmien osien ominaisuus. Ohjelman osaa kutsutaan "viitteellisesti läpinäkyväksi", jos se voidaan korvata sen palauttamalla arvolla muuttamatta ohjelman käyttäytymistä. Viittauksellisesti läpinäkyvän funktion on oltava puhdas - sen on aina annettava sama tuloste, jos se ottaa saman syötteen, eikä sillä saa olla sivuvaikutuksia - ohjelman osia, jotka suorittavat muuta toimintaa kuin antavat arvon takaisin. Viittauksellisen läpinäkyvyyden vastakohta on viittauksellinen läpinäkymättömyys.

Matematiikassa kaikki funktiot ovat viitteellisesti läpinäkyviä, koska matemaattinen funktio voi vain ottaa arvoja sisään ja antaa arvon ulos. Ohjelmoinnissa tämä ei aina pidä paikkaansa - funktio voi myös selvittää, mikä päivä vuodesta on meneillään, tai tulostaa viestin näytölle. Tämän eron vuoksi jotkut ihmiset käyttävät ohjelmoinnissa funktioista muita nimiä, kuten proseduurit.

Viittausläpinäkyvyys antaa ohjelmoijille ja kääntäjille mahdollisuuden ajatella koodia uudelleenkirjoitusjärjestelmänä, joka ottaa lausekkeen ja korvaa sen jollakin toisella. Tämä voi auttaa useissa tehtävissä, kuten:

  • Sen osoittaminen, että ohjelma tai koodi on oikein - että se tekee juuri sen, mitä sen on tarkoitus tehdä, vaikka mitä tapahtuisi.
  • Algoritmin yksinkertaistaminen.
  • Koodin muuttaminen helpottuu, mutta samalla voidaan olla varmoja siitä, että se tekee sen, mitä sen on tarkoitus tehdä.
  • Koodin suorittaminen nopeammin tai siten, että se käyttää vähemmän muistia.

Viimeksi mainittuun tehtävään on useita tapoja - tunnetuimmat niistä ovat memoization (vastausten tallentaminen ensimmäisen kerran jälkeen), common subexpression elimination (sen selvittäminen, kannattaako kaksi samaa koodin osaa yhdistää) , lazy evaluation (vastauksen löytäminen vasta, kun koodi todella tarvitsee sitä) ja parallelization (useiden ongelmien työstäminen samaan aikaan).

Kysymyksiä ja vastauksia

Q: Mitä on viittauksellinen avoimuus?


V: Viitteellinen läpinäkyvyys on tietokoneohjelmien osien ominaisuus, jossa ohjelman osa voidaan korvata sen takaisin antamalla arvolla muuttamatta ohjelman käyttäytymistä.

K: Mikä on referentiaalisen läpinäkyvyyden vastakohta?


V: Referentiaalisen läpinäkyvyyden vastakohta on referentiaalinen läpinäkymättömyys.

K: Ovatko kaikki matematiikan funktiot referentiaalisesti läpinäkyviä?


V: Kyllä, kaikki matematiikan funktiot ovat viitteellisesti läpinäkyviä, koska matemaattinen funktio voi vain ottaa arvoja sisään ja antaa arvon ulos.

K: Miten referentiaalinen läpinäkyvyys auttaa ohjelmoijia ja kääntäjiä?


V: Referentiaalinen läpinäkyvyys antaa ohjelmoijille ja kääntäjille mahdollisuuden ajatella koodia uudelleenkirjoitusjärjestelmänä, joka ottaa lausekkeen ja korvaa sen jollakin toisella. Tämä auttaa esimerkiksi todistamaan, että ohjelma tai koodi on oikein, tekemään algoritmista yksinkertaisempia, helpottamaan koodin muuttamista ja varmistamaan, että se tekee sen, mitä sen on tarkoitus tehdä, sekä nopeuttamaan koodin suoritusta tai vähentämään muistin käyttöä.

Kysymys: Mitä tekniikoita käytetään, jotta koodi toimisi nopeammin tai käyttäisi vähemmän muistia?


V: Joitakin tekniikoita, joita käytetään koodin nopeuttamiseksi tai muistin vähentämiseksi, ovat esimerkiksi muistiin tallentaminen (vastausten tallentaminen ensimmäisen kerran jälkeen), yhteisten ali-ilmausten poistaminen (sen selvittäminen, kannattaako kaksi samaa koodin osaa yhdistää), laiska evaluointi (vastauksen etsiminen vasta, kun koodi todella tarvitsee sitä) ja rinnakkaistaminen (useiden ongelmien työstäminen samaan aikaan).

Kysymys: Onko ohjelmoinnissa funktioiden välillä eroa verrattuna matematiikan funktioihin?


V: Kyllä, ohjelmoinnissa olevien funktioiden välillä on eroa verrattuna matematiikan funktioihin - Ohjelmoinnissa funktio voi myös selvittää, mikä päivä vuodesta on meneillään tai tulostaa viestin näytölle, kun taas matemaattisten funktioiden kohdalla tämä ei ole mahdollista.

AlegsaOnline.com - 2020 / 2023 - License CC3