한국   대만   중국   일본 
Funkcionalis programozas ? Wikipedia Ugras a tartalomhoz

Funkcionalis programozas

A Wikipediabol, a szabad enciklopediabol

A funkcionalis programozas (angolul: functional programming ) egy programozasi modszertan, vagyis egyike a programozasi paradigmaknak . Nevezhetjuk applikativ programozasnak is. A funkcionalis programnyelvek a programozasi feladatot egy fuggveny kiertekelesenek tekintik. A ket f? eleme az ertek es a fuggveny, nevet is fuggvenyek kituntetett szerepenek koszonheti.

Egy mas megfogalmazas szerint, a funkcionalis programozas soran a programozo inkabb azt specifikalja programban, mit kell kiszamitani, nem azt, hogy hogyan , milyen lepesekben. Fuggvenyek hivasabol es kiertekelesb?l all a program. Nincsenek allapotok, mellekhatasok (nem szamit, mikor, csak az melyik fuggvenyt hivjuk). [1]

A rekurzio a funkcionalis programozas egyik fontos lehet?sege, az ismetlesek es ciklusok helyett rekurziot alkalmazhatjuk.

Attekintes [ szerkesztes ]

Alapjaul a lambda-kalkulus (vagy λ-kalkulus) szolgal, a tisztan funkcionalis nyelvek a matematikaban megszokott fuggvenyfogalmat valositjak meg. Az ilyen programozas soran a megoldando feladatnal az eredmenyhez vezet? ut nem is biztosan ismert, a program vegrehajtasahoz csupan az eredmeny pontos definicioja szukseges. Tisztan funkcionalis programozas eseten tehat nincs allapot es nincs ertekadas.

Egy egyszer? funkcionalis program peldaul az f f1 kifejezes, ahol az f egy fuggvenyerteket eredmenyez? kifejezes (roviden fuggveny ), az f1 pedig egy tetsz?leges kifejezes. Matematikailag ezt ugy is mondhatjuk, hogy az fuggvenyt alkalmazzuk az argumentumra.

Egy Haskell nyelven irt pelda, a faktorialis fuggveny definicioja:

factorial
 0
 =
 1

factorial
 n
 =
 n
 *
 factorial
(
n
-
1
)

Ugyanez Erlang nyelven:

factorial
(
0
)
 ->
 1
;

factorial
(
N
)
 ->
 N
 *
 factorial
(
N
-
1
)

A faktorialis fuggveny egy lehetseges megadasa Lisp nyelven:

(
defun
 factorial
 (
n
)

    (
if
 (
<=
 n
 1
)

      1

      (
*
 n
 (
factorial
 (
-
 n
 1
)))))

Vegul egy lambda-absztrakcios megoldas Standard ML (SML) nyelven:

val
 rec
 factorial
 =
 fn
 0
 =>
 1
 |
 n
 =>
 n
 *
 factorial
(
n
 -
1
)

Tortenelem [ szerkesztes ]

Az egyik korai funkcionalis nyelv a Lisp , melyet John McCarthy alkotott meg az 1950-es evek vegen. [2] A ma legelterjedtebb valtozatai az altalanos celu Common Lisp es Scheme nyelvek.

Az els? tipusos funkcionalis nyelv az ML (Meta Language) egyik korai valtozata volt, amit Robin Milner keszitett az 1970-es evek kozepen a Edinburgh-i Egyetemen, melyben megvalositotta tipuselmeleti eredmenyeit. Ezt a nyelvet alapvet?en logikai allitasok es tetelek bizonyitasara terveztek.

A Hope es egyeb funkcionalis nyelvek, koztuk az ML es NPL altal inspiralva dolgoztak ki az SML, azaz Standard ML nyelvet az 1980-as evek kozepet?l. Tobb dialektusa is keszult, mint peldaul az OCaml.

Funkcionalis nyelvek [ szerkesztes ]

Forrasok [ szerkesztes ]

  1. Dr. Vadasz Denes: Programozasi paradigmak, programozasi nyelvek (letolthet? egyetemi oktatasi anyag) . [2015. majus 1-i datummal az eredetib?l archivalva]. (Hozzaferes: 2016. februar 19.)
  2. John McCarthy: The implementation of LISP (HTML). History of Lisp . (Hozzaferes: 2016. februar 18.)