Реферат тақырыбы: «Haskell бағдарламалау тілі»


Download 182.36 Kb.
bet1/2
Sana26.10.2023
Hajmi182.36 Kb.
#1725095
TuriРеферат
  1   2
Bog'liq
Рамажа1111аа


Қазақстан Республикасы Ғылым және жоғары білімминистрлігі
М.Қозыбаев атындағы Солтүстік Қазақстан университеті
Инженерлік жəне сандық технологиялар факультеті
«Ақпараттық коммуникациялық технологиялар» кафедрасы

РЕФЕРАТ
Тақырыбы: «Haskell бағдарламалау тілі»


Орындаған


АЖ–21–қ тобының студенті: Рамадан С.Х
Қабылдаған:  Касимов И.Р

Петропавл қ., 2023ж


М АЗМҰНЫ

Кіріспе......................................................................................................................3


1 Хаскил бағдарламалау тілі дегеніміз.................................................................4
1.2Хаскелл тілінің артықшылықтары...................................................................5
1.3Хаскелл тілінің кемшіліктері............................................................................6
1.4Haskell қолдану аясы.........................................................................................7
2 Haskell бағдарламасының негіздері...................................................................9
2.1 Модуль құру......................................................................................................9
2.2 Haskell тілін қолдану салалары......................................................................13
Қортынды...............................................................................................................13
Пайдаланылған әдебиеттер..................................................................................14

КІРІСПЕ

Хаскелл ([hæskəl]) – жалпы мақсаттағы стандартталған компьютерлік бағдарламалау тілі. Бұл кешіктірілген есептеулерді қолдайтын ең көп таралған бағдарламалау тілдерінің бірі. Типтік жүйе – толық, күшті, статикалық, Хиндли – Милнер типтік жүйесіне негізделген автоматты типті шығару. Тіл функционалды болғандықтан, негізгі басқару құрылымы функция болып табылады.
Тілдің айрықша ерекшелігі – теруге деген байыпты көзқарас; осыған байланысты тіл тип теориясын зерттеуші және комбинаторлық логиканы ойлап тапқан Хаскелл Карридің есімімен аталады.
Кодпен басқа бағдарламалау тілдерінде өзара әрекеттесу құралдары бар. Көп тапсырмалы және параллельді бағдарламалауға, дамыған құралдарға (автоматтандырылған тестілеу, күйін келтіру және профильдеу құралдары, соның ішінде параллельді бағдарламалар үшін) кіріктірілген қолдау бар, бірнеше мың ашық бастапқы кітапханалар бар.
Хаскелл ML тілдер тобына жатады. Оған 1985 жылы Дэвид Тернер жасаған Миранда тілі үлкен әсер етті. Миранда коммерциялық қолдауға ие болған алғашқы таза функционалды тіл болды және 1980 жылдары салыстырмалы түрде танымал болды, бірақ бағдарламалық жасақтаманың иесі болып қала берді. Бұл жалқау функционалды бағдарламалау мүмкіндіктерін дамыту мен зерттеуді қиындатты, сондықтан бірнеше жыл ішінде оннан астам ұқсас тілдер пайда болды. 1987 жылы Орегондағы функционалды бағдарламалау тілдері және компьютерлік сәулет конференциясында әртүрлі әзірлеушілердің күш–жігерін біріктіру үшін ашық стандартты әзірлеу комитетін құру туралы шешім қабылданды.
1990 жылы тілдің алғашқы нұсқасы ұсынылды, Haskell 1.0. Әрі қарай комитеттің жұмысы жалғасып, 1999 жылы "The Haskell 98 Report" жарық көрді, ол көптеген жылдар бойы тілдің тұрақты стандартына айналды. Алайда тіл қарқынды дами берді, GHC компиляторы жаңа мүмкіндіктерге қатысты нақты стандарт болды.
Тілдің жаңа нұсқаларын әзірлеу ашық, бұл процесс Haskell (Haskell Prime [ˈhæskəl praɪm], "Haskell–Strich") деп аталды. Барлық ниет білдірушілер өз ұсыныстарын талқылауға ұсына алады, ұсыныстар жыл бойы талқыланады, комитет қабылдауға дайын ұсыныстарды таңдайды және жариялайды, жаңа комитет құрылады және жыл соңына дейін тілдің жаңа нұсқасы дайындалады. Осылайша, тілдің жаңа нұсқалары енді жыл сайын пайда болуы мүмкін. Кейбір ревизияларды "маңызды" деп жариялау және мұндай ревизияларды ұзақ уақыт бойы қолдау жоспарлануда.
Haskell тілінің 2010 нұсқасы–2009 жылдың соңында жарияланды, бірақ соңғы "маңызды" нұсқасы (стандарт) Haskell 98 болып қала береді.
1 Haskell бағдарламалық тілі дегеніміз


    1. Хаскелл тілінің жалпы сипаттамасы

"Хаскелл" бағдарламалау тілі функционалдық санатқа жатады. Онда жазылған бағдарлама математикалық мағынадағы функциялар жиынтығы, яғни екі жиынның элементтері (аргументі мен мәні) арасындағы тәуелділіктер (сәйкестіктер) ретінде. Бұл жағдайда функцияның мәндерін есептеу үшін оның қандай ретпен жүретініне қарамастан, тек бастапқы деректер болады.


Хаскеллдегі Функция кодтың негізгі құрылымдық бірлігі болып табылады. Бағдарламашының міндеті–оны компиляторға (мәтінді машиналық кодқа аударатын бағдарлама) түсінікті етіп сипаттау:
– функцияға қандай параметрлер өтуі мүмкін;
– олармен қандай әрекеттерді орындау керек;
– нәтижені қандай түрде ұсыну керек.
"Хаскелл" тілінің маңызды сипаттамасы – "жалқаулық". Яғни, функциялар қажет болған жағдайда есептеледі. Егер қандай да бір жағдайда бағдарламаны орындау үшін белгілі бір функцияның мәнін білу қажет болмаса, ол "кейінге қалдырылады". Бұл принцип" жалқау " (немесе кейінге қалдырылған) есептеулер деп аталды. Мысалы, "Калькулятор" бағдарламасында көптеген функциялар бар, соның ішінде қосу, азайту, көбейту, бөлу және т.б. бірақ егер пайдаланушы қазіргі уақытта қосуды қажет етсе, ол тек орындалады.
Хаскеллдің басқа маңызды сипаттамаларына мыналар жатады:
Қатаң статикалық теру. Деректер түрі–белгілі бір операцияларды қолдануға болатын кейбір жиын элементтерінің санаты. Басқаша айтқанда, ол бұл деректердің не екенін, олардың қандай мәндері болуы мүмкін екенін және олармен не істеуге болатынын анықтайды. "Хаскеллде" қатаң және статикалық типтік жүйе бар–бұл олардың бір–бірінен айқын ерекшеленетінін білдіреді және бұл бөлу бағдарламаны орындау процесінде емес, компиляция кезеңінде де орнатылады. Алайда, бұл тілде монада деп аталатын белгілі бір деректер түрі бар. Ол еркін түрдегі мәнді қамтитын контейнер. Монадалардың болуы функционалды хаскеллде императивті бағдарламалауға тән кейбір әрекеттерді орындауға көмектеседі: мысалы, операциялар тізбегін орнату, жанама әсерлері бар функцияларды орындау және т. б.
Модульдік. "Хаскеллде" жазылған бағдарламалар – әрқайсысы белгілі бір функцияны орындайтын тәуелсіз блоктардың жиынтығы. Бұл жағдайда бағдарламалық код модульдері бар жеке файлдарға бөлінеді. Мұндай құрылым әзірлеуді және тестілеуді жеңілдетеді–қажет болған жағдайда өзгертулер енгізуге немесе қатені түзетуге тек белгілі бір модульде немесе элементте, бүкіл бағдарламаны қайта жасамай–ақ болады. Сонымен қатар, модульділік модульдерді жеке әзірлеу топтары арасында бөлу арқылы бағдарламалық өнімді әзірлеуді жылдамдатуға көмектеседі.
Тазалық. "Хаскелл" тек өзіне тән таза функциялармен жұмыс істейді: қатаң детерминизм – яғни аргументтің әрбір мәні функцияның бір ғана мәніне сәйкес келеді;жанама әсерлердің болмауы – функцияның оны орындау ортасына әсері, мысалы, ерекше жағдайларды өңдеушілерді шақыру (қарапайым тілмен айтқанда, Қателер), жаһандық айнымалылардың мәндерін оқу және өзгерту және т. б.
Алайда, кейбір бағдарламалау міндеттері анықталмағандықты және жанама әсерлердің болуын талап ететіндіктен, Хаскеллде бұл мүмкіндіктер монадалардың көмегімен қамтамасыз етілген.
Параметрлік полиморфизм. Бұл әр түрлі типтегі мәндермен бірдей тәсілдермен жұмыс істеу мүмкіндігі. Ол бағдарламалау тілінің экспрессивтілігін арттырады және әртүрлі деректермен жұмыс істеу үшін кодтың бір бөлігін қайта–қайта пайдалануға мүмкіндік береді, бұл бағдарламалық жасақтаманы әзірлеуді айтарлықтай жеңілдетеді және жылдамдатады. Қарапайым тілмен айтқанда, бағдарламашыға деректердің әр түрін өңдеу үшін өз кодын жазудың қажеті жоқ–егер ол қолайлы болса, қолда барын пайдалану жеткілікті.
Ішінара қолдану. "Хаскеллде" әдепкі бойынша бірнеше аргументтері бар функциялар (көп орындықтар) аргументтер басқа функциялар болып табылатын жоғары ретті функциялар ретінде ұсынылады. Осының арқасында функцияға аса маңызды немесе сирек өзгеретін аргументтерді "байланыстыруға" болады, бірақ оны маңызды және жиі өзгеретін болады (яғни тікелей жұмыс).

    1. Хаскелл тілінің артықшылықтары

"Хаскеллдің" ерекшеліктерінен оның басқа бағдарламалау тілдеріне қарағанда негізгі артықшылықтары да шығады:


Тілдің" таза "және" таза емес " қабаттары анық бөлінген, бұл бағдарламашыға екеуімен де жеке жұмыс істеуді жеңілдетеді, бұл кодты тек оны жазғандарға ғана емес, сонымен қатар үшінші тарап әзірлеушісіне де түсінуге ықпал етеді.
Кодты жеке блоктарға бөлу арқылы бағдарламалық жасақтаманы тестілеу айтарлықтай жеңілдетіледі. Жеке модульдегі қатені табу және түзету әлдеқайда оңай, сонымен қатар бүкіл бағдарламалық өнімді қайта құрудың қажеті жоқ. Сондай–ақ, бұл кодтың қателерге төзімділігін арттырады: егер олар бір модульде орын алса, олар міндетті түрде бүкіл жүйеге әсер етпейді.
Тілдің ашық сипатына байланысты көптеген нұсқаулар, дайын шешімдер кітапханалары, анықтамалық ұсыныстар, Haskell кітаптары және басқа да пайдалы материалдар бар. Кәсіпқойлар мен әуесқойлардың өте қуатты қауымдастығы құрылды: Егер әзірлеуші өніммен жұмыс істеу кезінде қиындыққа тап болса, онда көмек сұрауға немесе шешімді өз бетінше табуға болатын орын бар.
Қатаң теру әртүрлі типтегі мәндерді араластыруға және жасырын есептеулер жүргізуге мүмкіндік бермейді. Бұл бағдарламалау кезінде қателік немесе жанама әсерлердің ықтималдығын айтарлықтай төмендетеді. Егер әзірлеуші әлі де жасырын түрлендірулерді қолданса (Haskell бұған мүмкіндік береді), онда кодтың қай жерде дұрыс жұмыс істемеуі мүмкін екенін бірден көреді.
Түрлердің компиляция кезеңінде тағайындалуына және тексерілуіне байланысты бұл процесті бағдарлама жұмыс істеп тұрған кезде жүргізудің қажеті жоқ. Сондай–ақ, есептеулердің "жалқаулығына" байланысты бағдарлама ресурстарды қазіргі уақытта қажет емес функцияларды орындауға жұмсамайды, тек қажетті функцияларды қолданады. Тиісінше, бағдарламалық кодтың орындалу жылдамдығы артады.
Хаскеллдегі функциялар бағдарламашы тағайындаған тәртіппен емес, сұраныс бойынша орындалатындығына байланысты, осы тілдің көмегімен көп тапсырма мен параллельді есептеуге қол жеткізу жеткілікті. Бұл бағдарламаның жұмысына да оң әсер етеді.
"Хаскелл" үшін көптеген тестілеу және күйін келтіру құралдары әзірленді, кодпен басқа бағдарламалау тілдерінде интеграциялау және т.б. мұның бәрі оны тек оқу немесе академиялық мүдде үшін ғана емес, сонымен қатар практикалық есептерді шешу үшін – математикалық және ғылыми есептеулерден бастап қосымшаларды әзірлеуге дейін сәтті қолдануға мүмкіндік береді.

    1. Хаскелл тілінің кемшіліктері

Бастапқыда өте күрделі және қисынсыз деп қабылдануы мүмкін ерекше синтаксис. Әсіресе, басқа да негізгі бағдарламалау парадигмаларында тілдермен жұмыс істеуге дағдыланған тәжірибелі әзірлеушілер бұл мәселеге жиі тап болады. Керісінше, жаңадан бастаушыларға арналған Haskell бағдарламалау жолында өте қарапайым, өйткені олардың санасы әлі нақты парадигмаға бейімделмеген.


"Хаскелл" әр түрлі платформаларда біркелкі дамымайды–оның негізгі әзірлеушілері Linux пен MacOS–қа баса назар аударады және Windows–қа жеткілікті көңіл бөлмейді. Осыған байланысты, соңғысында жұмыс істейтін бағдарламашылар құралдардың жетіспеушілігіне, жаңартулардың кешігуіне және басқа мәселелерге тап болады.
Хаскелл үшін көптеген репозиторийлер мен кітапханалар болғанымен, оларда тек типтік мәселелердің шешімдері болады. Егер бағдарламашы стандартты емес тапсырмаға тап болса, оны өзіңіз шешуге немесе қоғамдастық өкілдерінен көмек сұрауға тура келеді.
Тек Haskell GHC негізгі компиляторы белсенді дамып келеді және бұл Даму біркелкі емес. Осыған байланысты кері үйлесімділік мәселелері жиі кездеседі.
Қазіргі уақытта Хаскелл үшін жақсы интеграцияланған даму орталары жоқ. Қазір барлар синтаксисті бөлектеу немесе сөздікке қарапайым автотолтыру сияқты өте шектеулі мүмкіндіктер жиынтығын ұсынады. Навигация немесе рефакторинг (бағдарламаның ішкі құрылымын оның мінез – құлқына әсер етпейтін өзгерту) сияқты басқа функциялар жоқ немесе өте оңтайландырылмаған.

    1. Haskell қолдану аясы

Хаскелл бағдарламалау тілі академиялық ортада пайда болды және дамыды. Сондықтан оны қолданудың алғашқы саласы математикалық есептерді шешу, ғылыми зерттеулер жүргізу, сондай–ақ функционалды бағдарламалау тұжырымдамасын теориялық зерттеу болды. Көбінесе басқа бағдарламалау тілдерімен жұмыс істеуге дағдыланған бағдарламашылар Хаскеллді тек өзін түсіну үшін үйрену керек, ал оның практикалық мәні жоқ дейді. Бұл тұжырым шындықтан алыс – "Хаскелл" көптеген қарапайым бағдарламалау тілдері сияқты практикалық мәселелерді шешуге көмектеседі. Міне олардың бір бөлігі ғана:


Әзірлеушілерге арналған бағдарламалық жасақтама жасау. "Хаскелл" тілінде басқа тілдерге арналған көптеген компиляторлар, даму орталары, тестілеу құралдары және т.б. оның функционалдық сипатына байланысты әзірлеушілерге бағдарламалық кодты машинаға түрлендіруді оңтайландыру, бағдарламалық жасақтамадағы кемшіліктер мен осалдықтарды табу оңайырақ.
Басқа бағдарламалау тілдерін дамыту. Академиялық ортада құрылған Хаскелл–бұл қолданбалы, пәнге бағытталған жап–тарды құру үшін қолданылатын іргелі тіл. Мысалы, оның негізінде криптографиялық Алгоритмдер жасалатын Cryptol, bluespec SystemVerilog жасалды, оның көмегімен жартылай өткізгіш тізбектер жобаланады және тексеріледі және т. б.
Мәтінді өңдеу және талдау. Haskell көмегімен кез келген табиғи немесе жасанды тілді (соның ішінде компьютерлік тілді) талдау үшін қарапайым және тиімді құралдарды жасауға болады. Бұған" Хаскеллде " белгі жүйесі бағынатын ережелерді орнату оңайырақ болғандықтан қол жеткізіледі. Оның көмегімен фразалар мен сөйлемдерді жеке сөз тіркестеріне, сөздер мен предлогтарға бөлуге, олардың арасындағы байланыстарды анықтауға, қателер мен дұрыс емес конструкцияларды табуға болады. Мұның бәрі лингвистер, редакторлар, копирайтерлер, SEO мамандары және т. б. қолданатын мәтінді компьютерлік талдау жүйелерінде қолданылады.
Қаржы құралдары. Қаржы саласындағы бағдарламалық жасақтамаға қойылатын талаптардың бірі–есептеу дәлдігі және қателіктердің болмауы, олардың бағасы миллиардтаған долларға жетуі мүмкін. Сондықтан биржаларда сауда жасау, тәуекелдерді талдау, банктік операцияларды есепке алу, бухгалтерлік есеп және т.б. үшін көптеген жүйелер дәл Haskell–де жасалған.
Деректерді өңдеу. "Хаскеллде" деректер түрлері бойынша нақты бөлінгендіктен, оларды талдау және олармен жұмыс істеу әлдеқайда жеңіл болады. Тілдің бұл ерекшелігі Data Science–тегі іргелі зерттеулер үшін де, әртүрлі ақпараттың үлкен массивтерін өңдеуге қатысты қолданбалы есептерді шешу үшін де тиімді қолданылады. Хаскеллдің іргелес саласы–деректерді талдаумен үнемі байланысты шешім қабылдау жүйелерін әзірлеу.
Қолданбалы бағдарламалау. "Хаскелл" таза қолданбалы қосымшаларды әзірлеу үшін белсенді қолданылады – жұмыс үстелі, мобильді, сервер және т.б. компиляторлар мен басқа әзірлеуші бағдарламалардан басқа, кейбір операциялық жүйелер (мысалы, эксперименттік үй), Yi мәтіндік редакторы, xmonad жақтау терезе менеджері және басқа бағдарламалық өнімдер осы тілде жазылған. Сондай – ақ, Хаскелл ойын саласында қолданылады–мысалы, қалалық ландшафттарды модельдеу үшін.
Оқыту. "Хаскелл" функционалды бағдарламалаудың негіздерін салыстырмалы түрде қарапайым синтаксис пен семантика, көптеген анықтамалық материалдар, нұсқаулар және қауымдастықты қолдау арқылы үйренуге өте ыңғайлы. Көптеген бағдарламашылар бұл тілді жалпы бағдарламалау принциптерін түсінуге жарамды деп санайды.

2 Haskell бағдарламасының негіздері


2.1 Модуль құру

Haskell бағдарламаларының екі түрі бар: бұл қолданбалар (орындалатын) және кітапханалар (кітапхана). Қолданбалар-бұл кейбір тапсырмаларды шешетін орындалатын файлдар, мысалы-бұл мүмкін


болу тіл компиляторы, каталогтардағы деректерді сұрыптаушы, күнтізбе, немесе дәйексөз әр күн үшін, кез-келген пайдалы утилита. Кітапханалар да мәселелерді шешеді, бірақ оларды тілдің өзінде шешеді. Олар мыналарды қамтиды жеке мәндер, басқа Haskell бағдарламасына қосылуға болатын және мүмкін болатын функциялар пайдалану.
Бағдарлама модульдерден тұрады (модуль). Мұнда ереже жұмыс істейді: бір модуль – бір файл. Модуль атауы файл атауымен сәйкес келеді. Модуль атауы бас әріптен басталады, ал файлдарда кеңейтім бар .hs. Мысалы, FirstModule.hs. Хаскеллдегі әдеттегі модульді қарастырайық: 2.1 суретте көрсетілген.
Әр модульде анықтамалар жиынтығы бар. Модульге қатысты анықтамалар экспортталатын және ішкі болып бөлінеді. Экспортталатын анықтамаларды модульден тыс, ал ішкі анықтамаларды тек модульдің ішінде пайдалануға болады және олар әдетте экспортталатын анықтамаларды білдіруге қызмет етеді.
Модуль екі бөліктен тұрады – қақпақ және анықтамалар. Шляпадағы қалпақ модуль сөзінен кейін модуль атауы жарияланады, содан кейін жақшада экспортталатын анықтамалар тізімі көрсетіледі; жақшадан кейін where сөзі бар. Содан кейін импортталатын модульдер келеді. Көмегімен модульдерді импорттау сіз осы модульде екіншісінің анықтамаларын қолдана аласыз модуль. Модуль атауынан кейін де, import директивасында да анықтамалары бар жақшаларды жазуға болмайды, өйткені бұл жағдайда барлық анықтамалар экспортталады немесе импортталады деп саналады.
Анықтамалар бұл бөлімде модульдің барлық анықтамалары бар, анықтамалардың реті жоқ маңызды. Яғни, бұл функцияда тек осы мәндерді пайдаланудың қажеті жоқ жоғарыда анықталды. Модульдер экспортталатын анықтамалар арқылы бір-бірімен әрекеттеседі. Бір модуль мүмкін ол басқа модульдің экспортталған анықтамаларын пайдаланғысы келетінін айту үшін ол жазады Import модулі (анықтамалар). Модуль-бұл айсберг, оның жоғарғы жағында ол үшін функциялары бар ол құрылды (экспортталады), ал су астында – іске асырудың барлық қызметтік бөлшектері (ішкі).
Сонымен, бағдарлама модульдерден тұрады, Модульдер анықтамалардан тұрады. Бірақ анықтамалар дегеніміз не?
Хаскелл анықтамалар нысандардың төрт түрін сипаттай алады:
– Түрлері.
– Мәндер.
– Типтік сыныптар.
– Типтік сыныптардың даналары

2.2 Haskell тілін қолдану салалары


Хаскелл тілі әр түрлі бағытта танымал бола бастады. Қаржы саласында дамыған банктер мен қор ұйымдары оны өздерінің жеке жұмыс құралдарын жасау үшін пайдаланады. Бизнесте бұл тіл жүргізіліп жатқан есептеулердің дәлдігі мен қатесіздігіне кепілдік бере алады.


Haskell тілі мәтіндік материалды өңдеу және өңдеу, талдау және спам жарнамаларын іздеу және жою жүйелерін құру құралдарын жазу сияқты салаларда да қолданылады. Хаскелл құрылымы қолданыстағы грамматика мен ережелерді, соның ішінде ең күрделі орыс тілін орнатуға, тәуелділіктерді іздеу және байланыстарды қамтамасыз ету үшін нұсқаулар жасауға мүмкіндік береді.
Haskell-ді әзірлеушілер басқа бағдарламалау тілдерінде кодты тестілеу тәсілдерін табу үшін қолданады. Содан кейін жоғарыда сипатталғандай шамамен бірдей әрекет әдісі қолданылады, өйткені Хаскелл қарапайым тілдерді де, машиналық кодтаудың символдық жүйелерін де бағалау үшін оңай пайдалы болуы мүмкін.
Haskell веб-дизайнды әзірлеуде де қолданылады; the Джава сценарий бұл бағдарламалау тілінде жазылған мәтінді бір уақытта көптеген қосылымдарды талдай алатын машина кодына аударуға көмектеседі.
Хаскеллдің предшественниги және оған жақын сипаттамалары-таза. Оның басты айырмашылығы-ол монадалар емес, бірегейлік түрлерін қолданады, бұл операциялардың реттілігін орнатуға, жанама әсерлері бар әрекеттерді жасауға мүмкіндік береді. . Өнімділікті жақсарту: компиляторларды оңтайландыру және Haskell кодын орындау жұмыстары оны басқа тілдермен бәсекеге қабілетті ету үшін үздіксіз жүргізілуде. Экожүйені кеңейту: әр түрлі қосымшалардың дамуын жеңілдету үшін кітапханалар мен құрылымдарды кеңейтуде. Құралдар мен құжаттаманы жақсарту: оқытудың күрт шегін төмендету үшін әзірлеу орталарын, жөндеушілерді және құжаттаманы жетілдіруде.

Download 182.36 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling