Synkron programmeringssprog - Synchronous programming language
Et synkront programmeringssprog er et computerprogrammeringssprog optimeret til programmering af reaktive systemer . Computersystemer kan sorteres i tre hovedklasser: (1) transformationssystemer, der tager nogle input, behandler dem, leverer deres output og afslutter deres udførelse; et typisk eksempel er en kompilator; (2) interaktive systemer, der interagerer kontinuerligt med deres miljø i deres egen hastighed et typisk eksempel er internettet; og (3) reaktive systemer, der interagerer kontinuerligt med deres miljø med en hastighed, der pålægges af miljøet; et typisk eksempel er det automatiske flykontrolsystem for moderne fly. Reaktive systemer skal derfor reagere på stimuli fra miljøet inden for stramme tidsfrister. Af denne grund kaldes de ofte også realtidsystemer og findes ofte i indlejrede systemer .
Synkron programmering (også synkron reaktiv programmering eller SRP ) er en computer programmeringsparadigme understøttet af synkrone programmeringssprog. Princippet med SRP er at lave den samme abstraktion til programmeringssprog som den synkrone abstraktion i digitale kredsløb. Synkrone kredsløb er faktisk designet på et højt abstraktionsniveau, hvor timingegenskaberne for de elektroniske transistorer overses. Hver port i kredsløbet (eller, og, ...) antages derfor at beregne sit resultat øjeblikkeligt, hver ledning antages at transmittere sit signal øjeblikkeligt. Et synkront kredsløb er uret og ved hvert kryds af uret beregner det øjeblikkeligt dets outputværdier og de nye værdier for dets hukommelsesceller (latches) ud fra dets inputværdier og de aktuelle værdier for dets hukommelsesceller. Med andre ord opfører kredsløbet sig som om elektronerne flyder uendeligt hurtigt. De første synkrone programmeringssprog blev opfundet i Frankrig i 1980'erne: Esterel , Luster og Signal . Siden da er der opstået mange andre synkrone sprog.
Den synkrone abstraktion gør det meget lettere at ræsonnere om tid i et synkront program takket være forestillingen om logiske flåter : et synkront program reagerer på sit miljø i en sekvens af flåter, og beregninger inden for et kryds antages at være øjeblikkelig, dvs. hvis processoren, der udfører dem, var uendeligt hurtig. Påstanden " a || b " er derfor abstraheret som pakken " ab ", hvor " a " og " b " er samtidige. For at tage et konkret eksempel specificerer Esterel-udsagnet " hvert 60 sekund udsender minut ", at signalet " minut " er nøjagtigt synkron med den 60. forekomst af signalet " andet ". På et mere grundlæggende niveau eliminerer den synkrone abstraktion den ikke-determinisme, der skyldes sammenflettningen af samtidig adfærd. Dette muliggør deterministisk semantik, hvilket gør synkrone programmer modtagelige for formel analyse, verifikation og certificeret kodegenerering og kan bruges som formelle specifikationsformalismer .
I modsætning hertil kan udsagnet " a || b " i den asynkrone beregningsmodel på en sekventiel processor enten implementeres som " a; b " eller som " b; a ". Dette er kendt som den interleaving-baserede ikke-determinisme . Ulempen med en asynkron model er, at den iboende forbudt deterministisk semantik (fx raceforhold), hvilket gør formel ræsonnement såsom analyse og verifikation mere kompleks. Ikke desto mindre er asynkrone formalismer meget nyttige til at modellere, designe og verificere distribuerede systemer, fordi de er iboende asynkrone.
Derimod er systemer med processer, der grundlæggende interagerer synkront . Et eksempel kan være systemer, der er baseret på kommunikationsmodellen (CSP) , som også tillader ikke-deterministisk valg.
Synkrone sprog
- Argos
- Atom (et domænespecifikt sprog i Haskell til hard realtime indlejret programmering)
- Averest
- Blech
- ChucK (et synkront reaktivt programmeringssprog til lyd)
- Esterel
- LabVIEW
- LEA
- Glans
- PLEXIL
- SIGNAL (et dataflytningsorienteret synkront sprog, der muliggør multi-ur-specifikationer)
- SOL
- SyncCharts
Se også
Referencer
- Nicolas Halbwachs. "Synkron programmering af reaktive systemer". Kluwer Academic Publishers, 1993. http://www-verimag.imag.fr/~halbwach/newbook.pdf
eksterne links
- Den synkrone gruppe i Verimag lab.
- Programmeringssprog SIGNAL .
- Forening af synkrone og asynkrone modeller til parallelle programmeringssprog —Proposer parallelle sprog baseret på C , lader programmører specificere og håndtere parallelisme på en bred vifte af computerarkitekturer.