Skip to main content

Mi a funkcionális programozás?

A funkcionális programozás egy programozási paradigma, ahol a számítás alapja a kifejezések értékelése.Néhány jellemző a magasabb rendű funkciók, a referencia átláthatóság és a lusta értékelés használata.A programozási stílus előnyei között szerepel, hogy a programok könnyen olvashatók, nagyon megbízhatóak és összetevőkre bonthatók.A hátrányok az, hogy a számítások lassúak lehetnek, és a stílus és a szintaxis teljesen különbözik a többi közös programozási stílustól.A funkcionális programozási stílust gyakrabban veszik át a tudósok, mint a számítástechnikai szakemberek.A funkciók beágyazhatók más funkciókon belül, úgynevezett magasabb rendű funkcióknak, és minden magasabb rendű funkciót bonthatunk olyan építőelemes funkciókra, amelyek könnyen érthetők és hibakereshetők.Néhány magasabb rendű funkcióra példa a térkép és a fészek.A függvénytérkép az F függvényt és a változók listáját veszi fel, például (x, y, z), és az eredményt egy listában adja meg: térkép [f, (x, y, z)] ' (f (x), f(y), f (z)).A fészek az F függvényt, az x változó és az iterációk számát veszi: fészek [f, x, 3] ' f (f (f (x))).

A tiszta funkcionális programozás bevitelt vesz, és egy kimenetet ad vissza anélkül, hogy megváltoztatná a változó állapotát.Más szavakkal, egy ugyanazzal a bemenettel rendelkező funkció mindig ugyanazokat az eredményeket adja, függetlenül attól, hogy mi történt a programban.Ezt nevezzük referenciális átláthatóságnak.Mivel a matematikai funkciók referenciálisan átlátszóak, a funkcionális programozás sok matematikus, mérnök és tudós számára intuitív.

A funkciók referenciális átláthatósága azt jelenti, hogy a funkció értékelésének sorrendje nem fontos.Ezért a funkciókat csak addig kell értékelni, amíg az eredményeikre szükségük van, amelyet lusta értékelésnek hívnak.Ez teljes ellentétben áll az imperatív programozással, ahol egy program az első parancssal kezdődik, és az utolsó parancsig fut a listán.A lusta értékelés átugorja a program olyan részeit, amelyek nem követik logikusan vagy feleslegesek, amelyek automatikusan optimalizálják a programot, és csökkenthetik a számítási időt.

A funkcionális programozásnak számos előnye van más programozási paradigmákkal szemben.A tiszta bemenetekkel és kimenetekkel rendelkező funkciók könnyen olvashatók és megérthetők.Miután egy függvényt alaposan hibakeresések, megbízhatóan használható más alkalmazásokban.A többmagos gépek képesek lehetnek kiszámítani azokat a funkciókat, amelyeket egymástól függetlenül értékelnek, drasztikusan javítva a programok teljesítményét.A funkcionális programok nagymértékben támaszkodnak a rekurzióra, ami gyakran kevésbé hatékony, mint a hagyományos hurkok vagy iterációs módszerek alkalmazása.Valójában a funkcionális programozás meglehetősen ügyetlen és nehéz lehet megtanulni, mivel nem hasonlít más gyakoribb paradigmákhoz, például az objektumorientált programozáshoz.

A tudósok általában a funkcionális programozást támogatják, mivel ez egyértelmű és érthető módszert kínál a komplex valós világproblémák programozására.-Néhány tiszta nyelv Haskell és Erlang.A Mathematica a szimbolikus matematikára szakosodott, az R statisztikákra szakosodott, és J pénzügyi elemzésre szakosodott.A multiparadigm nyelvek, mint például a Scala és az F#, támogatják mind a funkcionális programozási, mind az egyéb programozási stílusokat.