Crc press баспасы Taylor & Francis баспа тобы


Декларативті бағдарламалау парадигмасы



Pdf көрінісі
бет4/26
Дата20.12.2019
өлшемі6,26 Mb.
#53875
1   2   3   4   5   6   7   8   9   ...   26
Байланысты:
Бағдарламалау тілдеріне кіріспе (1)


1.8.2 Декларативті бағдарламалау парадигмасы
Декларативті бағдарламалауда бақылау бағдарламаға негізделген. Бақы-
лаудың қамын жейтін абстрактылы машина бар. Декларативті бағдарла-
ма бағдарламалау деңгейінде логика+абстракциядан тұрады. Деклара-
тивті бағдарламалардағы айнымалылар ұғымының императивті бағдар-
ламалардағы  айнымалылардан  едәуір  айырмашылығы  бар.  Деклара-
тивті бағдарламадағы айнымалы мағынаны ұстаушы болып табылады; 
айнамалыға мән берілгеннен кейін оны бағдарламашы өзгерте алмайды. 

37
Артықшылықтарына  төмендегілер  кіреді:  (1)  шақырылып  отырған 
үдеріс (немесе функция) жадқа шақырылып отырған үдерісті (немесе 
функцияны)  жаза  алмайтын  жағдайлар  секілді  жанама  әсерлердің  аз 
болуы және (2) айнымалылардың ескі мәндері қажет болған жағдайда 
сақталып,  қолданысқа  түсе  алады.  Бұдан  басқа  бірқатар  кемшіліктері 
бар, солардың ішінде:
1. Жад  ұяшығы  FOR  циклы  үшін  индекстік  айнымалы  ретінде  қажет
етілмеген  жағдайда  да  қайта  қолданысқа  түсе  алмайды.  Итеративті
есептеу  мен  деректер  элементтерінің  ірі  массивтерін  басу  секілді  қо-
су-шығу үдерісін өңдеу жадының жарылуына әкеліп соғады.
2. Рекурсивті бағдарламалау жиі қолданылады, себебі индекстің өзгер-
мелі айнымалысын қолданатын дәстүрлі итерацияларға өзгеріс айныма-
лысына  қойылған  шектеулердің  әсерінен    жол  берілмейді.  Итеративті
бағдарламалаумен салыстырғанда рекурсивті бағдарламалау жадқа ие,
сондай-ақ  қосымша  шығындарды  орындау  мен  бағдарламалаудың  аса
күрделі үдерісін қамтиды.
3. Жартылай есептеулерді сүйемелдейтін және орындау тиімділігін арт-
тыру мақсатында бағдарламаның баса бөліктері арқылы қолданыс таба-
тын ғаламдық өзгеретін айнымалыларға жол берілмейді. Алайда бірқа-
тар декларативті бағдарламалау тілдері бұл шектеулерді жеңуге талпы-
ныс жасады: Лисп (Lisp) ғаламдық айнымалыларды қолдануды шектей
отырып,  жад  ұяшығына  жартылай  жазуды  мүмкін  етеді;  ал  Пролог
(Prolog) жүзеге асыру түріне қарай және жартылай есептеулер нәтиже-
сін сақтау мақсатында "assert" (еркін кеңістікте еркін деректердің мәні
туралы болжамдарды тексеруге арналған конструкция), «хабарландыру-
лар тақтасы» (жүйенің барлық модульдері үшін қол жетімді жад аясы)
немесе ғаламдық өзгермелілер секілді конструкцияларды қарастырады.
Бағдарламалаудың декларативті тілдерінің екі негізгі типі бар: бағдар-
ламалаудың функционалды тілдері және логикалық бағдарламалау тіл-
дері.  2-тарауда  сипатталғандай  бағдарламалаудың  функционалды  тіл-
дері математикалық функцияларды қолдануға  негізделген, ал логика-
лық бағдарламалау тілдері предикаттар логикасын, яғни сандық бағалау
ұғымымен бірге буль логикасына негізделеді.
Лисп кейбір императивті конструкциялары бар функционаллды бағдар-
ламамен   бірге 1960  жылдардың басында бағдарламалаудың жасанды
зиятын, яғни есептеу тәсілдері арқылы адам зиятына еліктеуге тыры-
сатын бағдарламалауды жүзеге асыру мақсатында ойлап табылған та-
нымал тіл. Логикалық бағдарламалаудың әйгілі Пролог тілі 1970 жылы
теоремалар мен жасанды зиятты дәлелдеу мақсатында ойлап табылған.

38
Бұл  екі  тіл  1980  жылдың  басында  компиляцияның  ауқымды  әдістері 
пайда болған шақта одан әрі жетіле түсті. Бұл тілдерді құрастырушылар 
тиімімді орындалуда туындайтын қиындықтары мен белгілі бір уақыт 
аралығында  жадты  қайта  қолдануды  болдырмау  үшін  бірқатар  инно-
вацияларға  жүгінді.  Кейінгі  жылдары  Лисп  тілінің  әсеріне  ұшыраған 
басқа  да  тілдер  жасалып,  танымал  болды.  Олардың  ішінде:  Scheme 
(Ским), ML (ЭмЭль), Miranda (Миранда) және Haskell (Хэскелл). Қазір-
гі кезде Ruby (Руби) және Scala (Скала) тәрізді көп парадигмалы тілдер 
бағдарламалаудың  функционалды  парадигмасына  негізделеді.  Толық 
тізім I-қосымшада берілген.
Бағдарламалаудың декларативті тілдері әдетте жасанды зият саласында 
кең  қолданылады.  Декларативті  тілдердің  жасанды  зият  саласына  қа-
жетті негізгі ерекшеліктері төменде сипатталады:
1. Жасанды зият жүйелері серпінді түрде дамып, білімдерін толықтыру-
лары қажет. AI тілдері білімдерді қосу үшін абстракцияларға негізде-
леді.
2. Декларативті тілдердің көбі бағдарламаны бірінші тап ретінде қара-
стырады.  Бұл  бағдарламалар  орындалу  барысында  жасалатынын  біл-
діреді,  себебі  бұдан  кейін  деректер  орындауға  болатын  бағдарламаға
айналады. Жасанды зият жаңа білімдерді компиляциялау үшін осы қа-
сиетті қажет етеді.
3. Декларативті тілдер метабағдарламалау мүмкіндігін қамтамасыз етеді.
Бұл басқа бағдарлама жайлы абстракт түрінде пайымдайтын  бағдарла-
ма болып табылады. Мета-бағдарламалаудың бұл қасиеті жасанды зият
жүйелерінде пайымдауды жетілдіру мен мүмкіндіктерді түсіндіру бары-
сында аса пайдалы.
1.8.3 Объектіге бағытталған  бағдарламалау парадигмасы
Жадтың  компьютерлік  көлемі  ұлғайған  сайын  ірі  бағдарламаларды 
орындау мүмкін болды. 1960 жылы ең алғашқы объектіге бағытталған 
тілдердің бірі Симула болып есептелді. Алайда объектіге бағытталған 
бағдарламалау  ұғымы  бағдарламалауды  қамтамасыз  етуді  құрасты-
рушылар арасында 1980 жылдардың басында ғана кең тарала бастады.  
Бағдарлама  көлемі  өскен  сайын  адамдар  одан  да  күрделі  бағдарлама-
лық қамтамасыз етуді әзірлеуге қажетті модульдік және бағдарламалық 
қамтамасыз етуді қайта қолдану ұғымдарының құнын түсіне бастады.
Кітапхананы  толықтыруды және ақпаратты жасыруды қажет етпейтін, 
модульдік  пен  бағдарламалық  қамтамасыз  етуді  қайта  қолдану  секіл-
ді  өзара  байланысқан  ұғымдар  бағдарламалық  қамтамасыз  етуді  әзір-

39
леу  үдерісін,  техникалық    қызмет  көрсетуді  және  оның  эволюциясын 
жеңілдету  мақсатында  ойлап  табылған  болатын.  Модульдік  дегеніміз 
– бұл ірі компьютерлік бағдарламалардың өзара байланысқа нмодуль-
дер жиынтығына жіктеу. Бұл модульдер басқа модульдердің қызметімен
қиылыспайтын нақты функционалдыққа ие болады.
Модульдік дамудың негізгі артықшылығы бір модульдегі модификация
басқа  модульдердің  қызметіне  зиян  келтірмейтінінде.  Бағдарламалық
қамтамасыз етуді қайта қолдану бұған дейін әзірленген бағдарлама-
лық қамтамасыз ету оны файлда сақтау және қажетті модульдерді не-
месе ішкі бағдарламаларды мұрағаттан импорттау арқылы қажет кезде
қайта қолданыла алатынын білдіреді. Ақпаратты жасыру, егер ақпарат
басқа  модульдермен  әрекеттесуге  қажет  болмаса,  жүзеге  асырылған
бағдарламалық  модульдің  бір  бөлігін  басқа  модульдерге  қол  жетімсіз
етіп жасауды білдіреді.
Модульдік пен ақпаратты жасыруды қамтамасыз ету мақсатында объ-
ектілер мен сыныптар ұғымдары ойлап табылды. Объект деректер мен
тәсілдер абстракциясын, сондай-ақ объектіде деректер абстракцияларын
басқаруға қажетті үдерістерді қамтиды. Объект ішіндегі ақпарат жеке,
көпшілікке қолжетімді немесе қорғаулы болуы мүмкін. Көпшілікке қол-
жетімді тәсілдер сыртқы әлемге ашық; жеке тәсілдер ақпаратты жа-
сыруға қатысатын объектіге ерекше; ал қорғаулы тәсілдер объектілерді
ағымдағы сыныптың сынып тармағында көре алады. Ақпаратты жасы-
ру модульдік ұғымымен тығыз байланысты, себебі жасырылған ақпарат
басқа объектілер немесе сыныптар арқылы қолданыла алмайды. Бағдар-
ламалық қамтамасыз етуді қайта  қолдану ұғымы мұралануды қолдану-
дың арқасында мүмкін болды. Бұл жағдайда сынып тармағы ата сыны-
бынан тәсілдерді мұрагерлікке алады, сондай-ақ бағдарламалық қамта-
масыз етуге енгізілетін кітапханаларды жетілдіруді өзінде  қалдырады.
Объектіге  бағытталған  бағдарламалауға  алғаш  енгізілген  тіл  Симула
(SIMULA)  деп  аталды.  Содан  бері  көптеген  тілдер  объектіге  бағыт-
талған парадигмамен толықтырылды. Xerox Parc және Эйфель компа-
ниясы  арқылы  жетілдірілген  Smalltalk  (Смоллток)  тілдері  объектілер
концепциясына негізделді Мысалы   C ++ - бұл С (Си) тілінің интегра-
циясы және объектіге бағытталған парадигма,  Клос тілі(Common Lisp
Object  System  —  «Common  Lisp’а  объектілік  жүйесі»)  Лисп  тілі  мен
объектіге  бағытталған  парадигманың  интеграциясы  болып  табылады.
Пролог тілінің көптеген түрлері объектіге бағытталған бағдарламалауға
қажетті кітапхананы қамтиды.   Python (Питон), Ruby (Руби) және PHP
тәрізді қазіргі заманғы скрипттік тілдер өздерінің императивті ата-баба-
ларынан қалған орнатылған объектіге бағытталған бағдарламалауға ие.

40
Фортран 2008 және Кобол 2002 — ерте императивті нұсқалары бар ин-
теграцияланған объектіге бағытталған парадигманы қамтитын Фортран 
және Кобол тілдерінің соңғы эволюциясы.
Java ғаламторлық бағдарламалау парадигмалары мен объектіге бағыт-
талған парадигмаларды интеграциялайтын  C  ++ тілінің ізін басушы 
болып табылады. Соңғы жылдары  жаппай параллель сәулеті бар комп-
бютерлерде жоғарғы деңгейдегі бағдарламалық қамтамасыз етуді жетіл-
діру мақсатында  IBM зерттеушілері арқылы ойлап табылған Х10 тілі 
бағдарламалаудың  параллель объектіге бағытталған тілі болып табы-
лады.
1.8.4 Параллель бағдарламалау парадигмасы
1980 жылдардың онжылдықтары барысында бағдарламалық қамтама-
сыз  ету  саласы  ұлғайған  сайын,  аппарттық  технологияда  жедел  дами 
бастады.  Компьютерде көптеген жедел қызмет атқаратын процессорла 
рқолжетімді болып,  компьютерлік желілер саласындағы зерттеулер бір-
неше компьютерлер арасындағы ақпаратпен алмасу мәселесін шешті.  
Осындай жаңа зерттеулердің негізінде тәуелсіз ішкі мәселелер бағдар-
ламаның орындалу тиімділігін арттыру мақсатында жекелеген процес-
сорларда көрініс табулары мүмкін. Даму екі бағыт бойынша жүрді: (1) 
Жүйелі  бағдарламаны  шығу  деректері  ретінде  қабылдай  алатын  және 
оларды  параллель  нұсқада  параллель  орындалу  үшін  түрлендіретін 
параллель  дейтін  компиляторлар  және  (2)  орындалу  ағыны,  белсенді 
күту циклі, сондай-ақ үдерістердің қашықтықтағы шақырулары секілді 
жоғарғы  деңгей  конструкцияларының  бағдарламалық  конструкцияла-
рын қамту.  
Аталған  конструкциялар  да  үдеріс  CPU  орындалатын  бағдарламаның 
белсенді  бөлігі  болып  табылады  және  орындалу  тиімділігін  артты-
ру мақсатында бір немесе бірнеше бір уақытта жұмыс атқаратын ішкі 
мәселелерді қоса алады.
Параллель  бағдарламалау  парадигмасы  бар  көптеген  тілдердің  парал-
лель баламалары "Concurrent X" немесе "Parallel X" атауларына ие бол-
ды. Бұл жерде Х – бар тілдің атауы. Мысалы, Си тілінде параллель кон-
струкцияларының  интеграциясы  "Concurrent  C"  деп  аталды;  Паскаль 
тіліндегі  параллель  конструкциялардың  интеграциясы  "Concurrent 
Pascal" деп аталды; Пролог тіліндегі параллель конструкциялардың ин-
теграциясы "Concurrent Prolog"; ал Фортран тіліндегі  бағдарламалаудың 
параллель конструкцияларының интеграциясы "Parallel FORTRAN" де-
ген атауға ие болды.  
Параллель бағдарламалық конструкциялар қазіргі заманға сай компью-

41
терлердің негізіндегі көп ядролық процессорлардың дамуына орай кең 
қолданыс табуда. Қазіргі заманғы бағдарламалар мен тілдер бағдарла-
маның орындалу тиімділігін арттыру мақсатында аталған конструкци-
ялардың  көп  бөлігін  қамтиды.  Мысалы,  орындау  ағындарын  қолдану 
орындау ағындарының қолданыстағы кітапханалары немесе орнатылған 
кітапхана ретінде қазіргі заманғы тілдерді кең таралған құбылыс  Мыса-
лы, ауқымды кітапхана С, С+ және Java үшін құрастырылды.
1.8.5 Визуалды бағдарламалау парадигмасы
Мәтіндік бағдарламалау парадигмасы тек бір өлшемді қолданады. Алай-
да біз тек жүйелі бір өлшемді бағдарламалауды ғана емес, жақындық 
ұғымын  да  жақсы  түсінеміз.  Бірқатар  бағдарламалау  тілдері  мәтіндік 
болып  табылады  және  бір  өлшемді  болумен  байланысты  секвенциал-
дылықтың болмауынан зардап шегеді.  
1980 жылдардың соңында Smalltalk тілімен жұмыс істеуден бастап, ын-
тымақты интерфейсті қамтамасыз ету мақсатында визуалды бағдарла-
малау парадигмасы бірнеше бағытта дами бастады. Кейбір ұсыныстар 
төмен деңгейлі бағдарламалауда түрлі абстракция деректерімен абстрак-
цияларды басқаруға арналған символикалық көріністі қолдана отырып, 
бағдарламалау тілдері үшін еркін болды.  Алайда ыңғайлы интерфейс 
пен  анимацияны  қамтамасыз  ету  мақсатында  визуалды  бағдарламаны 
қосу  талпынысы  Drag-and-drop  (сөзбе-сөзаударғандасүйреплақтыру; 
алдалақтыр)  операциясы  арқылы  шектелді.  Соңғы  кездері  визуалды 
бағдарламалау  оқиғағ  абағытталған  бағдарламалау  үшін  C  #  секілді 
тілдерде  қолданылды:  өзара  әрекеттесетін  объектілердің  күрделі  сце-
нарийін жасау үшін объект атрибуты мен оқиғаларына сәйкес келетін 
символдар  тасымалданады.  Төменгі  деңгейде  бұл  оқиғалар  мен  өзара 
әрекеттесетін объектілер тілдің төмен деңгейлі нұсқасына аударылады. 
Осыған ұқсас Alice (Элис) тәрізді визуалды тілдер  SMIL, VRML және 
Java3D секілді анимациялар мен тілдер кодтарын әзірлеу үшін мульти-
медиялық презентациялар мен анимациялардың ғаламтор технология-
ларын анегізделген визуалды бағдарламалауды қолданады.
Төменгі  деңгейдің  ірі  көлемдегі  жалпы  мақсаттары  үшін  визуалды 
бағдарламалау  парадигмасын  қолданудың  әрекетсіз  болуы  төмендегі 
себептерге  байланысты:  (1)  екі  өлшемді  жазықтықтағы  синтаксистік 
сараптаманың күрделі болуы, (2) екі өлшемді жазықтықтарда ірі көлем-
дегі бағдарламалардың түсініксіз болуы, (3) бағдарламашыларға ірі ви-
зуалды  бағдарламаларды  ұсынудың  қиындығы.  Бұған  қоса  визуалды 
бағдарламалауда қолданылатын символдардың стандартталуы қарасты-
рылмаған.  

42
1.8.6 Мультимедиялық бағдарламалау парадигмасы
Мультимедиялық  бағдарламалау  парадигмасы  деп  визуализацияның 
түрлі режимдерінің интеграциясын түсінеміз. Оларға мәтін, сурет, бей-
не жазба және ымдар жатады. Адамдар аталған белгілер арқылы бір-
бірімен қарым-қатынасқа түседі.  Бұл белгілерсіз біздің қарым-қатына-
сымыз және өмірді қабылдауымыз толық емес болар еді. 
1990 жылдардың басында веб-бағдарламалаудың дамуы мен дыбыстық 
және  бейне  жазбаларға  арналған  кешенді  үлгісін  жетілдірудің  арқа-
сында визуализация мен қабылдауды жақсарту мақсатында мультиме-
диялық  объектілер  мен  бейне  жазбаларды  бағдарламаларға  кіріктіру 
мүмкіндігі пайда болды.  Бейне жазба реттік кадрлар ретінде ұсынылуы 
мүмкін. Бұл жерде әр кадр өзара әрекеттесетін объектілер жиынтығы бо-
лып табылады. 3D-анимацияланған объектілер мен виртуалды ақиқатты 
үлгілеуге  қажетті  іс-әрекеттерді  орындайтын  Alice  (Элис)  және  вир-
туалды  ақиқатты  үлгілеу  тілідері  (VRML)  бар.  Соңғы  жылдары  X3D 
және Java3D тәрізді 3D үлгілеу тілдері ғаламтор арқылы нақты уақытта 
анимация үшін есептеулер мен 3D үлгілеуді біріктірген даму сатысына 
көшті.   
1.8.7 Веб-бағдарламалау парадигмасы
1990 жылдардың басында Ғаламтордың пайда болуы бізге қашықтықтағы 
веб-бағдарламаларда орналасқан деректермен, бейнелермен, бейнежаз-
ба және аудио материалдарымен, деректер қорларымен және ұялы код-
тармен алмасуға үлкен мүмкіндік берді. Бұған қоса біз кодпен деректер 
мобильділігіне қол жеткіздік.  Егер қашықтықтағы ресурс кодты бірігіп 
қолданбаса, ол деректерді дереккөздерде анықтап,  алынған деректерді 
тасымалдай алады. Екінші тұрғыдан,  серверге артық күш түспеуі үшін, 
ол  есептеуді  ең  соңында  орындау  мақсатында  тұтынушыға  кодты  жі-
береді.  Веб-бағдарламалау  мультимедиялық  визуализацияның  қозғал-
тқышы болып,  қор нарығымен банк ісі тәрізді қаржылық есептеулер-
ге  едәуір  әсерін  тигізді.    Java  және  SMIL  секілді  ғаламтор  негізінде 
жасалған және PHP, Javascript пен XML (белгілеудің кеңейтілген тілі) 
секілді веб-жетілдіру тілдері бар. XML ғаламтор арқылы деректер қо-
рын,  есептеулерді  және  үлгілеуді  ұсынуда  кең  қолданылатын  аралық 
тілге айналды. Java Java виртуалды машинасы (JVM )деп аталатын орта 
деңгейлі әйгілі абстракт машинасына ие. Java бағдарламалары нөлдік 
адресі бар ассемблер тіліне ұқсас Java виртуалды машинасын қолдану-
мен  түсіндіріледі.  Нөлдік  адресі  бар  машиналар  тізіммен  нұсқаудағы 
жад  адресін  қолданбайды.  Бұл  операндтар  бағалау  тізіміне  енгізіліп, 
ығыстырылып, бағаланатын және қайта стекке жіберілетін стекті есеп-

43
теу машинасы. Нөлдік адресі бар машиналардың қолданылу себебі Java 
тілінің микротолқынды пеш, ақылды үйлер мен тоңазытқыштар секілді 
күнделікті құрылғыларда қолданылу мүмкіндігі болып табылады. Нөл-
дік адресі бар машиналар барлық дерлік орнатылған компьютерлерде 
қосыла алатын кең таралған абстракт машиналары болып табылады.
 Нөлдік адресі бар машиналардың кемшілігі жоғарғы деңгей нұсқауы 
басқа нұсқауларға процессордағы синхронизациялау циклын бос жұм-
сай отырып аударылуы болып табылады. Орындалу үдерісін жеделде-
ту мақсатында JIT компиляциясының жаңа типі жетілдірілді. Бұл тип-
те Java және C # секілді жоғарғы деңгей тілдерінің кітапханалары өз-
дерінің екілік кодтарында компиляцияланады. Жоғарғы деңгей тілінің 
бағдарламалық  үзіндісі  төменгі  деңгей  баламасына  аударылғанда  екі 
мүмкіндік  туындайды:  (1)  жедел  орындалуды  қамтамасыз  ету  үшін 
кодты компиляцияға ұшыраған өзекілік кодына аудару немесе (2) Java 
немесе  NET  (Microsoft  Windows  операциялық  жүйесі  үшін)  виртуал-
ды  машиналары  секілді  машинаның  абстракт  түсіндірушісін  қолдану. 
JIT  компиляцияланған бағдарламалары Java виртуалды машинасында 
түсіндірілген кодтарға қарағанда тезірек орындалады.
1.8.8 Оқиға-бағдарланған бағдарламалау парадигмасы 
Оқиға – бұл кейбір әрекеттер немесе есептеулер туындататын шарт ту-
дыратын  жағдайлар.  Мысалы,  тышқанның  тетігін  басу  оқиға  болады; 
компьютер  тышқанын  суреттің  бетімен  қозғалту  оқиға  болады;  және 
соңғы мәнді алу құралы оқиға болады. 
Дәстүрлі  енгізу-бағдарланған  бағдарламалау  мен  оқиға-бағдарланған 
бағдарламалау  арасындағы  айырмашылық  енгізу-басқару  бағдарлама-
лау енгізудің кейбір мәліметтерін сұрайды, енгізуді күтеді, содан кейін 
ғана енгізу дабылының мәніне негізделген әрекетке көшеді. Бұған қара-
ма қарсы оқиға-бағдарлану бағдарламалау ешқашан да сыртқы ортадан 
ешқандай енгізу дабылын күтпейді. Соған қарамастан, ол орын алған 
сәтте-ақ  бір  немесе  бірнеше  оқиғаға  әсерлеседі.  Оқиға-бағдарланған 
моделдеу  шынайы  құбылысты  моделдеу  үшін  пайдаланылуы  мүмкін. 
Өйткені, оқиға алдағы уақытта қосымша әрекетке алып келетін каскад-
ты  оқиғаға  себеп  болуы  мүмкін.  Оқиғалы  бағдарламалау  өз  негізін 
1970-жылдың  басында  жасалған  Симула  (SIMULA)  бағдарламасынан 
алған. Соған қарамастан, соңғы жылдары ол графикалық және веб-әсер-
лесу салдарынан кеңінен тарала бастады. Қазіргі C # сияқты тілдерге 
оқиғалы бағдарламалау моделдеу және графикалық қолданушы интер-
фейстер үшін қолданылады.  

44
1.8.9 Бағдарламалау парадигмаларын интерграциялау
Қазіргі  тілдер  бағдарламалаудың  тек  бір  парадигмасына  жазылмаған: 
бағдарламалаудың  бірнеше  парадигмасы  тілге  орнатылған.  Мысалы,  
C++ императивті бағдарламалау парадигмасын және нысанды-бағдарлау 
бағдарламалау парадигмасын қолданады. Visual C++ визуалды бағдар-
ламалау парадигмасын қолданады. С# императивті, нысанды-бағдарлы, 
оқиғалы  бағдарламалаудың  парадигмасын  және  визуалдаудың  үлкен 
мүмкіндігі – мультимедиялық бағдарламалау парадигмасының функци-
яларын қолданады. Javада императивті, нысанды-бағдарлы, веб-бағдар-
ламалау,  параллель  және  оқиғалық  бағдарламалау  парадигмасының 
көптеген сипаттары бар. Scala және Ruby функционалды және нысан-
ды-бағдарлы  бағдарламалау  парадигмаларын  біріктіреді.  IBM  компа-
ниясы  жасаған  Х10  бағдарламалау  тілі  императивті,  нысанды-бағдар-
лы және параллель бағдарламалау парадигмаларын біріктіреді. Қазіргі 
PHP және Python скриптілідері императивті, құрылымдық және нысан-
ды-бағдарлы бағадарламалау парадигмаларын біртұтас етіп біріктіреді. 
Кейбір  әйгілі  бағдарламалау  тілдерінде  қолданылатын  бағдарламалау 
парадигмаларының тізімі 1-қосымшада келтірілген.  
Бағдарламалаудың  әрбір  парадигмасының  артықшылығымен  қоса 
кемшілігі де бар. Мысалы, нысанды-бағдарлы бағдарламалаудағы ны-
сан  түсінігі  ақпаратты  жасыру  және  модуль  түсінігімен қатар  бағдар-
ламамен қамтамасыз етудің ірі масштабты дамуы үшін жарайды және 
қазіргі таңда Фортан (соңғы нұсқасы Фортан 2008) сияқты ескі тілдерді 
де  қабылдайды.  Бұл  тілдер  тізім  негізінде  қолдану,  белгілі  бір  уақыт 
ішіндегі  рекурсия  мен  нысандар  сияқты  жақсы  функцияларды  қоса 
отырып, уақыт өте келе дамыған. Сәйкесінше,  COBOL тіліне (соңғы 
нұсқасы, COBOL 2002) нысандар қосыла бастады. Егер тіл уақыт өте 
келе дамуын тоқтатса, онда бағдарламашылар мүмкіндігі шектелгендік-
тен ол тілді қолдануды доғарып, ескі тілдерді бағдарламалаудың белгілі 
парадигмалары бар жаңа тілдермен алмастырады. 
1.9 Тілдердің жіктелуі
Тіллдер  бағдарламалау  тілінде  қолданылатын  бағдарламалау  парадиг-
масы, қолдану моделі, түрлердің түсінігі және олардың мүмкін болатын 
пәндік  салалары  сияқты  көптеген  белгілеріне  қарай  жіктелуі  мүмкін. 
Соған қарамастан, қазіргі көптеген тілдерді нақты бөліну жоқ. Өйткені 
олар негізгі артықшылықтарын пайдалану мақсатында белгілер мен па-
радигмалардың жиынтығын біріктіреді. 

45
1.9.1 Бағдарламалау парадигмаларды негізіндегі жіктеу
Біз бағдарламалаудың әртүрлі парадигмаларын қарастырдық. Мысалы, 
бұрынғы Фортран, Си, Алгол 60, Паскаль, АДА және PL/I тілдері им-
перативті тілдер болды; Лисп, ML және Scheme көне нұсқалары - функ-
ционалды бағдарламалаудың әйгілі тілдері болды; Пролог – логикалық 
бағдарламалаудың  кең  тараған  тілі;  ал  С++,  Java,  Scala,  Ruby,  Python 
және Х10 – бағдарламалаудың көптеген парадигмаларын қамтыған  тіл 
өкілдері. С++ - бұл императивті және нысанды-бағдарлы бағдарламалау 
парадигмасын біріктіреді; CLOS («Common Lisp'а нысанды жүйесі») – 
функционалды  және  нысанды-бағдарлы  бағдарламалау  парадигмасы-
ның интерграциясы; Concurrent C, Concurrent Pascal, және Parallel Fortran 
– бұлар параллель және императивті бағдарламалау интеграциясының
мысалдары және т.с.с. Javaны орындау ағыны параллель бағдарламала-
уға мүмкіндік береді. Осылайша,  Java императивті, нысанды-бағдарлы,
параллель, оқиға-бағдарлы және веб бағдарламалау парадигмаларының
интеграциясы болып табылады. Microsoft C# - бұл императивті, нысан-
ды-бағдарлы және оқиға-бағдарлы бағдарламалау парадигмасының ин-
теграциясы. .NET-пен үйлесіп, Microsoft C# веб-бағдарламалау үшін де
жарай береді. Scala және Ruby сияқты соңғы тілдер көптеген бағдарла-
малау парадигмаларын қолданады. Болашақта бағдарламалаудың бірне-
ше парадигмаларын біріктіретін осындай тілдер дами береді. Бұдан да
көне  тілдер  ішінде  параллель  бағдарламалау  және  нысанды-бағдарлы
бағдарламалау бар еді.

Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   ...   26




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

    Басты бет