Кіріспе

Prolog бағдарламалау тілінің іске асырылуы

SWI Prolog – Prolog бағдарламалау тілінің тегін іске асырылуы, көбінесе оқыту және семантикалық веб-қосымшалары үшін қолданылады. Ол кең мүмкіндіктер жиынтығына, шектеулі логикалық бағдарламалау, көп жіптілік, бірліктерді тестілеу, графикалық интерфейс (GUI), Java, ODBC және басқаларымен байланыс, әдеби бағдарламалау, веб-сервер, SGML, RDF, RDFS, әзірлеушілерге арналған құралдар (графикалық интерфейсі бар IDE, соның ішінде дебьюгер және профильдеуші) және толыққанды құжаттаманы қамтиды. SWI Prolog Unix, Windows, Macintosh және Linux платформаларында жұмыс істейді. SWI Prolog 1987 жылдан бері үздіксіз дамып келеді. Оның негізгі авторы – Ян Вилемейкер. SWI атауы Sociaal Wetenschappelijke Informatica ("Әлеуметтік ғылымдар информатикасы") деген сөзден шыққан, бұл Вилемейкер SWI Prolog-ты әзірлеуді бастаған кезде Амстердам университетіндегі топтың бұрынғы атауы. Аталған топтың атауы қазір HCS (Адам-компьютер зерттеулері) деп өзгертілген.

Орындау үлгісі

SWI Prolog Prolog-тың Уоррен абстракті машинасының орындалу моделіне негізделмеген. Оның орнына, ол ZIP виртуалды машинасының кеңейтілген нұсқасына негізделген, бұл Prolog үшін тек жеті командадан тұратын қарапайым тілді іске асыратын минималды виртуалды машина. SWI Prolog-қа тән кеңейтулер бірнеше жолмен өнімділікті арттыруға бағытталған: біріктіруді қолдау үшін қосымша командалар енгізілген, предикаттарды шақыру, жиі қолданылатын кейбір кіріктірілген предикаттар, арифметика, бақылау ағыны және сәтсіздік ретінде жоққа шығару үшін қолданылады. Prolog осы тілге оңай компиляцияланады, ал абстракті машинаның коды Prolog-қа оңай декомпиляцияланады. Бұл мүмкіндік компиляцияланған және интерпретацияланған кодты араластырып орындау үшін жиі пайдаланылады.

Шектеу логикасын бағдарламалау

Шектеулі логикалық бағдарламалау мүмкіндігі SWI Prolog өмірінде біраз кеш пайда болды, себебі негізгі қолдау болмады. Бұл 2004 жылдың басында тілге атрибутталған айнымалылар қосылғанда өзгерді. Leuven CHR кітапханасы SWI Prolog-қа көшірілген алғашқы CLP кітапханасы болды. SWI Prolog-тың INCLP(R) кітапханасын (De Koninck et al. 2006) атап өтейік, ол нақты сандар бойынша сызықтық емес шектеулерді қамтамасыз етеді және CHR негізінде жүзеге асырылды. Кейін Кристиан Холцбаурдың CLP(QR) кітапханасы және шекті доменді CLP(FD) шешушісі көшірілді. Соңында, бульдік CLP(B) шешушісі қосылды.

SWI-Prolog үшін кеңейтулер

SWI Prolog анықталған ереже грамматикасына негізделген веб-фреймворкпен бірге орнатылады. SWI Prolog сұранымдарын Pengines жүйесі арқылы бірнеше серверге және веб-беттерге таратуға болады.

XPCE

XPCE – SWI Prolog, Lisp және басқа да интерактивті және динамикалық типтегі тілдер үшін платформадан тәуелсіз, объектіге бағытталған GUI құралдар жиынтығы. XPCE тілден тәуелсіз болу үшін жасалғанмен, ол көбінесе Prolog-пен танымал болды. XPCE графикалық құралдар жиынтығының әзірленуі 1987 жылы SWI Prolog-пен бірге басталды. Ол түймелерді, мәзірлерді, жылғыштарды, қойындыларды және басқа да негізгі GUI элементтерін қолдайды. XPCE SWI Prolog қолдайтын барлық платформалар үшін қолжетімді. PceEmacs – SWI Prolog құрамына кіретін редактор. PceEmacs – Prolog (және XPCE) тілінде іске асырылған Emacs клоны. Ол дұрыс түсініктемелерді, синтаксистің ерекшеленуін, SWI Prolog талдағышын шақыру арқылы толық синтаксистік тексеруді, жалғыздық айнымалылар туралы ескертулерді және Prolog дерекқорынан алынған ақпарат негізінде предикаттарды анықтауды қолдайды.

Интерфейстер

JPL — Java мен Prolog арасындағы екі жақты интерфейс. Ол SWI Prolog және Java SDK талап етеді. Ол SWI Prolog-тың бір бөлігі ретінде орнатылады.