Urbiscript - urbiscript - Wikipedia

urbiscript
Paradigmako'p paradigma: ob'ektga yo'naltirilgan, tadbirlarga asoslangan, majburiy, funktsional, protsessual, aks ettiruvchi
LoyihalashtirilganJan-Kristof Bailli
TuzuvchiGostay va boshq.
Birinchi paydo bo'ldi2003; 17 yil oldin (2003)
Barqaror chiqish
2.7.4 / 2011 yil 17-noyabr; 9 yil oldin (2011-11-17)
Matnni yozisho'rdak, dinamik
OSO'zaro faoliyat platforma
LitsenziyaBSD litsenziyalari[1]
Fayl nomi kengaytmalari.u
Veb-saytgithub.com/ urbiforge/ urbi
Ta'sirlangan
C ++, O'zi,[2] Io[2]

urbiscript robototexnika uchun dasturlash tilidir.[3] Unda bir vaqtda va hodisalarga asoslangan dasturlash uchun sintaktik yordam mavjud. Bu prototipga asoslangan ob'ektga yo'naltirilgan skript tili. Bu dinamik: ism o'lchamlari dasturni bajarish paytida amalga oshiriladi (kech majburiy ); uyalar (a'zoning o'zgaruvchilari ) ish vaqtida qo'shilishi / olib tashlanishi mumkin, va hatto prototiplar (superklasslar ) ob'ektni ish vaqtida o'zgartirish mumkin.

Xotirani boshqarish tomonidan amalga oshiriladi ma'lumotni hisoblash.

Bilan chambarchas bog'langan Urbi platformasi u C ++ / Java komponentlarining uzluksiz integratsiyasini qo'llab-quvvatlaydi.

Sintaksis va semantik

Ilhom

Sintaktik nuqtai nazardan, urbiscript quyidagilarga tegishli C - dasturlash tillari oilasi.

Uning prototipiga asoslangan ob'ektga yo'naltirilgan dizayni O'zi va Io dasturlash tillari.[2]

U dasturlash uchun mo'ljallangan, shuningdek, robotlar bilan o'zaro aloqada;[2] kabi, unga ta'sir qiladi Unix chig'anoqlari va boshqa tillar o'qish-baholash-chop etish davri uslubi interaktiv toplevel. Biroq, boshqalardan farqli o'laroq, foydalanuvchini kiritish uchun hech qanday so'rov mavjud emas, lekin tizimdagi javoblar kvadrat qavslar orasidagi vaqt tamg'asi (millisekundlarda) bilan o'rnatiladi:

 1 + 1; uxlash (1s); 1 + 2 * 3;
[00005420] 2
[00006420] 7

Ketma-ket bayonotlar va boshqaruv oqimi

urbiscript bayonotlari (boshqalar qatorida) quyidagilarni o'z ichiga oladi:[4]

  • The agar bayonot, bilan birga kod blokini shartli ravishda bajaradi boshqa.
  • An'anaviy uchun bayonot, takrorlanadigan ob'ekt ustida takrorlanadigan C-da bo'lgani kabi, har bir elementni biriktirilgan blok tomonidan ishlatish uchun mahalliy o'zgaruvchiga o'tkazadi.
  • Boshqa uchun bayonot, bu takrorlanadigan ob'ekt ustida takrorlanib, har bir elementni biriktirilgan blok tomonidan ishlatish uchun mahalliy o'zgaruvchiga o'tkazadi.
  • The esa bayonot, bu kodning blokini uning holati to'g'ri bo'lgan taqdirda bajaradi.
  • The harakat qilib ko'ring bayonot bu biriktirilgan kod blokiga tashlangan istisnolarni ushlab qolish va ularga ishlov berishga imkon beradi ushlamoq bandlar. Ixtiyoriy boshqa istisno qilinmasa, band ishlaydi. A-da berilgan har bir holatda tozalash kodini ishlatish kafolatlanishi mumkin nihoyat- band.
  • The tasdiqlash bayonot, disk raskadrovka paytida qo'llanilishi kerak bo'lgan shartlarni tekshirish uchun ishlatiladi. urbiscript ham xususiyatga ega tasdiqlash bir necha omillarni hisoblash uchun ishlatilishi mumkin bo'lgan bloklar tasdiqlash bayonotlar.

Aslida, C-ga o'xshash ko'pgina tillardan farqli o'laroq va sintaksis taklif qilganiga qaramay, iboralar "qiymatga ega" va shuning uchun ular qavs ichiga joylashtirilgan bo'lsa, iboralar:

  var holat = { agar (yopiq) "yopiq" boshqa "ochiq" };  var o'tish = { harakat qilib ko'ring { foo } ushlamoq { yolg'on } boshqa { to'g'ri } };

Parallel bayonotlar va boshqaruv oqimi

Urbiscript-da ba'zi boshqaruv-oqim konstruktsiyalari bir nechta "lazzat" larga ega: ketma-ket kompozitsiyaning ikki turi va parallel kompozitsiyaning ikki turi. Kaput ostida bir xillik yordamida amalga oshiriladi korutinlar.[5]

Bayonot tarkibi

C kabi, nuqta-vergul ketma-ket tarkibni bildiradi: a; b "run statement" so'zini anglatadi a keyin bayonotni ishga tushiring b. Boshqa vazifalar orasida bajarilishi mumkin a va b. Boshqa bir ajratuvchi quvur, "qat'iy ketma-ketlik tarkibi" ni anglatadi: boshqa vazifani bajarish mumkin emas a va b yilda a | b.

Xuddi shunday urbiscriptda bir vaqtning o'zida bayonot tuzishning ikkita vositasi mavjud. Bilan a, b, birinchi a ishlaydi va bir muncha vaqt b bo'lishi mumkin --- ehtimol a hali ham ishlaydi. Bu juda o'xshash & Unix qobig'idagi operator. Shu bilan bir qatorda, bilan a & b, ikkalasi ham a va b birgalikda boshlangan; interfaol mashg'ulotlarda bu shuni anglatadi a gacha ishlamaydi b to'liq kiritilgan va to'g'ri tomonidan ta'qib qilingan yoki a ; yoki a ,.

Maydonlar quyidagi misolda ko'rsatilgandek, ish joylari uchun chegaralardir:[5]

  {    { uxlash(2s); aks sado(2) },    { uxlash(1s); aks sado(1) },   };  aks sado(3);
[00012451] *** 1
[00013447] *** 2
[00013447] *** 3

Ketma-ket konstruktsiyalarning bir vaqtda tatib ko'rishlari

Urbiscript-dagi ko'pgina tuzilmalar to'rtta ajratuvchi asosida yaratilgan bir nechta "tatlar" ga ega: ;, |, ,va &.

Masalan; misol uchun

  // bu aslida "for;".  uchun (var men : [0, 1, 2])  {    aks sado(men);    aks sado(men ** 2);  };

displeylar

[00002919] *** 0
[00002921] *** 0
[00002921] *** 1
[00002922] *** 1
[00002922] *** 2
[00002922] *** 4

ya'ni, loop tanalari ketma-ket bajarilmaydi, shu bilan birga uchun& kalit so'z bir vaqtning o'zida loop tanalarini ishlaydi:

  uchun& (var men : [0, 1, 2])  {    aks sado(men);    aks sado(men ** 2);  };
[00021680] *** 0
[00021680] *** 1
[00021680] *** 2
[00021682] *** 0
[00021682] *** 1
[00021682] *** 4

Voqealarga asoslangan dasturlash

Portativ robot dasturlarini ishlab chiqishga qaratilgan,[6] urbiscript reaktiv xatti-harakatlarni aniqlovchi "sig'im kam bo'lganida zaryadlash stantsiyasiga boring", "ma'lum yuz tanib bo'lgach, do'stona ovoz chiqaring" yoki "to'siq aniqlanganda to'xtang" kabi sintaktik tuzilmalarga asoslanadi.

Hodisalarni aniq boshqarish

Voqealar bilan ishlash uch bosqichda amalga oshiriladi. Birinchidan, hodisani aniqlang

  var e = Tadbir.yangi;

Ikkinchidan, voqea ishlovchilarini belgilang

  da (e?)    aks sado("qabul qilingan tadbir");

Uchinchidan, ushbu tadbirni "chiqarish"

  e!;
[00014333] *** voqea qabul qilindi

Voqealar foydali yuklarga ega bo'lishi mumkin va voqea ishlovchilari foydali yukga mos keladigan naqshlardan zavqlanishadi:

  da (e?(1, var x) agar x % 2 == 0)    aks sado("qabul qilingan voqea (1,% s)" % x);  e!(1, 1);
[00014336] *** voqea qabul qilindi
  e!(1, 2);
[00014336] *** voqea qabul qilindi
[00014336] *** voqea qabul qilindi (1, 2)

Yashirin voqealar

Urbiscript tili iboralarni kuzatishga ham imkon beradi:

  da (batareya darajasi <= 0.2)    robot.goToChargingDock;

Quyidagi misol ushbu xususiyatni namoyish etadi:

  var x = 0;
[00002165] 0
  var y = 0;
[00002166] 0
  var z = 0;
[00002167] 0
  da (x + y == z)    aks sado("% s +% s ==% s" % [x, y, z]);
[00002168] *** 0 + 0 == 0
  x = 1;
[00002169] 1
  z = 1;
[00002170] 1
[00002170] *** 1 + 0 == 1

Shuningdek qarang

Adabiyotlar

  1. ^ "Urbi, robotlar uchun ochiq manbali operatsion tizim". Olingan 2012-10-27.
  2. ^ a b v d Bailli, Jan-Kristof; Demaill, hokim; Nottale, Matye; Hoket, Kventin; Tardye, Samuel (2008). "Urbi robototexnika uchun universal platformasi" (PDF). Olingan 6 oktyabr 2011.
  3. ^ Bailli, Jan-Kristof. "Urbi: robototexnika, o'yinlar va boshqa narsalar uchun yangi parallel va voqealarga asoslangan skript tili". YouTube. Olingan 6 oktyabr 2011.
  4. ^ "urbiscript tili bo'yicha qo'llanma". Olingan 2011-09-20.
  5. ^ a b Bailli, Jan-Kristof; Demaill, hokim; Nottale, Matye; Xoket, Kventin (2010). "Tag: urbiscript-da ish nazorati" (PDF). Olingan 6 oktyabr 2011.
  6. ^ Bailli, Jan-Kristof; Demaill, hokim; Nottale, Matye; Xoket, Kventin (2010). "Voqealar! (Urbiscriptdagi reaktivlik)". arXiv:1010.5694 [cs.PL ].

Tashqi havolalar