Funkcinės reaktyviosios programavimo kalbos specifikacija

Aš žiūriu į netvarą su tam tikru momentu sukuriant funkcinę reaktyvią struktūrą. Daug apie tai perskaičiau ir pamačiau keletą pavyzdžių, bet norėjau gauti aiškią idėją apie tai, ką ši struktūra turėtų padaryti, kad būtų FRP / DSL pratęsimas. Aš nesu susirūpinęs dėl įgyvendinimo problemų ar ypatybių ir tt, bet daugiau apie tai, kas būtų pageidautina idealioje situacijoje pasaulyje.

Kokios bus pagrindinės idealios funkcinės reaktyvios programavimo kalbos operacijos ir savybės?

54
04 мая '11 в 0:29 2011-05-04 00:29 seadowg yra nustatytas gegužės 4 d., 11 val. 0:29 2011-05-04 00:29
@ 2 atsakymai

Džiaugiuosi, kad pradėjote klausinėti specifikacijos, o ne įgyvendinimo. Yra daug idėjų, plūduriuojančių aplink FRP. Man visada buvo du dalykai: a) denotacinis ir (b) laikinas tęstinumas. Daugelis žmonių atsisako tiek šių savybių, tiek atpažįsta skirtingas įgyvendinimo koncepcijas, kurios visos neatitinka mano požiūrio. Norėdamas sumažinti painiavą, norėčiau, kad terminas „funkcinis reaktyvus programavimas“ būtų pakeistas tikslesniu ir apibūdinančiu „nuolatinio laiko denotatyvaus programavimo“ (DCTP) metodu, kaip Jake McArthur pasiūlė per praėjusius metus .

Pagal "denotatyvų", aš turiu galvoje remiantis tikslia, paprasta, nepriklausoma, kompozicine semantika, kuri tiksliai apibrėžia kiekvieno tipo ir statybinio bloko reikšmę. Tada semantikos kompozicinis pobūdis lemia visų teisingų statybinių blokų derinių reikšmę. Mano nuomone, širdies ir funkcinio programavimo esmė yra denotatyvi, ir tai leidžia tiksliai ir tinkamai pritaikyti argumentus ir todėl yra teisingumo, išvedimo ir optimizavimo pagrindas. Peteris Landinas rekomendavo „denotatyvų“ kaip esminį sudėtingesnio termino „funkcinis“ pakaitalą ir būdą atskirti gilų / tikrai funkcinį programavimą nuo paprasčiausio funkcionalumo žymėjimo. Žiūrėkite šį komentarą dėl kai kurių „Landden“ citatų ir nuorodos straipsnio.

Nuolatiniam laikui žr. Pranešimą „ Kodėl programuoti nepertraukiamu laiku“? ir mano citata AshleyF atsakyme šiame puslapyje. Dar kartą ir vėl nustebau, kai išgirdau pareiškimą, kad nepertraukiamo laiko idėja kažkaip yra nenatūrali ar neįmanoma realizuoti, atsižvelgiant į kompiuterių diskretiškumą. Ši mąstymo linija man atrodo keista, ypač išeinant iš Haskellers, dėl kelių priežasčių:

  • Naudodamiesi tingiomis funkcinėmis kalbomis atsitiktinai programuojame begalinius duomenis ant galinių įrenginių. Kaip rezultatas, mes gauname puikų moduliškumą, kaip parodyta klasikiniame John Hughes straipsnyje. Kodėl funkciniai programavimo klausimai .
  • Yra daug pavyzdžių, kai programavimas vyksta nepertraukiamoje erdvėje, pavyzdžiui, vektorinė grafika, bet taip pat ir pan .
  • Man patinka mano programos atspindėti, kaip galvoju apie probleminę erdvę, o ne apie mašiną, kuri vykdo programas, ir aš linkiu tikėtis, kad kiti aukšto lygio programuotojai dalinsis šia nuostata. („Programavimo kalba yra maža, kai jos programoms reikia dėmesio netinkamumui.“ - Alan Perlis)

Nuolat programuodu bibliotekas su TBAG ir ActiveVRML (pirmoji DCTP / FRP sistema), tada Fran . Tai lengva įdiegti teisingai. Straipsnyje „ Funkciniai nepertraukiamo modeliavimo animacijos diegimo būdai“ aprašyti keli skirtingi metodai. Nuolatinio laiko efektyvus įgyvendinimas (ir vis dar teisingai!) Ar dar vienas klausimas, ypač vengiant perskaičiuoti fiksuotas vertes. (Žr. „ Push-pull Document Functional Reactive“ programavimas .)

Su jais susijusias pastabas rasite mano atsakyme į skirtumą tarp reaktyvaus ir funkcionalaus reaktyvaus programavimo ir Kas yra (funkcinis) reaktyvus programavimas? Atnaujinimas: daugiau informacijos apie tai, kodėl reikia pastovaus laiko, žr. Atnaujinimas: žr. Taip pat mano kalbą apie 2015 m . FRP esmė ir kilmė (ir susijusios derybos).

Sėkmės su savo tyrimais ir praneškite man, jei turite klausimų. Mano kontaktinė informacija yra mano pagrindiniame puslapyje .

105
04 мая '11 в 7:25 2011-05-04 07:25 atsakymą pateikė „ Conal “ gegužės 4 d. 11 d. 7:25 2011-05-04 07:25

Manau, jūs matėte Matthias Fellesines apie funkcinį I / O ir perskaitėte jo straipsnį . Manau, kad tai labai pragmatiškas ir gražus požiūris. Tikiuosi, kad jūs taip pat suklupote kai kurių puikių Conal Elliott darbų.

Mano asmeniniai reikalavimai yra tai, kad sistema yra visiškai švari. Tai reiškia, kad visas elgesys yra apibrėžtas gryno world->world funkcijomis, o visas įgyvendinimas ar vizualizavimas yra nustatomas pagal world->visual funkcijas; kai visual yra tam tikras statinis atsijungimo aprašymas.

Mano kita pagrindinė funkcija yra istorinis derintuvas. Tai turėtų būti gana triviška išlaikyti world valstybių istoriją ir sugebėti atkurti bet kuriuo metu.

Vienas iš itin įdomių tyrimų sričių (manau, kad neišspręsta problema) būtų nenutrūkstamo laiko naudojimas, o ne world->world funkcijų kartojimas kai kuriuose diskrečiuose cikluose. Kartą padariau keletą dienoraščio pranešimų apie FRP ir Conal Elliott paliko šį komentarą, kuris išprovokavo komentarą:

Man patinka denotatyvūs / funkciniai metodai, išdėstymui ir stiprinimui; semantinis aiškumas. Dėl tos pačios priežasties norėčiau nuolatinį laiką ir erdvę diskretišku laiku ir erdvėje. Visais šiais atvejais, tuo mažesnė mašinų formulė puikiai atskiria tai, kas yra nuo mašinos atvaizdavimo.

Nuspręskite ir tapsite didvyriu!

5
04 мая '11 в 4:26 2011-05-04 04:26 atsakymą pateikė AshleyF gegužės 11 d. 11 d. 4:26 2011-05-04 04:26