Janus (concurrent constraint programming language)
Proiectat de: Ken Kahn and Vijay A. Saraswat
Janus este un limbaj de programare pe computer descris parțial de K.
Kahn și Vijay A.
Saraswat în lucrarea „Actorii ca un caz special de programare concomitentă (logică) concomitentă” în 1990.
Este un limbaj constrâns concomitent fără a face backtracking.
Janus modelează concordanța prin utilizarea canalelor de geantă.
Codul care trebuie să trimită un mesaj către un proces face acest lucru prin constrângerea unei geantă pentru a fi unirea unei alte geantă și geanta singleton a mesajului.
Cealaltă geantă este apoi disponibilă pentru a fi constrânsă pentru trimiterea de mesaje ulterioare.
Procesul primește mesajul potrivind geanta cu un model care spune că este unirea unui singleton și a unei alte geantă.
Logica canalelor de geantă produce o proprietate partajată de modelul actorului, și anume că ordinea de sosire a mesajelor nu este garantată.
Cu toate acestea, spre deosebire de actorii din modelul actorului, procesele din Janus pot trece în jurul „căsuțelor poștale” lor, ca să zic așa, sub formă de pungi și pot deține mai multe.
Această abilitate de a trece căsuțele poștale și de a deține mai mult de unul este moștenită în programul de programare a computerului Toontalk, care este influențat de Janus.
Janus, limbajul de programare, este numit după Janus, zeul roman cu două fețe, pentru că fiecare variabilă logică din Janus are ca două „fețe” ale sale, două aspecte care pot fi transmise ca argumente.
Acestea sunt numite Asuster și Teller.
Acestea reprezintă, respectiv, dreptul de a cere valoarea variabilei (sau o anumită caracteristică a valorii) și dreptul de a spune valoarea (sau de a spune o constrângere asupra valorii poate fi).
Aspectele Asker și Teller pot fi transmise ca argumente independent unul de celălalt.
Niciun drept nu implică celălalt drept.
Sintaxa limbajului împiedică copierea unui povestitor sau exercitarea acestuia de mai multe ori.
Contradicția logică este prevenită static, potrivit lui Kahn și Saraswat.