Ease
Proiectat de: Steven Ericsson-Zenith
Paradigme de programare: Concurrent, communicating sequential processes
Ușor este un limbaj de programare paralel cu scop general.
Este proiectat de Steven Ericsson-Zenith, cercetător la Universitatea Yale, Institutul pentru Științe și Inginerie Advanced din Silicon Valley, California, Ecole Nationale Supérieure des Mines de Paris și Pierre și Marie Curie University, Departamentul Științei din The The Scien Sorbonne.
Modelele de interacțiune a proceselor de carte sunt specificațiile de limbă ușoară.
Ușor combină construcțiile de proces ale proceselor secvențiale de comunicare (CSP) cu structurile de date partajate logic numit contexte.
Contextele sunt tipuri de date paralele care sunt construite de procese și oferă o modalitate de interacțiune a proceselor.
Limba include doi constructori de proces.
O cooperare include o sincronizare explicită a barierei și este scrisă: ∥ p () ∥ q (); {\ DisplayStyle \ paralel p () \ paralel q ();} Dacă un proces se termină înainte de celălalt, atunci va aștepta până la finalizarea celorlalte procese.
O subordonare creează un proces care împărtășește contextele care sunt în domeniul de aplicare atunci când este creat și se termină când este complet (nu așteaptă alte procese) și este scris: / / p (); {\ Displaystyle {\ big /} ! ! /P ();} Procesele subordonate se opresc dacă încearcă să interacționeze cu un context care a finalizat deoarece procesul părinte s -a oprit.
Acest lucru permite crearea proceselor speculative care se vor termina dacă rezultatul lor nu este necesar.
Sintaxa de replicare puternică permite crearea mai multor procese.
De exemplu, ∥ i f o r n: p (i); {\ displaystyle \ paralel {i} ; \ mathrm {pentru} ; {n}: p (i);} creează n procese sincronizate fiecare cu o constantă locală i.
Procesele nu pot împărtăși variabile locale și nu cooperează în construcția contextelor partajate.
Anumite tipuri de context, numite resurse, asigură semantica de apeluri de apel.
Există patru funcții pe contexte: citire (context, variabilă) - copiază o valoare din contextul partajat la variabilă.
Scrieți (context, expresie) - copiază valoarea expresiei în contextul partajat.
PUS (context, nume) - mișcă valoarea legată de nume în contextul partajat.
Valoarea numelui este ulterior nedefinită.
GET (context, nume) - mișcă o valoare din context și o leagă la nume.
Valoarea este eliminată din context.
Tipurile de bază sunt singletoni, pungi sau fluxuri și pot fi tablouri subscriptate.
Ease are o definiție semiotică.
Aceasta înseamnă că reprezintă efectul pe care limbajul îl are asupra programatorului și modul în care dezvoltă algoritmi.
Limba a fost concepută pentru a ușura dezvoltarea programelor paralele.