Императивті тілдер компьтерді есептеудің фон Нейман моделіне негізделген. Есепті шығару барысында, программист бірінші, жүйенің кейбір формальді моделін құрады да, содан кейін, шешімді компьтер терминінде программалаудың императивті тіліне қайта жазады. Бірақ, біріншіден, адамға компьютерлер терминдерінде ойлау мүмкін емес сияқты көрінеді. Екіншіден, осы кезеңнің соңғы іс-əрекеті (программалау тіліне шешімді қайта жазуы) бастапқы есептің шығарылымына еш қатысы жоқ. Өте жиі императивті программалар жоғарыда көрсетілген екі этаптарға сəйкес жұмысты бөледі. Бір адамдар, есептерді жабдықтаушылар, есептің шешімін ойлап табады, ал басқалары, кодировщиктер, осы шешімді программалау тіліне аударады.
Декларативті тілдің негізігде формализацияланған адам логикасы жатыр. Адам тек қана шешілетін есепті бейнелейді, ал шешімнің ізделуімен программалаудың императивті жүйесі айналысады. Аяғында, қосымшалар өңделуінің үлкен жылдамыдығын, бастапқы кодтың аз өлшемін, декларативті тілдегі жазбалардың жеңілдігін, императивті тілдермен салыстырғанда, түсінікті программалауды аламыз.
Программалық тілдер классификациясының не машиналық тілге, не табиғи тілге жақындығы белгілі. Компьтерге жақын болғандарын, төмен деңгейлі тілдерге жатқызады, ал адамға жақындарын, жоғары деңгейлі тілдер деп атайды. Осы жағдайда декларативті тілдерді өтежоғарғы жəне еңжоғарғы деңгейлі тіл деп атауға болады, өйткені олар адам тіліне жəне адам ойлау қабілетіне өте жақын.
Императивті тілдерге Паскаль, Бейсик, Си жəне т.б. сол сияқты программалау тілдері жатады. Прологтың солардан өзгешілігі, декларативті тіл болып табылуы.
Прологты программалау кезінде программистің бар күші программалық жіберулер детальдарын емес, пəндік аймақтағы терминдер объектінің есебіне шешілетін пəндік аймақ фрагментінің логикалық моделіне, олардың олардың арасындағы қарым-қатынастары мен қасиеттеріне бағытталуы керек. Негізінен Прологтың өзі программалық тілді көрсетпейді, деректер бейнелеудің тілін, жəне олардың логикалық өңделуін көрсетеді. Пролог программасы классикалық түрде осындай болып табылады, өйткені шартты операторлар, операторлар циклі жəне т.б. сол сияқты нақты басқару операциялардан құралмаған. Ол есептегі айтылған пəндік аймақ фрагментінің моделін көрсетеді. Соған байланысты есептер компьютерлер терминінде емес, шешілетін есептің пəндік аймақ терминінде жазылады, бұл қазір өзекті объекткеқатысты программалау жүзінде болады.
Пролог объектер арасындағы қарым-қатынас бейнеленгенге жақсы жарамды.
Сонықтан Прологты реляциялы тіл деп атайды. Мұнда тілдердің “реляциялылығына” қарағанда, Прологтың “реляциялылығына” қуатты жəне дамыған болып келеді. Прологты жиі деректер базасымен басқару жүйелерін құрастырғанда қолданады, мұнда Прологта жеңіл жазылатын өте қиын сұраулар қолданылады.
Прологта, императивті тілге қарағанда, көптеген алгоритмдер өте жақсы бейнеленеді. Статистика бойынша, Пролог тілінде жазылған бастапқы текст жолдары, сол есепті шығаратын императивті тілдің бастапқы текстінде он төртінші жолына сəйкес келеді.
Пролог-программаны, əдетте, жазу, түсіну жəне реттеу өте оңай. Бұл Пролог тілінде қосымшаларды өндіру кезінде, көптеген жағдайларды императивті тілдерден тезірек болатынына əкеліп соғады. Прологта күрделі деректер құрылымдарын өңдеу жəне бейнелеу оңай. Бұл бекітілімдерді өз тəжірибемізде осы курсты оқу барысында тексереміз.
Прологта, басқа дəстүрлі программалау тілдері тілдеріне тəн емес механизмдер бар: мысалмен салыстыру, іздеу жəне қайта келумен шығару. Сонымен қатар, мағызды ерекшеліктерінің бірі – Прологта сақталатын деректер үшін массивтер емес, тізбелер қолданылады. Тілде өзіне алу жəне өту көрсеткіштері жоқ. рекурсия программалаудың табиғи жəне əдетте жалғыз əдісі болып табылады. Сондықтан көптеген процедуралардың тілдерде жұмыс істеу тəжірибесі бар адамдар декларативті тілді бұрын программалармен айналыспағандармен салыстырғанда жайырақ қабылданады, өйткені Пролог басқаша көзқарас стилін талап етеді.
Мен Прологты оқушылар мен студенттерге үйреттім. Бір күні Пролог спецкурсын өткізу барысында, информатика пəнінен сабақ беретін əйел келді. Сол уақытқа, оны императивті тілдерді программалаудан (жəне сабақ беруден) үлкен тəжірибесі болған. Сабақ біткеннен соң, ол ұзақ уақыт өз-өзіне кіре алмады. Реакциясы келесідей болған сияқты: “Мен түсінбеймін, бұл қалай болғаны! Қалай прологтағы бірнеше жолдар Паскальдағы бірнеше бет жасағандай жұмыс істейді?” Сауатты адам болғанына қарамастан, ол өзінің “императивті тəуелділігін” өтіп кетіп жəне декларативті стильде программалауды бастай алмады. Оған қарағанда, оқушылар мен студенттер, императивті тілде жұмыс істеу тəжірибесі болса да,
Пролог тілін жеңіл қабылдап, декларативте стильде программалауды бастады. Сойтіп, оқушылардың біреуі (7-ші класс оқушысы) бірнеше ай Прологта жұмыс істегеннен кейін, мұнда “Габриль” билеттерді бронировать етуге арналған авиациялық жүйеге қосымша жазды, ол новосибирсктің “Авиафлотында қолданды”. Пролог тілі, менің ойымша, программалауды үйретудің бастапқы кезеңіне қолайлы, өйткені ол императивті тілдер сияқты компьтерге емес, адамның ойлау қабілетіне бағытталған. Программалауды жаңа үйреніп жатқандарға Пролог тілі оңай беріледі. Бұтақтану, циклдер жəне т.б. сияқты синтаксистік конструкциялардың толық жоқтығы да тіліді қабылдаудың жылдамдығына да əсер етеді. Содан басқа, Прологта программалау, менің ойымша, ойлау қабілетін жақсартады. Өте жиі, есеп шешімін программалау үшін программистке (немесе кейбір пəндік аймақтағы экспертке) біріншіден өзі осы есепті қалай шығаратынын анықтап, өз білімдерін белгісізден белгіліге ауыстыруы керек. Дегенмен, Пролог - əлемдегі ең жақсы тіл деп, кез-келген есепті əмбебап “шығарушы” деп санамаймын. Біздің ойымызша, есептер басқа программау тілдеріне қарағанда, əр тілге өз есептер класы тəн. Сəйкесінше, əр есепті шығару үшін оптималды программалау тілі (тілдері) бар. Көптеген Паскаль, Си сияқты императивті тілдермен шығарылатын есептер Прологта нашар шығарылады жəне керісінше.
Сондықтан адам есеп шығарудың бір емес, оның қарамағандағы кез-келген құралымен қолдана алса – бұл өте жақсы болады. Пролог өзін қай салаларда ең жақсы етіп көрсеткенін қарап көрейік.
Прологты қолданудың негізгі аймақтары:
· Қолданбалы программалар прототиптерінің тез өңделуі;
· Бір тілдің екіншіге автоматты аударылуы;
· Бар жүйелерге табиғи-тілдік интерфейстер құру;
· Теңдеулерді, дифференциялануды жəне интегралаунды шешуге арналған символдық есептеу;
· Динамикалық реляциялы деректер базасын жобалау;
· Сарапшы жүйелер жəне сарапшы жүйелердің қабықшалары;
· өндірістік процесті автоматтындырылған басқару;
· теоремалардың автоматты дəлелденуі;
· жартылайавтоматтанған күндізбе құрастыру;
· автоматтандырылған жобалаудың жүйелері;
· білімге негізделген программалық жабдықтау;
· кез-келген программалау тілінде жазылған клиенттік қосымша жауап бере алатын деректер серверінің немесе, дəлірек айтқанда, білімдер серверінің ұйымдастырылуы.
Пролог арналмаған аймақтар: арифметикалық есептеулердің үлкен көлемі (аудио, видео өңдеу жəне т.б.); драйверлерді жазу.
Прологты, оның нақты версиясына байланыспай, оқу, менің ойымша, онша мақсатты емес. Жоғарыда айтылғандай, Пролог версиялары өте көп, осы версияға талдаған версияларды байланыстыру үшін, оның қайсы бірін таңдау керек. Біз мемлекетімізге белгілі жəне Прологтың тиімді версиясы – Турбо Прологта тоқтаймыз.Оны Borland International фирмасы Prolog Development Center (PDC) дат компаниясымен бірге достастықта өңдей бастады, Бірінші версиясы 1986 жылы шыққан. Соңғы біріккен версия 2.0 номеріне ие болып, 1988 жылы шығарылды.
1990 жылы PDC Турбо Прологқа монополиялы құқығын алды жəне содан кейін атауын PDC Prolog деп қойды. 1992 жылы PDC Prolog 3.31. версиясы шықты.
19986 жылы, питерлік программистер группасының қатысуымен, Prolog Development Center - Visual Prolog 4.0. версиясын шығарды. Visual Prolog ортасының құрамына қосымшаны өндіруді жылдамдатуға мүмкіндік беретін басқарушы логиканы визуальді программалау интерфейсін жəне көптеген құралдарды құрастырушы код генерациясының инструментальді құралдары қосылды. Visual Prolog ортасының жетістіктерінен басқа, идентификаторларда ұлттық алфавитті қолдану мүмкіндігіне, яғни программаны түсінікті жəне өзіқұжатталған болатындай программаларда домендер, предикаттар жəне айнымалылардың орыс аттарын қолдануға мүмкіндік бар екеніне көңіл бөлу керек.
Қазіргі кезде Visual Prolog-тың алтыншы версиясы шықты, ол, дегенмен, тек қана Прологтың единбург версиясынан ғана емес, сонынмен қатар, Турбо Пролог программаларын кедергісіз қабылдаған, өзінің бесінші версиясынан да алыс қадамға өтті.
Аз көлемді қол жеткізуге, аз ресурскөлемдікке, дəстүрлерге, сонымен қатар барлық кедергілердің жоқтығына, соның ішінде графикалық қабықшаға қарағандағығы ойдан, Турбо
Прологе 2.0 – да тоқтаймыз, бірақ осы таңдау едəуір таласып трған болуы мүмкін. Бірақ қазіргі уақытта біздің мақсат – тілдің өзіне көңіл бөлу. Барлық мүмкін жағдайларда біз
Прологты үйренеміз, “таза” Прологқа жақын болуымыз керек. Осы тілдің теоретикалық негізін де талдауға тырысайық.
Бірақ, осыған қарамастан, менің ойымша, программалауды компьютерде орнатылған үйреніп жатқан тілдің нақыт версиясымен игеру қажет. Барлық қарастырылып жатқан дəрістердегі мысалдар Турбо Прологтың екінші версиясында жұмысқа қабілетті болады. Негізінде, олар 4–5.2. версиясындағы Visual Prolog –та компиляциялану керек. Əдетте, оларды кедергілерсіз
Прологтың басқа да версияларына аударуғы болады. Осында жеңіл модификация қажет болуы мүмкін. Мысалы, конструкциялардың ": — " - "is" деп ауыстыруға болады.
Турбо Прологтың эдинбургтық версиядан (“классикалық” Прологтан) ең маңызды ерекшелігі – трансляция жылдамдығын арттыру жəне программаларды орындау үшін деректердің қатаң типизациясының болуы. Турбо Пролог программасының басында əдетте 14 домендердің сипаттамалары (мəліметтер типтерінің) жəне предикаттар орналасады. Турбо
Прологта ережелерді мəліметтер сияқты қарастыру мүмкіндігі жоқ, яғни оларды жұмыс барысында қосу жəне алып тастауы, предикат атының айнымалымен салыстыруы.
Программаның өзгеру бөлігі болып ішкі деректер базасы табылады (олар бірнеше болуы мүмкін). Программаны орындау барысында оның ішіне фактілерді енгізуге жəне сонымен қатар, алып тастауға болады.
“Классикалық” Прологоққа қарағанда Турбо Прологта операцияларды анықтауға болмайды. Турбо Пролог интерпритацияланатын емес, компиляцияланатын тіл болып табылады. Турбо Прологтың жетістіктері Паскаль, Си, Фортран немесе ассемблер тілдерінде жазылған процедураларды оның ішіне орнату болып табылады
Достарыңызбен бөлісу: |