Alice

Vikipediya, ochiq ensiklopediya

Alice ML — Saarland universiteti, Saarbryuken, Germaniyadagi Dasturlash tizimlari laboratoriyasi[1] tomonidan ishlab chiqilgan dasturlash tili. Bu standart ML dialekti bo'lib, dangasa baholash, parallellik (masofaviy protsedura qo'ng'iroqlari orqali ko'p ish zarralari va taqsimlangan hisoblash) va cheklash dasturlash uchun qo'llab-quvvatlash bilan kengaytirilgan.

Umumiy koʻrinish[tahrir | manbasini tahrirlash]

Alice Standard MLni avvalgisidan ajratib turadigan bir qancha usullar bilan kengaytiradi. Alice mustaqil ijro chizig'i tomonidan taqdim etiladigan qiymatni ifodalovchi kelajak turidan foydalanish orqali asosiy tilning bir qismi sifatida parallellik xususiyatlarini taqdim etadi. Kelajakdagi qiymatdan foydalanadigan ip, uni bajaruvchi ip hisoblashni tugatmaguncha, qiymatga kirishga urinishda bloklanadi. Tegishli kontseptsiya, shuningdek, va'da deb ataladi, bu ipga kelajakdagi qiymatni boshqa ipga hisoblash imkonini beradi. Kelajak va va'da qilingan o'zgaruvchilar ma'lumotlar oqimini sinxronlashni amalga oshirish uchun ishlatiladi.

Haskell funktsional tili singari, Alice standart MLning an'anaviy ehtirosli baholash strategiyasidan farqli o'laroq, dasturlarda dangasa baholash strategiyasini qo'llash imkonini beradi. Haskell sukut bo'yicha dangasa modeldan foydalansada, Elis sukut bo'yicha dangasalik bilan baholash uchun hisoblash uchun aniq dasturlash bayonotiga muhtoj bo'lgan ishtiyoqli baholash modelidan foydalanadi.

Saarland universitetining Alice ilovasi Simple Extensible Abstract Machine (SEAM) virtual mashinasidan foydalanadi. Bu bepul dasturiy ta'minot bo'lib, x86 arxitekturasi uchun baytkod va mahalliy kodni o'z vaqtida kompilyatsiya qiladi.

Elisning dastlabki versiyalari Motsart dasturlash tizimi(Oz) virtual mashinasida(VM) ishlagan, bu Elis va Oz kodlari o'rtasida o'zaro bog'lanish imkonini beradi.

Elisning masofaviy protsedura chaqiruvi virtual mashinaga bog'liq, chunki u bir kompyuterdan ikkinchisiga hisoblash uchun kod yuborishi mumkin.

Misol[tahrir | manbasini tahrirlash]

Elis standart MLni dangasa baholash va parallellik uchun bir nechta primitivlar bilan kengaytiradi. Masalan, spawn kalit so'zi yordamida iplar yaratilishi mumkin. Fibonachchi raqamlarini hisoblashning sodda algoritmini ko'rib chiqing:

 fun fib 0 = 0
  | fib 1 = 1
  | fib n = fib(n-1) + fib(n-2);

n ning katta qiymatlari uchun fib n ni hisoblash uzoq vaqt talab etadi. Ushbu hisoblash alohida ish zarrachasida amalga oshirilishi mumkin

 val x = spawn fib n;

x o'zgaruvchisi endi kelajak deb ataladigan narsaga bog'langan. Agar operatsiya x qiymatini talab qilsa, u ip hisoblash bilan tugaguncha bloklaydi. Parallelizmdan foydalanish uchun hatto fibni quyidagicha belgilash mumkin:

 fun fib 0 = 0
  | fib 1 = 1
  | fib n = spawn fib(n-1) + fib(n-2);

Manbalar[tahrir | manbasini tahrirlash]

  1. „Programming Systems Lab“. 5-oktabr 2006-yilda asl nusxadan arxivlandi. Qaraldi: 8-avgust 2006-yil.

Havolalar[tahrir | manbasini tahrirlash]