Mitä on toiminnallinen ohjelmointi? Opetusohjelma esimerkin kanssa

Mikä on toiminnallinen ohjelmointi?

Funktionaalinen ohjelmointi (kutsutaan myös FP:ksi) on tapa ajatella ohjelmistojen rakentamista luomalla puhtaita toimintoja. Se välttää jaetun tilan käsitteet, olio-ohjelmoinnissa havaittu muuttuva data.

Funktionaaliset kielet painottavat ilmaisuja ja julistuksia lauseiden suorittamisen sijaan. Siksi, toisin kuin muut paikallisesta tai globaalista tilasta riippuvat proseduurit, FP:n arvonanto riippuu vain funktiolle välitetyistä argumenteista.

Funktionaalisen ohjelmoinnin ominaisuudet

  • Toiminnallinen ohjelmointimenetelmä keskittyy tuloksiin, ei prosessiin
  • Painopiste on siinä, mitä lasketaan
  • Data on muuttumaton
  • Toiminnallinen ohjelmointi Jaa ongelma funktioiksi
  • Se perustuu matemaattisten funktioiden käsitteeseen, joka käyttää ehdollisia lausekkeita ja rekursiota laskennan suorittamiseen
  • Se ei tue iteraatiota, kuten silmukkakäskyjä ja ehdollisia lausekkeita, kuten If-Else

Funktionaalisen ohjelmoinnin historia

  • Funktionaalisen ohjelmoinnin perusta on Lambda Calculus. Se kehitettiin 1930-luvulla toiminnallista sovellusta, määrittelyä ja rekursiota varten
  • LISP oli ensimmäinen toimiva ohjelmointikieli. McCarthy suunnitteli sen vuonna 1960
  • 70-luvun lopulla Edinburghin yliopiston tutkijat määrittelivät ML:n (Meta Language)
  • 80-luvun alussa Hope-kieli lisää algebrallisia tietotyyppejä rekursioon ja yhtälöpäättelyyn
  • Vuonna 2004 Innovation of Functional Language 'Scala'.

Toiminnalliset ohjelmointikielet

Minkä tahansa FP-kielen tavoitteena on matemaattisten funktioiden jäljittäminen. Laskennan perusprosessi on kuitenkin erilainen toiminnallisessa ohjelmoinnissa.

Tässä on joitain näkyvimpiä toiminnallisia ohjelmointikieliä:

  • Haskell
  • SML
  • Clojure
  • Scala
  • Erlang
  • Clean
  • F#
  • ML/OCaml Lisp / Scheme
  • XSLT
  • SQL
  • Mathematica

Funktionaalisen ohjelmoinnin perusterminologia ja Concepts

Funktionaalisen ohjelmoinnin perusterminologia ja Concepts

Muuttumaton data

Muuttumaton data tarkoittaa, että sinun pitäisi pystyä helposti luomaan tietorakenteita sen sijaan, että muokkaat jo olemassa olevia tietorakenteita.

Viitteellinen läpinäkyvyys

Toiminnallisten ohjelmien tulee suorittaa toimintoja aivan kuin ensimmäistä kertaa. Joten tiedät mitä on saattanut tapahtua tai ei ole tapahtunut ohjelman suorittamisen aikana ja sen sivuvaikutukset. FP-termissä sitä kutsutaan referenssiläpinäkyvyydeksi.

modulaarisuus

Modulaarinen rakenne lisää tuottavuutta. Pienet moduulit voidaan koodata nopeasti ja niillä on suurempi mahdollisuus käyttää uudelleen, mikä varmasti johtaa ohjelmien nopeampaan kehitykseen. Sen lisäksi moduulit voidaan testata erikseen, mikä auttaa vähentämään yksikkötestaukseen ja virheenkorjaukseen käytettyä aikaa.

ylläpidettävyys

Ylläpidettävyys on yksinkertainen termi, mikä tarkoittaa, että FP-ohjelmointia on helpompi ylläpitää, koska sinun ei tarvitse huolehtia siitä, että jotain muutetaan vahingossa annetun toiminnon ulkopuolella.

Ensiluokkaista toimintaa

"First-class function" on määritelmä, joka liittyy ohjelmointikielen entiteeteihin, joiden käyttöä ei ole rajoitettu. Siksi ensiluokkaisia ​​toimintoja voi esiintyä missä tahansa ohjelmassa.

Sulkeminen

Sulkeminen on sisäinen funktio, joka voi käyttää pääfunktion muuttujia, vaikka pääfunktio on suoritettu.

Korkeamman asteen toiminnot

Korkeamman asteen funktiot joko ottavat muita toimintoja argumentteina tai palauttavat ne tuloksina.

Korkeamman asteen toiminnot mahdollistavat osittaisen käytön tai curryn. Tämä tekniikka soveltaa funktiota argumentteihinsa yksi kerrallaan, kun jokainen sovellus palauttaa uuden funktion, joka hyväksyy seuraavan argumentin.

Puhdas toiminto

Puhdas funktio on funktio, jonka tulot on ilmoitettu tuloina, eikä mitään niistä pidä piilottaa. Lähdöt ilmoitetaan myös lähdöiksi.

Puhtaat funktiot vaikuttavat parametreihinsa. Se ei ole tehokasta, jos ei palauta mitään. Lisäksi se tarjoaa saman lähdön annetuille parametreille

Esimerkiksi:

Function Pure(a,b)
{
	return a+b;
}

Epäpuhtaita toimintoja

Epäpuhdas toimii täsmälleen puhtaan vastakohtana. Niissä on piilotettu tulo tai lähtö; sitä kutsutaan epäpuhtaudeksi. Epäpuhtaita toimintoja ei voi käyttää tai testata erikseen, koska niillä on riippuvuuksia.

esimerkki

int z;
function notPure(){
	z = z+10;
}

Toiminnon kokoonpano

Toimintojen kokoonpano on kahden tai useamman funktion yhdistäminen uudeksi funktioksi.

Jaetut osavaltiot

Jaetut tilat ovat tärkeä käsite OOP-ohjelmoinnissa. Pohjimmiltaan se lisää ominaisuuksia objekteihin. Jos esimerkiksi kiintolevy on objekti, tallennuskapasiteetti ja levykoko voidaan lisätä ominaisuuksiksi.

Side Effects

Sivuvaikutukset ovat mitä tahansa tilamuutoksia, jotka tapahtuvat kutsutun toiminnon ulkopuolella. Minkä tahansa FP-ohjelmointikielen suurin tavoite on minimoida sivuvaikutukset erottamalla ne muusta ohjelmistokoodista. FP-ohjelmoinnissa On tärkeää ottaa pois sivuvaikutukset muusta ohjelmointilogiikasta.

Toiminnallisen ohjelmoinnin edut

  • Voit välttää hämmentäviä ongelmia ja virheitä koodissa
  • Yksikkötestaus ja FP-koodin virheenkorjaus on helpompi testata ja suorittaa.
  • Rinnakkaiskäsittely ja samanaikaisuus
  • Hot code -käyttöönotto ja vikasietoisuus
  • Tarjoaa paremman modulaarisuuden lyhyemmällä koodilla
  • Kehittäjän tuottavuuden kasvu
  • Tukee sisäkkäisiä toimintoja
  • Toiminnalliset rakenteet, kuten Lazy Map & Lists jne.
  • Mahdollistaa Lambda-kiven tehokkaan käytön

Toiminnallisen ohjelmoinnin rajoitukset

  • Funktionaalinen ohjelmointiparadigma ei ole helppoa, joten sitä on vaikea ymmärtää aloittelijalle
  • Vaikea ylläpitää, koska monet objektit kehittyvät koodauksen aikana
  • Tarvitsee paljon pilkkaamista ja laajaa ympäristöasetusta
  • Uudelleenkäyttö on erittäin monimutkaista ja vaatii jatkuvaa uudelleenkäsittelyä
  • Objektit eivät välttämättä edusta ongelmaa oikein

Toiminnallinen ohjelmointi vs. olioohjelmointi

Toiminnallinen ohjelmointi OOP
FP käyttää muuttumatonta dataa. OOP käyttää muuttuvaa dataa.
Noudattaa deklaratiiviseen ohjelmointiin perustuvaa mallia. Noudattaa pakollista ohjelmointimallia.
Se keskittyy siihen, mitä teet. ohjelmassa." Siinä keskitytään "Kuinka teet ohjelmoinnin".
Tukee rinnakkaisohjelmointia. Ei tukea rinnakkaisohjelmointiin.
Sen toiminnoilla ei ole sivuvaikutuksia. Menetelmä voi aiheuttaa monia sivuvaikutuksia.
Flow Control suoritetaan käyttämällä toimintokutsuja ja toimintokutsuja rekursiolla. Vuonohjausprosessi suoritetaan silmukoiden ja ehdollisten lausekkeiden avulla.
Lausuntojen suoritusjärjestys ei ole kovin tärkeä. Lausuntojen suoritusjärjestys on tärkeä.
Tukee sekä "Abstraction over Data"- että "Abstraction over Behavior" -toimintoja. Tukee vain "Abstraction over Data".

Yhteenveto

  • Funktionaalinen ohjelmointi eli FP on tapa ajatella ohjelmiston rakentamista, joka perustuu joihinkin perusperiaatteisiin
  • Toiminnalliset ohjelmointikonseptit keskittyvät tuloksiin, eivät prosessiin
  • Minkä tahansa FP-kielen tavoitteena on matemaattisten funktioiden jäljittäminen
  • Jotkut näkyvimmät toiminnalliset ohjelmointikielet: 1) Haskell 2) SM 3) Clojure 4) Scala 5) Erlang 6) Clean
  • Puhdas funktio on funktio, jonka tulot on ilmoitettu tuloina, eikä mitään niistä pidä piilottaa. Lähdöt ilmoitetaan myös lähdöiksi.
  • Muuttumaton data tarkoittaa, että sinun pitäisi pystyä helposti luomaan tietorakenteita sen sijaan, että muokkaat jo olemassa olevia
  • Voit välttää hämmentäviä ongelmia ja virheitä koodissa
  • Toiminnallinen koodi ei ole helppoa, joten sitä on vaikea ymmärtää aloittelijalle
  • FP käyttää muuttumatonta dataa, kun taas OOP käyttää muuttuvaa dataa

Tiivistä tämä viesti seuraavasti: