Funktionaaliset ohjelmointiominaisuudet, esimerkit, edut, haitat
- 4694
- 837
- Joshua Emmerich
Se Toiminnallinen ohjelmointi Se vastaa ohjelmointimallia, joka perustuu käsitteeseen, jonka mukaan ohjelman jatkaminen matemaattisena funktionaalisena mallina eikä prosessorin ohjeiden nimenomaisina sekvensseinä, mikä on tärkein käsite pakollisessa ohjelmoinnissa.
Funktionaalinen kieli korostaa lauseita ja termejä ohjeiden suorittamisen sijasta. Tässä ohjelmassa tulos riippuu vain funktiolle siirretyistä parametreista, toisin kuin muut tyypit, jotka noudattavat paikallista tai globaalia valtiota.
Kuinka Haskellin funktionaalisen ohjelmointikielen kartoitustoiminto toimii. Lähde: kirjoittanut Pluke - Oma työ, CC0 Commons.Wikimedia.org.Sen nimi on peräisin matemaattisista toiminnoista, jotka ovat merkinnän jakamista tulosten joukkoon. Matemaattinen funktio ei todellakaan toimi, vaan kuvaa prosessin mallia selittäen kaavan avulla, mitä joukko merkintöjä tuottaa funktiossa.
[TOC]
Perusidea
Funktionaalinen ohjelmointi perustui Lambda -laskelma, joka kehitettiin 2000 -luvun kolmannen vuosikymmenen aikana funktioiden määrittelemiseksi ja soveltamiseksi. Lisp oli ensimmäinen tämän tyyppinen ohjelmointikieli, joka oli suunniteltu vuonna 1960.
Vaikka suurin osa ohjelmointikielistä koostuu ulkoisista merkinnöistä, lähtöistä ja muuttujista, jotka voidaan konfiguroida tai käyttää toiminnoista, funktionaalinen ohjelmointi estää sen. Ajatuksena on, että joka kerta kun toimintoa kutsutaan samoilla parametreilla, sen on palautettava sama arvo.
Ominaisuudet
Funktionaalisia ohjelmointikieliä kutsutaan sovelluksille, koska toiminnot koskevat niiden parametreja, deklaratiivisen ja ei -proseduraalisen lisäksi, koska määritelmissä määritetään, mitä haluat laskea eikä miten se lasketaan.
Puhtaat toiminnot
Toiminto on puhdasta, kun sillä ei ole havaittavissa olevia sivuvaikutuksia, kuten ulkoisten muuttujien muutoksia, muutoksia tiedostojärjestelmässä jne.
Näitä toimintoja pidetään vakuuttavina, koska ne eivät nimenomaisesti muuta muuttujaa, josta koodin muut osat voivat riippua jossain vaiheessa. Vaikuttaa epämiellyttävältä kodifioista näillä rajoituksilla, mutta on otettava huomioon, että nämä toiminnot ovat deterministisiä, ennustettavissa olevia ja komponentteja.
Ensimmäisen luokan toiminnot
Toimintoja pidetään arvoina, jotka voidaan osoittaa muuttujille, joten ne voivat siirtää ne ja palauttaa muihin toimintoihin. Toisin sanoen funktiota voidaan käyttää ikään kuin se olisi parametri tai arvo, joka palautetaan.
Tämä tarkoittaa, että funktio voidaan lähettää sellaisenaan vain funktion tuloksen sijasta. Tarkastele esimerkiksi kaksois (x) -toimintoa, joka palauttaa kahdesti sen tuloparametrin arvon. Siten kaksinkertainen (2) palauttaisi 4.
Se voi palvella sinua: Teollisuuden ylläpidon kehitys: Alusta nykypäiväänKuten ensimmäisen luokan toiminto, koodi (kaksinkertainen (kaksinkertainen (2))) olisi sama kuin kaksoiskoodi (4). Tämä mahdollistaa toiminnon pesemisen toisen ja niin edelleen.
Referenssi läpinäkyvyys
Se viittaa siihen, että tässä ohjelmointimallissa ei ole tehtävän lauseita. Eli uudet muuttujat tulisi määritellä, jos lisäarvoja halutaan. Siksi muuttujan tila on jatkuvasti jatkuvasti.
Tämä eliminoi pienimmän mahdollisuuden ei -toivottuihin vaikutuksiin, koska mikä tahansa muuttuja voidaan korvata sen todellisella arvolla minkä tahansa ohjelman suorittamispisteen aikana.
Rekursio
Funktionaalisessa ohjelmoinnissa ei ole silmukoita "ja". Sen sijaan iteraatio riippuu rekursiosta. Rekursio toteutetaan käyttämällä rekursiivisia funktioita, jotka kutsuvat itse toistuvasti, kunnes perustapaus on saavutettu.
Muuttumattomuus
Muuttujat ovat muuttumattomia, toisin sanoen muuttujaa ei ole mahdollista muokata, kun se on alustettu. Vaikka uusi muuttuja voidaan luoda, olemassa olevat muuttujat eivät ole sallittuja.
Esimerkit
Välttämättömät ja deklaratiiviset lähestymistavat
Esimerkiksi näiden lähestymistapojen välinen ero voidaan analysoida suorittamalla sama toimenpide molemmissa säännöksissä, mikä on suodatettava luettelon parittomat numerot, kun taas pienempi kuin 5.
Se on sama laskelma, samalla tuloksella. Kuten voidaan nähdä, välttämätön koodi on kuitenkin yksityiskohtainen eikä se ole selvää heti. Toisaalta deklaratiivinen lähestymistapa on luettavissa ja selkeä, koska se keskittyy siihen, mitä haluat saada.
Puhtaat toiminnot
Voit selventää, mitä on määritelty puhtaiksi ja epäpuhtaiksi toiminnoiksi joillakin perusesimerkillä:
Toiminnot, kuten ensimmäisen luokan objektit
Tarkoittaa toimintojen käyttöä samalla tavalla kuin tietoja. Siksi ne voivat siirtyä parametreina toiseen toimintoon. Seuraavassa esimerkissä voit siirtää int -toiminnon parametrina karttatoiminnolle:
>>> luettelo (kartta (int, [“1”, “2”, “3”]))
[1, 2, 3]
Ne voidaan osoittaa muuttujille ja palauttaa ne. Esimerkiksi seuraavalle koodille voidaan määrittää Hello_world -toiminto, sitten muuttujan suorittaminen toiminnona.
Edut
- Keskity siihen, mitä haluat saavuttaa (deklaratiivinen) eikä miten se saavuttaa (välttämätön).
- Ne eivät sisällä allokointilauseita, joten muuttujille annetaan arvo, ne eivät enää muutu. Siksi toiminnalliset ohjelmat eivät sisällä sivuvaikutuksia.
Voi palvella sinua: teknologiset katastrofit- Looginen virtaus on selkeä, koska valtio on vähemmän hajaantunut eikä sitä ole epäsuorasti muokattu.
- Myöntää laskennallisen arvioinnin käsitteen, mikä tarkoittaa, että arvoa arvioidaan ja tallennetaan vain tarvittaessa.
- Koska puhtaat toiminnot eivät muuta mitään tilaa ja riippuvat täysin sisäänkäynnistä, niitä on helppo ymmärtää. Tällaisten toimintojen antama palautusarvo on sama kuin niiden tuottama tulos.
- Muuttujien estämisen tai ulkoisen tiedon estämisen puhtaiden toimintojen luonteen vuoksi samanaikaisuuden toteuttaminen tulee tehokkaaksi.
- Toiminnot käsitellään arvoina, siirtyminen muihin toimintoihin, kuten parametreihin. Tämä parantaa koodin ymmärrystä ja luettavuutta.
- Puhtaat toiminnot vievät parametrit kerran, tuottaen muuttumattoman poistumisen. Käyttämällä muuttumattomia arvoja, puhdistaminen ja testit helpotetaan.
Lyhyempi ja helpompi ymmärtää
Ne ovat lyhyempiä ja helpompia ymmärrettäviä kuin vaatimukset. Tutkimukset ovat osoittaneet, että keskimääräinen ohjelmoijan tuottavuus koodirivien suhteen on enemmän tai vähemmän sama millä tahansa ohjelmointikielellä, kääntämällä suurempi tuottavuus.
Ei ohjausvirtaa
Kun soitat funktiota, sinulla ei voi olla erilaista vaikutusta kuin sen tuloksen laskeminen. Tämä sulkee pois tärkeän virheen lähteen, mikä tekee suoritusjärjestyksestä merkityksettömän, koska mikään sivuvaikutus ei voi muuttaa lausekkeen arvoa, voidaan arvioida milloin tahansa.
Ohjelmoijaa on rauhoitettu ohjausvirran perustamisesta. Koska lausekkeita voidaan arvioida milloin tahansa, muuttujat voidaan korvata niiden arvoilla.
Tämä autonomia suosii, että funktionaaliset ohjelmat ovat matemaattisesti hallittavissa kuin perinteiset ohjelmat.
Haitat
- Funktionaalinen ohjelmointiparadigma ei ole yksinkertainen, joten aloittelijalle on vaikea ymmärtää.
- Sitä on vaikea ylläpitää, koska koodauksen aikana monet objektit kehittyvät.
- Joissakin tapauksissa puhtaan funktioiden kirjoittamisessa koodin luettavuuden väheneminen on aiheutunut.
- Muuttumattomat arvot yhdessä rekursion kanssa voivat johtaa järjestelmän suorituskyvyn dramaattiseen vähentymiseen.
- Uudelleenkäyttö on hyvin monimutkaista ja tarvitsee jatkuvaa reaktiota.
- Ohjelmien kirjoittaminen rekursiivisella tyylillä siteiden tai silmukoiden käytön sijasta voi olla erittäin masentava tehtävä.
- Objektit eivät välttämättä edusta ongelmaa oikein.
Se voi palvella sinua: 50 suositeltua videopeliblogia- Vaikka puhtaiden toimintojen kirjoittaminen osoittautuu yksinkertaiseksi, niiden yhdistäminen muuhun sovellukseen ja tulo-/lähtötoimenpiteisiin on melko vaikeaa
Sovellukset
Keinotekoinen älykkyysohjelma toteutetaan funktionaalisilla ohjelmointikielillä ja keinotekoiset älykkyystekniikat siirtyvät reaalimaailman sovelluksiin.
Erottuu myös monimutkaisten matemaattisten mallien toteuttamisessa. Tästä syystä yksi funktionaalisten kielten päätarkoituksista on perinteisesti ollut akateeminen. Se on hyödyllinen suoritettavien eritelmien kehittämisessä ja prototyyppien toteutuksissa.
Monet toiminnalliset kielet erottuvat myös rinnakkaisprosessoinnista. Tämä johtuu sen kyvystä hyödyntää puhtaita toimintoja, jotka palauttavat aina saman arvon riippumatta siitä, missä järjestyksessä ne suoritetaan.
Funktionaalinen menetelmä
WhatsApp käyttää ERLAG -ohjelmointikieliä, joka seuraa toiminnallista ohjelmointimallia, mikä antaa yli sata työntekijöitä käsitellä noin 1: een kuuluvia tietoja.600 miljoonaa ihmistä.
Toinen tärkeä funktionaalisen ohjelmointityylin operaattori on Haskell. Facebook käyttää sitä Antispam -järjestelmässäsi. Jopa JavaScript, yksi käytetyimmistä ohjelmointikielistä, ylpeilee dynaamisen funktionaalisen kielen ominaisuudet.
Kielet, jotka tukevat funktionaalista ohjelmointia
D -d
Se on suunniteltu C ++: n jälkeen, mikä sai kaikki sen edut ja eliminoi sen heikkoudet, jotka on havaittu yhteensopivaksi C: n kanssa.
Erlang
Se on erittäin skaalautuva ja samanaikainen, mikä tekee siitä ihanteellisen televiestinnän ja muiden sovellusten, jotka saavat valtavia määriä tietoja arvaamattomassa järjestyksessä.
Haskell
Tämä on puhdas funktionaalinen ohjelmointikieli, joka käyttää sille lambda -laskelmaa.
Ml
Sitä käytetään matemaattisissa, tieteellisissä, taloudellisissa, analyyttisissä ja muun tyyppisissä muissa tyypeissä. Yksi sen vahvuuksista on tehdä ohjelmistoja muiden ohjelmien käsittelemiseksi.
Objektiivinen caml
Se on avoimen lähdekoodin kieli, joka perustuu CAML: ään. Sillä on taipumus luoda erittäin kevyitä ohjelmia, jotka auttavat niitä lataamaan ja toteuttamaan nopeammin kuin muiden kielten luomat.
Kaavio
Se perustuu Lisp -syntaksi- ja Algol -rakenteeseen. Yksinkertaisuuden ansiosta sitä käytetään monissa tietokonekursseissa johdannona ohjelmien suunnitteluun, joka näyttää joidenkin tietokoneohjelmoinnin perusteet.
Viitteet
- WHHO isännöi tätä (2019). Opi toiminnallinen ohjelmointi: Tämä koodaustyyli puhaltaa mielesi. Otettu: WhoisostingThis.com.
- Andrea Bertoli (2019). Riittävä johdanto funktionaaliseen ohjelmammmiin. Otettu: Dev.-lla.
- Hacker Earth (2020). Toiminnallinen ohjelmointi. Otettu: Hakereph.com.
- Clojure (2020). Toiminnallinen ohjelmointi. Otettu: Clojure.org.
- Akhil Bhadwal (2020). Funktionaalinen ohjelmointi: käsitteet, adventit, haitat ja sovellukset. Hackr. Otettu: Hackr.Io.
- Guru99 (2020). Mikä on toiminnallinen ohjelmointi? Esimerkiksi opetusohjelmalla. Otettu: Guru99.com.