-
Тілдік айырмашылықтар
-
Тіл құрылымы бойынша айырмашылықтар
1. Программалау тілдері, табиѓи тілдері сияќты, µздерініњ моделі (ќ±рылу негізі) бойынша бµлінеді. Мысалы, табиѓи тілдерді біз т‰ркі тілдері, славиан тілдері, роман тілдері, арап тілдері, парсы тілдеріжєне т.с.с.деп топќа бµлеміз. Ал программалау тілдерін процедуралыќ тіл дер, функционалдыќ тіл дер, логикалыќ тіл дер жєне продукциялыќ (алмастырымдыќ) тілдер деп бµлуге болады.
П рограммалау тілдердіњ ішінде ењ алѓаш пайда болѓандары жєне ењ кµп тараѓандары процедуралыќ тіл дер, ал процедуралыќ тілдердіњ ішіндегі ењ бір інші пайда болѓаны ФОРТРАН (1955ж).
Процедуралыќ тілдер жµнінде функционалдыќ программалаудыњ негізін салушы Америка оќымыстысы Дж Бэкус µзініњ Тьюринг сыйлыѓыныњ (информатика ѓылымы бойынша ењ жоѓарѓы сыйлыќ) лауреаты болуына байланысты лекциясында Ада тілінде барлыќ теориялыќ с±раќтардыњ шешімдері орын тапќан деп дєлелдейді (Ада тілі 1975 жылы АЌШ-њ Ќорѓаныс министрлігініњ жариялаѓан конкурсты жењіп алѓан Жан Ишбианыњ басќаруымен француз ѓалымдары 1979 жылы жасаѓан тіл. Б±л тілдіњ аты д‰ние ж‰зіндегі ењ бірінші программалаушы єйел, лорд Байронныњ ќызы, Чарльз бэббидждіњ ќызметкері Ада АВГУСТ есімімен аталѓан).
VI.-СУРЕТ. Процедуралыќ программалау тілдердіњ даму таихы.
М±нда ќатањ баѓыттамамен кµп єсер ететіндікті, ал жіњішке баѓыттамамен аз єсер еткендікті белгіленген. Осыѓан сєйкес, рпоцедуралыќтілдіњ дамуыныњ басымшылыѓы АЛГОЛ тілініњ концепцияѓа негізделгендігін байќауѓа болады.
Жалпы, процедуралыќ тілде алгоритм єрекеттерді жєне оларды орындау ‰шін ќажет н±сќауларды бейнелеу арќылы жазылады. Процедуралыќ тілдердегі программа бір лік оператор деп аталынады. Ењ кіші программалыќ бір лік болып меншіктеу операторы есептелінеді. Он, жалпы т‰рде, былай бейнелеуге болады:
айнымалы µрнек,
м±нда “ “ – меншіктеу амалыныњ белгісі, ол єр программалау тілінде єр т‰рлі белгімен берілуі м‰мкін, мысалы, “=”-ФОРТРАН жєне Пейсик тілдерінде, “:=”-АЛГОЛ жєне Паскаль тілінде. Меншіктеу операторыныњ орындалу екі этапта µтеді: алдымен µрнектіњ мєні есептелінеді, содан кейін осы есептелінген мєн айнымалыѓа меншіктеледі. Єрбір программалау тілінде кездесетін деректерді Тенгізу операторы жєне шыѓару операторы меншіктеу операторыныњ дербесжаѓдайлары ьолады. Деректерді енгізген екзде айнымалы ретінде комьпютер жедел жадынадаѓы адрес, ал µрнек ретінде сыртќы ќ±рылѓыныњ аты немесе сыртќы ќ±рылѓыныњ жадындаѓы адрес алынады, ал деректерді шыѓарѓан керісінше болады: айнымалы- сыртќы ќ±рылѓы немесе жадыѓа, µрнек- жедел жадыѓа сєйкес ќ±рылады:
Процедуралыќ тілдерінде басќа программалыќ бірліктерге тізбектеу операторы, тармаќталу операторлары жєне ќайталау операторлары сияќтылар жатады.
2. Функционалдыќ программалау функционалдыќ тіл дер арќылы ж‰зеге асады. Б±л тілде алгоритм функцияларыды бейнелеу арќылы жазылады. Функциялар ќарапайым функція немесе к‰рделі функція болуы м‰мкін. К‰рделі функция ќарапайым функциялардыњ композициясынан (суперпозициясынан) т±рады. Функционалдыќ тідерде программа бірлігі ретінде функція ќабылданады. Осы тілдердіњ мысалы ретінде ЛИСП, ПЛЭНЕР, CONNIVER, KRL, FRL, жєне FP сияќты тілдерді алуѓа болады.
Логикалыќ тілде алгоритм шыѓарылатын есептіњ алѓашќы деректерініњ жєне оларда орындалатын амалдардыњ ќасиеттері мен ќатынастары туралы ќ±рылѓан т±жырымдарды логикалыќ береже депр ќарастыруѓа болады жєне єрбір береже белгілі бір шартты береді. Есептіњ нєтидесі с±рау арќылы аныќталады. Егер осы с±рау бойынша логикалыќ ережелердіњ орындалѓанын дєлелдесек, онда есептіњ нєтижесініњ болѓаны, єйтпесе не басќа с±рау ќою керек, не ќойѓан с±рауѓа теріс жауап алѓанымыз. Осыны ж‰зеге асару ‰шін осы тілде белгілі бір формальды дедукциялыќ ж‰йені ќолданады. Кейінгі кезде логикалыќ тіл дер µте ќауырт дамуда. Себебі, ло есептегіш техниканыњ5-буынында негізгі машиналыќ тіл ретінде ќабылданбаќшы. М±ндай тілдерге мысал ретінде ПРОЛОГ, ЛОГО сияќтыларды алуѓа болады.
Продукциялыќ (алмастырымдыќ) тілде алгоритм алмастыру ережелерін кескіндеу арќылы жазылады. Алмастыру ережелері “сол жаѓы” жєне “оњ жаѓы” деп аталатын екі бµліктен т±рады. Ереженіњ сол жаѓында осы ереженіњ атауы жєне алѓашќы деректердіњ ‰лгілері орналасады, ал оњ жаѓында ‰лгілерге сєйкес келген алѓашќы деректермен не істеу керектігі кµрсетіледі. Б±л ‰шін басќа ережелерді шыѓаруѓа болады. Ал ережелерді ќ±ру “жоѓарыдан тµмен” алдымен берілген есептіњ жалпы маз±нына сєйкес алмастыру ережесі ќ±рылады. Сонан кейін осы есепті шешу кезінде пайда болван жаѓа ±ѓымдарѓа сєйкес алмастыру ережелері ќ±рылады. Яѓни, б±л тілдегі программаныњ ќ±рылымы иерархиялыќ (б±таќ тєрєздес) болады. Оныњ кез келген дењгейінде тексеруге немесе µзгерістер енгізуге болады. Осындай тілдердіњ мысалы ретінде СНОБОЛ немесе РЕФАЛ сияќты тілі алуѓа болады.
Лекция 3 Тақырыбы: Транслятор және программалау тілдерінің жалпы ерекшіліктері
1. Транслятор және программалау тілдерінің жалпы айырмашылықтары
2. Программалау тілдерінің ортақ мінездемелері.
1. Программалау тілдері міндеттемесі, құрылымы, семантикалық күрделілігі, іске асу әдістері бойынша бір – бірінен едәуір айырмашылық жасайды. Бұл конкрет трансляторды жасауда өзіндік спецификалық ерекшіліктеріне бейімдейді.
Программалау тілдері әртүрлі пән облыстарындағы мәселелерді шешудің құрамы болып та табылады. Бұл олардың міндеті және ұйымдастырылу спецификасын анықтайды. Мысал ретінде ғылыми есептеулерге бағытталған Фортрон тілі, жүйелік программалауға арналған Си, логикалық мәселелерді ыңғайлы бейнелейтін Пролог, тізімдерді рекурсивті өңдеу үшін қолданылатын Лисп т.б. тілдерді айтуға болады. әрбір облыс тілдің ұйымдастырылуына өз талаптарын қояды. Осы себепті операторлар мен өрнектер көрінісінің формалары арқылы, базалық амалдар жиынтығында айырмашылықтар бар, басқа облыс мәселелерін шешуде эффектілігі кемиді.
Тілдік айырмашылықтар транслятор құрылымына әсер етеді . Лисп және Пролог есептеулер барысында берілгендер типінің динамикалық түзілуін қолдамайтындықтан, көбінесе интерпретатор режимінде орындалады. Фортран тілінің трансляторлары үшін машиналық код оптимизациясын барынша күшейту тән. Бұл тіл конструкция ларының қарапайым семантикасының арқасында мүмкін болып отыр. (Бұл тілде көрсеткіш және нұсқаулар жоқ).
Тіл құрылымы оның ұғымдары арасындағы иерархиялық қатынастарды бейнелейді. Ал ұғымдар синтаксистік ережелермен бейнеленеді. Программалау тілдерінің жекелеген ұғымдар және олардың арсындағы қатынастардың ұйымдастырылуы бойынша айырмашылықтары үлкен болуы мүмкін Мысалы С тілінде айнымалыны қолданудан алдын сипатталса болғаны. Ал Паскаль тілінде айнымалылар тек арнайы сипатталу бөлімінде ғана сипатталады. Ал Бейсик тілінде айнымалыларды сипаттамасыз-ақ қолдана береді.
Программалау тілдерінің семнтикасы өте кең көлемде өзгеруі мүмкін. Олар тек қана жеке операцияларды жүзеге асыру ерекшеліктері бойынша ғана емес программаны құру әдістаріндегі айырмашылықтар бойынша да еркшеленеді. Бір тілдің өзі әртүрлі әдістермен жүзеге асырылуы мүмкін. Бұл формальды грамматикалар теориясының бір сөйлемді әртүрлі әдіспен тануға мүмкіндік беруінен туындайды. Осыған байланысты бастапқы берілген текст бойынша бір нәтижені (объектілі кодты) әртүрлі әдістермен алуы мүмкін .
2. Дей тұрғанмен, барлық программалау тілдері бірқатар ортақ мінездемелерге ие. Бұл жалпылық трансляторларды ұйымдастырудың барлық тілдер принциптерін анықтайды. Программалау тілдері программа құруды жеңілдетуге арналады. Сондықтан олардың операторлары мен берілгендер құрылымы машиналық тілдерге қарағанда қуаттырақ. Программа көрнекілігін көтеру үшін конструкциялардың сандық кодтарының орнына адамдардың қабылдауына ыңғайлырақ символдық немесе графикалық көрінісі қолданылады. Кез-келген тіл үшін төмендегілер анықталады.
– Дұрыс программалар жазу үшін қолданылатын символдар жиыны .
– Дұрыс программалар (сөздер ) жиыны (синтаксис )
– Әрбір дұрыс программаның “мағанасы ”(семантика )
Программалау тілдері (басқа кез-келген күрделі жүйелер сияқты) элементтері арасындағы өзара байланысты беретін ұғымдар иерархиясы арқылы анықталады. Бұл ұғымдар өзара бір-бірімен синтаксистік ережелермен байланыстырылған. Бұл ережелер бойынша құрылған программа сәйкес иерархиялық құрылымға ие. Осыған байланысты барлық тілдермен олардың программалары үшін ортақ қосымша мынандай мінездемелер беруге болады:
Әрбір тілдің программа тудыруға (құруға )мүмкіндік беретін, жазылған программаның берілген тілге сәйкес келуін анықтауға(танитын ) мүмкіндік беретін ережелер болуы тиіс.
Достарыңызбен бөлісу: |