Кіріспе

Common Lisp Object System (CLOS) – ANSI Common Lisp-те объектіге бағытталған бағдарламалау құралы. CLOS – C++ немесе Java сияқты көбінесе статикалық тілдердегі ООP мүмкіндіктерінен түбірлі өзгеше, қуатты динамикалық объект жүйесі. CLOS MIT Flavors және CommonLoops сияқты бұрынғы Lisp объект жүйелерінен шабыттанды, бірақ олардан көбірек мүмкіндіктерге ие. Бастапқыда қосымша ретінде ұсынылған CLOS, Common Lisp үшін ANSI стандартының бір бөлігі ретінде қабылданды және EuLisp немесе Emacs Lisp сияқты басқа Lisp диалектілеріне бейімделді.

Метаобъект хаттамасы

ANSI Common Lisp стандартынан тыс, CLOS-қа кеңінен қолданылатын Metaobject Protocol (MOP) деп аталатын кеңейту бар. MOP, CLOS іске асыруының негіздеріне стандартты интерфейсті анықтайды, кластарды, слот сипаттамаларын, жалпы функцияларды және әдістердің өзіндік метакластардың мысалдары ретінде қарастырады, сондай-ақ жаңа метакластарды анықтауға және CLOS мінез-құлқының барлық аспектілерін өзгертуге мүмкіндік береді. CLOS MOP-тың икемділігі кейінірек Грегор Кицалес сияқты бірнеше инженерлер әзірлеген аспектіге бағытталған бағдарламалауға ұқсас. MOP, протоколдар жиынтығы арқылы бүкіл объект жүйесінің мінез-құлқын анықтайды. Бұл протоколдар CLOS терминдерімен анықталған. Осылайша, CLOS функционалдығын кеңейту немесе өзгерту арқылы жаңа объект жүйелерін құруға болады. "The Art of the Metaobject Protocol" кітабында CLOS MOP-тың қолданылуы және іске асырылуы туралы мәліметтер келтірілген. Common Lisp-тің әртүрлі іске асырылымдары Meta Object Protocol-ды әлдеқайда әртүрлі деңгейде қолдайды. Closer жобасы қажетті мүмкіндіктерді қамтамасыз етуге бағытталған.

Ескі Lisp-ге негізделген объекттік жүйелердің әсері

Flavors (және оның ізбасары New Flavors) MIT Lisp машинасының объектілік жүйесі болды. Lisp машинасының операциялық жүйелерінің көп бөлігі және оған арналған көптеген қосымшалар Flavors немесе New Flavors-ты пайдаланды. Flavors көптеген мұрагерлік және миксиндерді, басқа да мүмкіндіктермен бірге енгізді. Flavors көбінесе қолданыстан шықты, бірақ Common Lisp үшін іске асырылымдары бар. Flavors хабар алмасу парадигмасын қолданды. New Flavors жалпы функцияларды енгізді. CommonLoops, LOOPS-тың (Xerox Interlisp D-ден) ізбасары болды. CommonLoops Common Lisp үшін іске асырылды. Portable CommonLoops (PCL) деп аталатын портативті іске асырылым, CLOS-тың алғашқы іске асырылымы болды. PCL кеңінен таралды және әлі де бірнеше Common Lisp іске асырылымдарының CLOS іске асырылымының негізін құрайды. PCL көбінесе портативті Common Lisp-те іске асырылады, тек бірнеше жүйеге тәуелді бөліктері бар.