КОМПЬЮТЕРНЫЕ НАУКИ_
УДК 004.4; 004.8
СИСТЕМИ ШТУЧНОГО 1НТЕЛЕКТУ -ОСНОВА СУЧАСНИХ 1НФОРМЦ1ЙНИХ ТЕХНОЛОГ1Й ТА IX ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ
ЗАЯЦЬ В.М., ЗАЯЦЬ М.М._
На основ! системного тдходу (вiд простого до складного) робиться класифжащя сучасних систем штучного штелекту (СШ1), аналiзуються способи подання даних i знань в СШ1, вiдзначаються особливостi кожно! з них та вказуються напрями доцшьного застосування та по-дальшого розвитку. Проводиться порiвняльний аналiз програмних засобiв та мов програмування для !х реаль заци.
Ключовi слова: програмне забезпечення, системи штучного штелекту, декларативш мови програмування, семантичнi сггки, фрейми, продукцiйнi системи, Лiсп, Пролог, ушверсальш мови моделювання, лопко-лшгвютичш моделi.
Key words: software, artificial intelligence, declarative programming language, frames, Lisp, Prolog, universal modeling language 1. Вступ
З часу появи роб!т з! штучному штелекту !х розви-ток п!шов у двох напрямах.
Моделювання д!яльност! мозку, його психоф!з!о-лог!чних властивостей з метою в!дтворення на ЕОМ або за допомогою !нших техн!чних засоб!в штелекту чи штучного розуму - так званий б!он!ч-ний напрям.
1м!тац!я розумово! повед!нки людини з викорис-танням засоб!в комп'ютерно! техн!ки. Це основний прагматичний напрям розвитку роб!т з! штучного !нтелекту. За останн! десятил!ття досягнуто особ-ливих усп!х!в. У цьому напряму психоф!з!олог!чна д!яльн!сть мозку залишаеться в сторон!. Тут комп'ютер розглядаеться як !нструмент, на якому можуть бути написан! добр! чи поган! програми, що т!ею чи !ншою м!рою !м!тують розумову д!яль-н!сть людини.
Поняття "штучний !нтелект " в цьому напрям! ро-зум!еться метафорично, а досл!дники зайнят! роз-робленням програм, як! дозволяють засобам комп'ютерно! техн!ки в!дтворювати процеси, що е результатом розумово! д!яльност! людини. Нажаль, на обчислювальну техн!ку нер!дко поши-рюють !дею антропоморф!зму. Можна часто зу-стр!ти вирази "машина прийняла р!шення", "машина розп!знае ситуац!ю ", "машина грае в шахи".
Трапляються ц!лком нев!гласьк! уявлення про " машини, що думають " в буквальному розум!нн! цих сл!в.
Насправд! за вс!ею ц!ею "розумовою" д!яльн!стю комп'ютера сто!ть людина, яка для нього склала програму-!нструкц!ю, реал!зац!я яко! i забезпечуе !м!тац!ю розумово! д!яльност! людини, але не б!-льше.
Задачу як! розв'язуються в штучному !нтелект!, е основою сучасних !нформац!йних технолог!й. Вчорашн! !нформац!йн! технолог!! - це передовым технолог!! паперов!, оск!льки !х реал!зац!я потре-буе колосально! к!лькост! паперу. Традиц!йне ви-користання комп'ютерно! техн!ки в цьому план! становища не зм!нюе. Стар! !нформац!йн! технологи використовують комп'ютерну техн!ку через ряд посередник!в: ф!зик!в, математик!в, програм!ст!в, спец!ал!ст!в з предметних областей. Знання при цьому в кожн!й предметн!й област! ф!ксуються на паперових нос!ях.
У сучасних !нформац!йних технолог!ях спочатку, за л!тературними джерелами вивчають проблему, на !! основ! формують модель, створюють алгори-тми !! опрацювання на комп'ютер!, в!дтак розв'язують задачу та анал!зують !! результати. При цьому забезпечуеться можлив!сть отримання нових знань. Так! технолог!! дозволяють можли-в!сть не лише грунтовно вивчити проблему, але й сприяють удосконаленню техн!чних ! програмних засоб!в
У традиц!йних комп'ютерних !нформац!йних тех-нолог!ях дом!нують модел!, як! мають синтаксич-ний, описовий характер, а не суто процедурний, !нструктивний характер. Для прикладу, математи-чн! модел! у вигляд! системи диференц!альних р!в-нянь можуть описувати процеси в об'ектах найр!з-номан!тн!шо! природи. Тобто для них характерний ун!версал!зм. Якщо пред'явити користувачев! сам! модел! (без коментар!в), то в!н не зможе визначи-ти, який об'ект, як! процеси описуються, а може зробити найзагальн!ш! висновки про те, з якими класами об'ект!в з!ставим! ц! модел!. Коментар! про конкретн! предметн! знання залишаються поза Е ОМ.
Становлення ново! !нформац!йно! технолог!! зумо-влено тим, що в теор!! штучного штелекту ( а ра-н!ше в теор!! управл!ння, запропонован!й академ!-ком Д.А. Поспеловим) були розроблен! лог!ко-
лшгвютичш моделi [2]. Вони дають змогу форма-лiзувати конкретнi змiстовнi знання про об'екти i процеси, що в них вiдбуваються, i ввести в комп'ютер, поряд з математичними, лопко-лiнгвiстичнi. До них належать семантичш сiтки, фрейми, продукцiйнi системи, яю часто об'еднують як програмно-апаратш засоби систем штучного iнтелекту (ПЗ СШ1). Мета дано! роботи - на основi системного пiдходу вщ простого до складного провести класифшащю сучасних систем штучного iнтелекту, дати !х пор> вняльну характеристику, проанатзувати способи подання даних i знань та вказати напрями подаль-шого !х вдосконалення. 2. Особливостi сучасних систем штучного штелекту
Системи штучного штелекту, яю функцiонують за принципами ново! шформацшно! технологи, под> ляють на:
• Iнтелектуальнi iнформацiйно-пошуковi системи (системи типу питання-вщповщь), яю забезпе-чують в процесi дiалогу взаeмодiю користувача-непрограмiста з базами даних i знань на професш-нiй мовi користувача, близькiй до природ но!.
• Розрахунково-лопчш системи, яю дають змогу користувачам, що не е професiйними програмюта-ми i фахiвцями в прикладнiй математицi, розв'язувати в дiалоговому режимi професiйнi за-дачi, використовуючи складний математичний апарат i вiдповiдне програмне забезпечення.
• Експертш системи, що дозволяють комп'ютеризувати областi, в яких знання можна подати в експертнш описовiй форм^ але викорис-тання математичних моделей, характерних для то-чних наук, ускладнене або й взагалi неможливе. Саме завдяки експертним системам штучний ште-лект набув стратегiчного значення в розвитку науки i управлiння, проектування i екологи, космосу i фiзики Землi, освiти i матерiалознавства. Особливого значення набувають так званi гiбриднi експе-ртш системи - об'еднання традицiйних експертних систем з розрахунково-лопчними, тобто в пбрид-них експертних системах лопко-лшгвютичш мо-делi використовуються поряд з математичними. Зазначимо ще одну особливють ново! шформацшно! технологи - адаптащю i гнучкiсть програмних систем вщносно задач з пе! чи шшо! предметно! областi. У вшх цих випадках не можна апрiорi ска-зати, за допомогою яко! моделi, алгоритму i системи розв'язуеться задача чи розпiзнаеться ситуащя.
Так, коли встановлюють медичний дiагноз, нев> домо заздалегiдь, яке правило буде використано з наявно! бази знань. Це характерно для вшх штеле-ктуальних пакетiв прикладних задач. Отже, вс системи штучного штелекту орiентованi на знання, а тому подальший прогрес систем штучного iнтелекту i комп'ютерних iнформацiйних технологiй визначаеться розвитком трьох основ-них теоретичних проблем:
• представлення знань - центральна проблема штучного iнтелекту;
• комп'ютерна лiнгвiстика - забезпечуе процес природно-мовного спiлкування з ЕОМ та процес автоматизованого перекладу тексив з шоземних мов;
• комп'ютерна логiка, яка мае особливе значення для розвитку експертних систем. Мета И - моде-лювання людського мислення i перетворення про-грамування з мистецтва в науку.
Штучний штелект можна визначити як комплекс-ну науково-технiчну проблему, для розв'язання яко! дослiдження ведуться у чотирьох напрямках:
а) моделювання на комп'ютерi окремих функцiй творчих процешв: iгровi задачi, автоматичне дове-дення теорем, автоматичний синтез програм, ана-лiз музичних творiв, розтзнавання та щентифша-цiя складних динамiчних об'ектiв;
б) зовнiшня iнтелектуалiзацiя комп'ютерiв: фунда-ментальнi дослiдження iз створення дiалогового iнтерфейсу (зовнiшня в тому розумшш, що штеле-ктуальнi системи на початковому етат створюють на ЕОМ юнуючо! архiтектури, враховуючи комп'ютери неймановсько! структури);
в) внутрiшня iнтелектуалiзацiя комп'ютерiв - це створення комп'ютерiв ново! архiтектури, основано! на принципах штучного штелекту i призначе-но! для створення iнтелектуальних систем;
г) цшеспрямована поведiнка роботiв, що здатш автономно вирiшувати завдання, як поставила людина.
Перш нiж аналiзувати проблеми штучного штелекту, розглянемо, як науково-техшчний прогрес привiв до становлення нових iнформацiйних тех-нологiй.
В основу науково-техшчного прогресу покладено зростання знань, яке вщбуваеться швидше, шж за експонентою.
Якщо х(1;) - маса знань, то, вважаючи, що знання зростають за законом експоненти, маемо
x(t) = px(t), де р - постiйна величина. Звiдси хф = x(0)ept. У наукознавствi вживають такий термiн, як перюд подвоення знань Т. Безсумнiвно, Р i Т е функцiями часу i повиннi бути уточненi. Величина Т постш-но падае, а Р - зростае.
Данi про змшу Т i Р, як видно з таблицi, показу-ють, що з 50-х роюв минулого столiття спостерша-еться шформацшний вибух, який виявляеться у збшьшенш самого показника експоненти.
Зростання знань приводить до ускладнення народного господарства. Для ефективного управлшня господарськими мехашзмами виникае потреба в комп'ютеризацп народного господарства та науки, яка мае в нашi днi таке саме значення, як iндустрi-атзащя кра!ни в 20 - 30-т роки ХХ ст. Комп'ютеризацiя означае масове використання обчислювально! технiки, а тому професшних про-грамiстiв не вистачае, щоб забезпечити масове використання ЕОМ у народному господарства Тра-дицiйнi комп'ютернi технологi! характеризуються наявшстю посередникiв мiж ЕОМ i користувача-ми, до яких належать анал^ики, програмiсти, пос-тановники задач, оператори ЕОМ. Крок до позбавлення вiд посередникiв - це вве-дення термiнального доступу до ЕОМ, що значно зменшуе кшьюсть посередникiв у ланцi ЕОМ - ко-ристувач. Для ефективного розв'язання сво!х задач користувач повинен здшснити ще один крок - за-безпечити прямий доступ до комп'ютера. 1нший шлях забезпечення прямого доступу до комп'ютера полягае у створенш засобiв програм-ного забезпечення, яю реалiзуються всерединi комп'ютерiв, тобто через створення штелектуаль-ного iнтерфейсу ЕОМ. Його можна реалiзувати на основi логiко-лiнгвiстичних моделей та iнших ме-тодiв й iдей, розроблених в област штучного ште-лекту. Досягнення в областi штучного iнтелекту настшьки значнi, що якщо ранiше йшлося про ш-
дустрiю обробки даних, то тепер йдеться про шду-стрда iнтелектуальних систем. З використанням обчислювально! техшки пов'язанi такi поняття, як програми та данi: на по-чаткових етапах програмiст розробляв програму, а потiм вводив у не! даш. Вiдтак сталися значш змь ни - данi були вщдшеш вiд програми. З'явилися даш у виглядi рiзних структур: реляцшш (таблич-нi), мереж, iерархiчнi та системи управлшня базами даних (СУБД), банки даних та знань. Для вщдшення даних вщ програм використовува-лися засоби опису даних, яю мютяться в мовах програмування. У таких мовах, як Фортран та Алгол розвивались порiвняно нескладш засоби опису структур даних. Складнiшi засоби мiстять мови Паскаль, О, Паралельно розвивалися спосо-
би запису даних на зовшшшх носiях iнформацi!. Тут фундаментальним стало поняття файлу, що мае iм'я i мiстить всi необхiднi структурованi записи даних про рiзнi об'екти, з якими працюе система.
Отже, файл можна розглядати як шформацшну модель об'екта.
У процес подання даних на зовшшшх ношях можна видшити такi етапи:
а) способи формування запиав даних у файлах, ведення файлiв; органiзацiю доступу до них повш-стю визначають користувачц
б) керування файлами та доступ до них забезпечу-еться операцiйною системою;
в) створення баз даних i систем управлшня ними з метою !х оптимально! обробки в штересах усього шдприемства.
З появою нових шформацшних технологiй з'явилися i новi способи подання даних i програм у СШ1.
Таким чином, можна зробити висновок, що новi iнформацiйнi технологи е основою сучасних СШ1, розвиток яких своею чергою е могутшм стимулом для створення як нового програмного забезпечен-ня, так i появи нових мов програмування та засо-бiв для !х ефективно! техшчно! реалiзацi!. 3. Способи подання даних та знань в СШ1 Сьогодш можна говорити про новий етап предста-влення даних у пам'яп комп'ютера - створення iнформацiйно-розрахункових мереж, а на !х основi - розподшених баз колективного користу-вача.
Даш про пер1од подвоення знань та коефщент пропорц1йност1
Рк 1900 1950 1970 1981 1990 2000
Т (роки) 50 10 5 2.5 1.2 0.6
Р(рк-1) 0.014 0.07 0.14 0.28 0.55 1.15
З появою СШ1 з'явились i новi поняття, такi як база знань. Безумовно, що данi й структура бази да-них певною мiрою вiдображають знання про пред-метну область i И структуру. Проте специфiчними ознаками, що вiдрiзняють знання вiд даних, пов'язаних з !х поданням у комп'ютерi, можна вважати таю чотири ознаки [2, 22]:
• внутршня штерпретовашсть;
• структурованють;
• зв'язнiсть;
• активнють.
Якщо звернутися до структур даних, то деяю iз ознак, властивi знанням, будуть справедливi i для даних. Так, iнтерпретованiсть явно простежусться в реляцiйнiй базi даних, де iмена стовпцiв е атрибутами вщношень, iмена яких вказаш в рядках. Другу ознаку - структурованють можна подати декомпозищею складного об'екта на простiшi i встановленням зв'язкiв мiж простими. Це зв'язки типу вiдношень клас-пiдклас, вид-пiдвид, список-пiдсписок. Цi зв'язки можна спостершати в штко-вих та iерархiчних моделях даних. Цi самi вщно-шення при бажаннi можна задати i в табличних базах даних.
Що стосуеться третьо! ознаки - зв'язнiсть, то практично неможливо знайти аналопв у згадуваних базах даних, оскшьки нашi знання зв'язанi не лише в розумшш структури. Вони вщображають зако-номiрностi у фактах, процесах, явищах та причин-но-наслiдковi вщношення мiж ними. Стосовно четверто! ознаки (активнють) склалася така ситуацiя, що при використанш комп'ютерiв новi знання породжуються програмами, а данi па-сивно зберiгаються в пам'ятi комп'ютера. Людинi властива пiзнавальна активнiсть. I це принципово вiдрiзняе знання вщ даних. Таким чином, проти-рiччя у знаннях стимулюють здобуття нових знань. Таким же стимулом до знань е неповнота. Загалом, не завжди вдаеться розмежувати даш i знання. Од-нак вони юнують i привели до появи спещальних формалiзмiв у виглядi моделей подання знань в комп'ютер^ якi вiдображають всi чотири ознаки знань. Сьогодш е, принаймнi, чотири види моделей i вщповщних !м мов представлення знань: мо-ви (моделi) семантичних мереж; системи фреймiв; логiчнi мови (моделi) та продукцшш системи. Розглянемо моделi семантичних мереж. У семан-тичнiй сггщ вершинам поставленi у вiдповiднiсть
поняття (об'екти, поди, процеси, сигнали), а дугам - вщношення на множит понять. З ще! причини мову семантичних мереж ще називають реляцш-ною. Тут досить виразно проступае така ознака знань як зв'язнють. У семантичнiй сiтцi можна в> добразити знання, якi вираженi на природнш мовi. Вiзьмемо речення: "Мисливець сiв на плiт, пере!-хав на другий берег, поклав у корзину качку i взяв корзину з качкою." Можна видшити п'ять об'екпв: мисливець (а1), плiт (а2), другий берег (а3), корзина (а4), качка (а5). Цi об'екти зв'язаш вщношен-ням: сiв на (Г1), пере!хав на (Г2), поклав у (Г3) i взяв (Г4). Сiтку, що вiдповiдае цьому реченню, показано на рисунку.
Семантична мережа подання речень природною мовою
Зпдно з логiкою реального свiту ми можемо допо-внити вихiдний текст вщношеннями, якi явно не мютяться в текстi. Доповнений текст матиме ви-гляд: Мисливець сiв на шит i на плотi пере!хав на другий берег. На другому березi була качка. Мис-ливець поклав качку в корзину. Мисливець взяв корзину з качкою.
Треба вказати на одну важливу обставину: в iндое-вропейських мовах, що шдтвердили експеримен-тальнi дослiдження, е не бшьше двохсот вiдно-шень, що не зводяться одне до одного. Комбшаци цих вiдношень дозволяють виразити iншi вiдно-шення, яю фiксуються в текстах. Ця обставина до-зволяе сподiватися, що будь-яку предметну область можна описати за допомогою сюнченно! множини вщношень i здiйснити автоматичну по-
будову семантичних мереж безпосередньо з тексту.
Частковим випадком семантичних мереж е сцена-ри або однорщш штки. Це сiтки, в яких об'екти зв'язанi единими вщношеннями строгого або не строгого порядюв з рiзною семантикою. Для прикладу, якщо об'ектами-поняттями будуть роботи рiзного виду (чи окремi операци деяко! ро-боти), а единими вiдношеннями строгого порядку - вщношення слiдування, то ми отримаемо штко-вий графш комплексу робiт. Очевидно, сценари е зручним засобом складання планiв. Семантична сiтка загального виду дае змогу зро-зумiти вiдмiнностi мiж поняттями бази даних i ба-зи знань. Предметна область - це множина допус-тимих сташв !! компонент. Множина, представлена через загальш поняття i вiдношення мiж ними, утворюе базу знань у виглядi штенсюнально! се-мантично! сiтки. З шшого боку, залежно вiд ситуа-ци, компоненти предметно! областi мають конкре-тне значения, властивостi, характеристики. Вс цi конкретнi значення будуть вщображеш в так зва-нш екстенсiональнiй семантичнiй сiтцi або базi даних природно! структури.
Ще один важливий аспект семантичних мереж - це представлення в них елементiв загального виду за допомогою лопчних мiркувань та використання прикладних програм. Ц елементи можна реатзу-вати використовуючи так зваш вiртуальнi вiдно-шення.
Але слщ зазначити, що семантичнi штки, незва-жаючи на !х рiзноманiття, мають ряд недолiкiв. Надто довшьна структура i рiзнi типи вершин та зв'язюв потребують потужного програмного за-безпечення для !х обробки. Це зумовило появу рiз-них модифiкацiй семантичних мереж: синтагмати-чш ланки, сценари, фрейми тощо. Коротко зупи-нимося на фреймових моделях. Термш фрейм (рамка) асощюеться з природним уявленням людини про об'ект як щось довершене, обрамлене. Формально шд фреймом розумiють структуру такого вигляду:
у1, g1 >, < v2,g2 >,..., < vk, gk >],
де f - iм'я фрейма; пара gi> - це i е слот, де V! -iм'я слота, а gi - його значення.
Часто фрейми, свою чергою, подшяють на двi гру-пи: фрейми-описи та рольовi фрейми. Приклади фреймiв:
1) описовий фрейм:
[<фрукти>, <виноград, болгарський 20 кг>, <вишня, володимирська 200 кг>];
2) рольовий фрейм:
[<перевезти>, <що, прокат 300 кг>, <куди, Москву 200 кг>, <звiдки, Череповець>, <чим, залiзничним транспортом].
Якщо в наведених прикладах i в загальному виразi забрати всi значення сло^в, то отримаемо фрейм, який названо прототипом фрейму: фреймом-штенсюналом. Фрейми з конкретними значеннями сло^в називаються фреймами-прикладами, фрей-мами-екземплярами.
Фрейми властивють вкладеностi, тобто значення слоту може виступати цша система iмен сло^в глибшого рiвня. Така структура запису фреймiв дае змогу успiшно оперувати з пгантськими маси-вами даних, реатзовувати i ефективно управляти базами даних та створювати новi бази знань. Очевидно, для ефективного використання таких вкла-дених даних в одну структур слщ використовувати мови програмування та вщповщне програмне за-безпечення, що оптимально пристосоване для цих цшей.
4. Характеристика програмних засоб1в та мов програмування для реалiзацil СШ1
Для розроблення та реатзаци сучасних СШ1 роз-роблено вщповщш технiчнi та програмнi засоби, яю можуть бути реалiзованi за допомогою спеща-льних мов програмування, яю пристосованi для цих цiлей. Для створення СШ1 найбiльш вдалими е декларативш мови програмування, якi задають не послщовшсть виконання дiй для досягнення поставлено! мети, а описують об'ект дослщження i взаемозв'язки мiж його складовими. В результап цього маемо логiчну або функцюнальну модель об'екта дослiджень. Використовуючи вбудоваш механiзми опрацювання даних i програм в таких мовах, можемо отримувати новi знання про об'ект дослщження, оперативно аналiзувати його динам> ку i управляти його поведiнкою. В основу сучасних мов лопчного програмування покладено мову Пролог [7-13], що з'явилася в 1970
рощ водночас з такими поширеними мовами як Паскаль i Ci. Орiентацiя мов логiчного програму-вання - це нетрадицшне застосування комп'ютерно! техшки: розумiння природно! мови, створення баз знань, штелектуальних систем прийняття ршень [4, 22-25], систем розпiзнавання об'екпв, експертних систем [1, 3, 5, 6] , систем перекладу текстов, шформацшно-аналтоичних систем та шших задач, якi прийнято вiдносити до проблем штучного штелекту [2, 5, 22, 33]. Принципова вщ-мша мови Пролог вiд традицiйних мов у тому, що програма на мовi логiки описуе не процедуру розв'язання задачi, а створюе лопчну модель предметно! областi - деяю факти вiдносно властивос-тей дано! предметно! област i вщношення мiж ци-ми властивостями, а також правила вислщу нових властивостей i вiдношень на основi заданих. Отже, Пролог е описовою мовою, а не процедурною. Ос-новш поняття мови досвщченими програмiстами сприймаються без особливих затруднень, а от практичне втiлення цих знань в корисш i ефектив-ш програми викликае певнi ускладнення. В основу сучасних мов функцюнального програ-мування покладено мову Лiсп, яка запропонована Дж. Маккартi [32] в 1960 р. i орiентована на розв'язання задач нечислового характеру. Англшська назва мови Lisp е скороченням виразу опрацюван-ня списюв i пiдкреслюе область !! застосування. У виглядi спискiв зручно вщображати алгебра!чнi вирази, множини, графи, правила виводу, грамати-ку природних мов та iншi складнi об'екти. Списки е одшею з найбiльш гнучких форм представлення iнформацi! в пам'ят комп'ютера. Пiсля появи Лiспу [13-19] рядом авторiв розробле-но iншi алгоритмiчнi мови, орiентованi на розв'язання задач штучного штелекту, серед яких слщ вщзначити Пленер, Снобол, Рефал, Пролог [5]. Тим не менше мови функцiонального програму-вання усшшно розвиваються i майже за сорокарiч-ну iсторiю iснування з'явилося ряд дiалектiв функ-цiонально! мови: Соттоп Lisp [14], MacLisp, R-Lisp [21], InterLisp, Standart Lisp, Reduce [22] та ряд шших.
Вщзначимо, що вщмши мiж ними не носять принципового характеру i зводяться, в основному, до несуттево! рiзницi у формi запису програми та набору вбудованих функцiй. Тому програмют, який осво!в одну iз мов функцюнального програ-мування, без особливих зусиль в станi осво!ти будь-яку шшу, володiючи основними методами та алгоритмами побудови функцюнальних програм. Незважаючи на очевиднi переваги декларативних мов перед процедурними, довгий час щ мови роз-
вивалися i застосовувалися у вузькому колi спеща-лютов з проблем штучного iнтелекту. Лише протя-гом останнiх двох десятилтоь декларативнi мови програмування викликали защкавлення широкого кола спецiалiстiв з шформатики. Зростання попу-лярностi цих мов зумовлено виходом теорi! штучного штелекту в сферу прикладного програмування.
На сьогодшшнш день з'явилися престижш нацю-нальнi проекти створення ЕОМ нових поколшь, в яких штелектуальний iнтерфейс, орiентований на користувача-непрофесюнала в iнформатицi, зай-мае центральне мюце.
Пролог був прийнятий як базова мова в японсько-му проектi ЕОМ п'ятого поколшня, який орiенто-ваний на дослщження методiв логiчного програмування i штучного iнтелекту. Теоретичною основою Прологу е символьна лоп-ка, яка дае мехашзм обчислення предикапв. Цiй мовi притаманний ряд властивостей, яю вiдсутнi в традицiйних мовах програмування. До них вщно-сяться: мехашзм лопчного доведення з пошуком i поверненням, вбудований механiзм сшвставлення зi зразком, проста i виразна структура даних з мо-жливютю !! змiни. Пролог вiдрiзняе однакова структура даних i програм. Оскшьки вони не вiдрi-зняються, то !х можна змiнювати пiд час роботи Пролог-системи. В Пролоз^ як i у функцiональних мовах, вщсутш вказiвники, оператори присвою-вання та переходу. Природним методом програмування тут е рекуршя. Ряд важливих рис теорi! програмування випливае з декларативносп мов, що дозволяе розум^и програму не дослiджуючи ди-намiки !! виконання. Однак ютинна потужнiсть цих мов грунтуеться не на однш якiйсь властивостi, а в сукупному i грамотному поеднанш всiх. Мови декларативного характеру орiентованi не на розроб-ку розв'язюв, а на систематичний i формалiзова-ний опис задачi з тим, щоб розв'язок випливав iз складеного опису. В сучасному програмуванш по-значився перехiд вiд пошуку розв'язку до визна-чення того, який розв'язок потрiбний. Якщо мови лопчного програмування щеально пристосованi для реалiзацi! процедури логiчного висновку, то функцюнальш мови [14-21] дозволяють будь-яку синтаксично правильно побудовану програму на довшьнш мовi програмування записати у виглядi функцi!, тим самим оптимальним чином побудува-ти iнтерпретатор дослщжувано! мови програмування.
5. Системний пщхщ до освоення та застосуван-ня декларативних мов програмування
Традицшш (алгоритмiчнi) мови програмування пор1вняно з декларативними (описовими) е доволi o6'eMHÎ i громiздкi, оскшьки не дають змоги:
• максимально використовувати можливосп су-часно! комп'ютерно! техшки для забезпечення ефективностi програмних засобiв;
• ясно i наочно вщображати алгоритми програ-ми, щоб забезпечити легюсть перевiрки та модиф> кацп останнiх.
Строго функцiональнi та мови лопчного програмування, що вщносяться до декларативних мов програмування [7-21], е доволi простими, а тому забезпечують достатньо високий ступiнь виразно-стi програм, порiвняно з традицшними мовами (Algol, Fortran, Pascal, Ci, Delphi, Ci++). Ряд функ-щональних програм можуть ефективно працювати на сучасних комп'ютерах, тим не менше не так ефективно, як вщповщш програми з оператором присвоення. Це пов'язано зi структурою архтек-тури сучасних комп'ютерiв. Окрiм того, вибiр де-що iншоï структури представлення даних, нiж це прийнято в шструментальному Лiспi, забезпечуе як бшьшу яснiсть представлення програм, так i тдвищення ïx ефективностi з використанням сучасних комп'ютерiв староï архтектури. З одного боку, сучаснi мови програмування по-виннi ефективно використовувати сучасш машини, а з шшого - ясно виражати програмш алгоритми, щоб полегшити перевiрку останнix. Строго функ-цiональна мова, будучи простою за своею структурою, демонструе вищий стушнь виразностi порiв-няно з традицшними мовами, де юнуе оператор присвоення. Це зв'язано, великою мiрою, зi способом вибору структур даних. Дещо iнший ïx вибiр можна забезпечити пiдвищенням ефективностi функцiональниx програм i на сучасних комп'ютерах. Одна з фундаментальних властивос-тей мови програмування, що дае можливють ясно описати обчислення на цш мов^ - простота семантики мови. Велика перевага функцiональноï мови, як i лопчно^ в тому, що тут е кшька основних понять, кожне з яких мае просту семантику. Зокрема, семантика функцiональноï мови розумiеться в те-рмiнаx значень, якi мають вирази, але аж шяк не в термшах дiй i послщовност ïx використання. Але з практичного погляду було б справедливее зро-бити висновок, що строго функщональна мова е надзвичайно елементарною i ïï розширення значно б пiдвищили ефектившсть i яснiсть деяких класiв вирахувань. Очевидно, необxiдно розрiзняти суто синтаксичш розширення i розширення, якi вима-
гають змiни семантики мови. Змша семантики ви-магае обережностi, оскшьки це ускладнюе розу-мiння (ясшсть) вже вiдлагоджених функцiональ-них програм.
Будь-яку систему позначень для опису алгоршмв i структури даних можна назвати мовою програмування, хоча, як правило, вимагаеться ще й реаль защя мови на комп'ютерь
Сьогоднi розроблено сотш рiзних мов програмування. Ще в 1969р. Саммет [32] наводить список з 120 мов, яю доволi широко застосовуються. Ця приголомшлива кiлькiсть мов програмування про-тирiчить тому, що бiльшiсть програмюив у сво!й практицi використовують декшька мов програмування, а значна !х частина - одну або двi мови. Ви-никае питання про доцiльнiсть освоення рiзних мов програмування, якщо навряд чи буде можли-вють !х реалiзацi!. Тим не менше, якщо не обмежу-ватися поверховим ознайомленням з мовою, а ма-ти глибою уявлення про поняття, якi лежать в ос-новi конструювання програм на данш мовi, то поза всяким сумшвом можна переконатися у доцшьно-стi освоення рiзних мов програмування, виходячи з таких мiркувань:
1. Внаслiдок вивчення рiзних мов програмування покращуеться розумшня конкретно! мови, !! понять та основних методiв i прийомiв, що в нш ви-користовуються. Типовим прикладом може бути рекурсiя. При правильному !! використаннi можна отримати елегантну ефективну програму, а засто-сування !! до простого алгоритму могло б привести до астрономiчного збiльшення часових затрат. З шшого боку, недоступшсть використання рекурсп в таких мовах, як Фортран, Кобол та розумшня основних принцитв i методiв реалiзацi! рекурсi! може внести ясшсть в певш обмеження мови, яю, на перший погляд, е надуманими.
2. Значення мов програмування розширюе запас корисних програмiстських конструкцш i сприяе розвитку мислення. Працюючи з структурами даних одше! мови, виробляють i вiдповiдну структуру мислення. Вивчаючи конструкцп шших мов та методи !х реатзацп, розширюють програмiстський тезаурус.
3. Знання велико! кiлькостi мов програмування дае змогу обгрунтовано вибирати певну мову для розв'язання конкретно! задачi.
4. Освоення ново! мови програмування, як i при-родно! мови людського спшкування, завжди лег-ше, якщо вiдомi декiлька мов.
5. Знання принцитв побудови рiзноманiтних мов програмування полегшуе розробку ново! мови.
Конструювання сучасних мов програмування сьо-годш далеке вiд досконалостi. Кожна з вщомих мов мае сво! недолши та переваги. Бiльшiсть сучасних мов програмування е ушвер-сальними, оскшьки дають змогу записати будь-який алгоритм щею мовою, якщо не накладати об-межень на час виконання програми та мiсткiсть пам'яп, алгоритмiчну складнiсть тощо. Якщо хто-небудь запропонуе нову мову програмування, то вона, очевидно, буде ушверсальною, якщо шнору-вати обмеження на пам'ять або час. Порiвнюючи рiзнi мови програмування, слiд виходити не з кшь-кiсного спiввiдношення того, що вони дозволяють зробити, а з яюсних вiдмiнностей, що визначають елегантнiсть (короткiсть i наочнiсть), легюсть (прозорiсть) та ефективнiсть (швидкодiя та техшч-нi засоби) програмування на них. Це порiвняння слiд здшснювати в контекстi конкретно! сфери за-стосування.
Очевидно для детального розумшня особливостей, синтаксису, семантики, дiапазону прикладних за-стосувань декларативних мов програмування (Lisp [14-21, 24, 28], Prolog [7-13, 28], UML [31-33]) , як покликаш обслуговувати задачi штучного штелек-ту [2, 4-6, 8, 10-12, 22, 33], при !х вивченш слiд за-стосовувати системний шдхщ. Суть пiдходу зво-диться до викладу матерiалу вiд простого до складного з наведенням численних прикладних задач, яю в змозi розв'язати на данiй мовi програмування. Поряд з цим слщ чтоко уявляти обмеження, якi накладет на використовувану мову програмуван-ня та сферу !! прикладних застосувань. При системному пiдходi [30] забезпечуеться мож-ливiсть постiйного порiвняння рiзних описових мов програмування [27], постшна змша i оновлен-ня прикладних задач та освоення нових можливос-тей логiчних предика^в у Пролозi чи функцюна-льних опишв в Унiверсальному Лiспi. Авторам видаеться, що при викладаннi декларати-вних мов програмування такий системний шдхщ можна забезпечити шляхом викладання лекцшно-го, практичного матерiалу чи постановки лабора-торних робiт у виглядi аплiкацiй, виконаних на мовi програмування UML [31] чи шшш об'ектно-орiентованiй мовi моделювання [5, 6, 12, 22-29], яка забезпечуе можливють як постшного понов-лення шдготовленого матерiалу, так i постшного порiвняння з iншими пiдходами, !х оптимiзацi! i подальшого вдосконалення.
Можна дiйти висновку, що досягти прогресу для отримання i освоення нового iнформацiйного ма-терiалу можна лише у процес постiйного удоско-налення та оновлення набутих знань, вмiнь та на-
вичок. Коли такого матерiалу накопичуеться знач-ний обсяг, то без системного його впорядкування вiд простого до складного, класифшацп за алгори-тмiчною складшстю, функцiональними можливос-тями та простотою подання i зберiгання даних по-дальший розвиток неможливий. 6. Висновки
При побудовi СШ1 доцiльно застосовувати системний шдхщ, рухаючись вiд простого i очевидного до складного i малоймовiрного на перший погляд. При цьому слщ враховувати особливосп як само! системи, так i програмних засобiв, яю розробля-ються або використовуються.
Видаеться доцшьним, поряд з процедурними, за-стосування декларативних мов програмування, зокрема, лопчного та функцiонального, яю дозволяють будувати логiчну модель об'екта досл> джень та застосовувати ефективш механiзми !! аналiзу й експлуатацп.
Для ефективного подання даних i програм най-бiльш продуктивними е лопко-лшгвютичш моделi [2, 22, 32] (семантичш мережi; системи фреймiв; логiчнi моделi; продукцiйнi системи; функцюна-льне подання [28]; реляцiйнi бази i банки даних та знань).
Суттевий прогрес в галузi створення СШ1 немож-ливий без побудови принципово нових комп'ютерiв, якi вщходять вiд неймановсько! структури, а пов'язаш з нейронною структурою [34], що наближена до природних потреб користу-вача.
Лiтература: 1. Вендров А. М. СЛ8Б-технологии: современные методы и средства проектирования информационных систем / А. М. Вендров. М.: Финансы и статистика, 1998. 175 с. 2. Поспелов Г. С. Искусственный интеллект - основа новой информационной технологии / Г. С. Поспелов. К.: Наукова думка, 1995. 360 с. 3. За-яць В. М. Методи, алгоритми та програмш засоби для моделювання 1 анал1зу динам1ки складних об'екпв на основ1 дискретних моделей: Монограф1я / В. М. Заяць. Льв1в: Новий свгг - 2000, 2009. 400 с. 4. Катренко А. В. Теор1я прийняття ршень: П1дручник / А. В. Катренко, В. В. Паачник, В. П. Пасько. К.: Видавнича група BHV, 2009. 448 с. 5. Робертс Ф. С. Дискретные математические модели с приложениями к социальным, биологическим и экологическим задачам. М.: Наука, 1986. 386 с. 6. Томашевський В. М. Моделювання систем: Щдруч-ник / В. М. Томашевський. К. : Видавнича група BHV, 2004. 352 с. 7. Клоксин У., Меллиш К. Программирование на языке Пролог. М.: Мир, 1987. 336 с. 8. Хоггер К. Введение в логическое программирование. М.: Мир. 1988. 348 с. 9. Братко И. Программирование на языке Пролог. 10. Макаллистер Дж. Искусственный интеллект и Пролог на микро-ЭВМ, М.: Машиностроение, 1990. 240 с. 11. Ин Ц., Соломон Д. Использование Тур-
бо-Пролога: Пер. с англ. М.: Мир, 1993. 608 с. 12. Бакаев А.А., Гриценко В.И., Экспертные системы и логическое программирование. К.: Вища школа, 1995. 246 с. 13. Заяць В.М. Лопчне програмування: Ч. 1: Конспект лекцш з дисциплши «Лопчне програмування» для сту-денпв базового напрямку 6.08.04 "Програмне забезпе-чення автоматизованих систем". Львiв: Видавництво Нацiонального унiверситету "Львiвська полггехшка", 2002. 48 с. 14. XeHdepceH П. Функциональное программирование. Применение и реализация. М.: Мир, 1983. 349 с. 15. Бадаев Ю.1. Теорiя функцюнального програмування. Мови CommonLisp та AutoLisp. Кшв, 1999. 150 с. 16. Заяць В.М. Конспект лекцш з курсу функцю-нальне програмування. Львiв, 1999 .55 с. 17. Маурер У . Введение в программирование на языке Лисп. М.: Мир, 1976. 104 с. 18. Хювенен Э, Слеппян Й. Мир Лиспа. Т.1. Введение в язык Лисп и функциональное программирование: Пер. с финск. М.: Мир, 1990. 447 с. 19. Хювенен Э., Слеппян Й. Мир Лиспа. Т.2 Методы и системы программирования. Пер. с финск. М.: Мир, 1990. 447 с. 20. Еднерал В.Ф., Крюков А.П., Родионов А.Я. Язык аналитических вычислений REDUCE. М.: Из-во МГУ, 1984. 176 с. 21. Лавров С.С., Силигадзе Г.С. Автоматическая обработка данных. Язык Лисп и его реализация. М.:. Наука, 1978. 176 с. 22. Уинстон П. Искусственный интеллект. M.: Мир, 1980. 513 с. 23. Грин Д., Кнут Д. Математические методы анализа алгоритмов. М.: Мир, 1987. 120 с. 24. Фостер Дж. Обработка списков.. М.: Мир, 1974. 280 с. 25. Вирт Н. Алгоритмы + структуры данных = программы: Пер. с англ. М.: Мир, 1985. 213 с. 27. Бердж В. Методы рекурсивного программирования. М.: Машиностроение, 1983. 248 с. 28. Заяць В.М, Заяць М.М. Лопчне i функцюнальне програмування. Навч. поабник. Рiвне: 216. 400 с. 29. Erich Gamma, Richard Helm, Ralih Johnson, John Vlissides. Wzorce projektowe, 2012. 30. Заяць В.М., Маевський Яцек. Системний шдхвд до освоення та викладання мов лопчного i функционального програмування //21-й Мгжна-родний молодiжний форум «Радюелектрошка i молодь в XXI столи-п». Харшв, ХНУРЕ., 2017. С. 4-6. 31. Stanislaw Wrycha i inni. UML 2.1. Cwiczenia. ISBN: 97883-246-0612-2012. 32. Maccarthy J. Recursive functions of symbolic expressions and their computation by machine // Comm. ACM.: 1960. Vol.3. P. 184-195. 33. Nilsson N.J. Principles of Artificial Intelligence. Tioga. Springer-Verlag, 1960. 164 с. 34. Бондаренко М. Ф., Хаханов В. И., Гузь О. А., Шабанов-Кушнаренко Ю. П. 1нфраструктура моз-коподiбних обчислювальних процеав. Харшв: ХНУРЕ, 2010. 169 с.
Надшшла до редколеги 03.05.2017 Рецензент: д-р фiз.-мат. наук, проф. Яворський 1.М.
Заяць Василь Михайлович, д-р техн. наук, професор Технолопчно-Природничого Ушверситету (м. Бидгощ, Польща). Науковi штереси: числовi методи в приклад-них застосуваннях, математичне i комп'ютерне моде-лювання динамiчних систем, розтзнавання об'екпв зi складною динамiчною природою, електрорадютехшка та iнформатика. Захоплення i хобг туризм, велоспорт, театр; щоденнi пiшi прогулянки 7 км. Адреса: Украша, 79070, Львiв, просп. Червона Калина, 39, кв. 4. Тел.: дом. (+38) (032) 222-43-48; роб.: (+48) 52-340-53-30; моб.: (+38)(032) 0678362473.
Заяць Марiя M^a&4iBHa, ст. викладач НУ «Львiвська полггехшка» (м. Львiв, Украша). Науковi iнтереси: ш-формацiйнi технологи, iнженерiя знань, математичне i комп'ютерне моделювання складних об'ектiв, логiчне програмування. Захоплення i хобi: туризм, театр, яшсне приготування вишуканих страв. Адреса: Украша, 79070, Львiв, просп. Червона Калина, 39, кв. 4. Тел.: дом. (+38) (032) 222-43-48; роб.: (+38) (032) 258-25-38 моб.: (+38)(032) 0989327526.
Zaiatc Vasyl M., DSc., Professor, Professor University of Science and Technology (m. Bydgoszcz, Poland). Research interests include numerical methods in applied applications, mathematical and computer modeling of dynamic systems, recognition of objects of complex dynamic nature, electro -radiotehnika and informatics. Hobbies: hiking, biking, theater; daily walks 7 km. Address: Ukraine, 79070, Lviv, avenue Chervona Kalyna, 39, flat 4. Tel.: Home (38) (032) 222-43-48; Job: (+48) 52-340-53-30; Mob.: (+38) (032) 0678362473.
Zaiats Mary M., senior teacher National University "Lviv polytechnic" (m. Lviv, Ukraine). Research interests include information technology, engineering knowledge, mathematical and computer modeling of complex objects, logic programming. Interests and hobbies: hiking, theater, high-quality gourmet food. Address: Ukraine, 79070, Lviv, avenue Chervona Kalyna, 39, flat 4. Tel .: Home. (38) (032) 222-43-48; Job.: (+38) (032) 258-25-38 Mob .: (+38) (032) 0989327526.