Tikslieji ir gamtos mokslai / Informatika

Funkcinių programavimo kalbų lyginamoji analizė

0 atsiliepimų
Autorius:

Programavimo raidos pradžioje idėjos buvo paprastos, programos buvo struktūrizuojamos kaip išreikštinė veiksmų seka. Programavimo paskirtis - valdyti skaičiavimo mašinas ir jų elgseną. Todėl nenuostabu, kad pirmosios programavimo kalbos labai gerai atspindėjo pačių skaičiavimo mašinų veikimą ir fizinę realizaciją. Tai iš esmės buvo kalbos, kurios mažai skyrėsi nuo paties mašininio kodo.

 

Toks kodas nėra lengvai suprantamas žmogui, juo yra sudėtinga naudotis ir didžioji dalis mašininio kodo diktuojamų apribojimų yra prasmingi tik pačiai skaičiavimo mašinai, algoritmo apibūdinimui jie niekaip nepadeda. Taigi atsirado poreikis kurti abstrakcijas, kurios priartintų programavimo kalbas prie natūralaus žmogaus mąstymo lygmens. Atsirado grupavimas į pro-cedūras, buvo išgrynintos valdymo struktūros (sąlygos sakiniai, ciklai, rekursija) ir sukurtos nuo mašininio lygmens abstrahuotos programavimo kalbos, tokios kaip C, Pascal.[Hud89]

 

Programavimo kalbų raida pradėjo šakotis skirtingomis kryptimis, atsirado įvairios progra-mavimo paradigmos. Programavimo paradigma tai programavimo stilius[Flo79]. Pačios populia-riausios paradigmos dabar yra imperatyvinė, struktūrinė[Seb96] ir objektinė [Wag90] [sof11].

 

Praktiniai poreikiai daro didelę įtaką programavimo įrankiams, todėl dauguma programa-vimo kalbų neapsiriboja vienu stiliumi ir dažniausiai pateikia galimybes taikyti kelis stilius vienu metu. Tai taip vadinamos daugiaparadigmės (multiparadigm) programavimo kalbos. Tokios kal-bos pavyzdys yra C++. Tai imperatyvinė, objektinė ir šabloninė programavimo kalba. [Cop98]

 

Imperatyvumo idėja yra paprasta, programa tai įsakymų, kurie vykdomi tvarkingai iš eilės, skaičiavimo mašinai seka. Dabar yra sudėtinga įvardyti populiarias programavimo kalbas, kuriose nėra šitos savybės.

 

Struktūriškumo idėja yra grupuoti perpanaudojamus algoritmus į paprogrames arba proce-dūras. [Seb96]

 

Objektinis programavimas modeliuoja programą, kaip sąveiką tarp objektų, kurie enkapsu-liuoja savo būseną ir turi savo elgseną[Boo97].

 

Viena paradigma, kuri iki šiol nebuvo itin populiari, dabar pamažu braunasi į populiariųjų gretas. Tai funkcinio programavimo paradigma.[sof11]

 

Funkcinės programavimo paradigmos esmė yra kuo labiau priartinti programavimą prie ma-tematinio lygybių ir santykių apibrėžimo lygmens. Daug dėmesio yra skiriama funkcijoms, kaip svarbiausioms esybėms tokioje programavimo kalboje. Taip pat remiamasi lambda skaičiavimu ir formaliomis tipų sistemomis, tokiomis kaip Hindlio-Milnerio tipų sistema.[Hud89]

 

Atliekant šį darbą, daugiausiai buvo remtasi Paul Hudak straipsniu „Conception, Evolution, and Application of Functional Programming Languages“, kuriame yra išdėstoma visa funkcinio programavimo istorija iki Haskell standarto kūrimo pradžios apie 1989 metus. Haskell dabar yra funkcinio programavimo kalbos etalonas, todėl šiame darbe nemažas dėmesys bus skirtas jai.

 

Šio darbo tikslas yra atlikti funkcinių programavimo kalbų lyginamąją analizę.

 

4

 

Šiam tikslui pasiekti yra keliamos tokios užduotys:

 

  • Nustatyti kriterijus, pagal kuriuos būtų galima lyginti funkcines programavimo kalbas

 

  • Pasirinkti tinkamiausias palyginimui programavimo kalbas

 

  • Atlikti palyginamąją parinktųjų programavimo kalbų analizę remiantis identifikuotais kri-terijais

 

Darbo tipas:
Dalykas:
Apimtis:
9125 žodžiai (-ų)
Lygis:
Universitetas
Atsisiųsti

Turinys

  • Įvadas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
  • 1 Apžvalga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
  • 1.1 Funkcinis programavimas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
  • 1.2 Funkcinio programavimo savybės . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
  • 1.2.1 Aukštesnės eilės funkcijos ir pirmos klasės esybės . . . . . . . . . . . . . . . . . . . . . . . . . . .7
  • 1.2.2 Atidėtas vykdymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10
  • 1.2.3 Švarumas ir funkcijos be šalutinių efektų . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11
  • 1.2.4 Šablonų atitaikymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .12
  • 1.2.5 Duomenų abstrakcijos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
  • 1.2.6 Tipų sistema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13
  • 1.3 Funkcinės programavimo kalbos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
  • 1.3.1 Haskell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
  • 1.3.2 OCaml . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
  • 1.3.3 Erlang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17
  • 1.3.4 Scheme, Clojure ir kiti LISP dialektai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
  • 1.3.5 Kitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .18
  • 2 Lyginamoji analizė . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
  • 2.1 Metodika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
  • 2.2 Aukštos eilės funkcijos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20
  • 2.3 Skaidrumas kvietimui ir funkcijos be šalutinių efektų . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
  • 2.4 Vykdymo strategija . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .22
  • 2.5 Šablonų atitaikymas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23
  • 2.6 Tipų sistema. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25
  • 2.7 Duomenų abstrakcijos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .27
  • Rezultatai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29
  • Išvados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30
  • Literatūros sąrašas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .31
  • Sąvokų apibrėžimai . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .33

Jums gali būti aktualu

Vartotojai, įsigyję šį darbą, taip pat peržiūrėjo
Dakos ir Bankoko klimato sąlygų lyginamoji analizė
Referatas Dakos ir Bankoko klimato sąlygų lyginamoji analizė

Tikslas: remiantis įvairiais šaltiniais palyginti Dakos bei Bankoko miestų klimato sąlygas.   Uždaviniai: remiantis teminiai žemėlapiais nustatyti vasaros [...]

Kineziterapijos poveikio analizė, funkcinės būklės kaitai mergaitei sergančiai spinaline raumenų atrofija
Diplominis darbas Kineziterapijos poveikio analizė, funkcinės būklės kaitai mergaitei sergančiai spinaline raumenų atrofija

Temos aktualumas. Pasaulyje priskaičiuojama apie 8 tūkst. retų ligų. Nervų-raumenų ligos – viena iš tūkstančių [...]

Objektinis programavimas. C++. Užduotis su teksto analize ir redagavimu
Laboratorinis darbas Objektinis programavimas. C++. Užduotis su teksto analize ir redagavimu

REIKALAVIMAI: Teksto analizė ir redagavimas. Klasė string, standartiniai metodai. Apdorojimo eilutėmis algoritmas. Eilučių įvedimas ir išvedimas.

Prevencinė programa: ikimokyklinio amžiaus vaikų ir pradinių klasių mokinių streso valdymo ugdymas
Referatas Prevencinė programa: ikimokyklinio amžiaus vaikų ir pradinių klasių mokinių streso valdymo ugdymas

Prevencinė programa pasirinkta tema, parengta Bendruomenės slaugos paskaitai.

Darnaus vystymosi politikos vertinimas gero valdymo kontekste: Baltijos šalių lyginamoji analizė
Diplominis darbas Darnaus vystymosi politikos vertinimas gero valdymo kontekste: Baltijos šalių lyginamoji analizė

Temos aktualumas. Dėl intensyvėjančios gamybos bei aplinkos taršos, augančių visuomenės poreikių ir ekonomikos plėtros, pasaulio [...]

Kolektyvinės darbo sutarties samprata: Lietuvos ir pasirinktos Europos Sąjungos lyginamoji analizė
Diplominis darbas Kolektyvinės darbo sutarties samprata: Lietuvos ir pasirinktos Europos Sąjungos lyginamoji analizė

Temos aktualumas. Daugeliui žmonių darbas yra pragyvenimo šaltinis ir vienas iš pagrindinių gyvenimo sričių, kurios [...]

Kolektyvinės darbo sutarties samprata Lietuvos ir Europos Sąjungos valstybės lyginamoji analizė
Prezentacija Kolektyvinės darbo sutarties samprata Lietuvos ir Europos Sąjungos valstybės lyginamoji analizė

Temos aktualumas. Daugeliui žmonių darbas yra pragyvenimo šaltinis ir vienas iš pagrindinių gyvenimo sričių, kurios [...]

Lyginamoji histologija
Konspektas Lyginamoji histologija

Histologija- tai mokslas apie audinius, histologija tiria daugialąsčių gyvūnų audinių formavimąsį ,struktūrą ir funkcijas, audinių [...]

Kaimo turizmo paslaugų lyginamoji analizė Utenos ir Molėtų rajonuose
Diplominis darbas Kaimo turizmo paslaugų lyginamoji analizė Utenos ir Molėtų rajonuose

Dėl ekonominės, socialinės ir politinės globalizacijos procesų įtakos turizmas tapo pirmaujančia ūkio šaka daugelyje valstybių.

Skirtingų kalbų kontaktų analizė
Referatas Skirtingų kalbų kontaktų analizė

Kalbų kontaktavimas, dar kitaip vadinamas kalbų sąveika, atsiranda tada, kai dvi ar kelios kalbos pastoviai [...]

Rankos funkcijos pusiausvyros sąsajos pacientams po galvos smegenų insulto naudojant virtualią terapiją
Diplominis darbas Rankos funkcijos pusiausvyros sąsajos pacientams po galvos smegenų insulto naudojant virtualią terapiją

Galvos smegenų insultas (GSI) - ūminis ţidininis galvos smegenų kraujotakos sutrikimas, pasireiškiantis ţidininiais neurologiniais simptomais [...]

Aktino siūlų funkcijos ląstelėje
Prezentacija Aktino siūlų funkcijos ląstelėje

•Aktino filamentų tinklas bei kiti citoskeleto proteinai yra pagrindas plazinės membranos, tuo pačiu apsprendžia ir [...]

Socialinio darbuotojo, teikiančio socialines paslaugas sveikatos priežiūros įstaigoje, funkcijų analizė
Diplominis darbas Socialinio darbuotojo, teikiančio socialines paslaugas sveikatos priežiūros įstaigoje, funkcijų analizė

Tyrimo tikslas: Išanalizuoti socialinio darbuotojo, teikiančio socialines paslaugas sveikatos priežiūros įstaigoje, funkcijas ir jų vykdymo [...]

Kineziterapijos programa esant šeivinio nervo neuropatijai
Referatas Kineziterapijos programa esant šeivinio nervo neuropatijai

P.p. sėdint ant kėdės. Kojos sulenktos 90º kampu, pėdos remiasi į grindis, pėdos suglaustos. Abi [...]

Birštono miesto gyventojų jodo vartojimo prevencijos programa
Referatas Birštono miesto gyventojų jodo vartojimo prevencijos programa

Vienas efektyviausių pasaulyje patikrintų būdų užtikrinti pakankamą jodo kiekį organizme – kokybiškos joduotosios valgomosios druskos [...]