Kontent qismiga oʻtish

CLOS

Vikipediya, ochiq ensiklopediya

CLOS (inglizcha: Common Lisp Object System — „Common Lisp obyekt tizimi“, inglizcha: see-loss[1] deb talaffuz qilinadi) — Lisp tili uchun standart boʻlgan Common Lisp ning bir qismi boʻlgan obyektga yoʻnaltirilgan dasturlash tizimidir. Bundan tashqari, u EuLisp yoki Emacs Lisp[2] kabi boshqa dialektlarga kiritilgan. Dastlab qoʻshimcha sifatida taklif qilingan CLOS ANSI CommonLisp standartining bir qismi sifatida qabul qilingan.

CLOS quyidagi xususiyatlarga ega:

  • Bir nechta dispetcherlik (yaʼni chaqiriladigan uslub faqat birinchi emas, balki barcha argumentlar bilan belgilanadi) yoki „multimetodlar“.
  • Shuning uchun usullar sinflar ichida aniqlanmaydi. Ular kontseptual jihatdan „umumiy funksiyalar“ ga guruhlangan.
  • CLOS hech qanday yashirishni taʼminlamaydi. Yashirish Common Lisp ning boshqa qismi, paketlar tomonidan taʼminlanadi.
  • Meros, superklass usullarini oddiy qayta aniqlash emas, balki dasturchi tanlagan turli usullarda birlashtirishga olib kelishi mumkin.
  • CLOS dinamik hisoblanadi, yaʼni dastur ishlayotgan vaqtda nafaqat tarkibi, balki obyektlarning tuzilishi ham oʻzgarishi mumkin. CLOS tezda sinf tuzilishini oʻzgartirishni (hatto ushbu sinfning namunalari allaqachon mavjud boʻlsa ham), shuningdek, CHANGE-CLASS usuli yordamida berilgan misol sinfini oʻzgartirishni qoʻllab-quvvatlaydi.
  • Koʻp sonli meros[3].

Common Lisp ning aksariyat ilovalari „The Art of Metaobject Protocol“ kitobida tasvirlangan, ammo standartga kiritilmagan metaobyekt protokolini qoʻllab-quvvatlaydi.

  1. Peter Norvig. „Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp“
  2. "CLOS eto standart. Mnogie postavщiki predlagayut CLOS. CLOS (ili ego chasti) ispolzuetsya dlya dobavleniya obʼektno-orientirovannix vozmojnostey v drugie dialekti Lispa, takie kak EuLisp ili Emacs Lisp." str. 110 Veycha
  3. Часть книги, непосредственно описывающая MetaObject Protocol (Wayback Machine saytida 2013-01-21 sanasida arxivlangan)
  • Handbook of Programming Languages (HPL), Volume 4: Functional and Logic Programming Languages. Macmillan Technical Publishing, 1998. ISBN 1-57870-011-6. , Jim Veitch, on CLOS, P. 107—158