Programiranje na nivou funkcija

S Vikipedije, slobodne enciklopedije

U informatici, programiranje na nivou funkcija se odnosi na jednu od dve suprotstavljene paradigme programiranja koje je identifikovao Džon Bakus u svom radu na programima kao matematičkim objektima, drugi je programiranje na nivou vrednosti.

U svom predavanju povodom dobijanja Tjuringove nagrade 1977, Bakus je naveo ono što je smatrao da je potrebno da se prebacite na drugu filozofiju dizajna programskog jezika:[1]

Izgled programskih jezika je u nevolji. Svaki naredni jezik uključuje, uz malo čišćenje, sve karakteristike svojih prethodnika plus još nekoliko. [...] Svaki novi jezik, tvrdi nove i moderne karakteristike ... ali činjenica je da je nekoliko programskih jezika dovoljno jeftinije ili više pouzdanije da opravda troškove proizvodnje i učenje da se koriste.

On je dizajnirao FP da bude prvi programski jezik da konkretno podrži stil programiranja na nivou funkcija.

Program na nivou funkcija je slobodna promenljiva (vidi programiranje bez tačaka), jer programske promenljive, koje su od suštinskog značaja u definicijama o vrednosti nivoa, nisu potrebne u programima na nivou funkcija.

Uvod[uredi | uredi izvor]

U stilu programiranja na nivou funkcija, program se gradi direktno iz programa koji se daju na početku, kombinujući ih sa programskim formiranjima operacija ili funkcija. Tako je u suprotnosti sa pristupom vrednosti nivoa koji se odnosi na date programe na vrednosti da se formiraju sukcesije vrednosti kulminirano u željenoj vrednosti rezultata, pristup na nivou funkcija primenjuje program za oblikovanje operacije datim programima da se formira redosled programa što je kulminiralo u programu željenog rezultata.

Kao rezultat toga, pristup programiranju na nivou funkcija poziva studiju prostora programa u okviru programa za formiranje operacija, u potrazi za izvođenje korisnih algebarskih svojstava ovih programa formira operaciju. Pristup na nivou funkcija nudi mogućnost izrade skupa programa matematički prostor naglašavanjem algebarski svojstva operacija programa formira preko prostora programa.

Još jedna potencijalna prednost pogledom na nivou funkcija je sposobnost da se koriste samo stroge funkcije i na taj način imaju odozdo prema gore semantiku, koje su najjednostavnije vrste svega. Još jedna prednost je postojanje definicija na nivou funkcija koje nisu podignute (odnosno, podignuta iz nižeg vrednosti nivoa na viši funkcije nivou) slike bilo koje postojeće na nivou vrednosti: te (često sažet) definicije na nivou funkcija predstavljaju da moćniji stil programiranja nije dostupan u vrednostima nivoa i, verovatno, često je lakše da se razume i razlog o tome.

Razlika od funkcionalnog programiranja[uredi | uredi izvor]

Kada je Bakus studirao i objavio svoj stil programiranja na nivou funkcija, njegova poruka je uglavnom pogrešno shvaćena, dajući podstrek stilu tradicionalnim funkcionalnim programskim jezicima umesto njegovom FPu i njegovom nasledniku FLu.[2]

Bakus zove funkcionalno programiranje aplikativno programiranje; njegovo programiranje na nivou funkcija je poseban, ograničen tip aplikativnog programiranja.

Ključna razlika od funkcionalnih jezika je da Bakus 'jezik ima sledeću hijerarhiju tipova:

  • atomi
  • funkcije, koje uzimaju atome do atoma
  • Funkcije višeg reda (koje on naziva „funkcionalne forme“), koji uzimaju jednu ili dve funkcije od funkcije

... i jedini način za generisanje novih funkcija je da koristite jednu od funkcionalnih oblika, koji su fiksni i ne mogu izgraditi svoj funkcionalni oblik (barem ne u FP, možete u FFP (Formalni FP)).

Ovo ograničenje znači da funkcije u FPu su moduli (nastale usled ugrađenih funkcija) u odnosu na algebre funkcionalnih formi, pa su samim tim algebarski poslušane. Na primer, opšte pitanje ravnopravnosti dve funkcije je ekvivalentno halting problemu, i neodlučnost, ali jednakost dve funkcije u FPu je samo jednakost u algebri, i na taj način (Bakus zamisli) je lakše.

Čak i danas, mnogi korisnici Lambda stil jezika često pogrešno tumače Bakus 'funkcionalni nivo pristupa kao restriktivne varijante lambda stila, koji je de facto vrednosti nivoa stila. U stvari, Bakus je ne bi slagao sa „restriktivnom“ optužbom: on je tvrdio da upravo zbog takvih ograničenja koja su dobro formirana matematički prostor može nastati, na način analogan načinu strukturiranog programiranja granica na određenu verziju svih mogućnosti za kontrolu tokova dostupnih u ravnici, neograničenje nestrukturiranih programa.

Vrednost slobodnog stila FP je usko povezana sa jednakosnom logikom kartezijanske-zatvorene kategorije.

Primer jezika[uredi | uredi izvor]

Kanonski programski jezik na nivou funkcija je FP. Drugi uključuju FL, FPR i J.

Vidi još[uredi | uredi izvor]

Reference[uredi | uredi izvor]

  1. ^ „Can Programming Be Liberated from the von Neumann Style?” (PDF). 
  2. ^ Hudak, Paul (1989). "Conception, Evolution, And Application Of Functional Programming Languages". ACM Computing Surveys. 21 (3).  Nedostaje ili je prazan parametar |title= (pomoć)