Оқулық Қазақстан Республикасы Білім және ғылым министрлігі бекіткен Алматы, 2011


§ 2.2.4 Бағдарламалаудың басқа тілдері және жҥйелері



Pdf көрінісі
бет111/121
Дата31.08.2022
өлшемі2,81 Mb.
#38343
түріОқулық
1   ...   107   108   109   110   111   112   113   114   ...   121
Байланысты:
duisembiev-parallel-esep

§ 2.2.4 Бағдарламалаудың басқа тілдері және жҥйелері. 
 
Ғалымдардың жаңа бағдарламалық жүйелер құрастыру туралы ой-
пікірлері үнемі кӛп және әр-түрлі болып келді. Бір пікірлер компьютерлердің 
архитектурасы ерекшеліктеріне басқалары математиканың немесе
теориялық бағдарламаның әртүрлі тарауларына негізделді. Мысал ретінде, 
Sisal, Haskel, Cilk, T-система, НОРМА және т.б. жүйелерді атауға болады. 
Ондай жүйелер кӛп. Бірақ жүйелердің нақты таралуын негізінен үш фактор 
айқындайтыны 
белгілі: 
бағдарламалаудың 
қарапайымдылығы, 
бағдарламаның тиімділігі, жеңіл тасымалдануы. Ия, бірақ осы талаптарға 
толық жауап бере алатын бағдарламалық жүйе құру есебі әлі де шешілген 
жоқ. Сондықтан да, жаңа жүйелер құрудың базасы болатын ой-пікірлердің 
қаншалықты қызықты болатынын қарастырып кӛрелік.
Осы параграфта біз россиялық екі жүйе туралы қысқаша айтатын 
боламыз: Т-жүйесі және НОРМА тілі [10]. Бұл жүйелеудің біреуі 
бағдарламаны автоматты динамикалық параллельдеуге, ал екіншісі 
математикалық формулалар терминдері арқылы бағдарламалауға мүмкіндік 
береді. 
Т- жҥйесі 
Т-жүйесін құру ӛткен ғасырдың 80-ші жылдарының соңында РҒА 
(РАН)-ның бағдарламалық жүйелер Институтында басталған болатын. 
Т-жүйесіне тән негізгі ерекшелік: бағдарламаларды динамикалық 
параллельдеуді қамтамасыз ету үшін функционалды бағдарламалау 
парадигмасын пайдалану болып табылады. Осының негізінде параллель 
есептеуді ұйымдастыру үшін Т-жүйесінде қызықты формаларды жүзеге 
асыруға және де табуға мүмкіндік туды. Мысалға алсақ, жүктемені бӛлу 
немесе синхрондау үшін. Сонымен қатар, Т-жүйесінің функционалды стилін
С, С++ тілдерінің кеңейтілуі немесе Fortran тілі кӛмегімен дәстүрлі 
бағдарламалау тілдерімен бірге тиімді пайдалану мүмкіндігі туды. Бұл тілде 
нақты параллельді конструкция жоқ және де бағдарламашы мәтінде 
бағдарламаның қай бӛліктерін параллель орындау керек екенін анық 
кӛрсетпейді. 
Т-жүйесінің базалық қағидалары функционалды бағдарламалаудың 
жалпы теориясының нәтижелеріне негізделген. Оны айқындау, түсіндіру 
үшін теорияның әрбір бӛлігіне мән бермей-ақ сол сияқты жай теорияларды, 
яғни қарапайым аналогтарын пайдалануға болады. Мысалға, бір күрделі 
арифметикалық ӛрнек бар болып, оған ӛз кезегінде кӛптеген жақшаға 
алынған ӛрнекшелер кірсін делік. Әрине, бұл есептің шешімін кезкелген 
тәртіппен шешуге болады және әр жағдайда да нәтижесі бірдей болады. 


192 
Функционалды бағдарлама теориясында арифметиканың бұл заңы еркін 
рекурсивті функцияларға да жалпыланады.
Бұндай тәсіл бізге «таза» функциялардан құрылған функционалды 
бағдарламаларды параллельдеу үшін тіке әдісті береді. Таза функциялар 
дегеніміз қосалқы әсерсіз функцияларды білдіретін Т-жүйенің базалық 
ұғымдарының бірі болып табылады. Әрбір уақыт мезетінде есептеуге дайын 
«ӛрнекшелерді» белгілеп алып, оларды пайдаланудағы процессорларға бӛліп 
беру керек. Бұл жерде негізі ретінде, түйіндері -шақырылған функцияларды 
кӛрсететін, ал доғалары - «ӛрнекше-ӛрнек» қатынасына сәйкес келетін граф 
алынады. 
Дәстүрлі бағдарламалау тіліне функционалды семантиканы қосу үшін, 
«дайын емес мән» ұғымын енгізу жеткілікті болады екен. Бұл С тілінде 
айнымалыларды сипаттауда қосымша атрибутты енгізу арқылы жүзеге 
асырылады. Жаңа tval кілттік сӛзі «tval int i» сипаттауында мәні 
бүтін немесе дайын емес мән болатын айнымалыны анықтайды. Қосалқы 
әсерсіз функцияларды белгілеу үшін қосымша tfun сӛзін қолданады. Шығу 
Т - функциясы tout сӛзімен белгіленеді. және т.б. 
Қарапайым мысал қарастырайық : 
tfun void tmain(...) {
tval int x, у, z, b = 1;
int w, t, a = 5; 
G(a, b, &x, &y, &z); /* x, у, z –те нәтижелерді қабылдау*/
b = z; 
У = a;
w = a;
t = b+a*w; 
… 

Берілген G функциясы таза және онда tfun атрибуты бар деп 
есептейік. Мысалды «қадам» бойынша орындаймыз. 
1. G (a, b, &x, &y, &z ). G функциясы таза болғандықтан ол негізгі 
бағдарламамен параллель орындалуы мүмкін. Осы оператор орындалғаннан 
кейін Т-жүйесі G-функциясының шақырылуының негізінде, параллель 
орындалуға дайын жаңа жұмыс үлесін рәсімдейді.
Бұл жұмыс үлесі тез арада орындалуы да, немесе басқа себептер болып 
оның орындалуы кейінге қалдырылуы да мүмкін. Қай жағдайда да жүйе 
келесі операторды орындауға кӛшеді. Айнымалылар x, y, z - дайын емес 


Достарыңызбен бөлісу:
1   ...   107   108   109   110   111   112   113   114   ...   121




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет