Функционалдық программалау тілдерінің мүмкіндіктерді талдау


Қазақстан Республикасының ғылым және білім министрлігі
Әл-Фараби атындағы қазақ ұлттық университеті
«__»
«Қорғауға жіберілді»
Кафедра меңгерушісі, ф. -м. ғ. к.,
доцент Урмашев Б. А.
ДИПЛОМДЫҚ ЖҰМЫС
Тақырыбы: «Функционалдық программалау тілдерінің мүмкіндіктерді талдау»
5B060200 - «Информатика» мамандығы
Ғылыми жетекші,
п. ғ. к.
Алматы 2016
МАЗМҰНЫ
- ФПТ даму тарихы. ФПТ классификациясы
- Haskell-функционалды программалау тілі
КІРІСПЕ
Функционалды программалау дегеніміз - бұл дискретті математиканың бір бөлігі және программалаудың парадигмасы, есептеу процессі мұнда математикалық функциялардың көмегімен жүзеге асырылады.
Императивті программалауға қарсы қойылатын парадигма, есептеу процессі күйлердің ауысуымен анықталады. Функционалды бағдарламалауда есептеу процессінің дәйекті күйлері қажет болған жағдайда тізім ретінде көрсетіледі.
Функционалдық бағдарламалау бастапқы деректер және басқа да функциялардың нәтижелері және нақты бағдарлама сақтау мәртебесін тарту емес, өзіндік құнын есептеу функцияларын қамтиды. Тиісінше, ол арналған, сондай-ақ ( негізгі ұғымдардың бірі, оның мәні және өткізеді алгоритм ретінде өзгертуге мүмкіндік береді айнымалы болып табылады міндетті түрде қарағанда ) осы жай - өзгергіштік емес.
Іс жүзінде математикалық функцияның функция түсінігінен императивті программалауда айырмашылығы, императивті функциялар тек аргументтерге ғана емес, оның сыртқы күйлеріне де және сыртқы айнымалы жай-күйін өзгертуге мүмкін емес болып табылады. Осылайша, императивті бағдарламалауды шақырған кезде бірдей параметрлері бар бірдей функцияларды, бірақ алгоритм әр түрлі кезеңдерінде, әр түрлі деректер есебінен айнымалылардың функциясын әсер ете алуға болады. Ал функционалды тілде аргументі бір функцияны шақырған кезде бірдей жауапты қабылдаймыз. Шығатын деректер енетін деректерге байланысты.
Бұл функционалдық тілдерінде орындалу уақыты бағдарламасы функциялардың нәтижелері кэштеу және алгоритмі көрсетілген емес тәртіппен оларды шақыру және бағдарламашы тарапынан кез келген қосымша шараларды, оларды қатарластыра мүмкіндік береді.
Жұмыстың өзектілігі:
Функционалдық программалау тілдерін таңдаған себебіміміз, функционалдық тілдер программистердің жұмысын жеңілдетеді. Функционалды программалау тілдерінің көмегімен әмбебап, оңай өзгерілетін және кеңейтілген программалар жазылады. Сондықтан дипломдық жұмыстың тақырыбы заманауи талаптарға сай, өзекті болып табылады.
Жұмыстың мақсаты: функционалдық программалау тілдерінің мүмкіндіктерді талдау, функционалдық программалау тілдерінің біреуін игеріп және соның ішінде Haskell функционалды программалау тілінде бағдарлама жазу.
Жұмысқа қойылған міндеттер:
1. Функционалды программалау тілдеріне байланысты шетелдік және отандық әдебиеттерді оқып зерттеу.
2. Функционалды бағдарламалау тілдерінің классификациясын құру.
3. Haskell тілін зерттеп, бағдарлама жазу.
4. Функционалдық программалау тілдеріне қатысты сайт құру.
I ФУНКЦИОНАЛДЫҚ ПРОГРАММАЛАУ БОЛАШАҒЫ БАР ПРОГРАММАЛАУДЫҢ ПАРАДИГМАСЫ
1. 1 ФПТ даму тарихы және классификациясы
Лямбда есептеу сипаттамасы және есептеу функцияларын теориялық негіз болды . Математикалық абстракцияның емес, бағдарламалау тілі ретінде, ол бүгін барлық дерлік функционалдық программалау тілдері негіздері болды . Осыған ұқсас теориялық тұжырымдамасы, комбинаторлық логика λ - есептеу артық бағзы болып табылады және бұрын құрылды. Бұл логикалық сияқты Unlambda сияқты кейбір эзотерикалықтар тілдерінде, қолданылады. Ал λ - есептеу және комбинаторлық математика логикалық принциптері мен негіздерін неғұрлым айқын және дәл сипаттау үшін әзірленген.
Бірінші функционалдық тілі Lisp Елуінші жылдардың соңында Джон Маккарти өзінің жұмыс барысында MIT-да құрылған және IBM 700/7000 үшін бастапқыда жүзеге асырылды. LISP тілінде алғаш рет функционалды ұғымдар жиынтығы енгізілді, сондықтан тілде функционалды программалау парадигмасы ғана қолданылмайды. Lisp одан әрі дамыту сызбасы және Дилан сияқты тілдерін бастады. Тіл туралы ақпарат өңдеу, кейде бірінші функционалдық машина тілі ретінде анықталады. Символдар тізімімен жұмыс істеу үшін бұл тіл ассемблерлік тип болып табылады. Алайда, тұтастай алғанда, IPL императивті түсініктерді қолдануға акценттеліп отыр.
Кеннет Е. Айверсон APL тілін 60 жылдардың басында ойлап шығарды, оны құжаттап Programming Language кітабында шығарды. APL FP тіліне елеулі әсер етті. 90-шы жылдардың басында Айверсон және Роджер Хуэй APL тілінің ізбасарын құрды оны J тілі деп атады. Тоқсаныншы жылдардың ортасында Артур Уитни Айверсонмен бұрын жұмыс істеген, K тілін құрды, кейінірек коммерциялық негізде қаржы саласында қолданылатын болды.
Эдинбург университетінде жетпісінші жылдарыРобин Милнер ML тілін құрды, және Дэвид Тернер Санкт-Эндрюс университетінде SASL тілін дамыта бастады, Кент университетінің қаласында Миранда тілін дамыта бастады. Соныңда ML негізінде бірнеше тіл құрылды, оның ішінде ең танымалы Objective Caml және Standard ML Тағы да жетпісінші жылдары программалау тілі Scheme принципі бойынша құрылып жатты, атақты жұмыс «Лямбда Баяндамалар», сондай-ақ функционалдық бағдарламалау принциптері кең аудитория назарына отырған, сексен бес жыл «Компьютерлік бағдарламалар құрылымы мен түсіндіру» кітабында сипаттамасын алды.
Сексенінші жылдары Пер Мартин Леф интуционистикалық теориялар типін құрды. Бұл теория бойынша, функционалдық бағдарламалау бұрын тәуелді түрі ретінде белгілі болды, сындарлы дәлел алды. Ол теория тілқатысу дәлелдемелер дамыту және көптеген функционалдық тілдерді кейіннен құру үшін қуатты серпін берді. Haskell функционалдық бағдарламалау зерттеулер арқылы алынған идеялар көп біріктіруге әрекет сексенінші жылдардың соңына құрылды.
1-кесте. Функционалды Программалау тілдеріне анықтама
Миранда функционалдық программалау тілі
Miranda функционалдық программалау тілі стандартты функционалды тіл ретінде 1985 жылы Дэвид Тернердің арқасында құрылды. Оның қатан полиморфты жүйелер типі бар және қолданушы типін қолдайды. ML секілді барлық университет қабырғасында пән ретінде оқытылады. Функционалдық нысандар карринг көмегімен құрылады. Жалқау семантикасы бар. Бағдарлама анықтамаларының жинағынан тұрады. SASL және KRC тілдерінің ізбасарлары ML мен HOPE концепциясын пайдаланады.
Код үлгісі:
Map функциясын анықтау және оны 2-ге арттыру
map f[] = []
map f(x:s) = (f x) :(map f s)
L = [1. . 6]
map((+) 2) L
→ [3, 4, 5, 6, 7, 8]
Miranda тілінің даму тарихы
Miranda Роланд Рэбиеннің атынан 02. 02. 00 жылы іске қосылды. Бұл ICQ-дің қысқартылған нұсқасы болып табылады, ол Miranda ICQ деп аталады. Ресми релизі 06. 02. 00 жылы іске қосылды, бұл нұсқасы 0. 0. 1 болды және осы уақыттан оның дамуы басталды.
Нұсқасы 0. 1. x
Miranda әзірлеуші Ричард Hughes (Richard Hughes) болды. Бұл нұсқа өзінің алғашқы релизі болды. Бірінші қосылмалы модульді бірге берілген тілқатысу терезесінде бірлігі сплит болды. MSN хаттама плагин нұсқасы 0. 1. 1. 0 шығару кезінде пайда болды, ол Miranda қолдауымен екінші хаттама болды. Бұл нұсқа тұңғыш рет тіл бумаларын қолдана бастады және бірнеше желілерде жұмыс істей алады. Нұсқасы 0. 1. 0. 0 шығарғаннан кейін, қосылатын модульдердің белсенді дамуын бастады. Нұсқасы 0. 1. 2. 1 шыққаннан кейін, шамамен 50 жалғамалы бағдарлама қол жетімді болды.
Нұсқасы 0. 2. x
Жобаның әзірлеушілер Мартин Оберг, Роберт Рэйнвотер, Сэм K және Лион Лим болып табылады. MSN хаттама қайта өңделіп, хаттаманың Yahoo! Messenger бірінші нұсқасын әзірленді. Онда жылдам хабар, RSS жаңалықтар мен ауа райы үшін байланысы жоқ плагиндер, Миранда байланыс үшін ғана емес, қолданыла бастады. Бағдарламасының ICQ-хаттама өзегі бағдарламасын және жоюды атын өзгерту туралы әңгіме бастау. 17. 12. 02 жоба Миранда атына өзгертілді. Модульдердің саны ~ 140 дана.
Нұсқасы 0. 3. x
Хаттама-ICQ тиісті бағдарламалық қосылатын модулі үшін өзегі шығарылды нұсқасы 0, 3 жылы. Миранда ICQ қолдау орнатпастан ақ іске қосыла алды. Қосылатын модульдердің саны Miranda нұсқасында 0, 3 айтарлықтай өсті, ол ICQ, MSN, AIM және Jabber қосылатын модульдер болды. Кейінірек, Иорген Persson IRC қолдау қосты. Қабылдау және хабар алмасу бағдарламасы SRMM плагиннің ядросының шығарылды. Нұсқасы 0. 3. 3 шығару кезінде қосылатын модульдерің саны 250 данаға жетті.
Нұсқасы 0. 4. x
Нұсқа 0. 4 07. 04. 05 жылы шығарылды. Оның жиынтығы Yahoo плагин хаттама қосулуы болды. Ядросының контактілер тізімі және дерекқор модуль жіберілді. Контактілер тізімі тегжейлі теңшелетін классикалық clist_classic, көп clist_mw, «қазіргі заманғы» clist_modern және clist_nicer: байланыс парақ 4 түрлі нұсқалары болды. Осы сәтте, қосылатын модульдердің саны 400-ден астам дана болды.
Нұсқасы 0. 5. x
Miranda (0, 5) 28. 07. 06 шығарылды және Unicode қолдайтын алғашқы нұсқасы болды. AIM Оскар қолдауы іске асырылды. Miranda-ның бұл нұсқасы аватарларды кең басқару мүмкіндіктері қамтамасыз етеді.
Нұсқасы 0. 6. x
29. 12. 06 жылы 0. 6нұсқасы шығарылды. Бұл нұсқа UPnP (Universal Plug және Play) қолдайды. Көптеген қателер түзетілді және Unicode қолдау жақсарды.
Нұсқасы 0. 7. х
0. 7 нұсқа тестілеу стадиясынан шығып, ресми статусты бар. Бұл нұсқада программаларды өңдейтін, плагиндер, шрифттер, белгілер байланысты өзгертулер енгізілген. Қазіргі уақытта қосылатын модульдердің саны үлкен және қиын сансыз.
Нұсқасы 0. 8. x
0. 8 нұсқасы 0. 7 нұсқасымен салыстырғанда айтарлықтай функция қолдау жақсарту және кеңейту, толық дамуына ресми мәртебесі бар, қауіпсіздік проблемалары жөнделген.
Нұсқасы 0. 9. х
0. 9 нұсқасы әлі өнделуде және оның альфа мәртебесі бар бірақ ол тиімді және жүктеуге қол жетімді. 9. 0 нұсқасында 64 биттік операциялық жүйелерді қолдау басталды, осы серия үшін қосымша MS Visual Studio 2008 кітапханасы қажет.
Scala - оңай және жылдам құру компоненті бағдарламалық қамтамасыз ету үшін қысқа және қауіпсіз жобаланған көп парадигмалы программалау тілі, функционалдық және объектілі-бағдарланған бағдарламалау мүмкіндігін үйлестіре алатын тіл. Мартин Одерски басшылығымен бағдарламалау политехникалық мектеп Федералде Лозанна зертханалық әдістер арқылы 2003 жылы құрылған тілдің алғашқы нұсқасы, бұл тіл Java және . NET платформалар үшін жүзеге асырылады. Джеймс Строон (Eng. Джеймс Строон), Groovy программалау тілін құрушының айтуынша, Scala Java тілінің мұрагері болуы мүмкін.
Даму тарихы
Тіл EPFL бағдарламалау әдістерін зертханасында 2001-2004 жылы құрылды. Ол жақсартылған тілді қолдау компоненті бағдарламалық құралын дамытуға бағытталған ғылыми-зерттеу нәтижесі болып табылады. Тілдің дамуына 2 идея негізі қабылданды:
Тіл компонент бағдарламалау ол шағын және ірі екі бөлігінде сипаттау сол ұғымдарды пайдалана мүмкін болуы тиіс деген мағынада масштабталатын болуы тиіс. Сондықтан, көңіл абстракцияның тетігін, орнына тек кейбір масштабтау деңгейде пайдалы болуы мүмкін примитивтер үлкен санын енгізу құрамы мен ыдырау бағытталған болатын.
Масштабталатын компоненті қолдау бағдарламалау тілінде берілуі мүмкін, біріктіреді және нысанды-бағытталған және функционалдық бағдарламалау қорытады. бағдарламалау парадигмалар қоспасы болып табылатын ұғым, - негізгі техникалық инновацияларды Scala Кейбір. Scala-ның қамтиды статикалық типтеу тілдерінде, қатар бұл парадигмалары әзірге толықтай дерлік бөлінген болатын.
Common Lisp
Common Lisp (CL abbr. ) - Lisp тілінің диалекті ANSI стандартталған. Лисп диалектілерін біріктіру мақсатында әзірленген. Common Lisp коммерциялық және ашық түрдегі асырулары бар.
Common Lisp - көп парадигмасы жалпы мақсаттағы бағдарламалау тілі. Ол, процедуралық функционалдық және объектілі-бағдарланған бағдарламалау тіркесімін қолдайды.
Common Lisp Clos қамтиды; Lisp макро жүйесі мета-бағдарламалау әдістерін және жалпы бағдарламалау пайдалансаңыз, жаңа тіл синтаксисі енгізуге мүмкіндік береді.
Синтаксис
Common Lisp кодын және деректерді екеуін белгілеу үшін S-өрнектерді пайдаланады. Функциялар мен макростарды шақыру тізім болып табылады,
Мұнда бірінші элемент тізімнің басы немесе функция аты, ал қалған бөлігі құйрығы болып табылады.
F#- ол . NET FRAMEWORK отбасысының мультипарадигмалы тілі, ол функционалды программалауды қосымша ретінде императивті программалауға және обьектілі-бағытталған бағдарламалауға пайдаланылады. F# құрылымы жағынан Ocaml-ға ұқсайды тек F# кітапхананың жоғарғысынан және . NET орындалуы жүзеге асырылады. Тілдің негізін қалаушы Дон Сайман, Кембрижде Microsoft Research-те қаланған. Қазіргі уақытта тілдің өңдеуін Microsoft Developer Division жүргізіп жатыр. F # Visual Studio әзірлеу ортамен өте тығыз біріктіріледі және Visual Studio 2010/2012/2013/2015 жеткізу енгізілген. Сондай-ақ, Mac және Linux үшін құрастырушылар әзірледі. Microsoft Visual Studio 2010 және жаңа нұсқаларында дамыту ортасын F # интеграцияланған. Қарашаның 4-інде, 2010 F # компилятор және негізгі кітапхана коды оған Apache License 2. 0 астында жарияланады.
Ерекшеліктері
Тіл коды F # жиі жинақы сол C # коды байланысты шығыс түрлеріне қарағанда түрлері үшін қарсы қауіпсіз. F # қатаң типтендіру жылы имплицитной қайта Айырбастау түріне байланысты қателерді болдырмайды, ол толығымен жоқ. Мұндай рулық бағдарламалау сияқты ерекшеліктері, сондай-ақ жоғары ретті функциялар параметрленген деректер құрылымдардың бақылауға жалпылама алгоритмдерін жазуға мүмкіндік береді.
Көптеген тілдерде, құндылықтардың ең айнымалы болып табылады. Мысалы, айнымалы х С ++ келесі кодты орындауға нәтижесінде 3 мәні сақталады:
intx=2;
x++;
F #, керісінше, барлық әдепкі мәндер тұрақты болып табылады. F # сөз отыратын пайдаланып айнымалы ретінде арнайы тег мәнін талап ететін, айнымалылар мүмкіндік береді:
letx=2// түрақты айнымалы
letmutabley=2// айнымалы
x<-3// қате
y<-3// Ok. y = 3
F # Сонымен қатар, сондай-ақ, айнымалы мәндер болуы мүмкін қол түрлері мен объектілері бар. Алайда, код ең көп қателерін болдырмайды және отладки жеңілдету тұрақты құндылықтар функциясы болып табылады. Сонымен қатар, қарапайым бағдарламаларды паралелдейді. Бұл код императивті тілдегі аналогты кодқа қарағанда сирек күрделі болады.
F # негізгі идеяларының бірі функционалдық бағдарламалау тілінде қолданыстағы коды мен түрі басқа . NET-тілдері оңай қол жетімді болуы мүмкін екенін көз болып табылады. F # Бағдарламаны . NET Framework қосымша орнату бумасы орындау ортасын талап оларды іске қосу үшін, алайда, ЖШС жиналыстар (ехе және . dll файлдар) ішіне жасалады.
Қызықты ерекшелігі (және OCaml айырмашылығы) кеңістіктер (және тек кеңістіктер) еркін санының түрінде үстеме есебінен логикалық салынған коды құрылымдар басқару болып табылады. Осы мақсат үшін қойындыларды қолдау көрсетілмейді.
Компилятор және интерпретатор
F # - құрастырылған бағдарламалау тілі, мен Бірыңғай аралық тілі (ҚСС) пайдаланылатын тілді, сондай-ақ C # тілінде немесе VB. Net жазылған бағдарламалар ретінде аралық тілі. F # -компилятормен (FSC) бірге осы және интерактивті F # -кодты алады F # -интерпретатор (FSI) болып табылады.
Мысалдар:
F# синтаксисі математикалық белгілерге негізделген, ал программалау алгебраға ұқсайды, сондықтанда F# Haskell-ге ұқсатады. Мысалы, сіз жаңа типті анықтаған кезде, айнымалының не жол не бүтін болатынын көрсетіп кетуіңізге болады. Міне бұл көрінер әдісі:
typemyType=
Мұндай типтердің маңызды мысалы болып Option болып табылады, ол мұнда қайсібір типтің мәнін сақтайды не ештене сақтамайды.
typeOption<a>=NoneSomeofa
Бұл стандартты түрі F # болып табылады және жиі (мысалы, деректер құрылымында іздеу) кодты пайдалануға нәтижесі алу мүмкін емес мән жағдайларда пайдаланылады.
Сондай-ақ, коды математикалық түсінігіндегі. Мынадай құрылыс F тең алгебра (х) = х + 1:
letfx=x+1.
1. 2 Функционалдық бағдарламалау мүмкіндіктері
Сіз, бәлкім ойлап отырған шығарсыз, жоғарыда келтірілген функцияны ақтай айламаймын. Мен функционалдық бағдарламалау оқи бастағанда, мен де солай ойладым. Мен қателестім. Мұндай стильдің пайдасы туралы өте жақсы дәлелдер бар. Кейбіреулері субьективті. Мысалы программистер функционалдық программаларды түсіну оңай деп айтады.
Unit тестілеу
ФП әрбір символы өзгеріссіз болғандықтан, функцияларға жанама әсерлер жоқ . Сіз бір функцияға мәндерін айнымалы тыс аясынан мәнін өзгерте алмайсыз және осылайша, басқа функцияларға әсер ете алмайды. Бұл дегеніміз, жалғыз шешімі ол функцияның қайтаратын мәні. Қайтарылатын мәнге кері әсер ететін нәрсе ол функцияға берілетін аргументтер.
Сіз тек қана қажетті дәлелдер арқылы бағдарламада әрбір функцияны тексеруге болады . Функцияларды дұрыс ретпен шақырудың қажеті жоқ.
Cізге керек нәрсе тек аргументтерді шекаралық жағдайларға сәйкес етіп жіберу. Барлық функциялары сіздің бағдарламасы Unit - сынақтар болса, сіз аманатты программалау тілдері жағдайда қарағанда, сіздің бағдарламалық қамтамасыз ету сапасын әлдеқайда сенімді бола аламыз. Бұл функция сонымен қатар қайта қарауға жатады құрылымдық жағдайын, өзгертуге болады - Java немесе C ++ жылы қайтар- мағына жеткілікті емес тексереді. ФП мұндай кемшілік жоқ.
Бағдарламадағы қателерді жөндеу
Егер функционалды программа сіз күткендей өзін басқара алмаса, онда отладка ол бос нәрсе. Сіз әрдайым мәселені қайта ойната аласыз, өйткені кодтың қателігі ол сыртқы кодқа тәуелді емес. ФП жағдай әлдеқайда оңай, егер қайтарылатын мән дұрыс болмаса, кодтың қай жері орындалса да әрқашан дұрыс болмайды. Сіз қатені жаңғыртқаннан кейін, оның көзін табасыз. Ол тіпті жағымды болып табылады.
Cіз бағдарламаның орындалуын тоқтатсаңыз, сіздің алдыңызда шақырулар стекі тұрады. Сіз императивті тілдегідей сияқты, әрбір функцияның шақыруын көре аласыз. Императивті тілде бұл жеткіліксіз, өйткені функция ұяшықтар мәніне байланысты және басқа класстардың күйлеріне. ФП функция тек өз аргументтеріне ғана байланысты, бұл ақпарат сіздің көз алдыңызда тұрды. Тіпті одан да көп, императивті программада қайтарылатын мәнді тексеру жеткіліксіз, оған қарап кодтың дұрыс әлде бұрыс жұмыс жасап жатқандығын айту киын. Кодтың дұрыстығын тексеру үшін, сізге ондаған обьектілерді тексеру қажет. Функционалдық программалауда бар нәрсе ол қайтарылатын мәнге қарау керек. Стекке көз жүгіртіп шыққанда, берілетін және қайтарылатын аргументке назар аудару қажет. Қайтарылатын мән нормаға сай келмесе сіз ары қарай функцияға теренделіп ары қарай жылжисыз. Сіз қате көзін таппағанша бұл бірнеше рет қайталанады.
Көпағымдылық
Функционалдық бағдарлама кез келген өзгеріссіз параллелдеуге дайын. Cізге deadlock туралы аландаудың қажеті жоқ өйткені сізге құлыпталу керек жоқ. Функционалды бағдарламада деректердің бір бөлігі әр түрлі толқында өзгермейді. Бұл Сізге оңай тіпті аманатты тілдерінде тән проблемалар туралы ойланбастан сіздің бағдарлама ағындары қосуға болады дегенді білдіреді.
... жалғасы- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.

Ақпарат
Қосымша
Email: info@stud.kz