Joys (dasturlash tili) - Joyce (programming language) - Wikipedia

Joys
Paradigmabir vaqtda, majburiy, tuzilgan
OilaWirth Paskal
LoyihalashtirilganHar bir Brinch Xansen
Birinchi paydo bo'ldi1987; 33 yil oldin (1987)
Barqaror chiqish
1 / 1987; 33 yil oldin (1987)
Matnni yozishKuchli
Ta'sirlangan
Ketma-ket jarayonlarni etkazish, Paskal, Bir vaqtda Paskal
Ta'sirlangan
SuperPascal

Joys xavfsiz hisoblanadi dasturlash tili uchun bir vaqtda hisoblash tomonidan ishlab chiqilgan Har bir Brinch Xansen 1980-yillarda.[1] U ketma-ket tilga asoslangan Paskal va tamoyillari ketma-ket jarayonlarni etkazish (CSP). Dasturlash tili sifatida qo'llaniladigan CSP-ning kamchiliklarini bartaraf etish va asosan o'qitish uchun vosita berish uchun yaratilgan. tarqatilgan hisoblash tizimni amalga oshirish.

Til kontseptsiyasi atrofida asoslangan agentlar; bir vaqtning o'zida amalga oshiriladigan jarayonlar, bu faqat kanallardan foydalanish va xabar o'tmoqda. Agentlar subagentlarni dinamik ravishda faollashtirishi mumkin va rekursiv. Joysning rivojlanishi tilning asosini tashkil etdi SuperPascal, shuningdek, Xansen tomonidan 1993 yilda ishlab chiqilgan.

Xususiyatlari

Joys Paskalning kichik bir qismiga asoslangan bo'lib, CSP-dan ilhomlanib, o'xshashlik uchun mo'ljallangan xususiyatlarga ega.[2] Keyingi bo'limlarda joriy qilingan ba'zi yangi xususiyatlar tasvirlangan.

Agentlar

Agent - bu bayonotlar to'plamidan va boshqa agentlarning ichki joylashtirilgan ta'riflaridan iborat protsedura. Agent dinamik ravishda bo'lishi mumkin faollashtiring ular bilan bir vaqtda bajaradigan subagentlar yaratuvchi. Agent barcha subagentlari tugatgandan keyingina tugatishi mumkin. Masalan, agent 2. jarayon faollashtiradi jarayon1:

agent jarayon1(x, y: tamsayı);boshlash    ...oxiri;agent 2. jarayon();foydalanish jarayon1;boshlash    jarayon1(9, 17);oxiri;

Agentni faollashtirish barchaning yangi misollarini yaratadi mahalliy o'zgaruvchilar va har bir rasmiy parametrning qiymati mahalliy o'zgaruvchiga ko'chiriladi. Shuning uchun agentlar kira olmaydi o'zgaruvchilar boshqa agentlarning va faqat kanallardan foydalanish orqali aloqa qilishlariga ruxsat beriladi. Ushbu cheklash umumiy o'zgaruvchilardan foydalanish bilan bog'liq muammolarning oldini oladi poyga shartlari.

Aloqa

Agentlar chaqirilgan sub'ektlar orqali aloqa qilishadi kanallar. Kanallar uzatilishi mumkin bo'lgan belgilar to'plamini belgilaydigan alfavitga ega. Kanallar dinamik ravishda yaratilgan va ulardan foydalanish orqali kirish mumkin port o'zgaruvchilar. Port turi uning alfavitini tashkil etuvchi alohida belgilar to'plami bilan belgilanadi. Bir nechta qiymatga ega bo'lgan belgilar ma'lum bir turdagi bilan belgilanadi. Masalan:

oqim = [int(tamsayı), eos];

Belgisi int (tamsayı) a ni bildiradi xabar belgisi chaqirildi int har qanday tamsayı qiymatining. Ikkinchi shriftsiz belgi deklaratsiyasi eos (oqimning oxiri) a deb nomlangan signal. Port turi aniqlangandan so'ng, ushbu turdagi port o'zgaruvchisi e'lon qilinishi mumkin:

chiqib : oqimyilda  : oqim

Keyin uni yaratadigan agentga tegishli bo'lgan kanal sub'ekti quyidagicha faollashtirilishi mumkin:

+chiqib;

Keyin simvollarni CSP uslubidagi kirish va chiqish operatorlari yordamida kanallarga yuborish va qabul qilish mumkin ? va ! navbati bilan. Aloqa faqat jo'natuvchi agentga mos keladigan qabul qiluvchi agent mavjud bo'lganda sodir bo'lishi mumkin. Qabul qiluvchi agent yuborilgan belgi turini olishni kutishi kerak. Masalan, 9 qiymati, keyin esa eos belgisi portga yuboriladi chiqib:

chiqib ! int(9)chiqib ! eos

Va butun sonli xabar mos keladigan turdagi o'zgaruvchiga, so'ngra eos:

qabul qildi : tamsayıyilda ? int(qabul qildi)yilda ? eos

Ovoz berish to'g'risidagi bayonotlar

Ovoz berish bayonotlari CSP-ning himoyalangan muqobil kontseptsiyasiga asoslangan. Ovoz berish bayonoti bayonotlarning to'plamidan iborat bo'lib, ularning har biri kirish kanalining bayonoti bilan himoyalangan. Aloqa uzatuvchi agent va qo'riqchi o'rtasida mos kelganda, qo'riqchi bajariladi, so'ngra tegishli bayonot beriladi. Masalan:

so'rovnoma    yilda ? X -> x := x + 1 |    yilda ? Y -> y := y + 1oxiri

Port qaerda yilda signallari uchun nazorat qilinadi X yoki Y, mos keladigan aloqada, mos keladigan o'zgaruvchilar x yoki y ko'paytiriladi.

Xavfsizlik

Joys a bo'lishi uchun mo'ljallangan edi xavfsiz kompilyator til qoidalarining barcha buzilishini aniqlay oladigan ma'noda til.

Namunaviy dastur

Quyida Joys dasturlash tilini taqdim etgan asl qog'ozdan olingan to'liq namunali dastur keltirilgan,[1] uchun elakdan o'tkazish texnikasi asosida tub sonlarni yaratish algoritmini amalga oshirish tub sonlar avlodi. A elak agentga avvalgisidan butun sonlar oqimi yuboriladi, birinchisi asosiy. Bu oqimning barcha ko'paytmalarini oqimdan olib tashlaydi va vorisni faollashtiradi. Bu qadar davom etadi eos signal elaklarning to'plami bo'ylab tarqaladi.

agent elak(inp, chiqib: oqim);var Ko'proq: mantiqiy; x, y: tamsayı;  succ: oqim;boshlash    so'rovnoma        inp?int(x) -> +succ;             elak(succ, chiqib); Ko'proq := to'g'ri |        inp?eos    -> chiqib!eos; Ko'proq := yolg'on    oxiri;    esa Ko'proq qil        so'rovnoma            inp?int(y) ->                agar y mod x <> 0 keyin succ!int(y) |            inp?eos    -> chiqib!int(x);                succ!eos; Ko'proq := yolg'on        oxiri;oxiri;

Quyidagi agent elak agentlari to'plamini ishga tushiradi va ularga 3 dan 9999 gacha bo'lgan butun sonlar oqimini kiritadi.

agent asosiy;foydalanish yaratish, elak, chop etish;var a, b: oqim;boshlash    +a; +b; yaratish(a, 3, 2, 4999);    elak(a, b); chop etish(b)oxiri;

Amalga oshirish

Stekni taqsimlash

Agentlik protseduralarining bir vaqtda bajarilishi tufayli an'anaviy ketma-ketlik suyakka ajratish sxemasidan foydalanish mumkin emas, chunki agent qo'ng'iroqlarini faollashtirish yozuvlari oxirgi chiqish tartibiga amal qilmaydi. Buning o'rniga, yaratuvchi-subagent munosabatlari daraxt tuzilgan stekni hosil qiladi. Ushbu xatti-harakatni amalga oshirish uchun oddiy sxemadan foydalaniladi, u stakning yuqori qismida yangi aktivizatsiya yozuvlarini ajratish va subagentlarning aktivizatsiya yozuvlarini ularning yaratuvchisi yozuvlari bilan bog'lash orqali ishlaydi. Ushbu yozuvlar faqat agent tugatilganda va ular to'plamning yuqori qismida bo'lganida ozod qilinadi.[3] Ushbu sxemaning samaradorligi dasturning tuzilishi va xatti-harakatlariga bog'liq bo'lib, bu ba'zi hollarda xotiradan yomon foydalanishga olib keladi. Hansenning tilida yanada samarali sxema amalga oshirildi SuperPascal.

Adabiyotlar

  1. ^ a b Xansen, Brinch (2002). "Joys: tarqatilgan tizimlar uchun dasturlash tili". Hansenda, Per Brinch (tahrir). Bir vaqtda dasturlashning kelib chiqishi: Semaforalardan masofaviy protsedura qo'ng'iroqlariga qadar. Nyu-York, Nyu-York: Springer. 464–492 betlar. doi:10.1007/978-1-4757-3472-0. ISBN  978-1-4419-2986-0. S2CID  44909506.
  2. ^ Xansen, Brinch (Iyun 1989). "Joys tilidan reportaj". Dasturiy ta'minot: Amaliyot va tajriba. John Wiley & Sons. 19 (6): 553–578. doi:10.1002 / spe.4380190606.
  3. ^ Xansen, Brinch (Iyun 1989). "Joysning ko'p protsessorli dasturi". Dasturiy ta'minot: Amaliyot va tajriba. John Wiley & Sons. 19 (6): 579–592. doi:10.1002 / spe.4380190606.

Tashqi havolalar

Rasmiy veb-sayt, Brinch Xansen arxivi, uning hujjatlar to'plami