Alikhan Bokeikhan University
Реферат
Тақырыбы: Программалаудың декларативті тілдері
Тексерген: Алханова Гульнур
Орындағын: Жорабек Ілтипат
Группа: ИС-101
Семей 2023
Декларативті программалаудың негізі – математикалық логика, математика мен логиканың синтезі. Оның заманауи нұсқасын 1899 жылы Готлоб Фреге, тіпті қазіргі компьютерлер мен бағдарламалау тілдері пайда болғанға дейін ұсынған болатын. Декларативті код стилі бар тілдер 20 ғасырдың 70-жылдарынан бері белгілі. Бір қызығы, бағдарламалауда алғашында көп парадигмалық тілдер қолданылған, бұл бар мәселелердің көпшілігін шешуге мүмкіндік берді.
Технология дамыған сайын мобильді құрылғылардың өнімділігі де өзгерді. Бұл өз кезегінде кітапханалар мен фреймворктарды пайдалану арқылы даму жылдамдығын арттыруға мүмкіндік берді. Мобильді әзірлеуге арналған бірінші жалпыға қолжетімді негізгі база көп платформалы React Native болды. Ресми декларативті шешімдер пайда болғанға дейін жазылған iOS платформасына арналған фреймворктар AsyncDisplayKit, KarrotFlex/FlexLayout, EasyPeasy, MondarianLayout болды. Олардың мақсаты қарапайым болды - баяу Auto Layout жүйесінен бас тарту және декларативті синтаксис арқылы жоғары жылдамдықты дамуды қамтамасыз ету, өйткені бұл фреймворктер Swift тіліне негізделген.
Декларативті бағдарламалау - бұл мәселенің шешімін спецификациясы көрсетілген, яғни оны алу әдісі емес, күтілетін нәтиже сипатталатын программалау парадигмасы. Декларативті бағдарламалаудың қарама-қарсы жағы императивті бағдарламалау болып табылады, онда егжей-тегжейліліктің бір немесе басқа деңгейінде мәселені шешу үшін қадамдар тізбегін сипаттау қажет. Декларативті тілдердің мысалдары әдетте HTML және SQL болып табылады. Декларативті бағдарламалар күй ұғымын қолданбайды, атап айтқанда, оларда айнымалылар мен тағайындау операторлары жоқ, сілтемелік ашықтық қамтамасыз етіледі. «Таза декларативті» бағдарламалауға ең жақын нәрсе - орындалатын спецификацияларды жазу.
Декларативті бағдарламалаудың ішкі түрлеріне көбінесе функционалдық және логикалық бағдарламалау жатады. Мұндай тілдердегі бағдарламаларда көбінесе алгоритмдік компоненттер болғанына қарамастан, императивті мағынадағы архитектура (кодтаудан бөлек нәрсе ретінде) оларда жоқ: бағдарлама диаграммасы тікелей орындалатын кодтың бөлігі болып табылады. Тілге бағытталған бағдарламалау декларативтілік деңгейін арттыруға бағытталған.
«Таза декларативті» компьютерлік тілдер көбінесе Тьюринг толық емес, өйткені декларативті сипаттамадан орындалатын кодты жасау теориялық тұрғыдан әрқашан мүмкін емес. Бұл кейде «декларативті бағдарламалау» терминінің дұрыстығы туралы дауларға әкеледі («шешімнің декларативті сипаттамасы» немесе сол сияқты «мәселенің декларативті сипаттамасы» аз даулы).
Декларативті бағдарламалаудың императивті бағдарламалаудан айырмашылығы, ол тапсырмаларды орындау ретін нақты көрсетуді қажет етпейді. Бұл бағдарламаның неғұрлым қысқа және оқылатын болуы мүмкін екенін, ал кодтың мәнерлі және икемді болуы мүмкін екенін білдіреді. Декларативті бағдарламалау әдетте бағдарлама күйін өзгертуді емес, мәндерді есептеуді қажет етпейтін мәселелерді шешу үшін қолданылады. Ол жиі дерекқорларға, жасанды интеллектке және деректерді талдауға қатысты салаларда қолданылады.
Декларативті бағдарламалау әдетте императивті бағдарламалауға қарағанда отладтау және тексеру оңайырақ. Дегенмен, кейбір мәселелерді декларативті тәсіл арқылы шешу қиын болуы мүмкін.
Декларативті бағдарламалау тілдерінің мысалдары:
• SQL (Structured Query Language) – мәліметтер қорымен жұмыс істеу үшін қолданылады;
• Пролог – логикалық есептерді шешуге арналған;
• Haskell – функционалдық бағдарламалау үшін;
• XSLT (Extensible Stylesheet Language Transformations) – XML құжаттарын түрлендіруге арналған;
• R – статистикалық деректерді талдауға арналған бағдарламалау тілі және басқалары.
Бағдарламалау тәсілін таңдаған кезде жобаның мақсатын, оның көлемін, орындалу жылдамдығына қойылатын талаптарды, кодтың анықтығын және қателерге төзімділігін ескеру қажет. Императивті бағдарламалау тілдері белгілі бір мәселелерді шешу үшін жақсырақ, ал декларативті тілдер басқалары үшін жақсырақ. Сонымен қатар, бағдарламалау тілін таңдағанда, оның белгілі бір стильге (императивті немесе декларативті) тиесілілігіне және жобаның тапсырмаларын орындау үшін қажетті құралдар мен кітапханалардың болуына назар аудару керек.
Декларативті тәсіл. Біздің мақсатымыз, бұрынғыдай, жоғарыда сипатталған барлық мәселелерді шешу. Сондай-ақ, әрбір шешім не болып жатқанын нақты сипаттауы керек, сонымен қатар оқылатын және өзгермейтін болуы керек.
Алғашқы 2 мысал JavaScript тіліне енгізілген әдістерді қолданатынын ескеріңіз: картаға түсіру және азайту. Яғни, біздің жағдайда декларативті бағдарламалау императивті іске асырудан абстракция болып табылады, бірақ шын мәнінде біз бұл әдістердің қалай жүзеге асырылатыны туралы аз ойлаймыз. Біз де күйді өзгертпейміз, ал бағдарлама кодының өзі оқуға ыңғайлы болды.
3-ші мысалда, кодты жазу кезінде біз трюк қолдандық, өйткені біз React деп аталатын JavaScript тілінің кітапханасын пайдаландық. Бірақ бұл маңызды емес, бірақ біз барлық 3 императивті қатені түзеткеніміз. Ал React-те бағдарламалаудың өзі де жақсы, өйткені ол декларативті пайдаланушы интерфейстерін құруға мүмкіндік береді. Егер сіз сол Btn компонентіне қарасаңыз, интерфейстің дәл қандай болатыны бірден анық болады. Және күйлер DOM-де емес, тікелей React компонентінде «өмір сүреді». Декларативті кодтың тағы бір маңызды артықшылығын еске түсіруге болмайды: ол контекстен тәуелсіз. Мұның бәрі бұл кодты кез келген дерлік бағдарламада еш өзгеріссіз пайдалануға болатынын білдіреді.
Ол күтілетін нәтиженің сипаттамасына негізделген бағдарламалау парадигмасын білдіреді. Біз мақсатқа жету қадамдарын сипаттамаймыз, бірақ нені алғымыз келетінін сипаттаймыз. Біз «парадигма» сөзін код жазу контекстінде көп рет жазғанымыз сонша, оны түсіндіру уақыты келді. Біздің жағдайда парадигма кодты жазу стиліне және оны ұйымдастыруға қатысты.
Сонымен, сіз қалаған нәтижеге қол жеткізу үшін бірнеше бағдарламалау стильдерін пайдалана аласыз ба? Дәл солай. Бұл бізге заманауи көп парадигмалық тілдер көмектеседі.
Достарыңызбен бөлісу: |