Merosxo‘rlik - 1-Mavzu oyd funksional modellari Reja

Merosxo‘rlik;
Polimorfizm;
Inkapsulyatsiya. Har bir obyekt shunday tuzilganki, unga kerakli ma'lumotlar dasturning tashqarisida emas, balki shu obyekt ichida yashaydi. Masalan, agar bizda "Foydalanuvchi" obyekti bo‘lsa, unda foydalanuvchi haqidagi barcha ma'lumotlar bo‘ladi: ism, manzil va boshqalar. Shuningdek, u "manzilni tekshirish" yoki "Pochta ro‘yxatiga obuna bo‘lish" metodlariga ega bo‘ladi.
Inkapsulyatsiya - bu tizimda ishlaydigan ma'lumotlar va metodlarni sinfda birlashtirishga va foydalanuvchidan amalga oshirish tafsilotlarini yashirishga imkon beruvchi tizimning xususiyati.
Inkapsulyatsiya - bu ma'lumotlarni manipulyatsiya qiladigan va kodni birlashtirgan, shuningdek, birinchi navbatda ma'lumotlarga to‘g‘ridan - to‘g‘ri tashqi kirishdan va noto‘g‘ri ishlatishdan himoya qiluvchi tamoyil. Boshqacha qilib aytganda, sinf ma'lumotlariga kirish faqat bir xil sinf metodlari yordamida amalga oshirilishi mumkin.
Inkapsulyatsiya sinf interfeysi tushunchasi bilan uzviy bog‘liq. Aslida, interfeysga kirmagan hamma narsa sinfga kiritilgan.
Inkapsulyatsiya va ma'lumotlarni yashirish. Inkapsulyatsiya - bu sinfda atributlar va metodlarni bir -biriga bog‘lash jarayoni. Inkapsulyatsiya orqali, sinfning ichki tafsilotlarini tashqaridan yashirish mumkin. Bu sinf a'zolariga tashqi tomondan faqat sinf tomonidan taqdim etilgan interfeys orqali kirishga imkon beradi.
Ma'lumotlarni yashirish. Qoida tariqasida, sinf shunday tuzilganki, uning ma'lumotlariga (atributlariga) faqat uning sinf metodlari yordamida kirsa bo‘ladi va tashqi tomondan to‘g‘ridan-to‘g‘ri kirishdan ajratiladi. Obyekt ma'lumotlarini ajratish jarayoni ma'lumotni yashirish deb ataladi.
Misol. Yuqoridagi Circle sinfida siz atributlarni sinfdan tashqarida ko‘rinmas holga keltirish va sinf ma'lumotlariga kirish uchun sinfga yana ikkita metod qo‘shish orqali ma'lumotlarni yashirishingiz mumkin:
setValues(), x va y-koordinatalarga qiymat tayinlash
getValues (), x va y koordinatasini olish qiymatlarni olish metodi.
Bu yerda my_circle obyektining shaxsiy ma'lumotlariga to‘g‘ridan - to‘g‘ri Circle sinfiga kiritilmagan har qanday metod bilan kirish mumkin emas. Buning o‘rniga, setValues() va getValues() metodlari orqali kirish kerak.
Abstraksiya. Obyekt biz obyektga tashqaridan kira oladigan metod va xususiyatlarga ega. Xuddi qurilmadagi biror tugmani bosishimiz mumkin bo‘lganidek. Qurilmada juda ko‘p narsalar bor, bu uning ishlashini ta'minlaydi, lekin asosiy panelda faqat tugma bor. Bu tugma mavhum interfeysdir.
Tizimda biz "foydalanuvchini o‘chirish" deyishimiz mumkin. OYD tilida bu "user.delete()" bo‘ladi - ya'ni biz "user" obyektiga murojaat qilamiz va "delete" metodini chaqiramiz. Qiziq tomoni shundaki, o‘chirish qanday sodir bo‘lishi biz uchun unchalik muhim emas: OYD murojaat paytida bu haqda o‘ylamaslikka imkon beradi.
Masalan, do‘konda ikkita dasturchi ishlaydi: biri buyurtma modulini, ikkinchisi yetkazib berish modulini yozadi. "Buyurtma" obyektida birinchi dasturchi "bekor qilish" metodiga ega, ikkinchi dasturchi esa yetkazib berish tufayli buyurtmani bekor qilishi kerak. Ikkinchi dasturni osongina "order.cancel()" metodi orqali buyurtmani bekor qilish mumkin. Birinchi dasturchiga bekor qilishni qanday amalga oshirishi unga qiziq emas: u qanday xatlar yuboradi, ma'lumotlar bazasiga nima yozadi, qanday ogohlantirishlarni ko‘rsatadi, bu “cancel()” metodining ishidir.
Merosxo‘rlik. Merosxo‘rlik – nusxa ko‘chirish qobiliyati. OYD boshqa obyektning tasviri va o‘xshashligida ko‘plab obyektlarni yaratishga imkon beradi. Bu sizga kodni ikki yuz marta nusxalash va joylashtirishga emas, balki odatdagidek bir marta yozib, keyin ko‘p marta ishlatishga imkon beradi.
Meros - bu bitta obyekt boshqasining xususiyatlarini olish jarayonidir. Aniqroq aytganda, obyekt boshqa obyektning asosiy xususiyatlarini meros qilib olishi va unga o‘ziga xos xususiyat va metodlarni qo‘shishi mumkin.
Meros - bu mavjud sinflardan yangi sinflar yaratish, uning imkoniyatlarini kengaytirish va takomillashtirish imkonini beradigan mexanizm. Mavjud sinflar asosiy sinflar (ajdod, supersinflar), yangi sinflar esa bola (avlod) sinflari deb nomlanadi.
Masalan, sizda "Foydalanuvchi" ideal obyekt bo‘lishi mumkin: unda siz foydalanuvchi bilan sodir bo‘lishi mumkin bo‘lgan hamma narsani yozasiz. Sizda xossa bo‘lishi mumkin: ism, yosh, manzil, karta raqami. Va "chegirma berish", "buyurtmani tekshirish", "buyurtmalarni topish", "qo‘ng‘iroq qilish" usullari bo‘lishi mumkin.
Meros – bu tizimning xususiyatidir, bu sizga mavjud sinfga asoslangan yoki qisman yoki to‘liq olingan funksiyalarni tavsiflashga imkon beradi.
Meros qoldiriladigan sinfga asosiy yoki ajdod deyiladi. Yangi sinf - avlod, merosxo‘r yoki hosil qilingan sinf deb ataladi.
Shuni ta'kidlash kerakki, hosil qilingan sinf ajdodning spetsifikatsiyasiga to‘liq mos keladi, lekin qo‘shimcha funksiyalarga ega bo‘lishi mumkin. Interfeyslar nuqtai nazaridan, har bir olingan sinf ajdod inf interfeysini to‘liq amalga oshiradi. Buning aksi to‘g‘ri emas.
Polimorfizm. Polimorfizm – yunoncha so‘z bo‘lib, u turli shakllarga ega bo‘lish qobiliyatini bildiradi. Obyektga yo‘naltirilgan paradigmada polimorfizm amallarni ular bajaradigan holatiga qarab har xil usulda qo‘llashni nazarda tutadi. Polimorfizm har xil ichki tuzilishga ega bo‘lgan obyektlarga umumiy tashqi interfeysga ega bo‘lishga imkon beradi. Polimorfizm, ayniqsa, merosni amalga oshirishda samaralidir.
Polimorfizm - umumiy muloqot tili. OYDda barcha obyektlar bir-biri bilan ular tushunadigan tilda muloqot qilishi muhim. Agar har xil obyektlarda "delete" metodi bo‘lsa, u aynan shunday ishni bajarishi va hamma joyda xuddi shunday yozilishi kerak. Bir obyektda "delete", ikkinchisida "clear" bo‘lishi mumkin emas.
Shu bilan birga, obyekt ichida metodlar turli yo‘llar bilan amalga oshirilishi mumkin. Masalan, biror narsani o‘chirish - bu ogohlantirish, keyin ma'lumotlar bazasidagi elementni o‘chirilgan deb belgilash va foydalanuvchini o‘chirish uning xaridlarini bekor qilishni, pochta ro‘yxatidan obunani bekor qilishni va sotib olish tarixini arxivlashni bildiradi. Voqealar boshqacha, lekin dasturchi uchun bu muhim emas. U faqat delete() metodiga ega va unga ishonadi.
2- mavzu Multiparadigmal dasturlash tillari Reja 1. Multiparadigmal dasturlash tillari xaqida malumot 2. Python multiparadigmal dasturlash tiliga bog’liqligi 3. C++, o'yin yaratishdan tarmoq dasturlashgacha turli sohalarda ishlatiluvchi multiparadigmal dasturlash tili xaqida
Multiparadigmal dasturlash tillari, bir nechta dasturlash paradigmalari (model, usullar)ni birlashtirgan tillardir. Bu tillar, kodni yozish va boshqarishda bir qancha dasturlash usullarini o'z ichiga olgan va dasturchilar uchun o'zlarining aloqador vazifalarni yechishga imkon beradi. Quyidagi bir nechta mashhur multiparadigmal dasturlash tillaridan ba'zilarini ko'rsatishim mumkin:
Python
Python, obyektga yo'naltirilgan, funktsional va imperativ dasturlash paradigmalari bilan birga yozilgan. U o'yinchilik va daftar-royxat tuzatish, veb-dasturlar yaratish, ma'lumotlar tahlili va boshqa turdagi vazifalarni bajarishda keng qo'llaniladi.
JavaScript
JavaScript, asosan brauzerda ishlaydigan, obyektga yo'naltirilgan, protsedural, va funktsional dasturlash paradigmalari bilan yozilgan. U veb-saytlarni interaktiv qilish, tajribali dasturlarni yaratish, veb-interfeyslarni boshqarish uchun o'ziga xosdir.
Java
Java, obyektga yo'naltirilgan, imperativ va funktsional paradigmalarga ega dasturlash tili. U tarmoq dasturlashidan boshlab, kuchli va iste'molchilarning ko'p turlidagi dasturlarni yaratishda qo'llaniladi.
C#
C#, Microsoft tomonidan ishlab chiqilgan, obyektga yo'naltirilgan, imperativ va funktsional dasturlash paradigmalari bilan yozilgan. U Unity o'yin yaratish muhiti uchun keng qo'llaniladi va Visual Studio dasturlash muhiti orqali yoziladi.
Scala
Scala, Java Virtual Machine (JVM) uchun yaratilgan va obyektga yo'naltirilgan, funktsional va imperativ paradigmalarni biriktirgan til. U avtomatik xotiraga ob'ektlar, dasturlash tili veb-saytlar yaratish va boshqa vazifalarni bajarish uchun foydalaniladi.
C++
C++, obyektga yo'naltirilgan, imperativ va obyektni tartibga solishtirish (generic programming) paradigmalari bilan yozilgan til. U ko'p maqsadli dasturlar, operatsion tizimlar va grafika sohalari uchun qo'llaniladi.
Har bir dasturlash tili, o'zining xususiyatlari va foydalangan sohalari bo'yicha aloqador bo'ladi. Multiparadigmal dasturlash tillari esa bu turlarni birlashtirib, dasturchilarga turli vazifalarni oson bajarish imkonini beradi.
dastlabki kompyuterlarni hujjatlashtirishdan tortib, dasturiy taʼminotni ishlab chiqish uchun zamonaviy vositalarni oʻz ichiga oladi. Ilk dasturlash tillari juda oʻta tor doirada qoʻllanilishga moʻljallangan boʻlib, ular matematik belgilarga va shunga oʻxshash tushunarsiz sintaksisga tayangan[1].
Kompyuter texnikasining rivojlanishi dasturlash tillarida algoritmlarni yozib olish uchun turli xil yangi belgilar tizimlarining paydo boʻlish jarayonini belgilab berdi. Bunday tilning paydo boʻlishining maʼnosi dastur kodini soddalashtirishdan iborat edi.
Dasturlash tillarini besh avlodga boʻlish qabul qilingan. Birinchi avlodga oʻtgan asrning 50-yillari boshlarida, birinchi kompyuterlar endigina paydo boʻlgan paytda tuzilgan tillar kiradi. Bu "bir satrda bir buyruq" prinsipi asosida qurilgan birinchi assembler tili edi.
XX asr davomida kompilyatorlar nazariyasi boʻyicha olib borilgan izlanishlar yuqori darajadagi dasturlash tillarini yaratishga olib keldi, ular koʻrsatmalarni uzatish uchun qulayroq sintaksisdan foydalanadilar
Python multiparadigmal dasturlash tili sifatida bilinadi, ya'ni u bir nechta dasturlash paradigmalari bilan birga yozilgan. Python yuqori darajada kuchli va oson, shuningdek o'zining o'rni ifodalash, variativlik va o'ziga xos sintaksisiga ega bo'lgani sababli dasturchilar uchun sevimli til hisoblanadi. Quyidagi paradigmalarda Pythonning ahamiyati kuchli
Tijoriy maqsad uchun ishlab chiqilgan birinchi til FORTRAN (FORmula TRANslation) boʻlib, 1956-yilda (birinchi yoʻriqnomasi 1956-yilda paydo boʻlgan, lekin birinchi boʻlib 1954-yilda ishlab chiqarila boshlangan) IBMda Jon Bekus boshchiligidagi guruh tomonidan ishlab chiqilgan. U ilmiy-texnik hisob-kitoblar uchun moʻljallangan edi.
1953-yil oxirida Jon Bekus IBM 704 kompyuterini dasturlash uchun assemblerdan samaraliroq boʻlgan muqobil dasturlash tilini ishlab chiqishni taklif qildi. 1954-yil oʻrtalarida Fortran tilining spetsifikatsiyasi loyihasi tugallandi. Biroq ushbu dasturlash tili avval boshida foydalanuvchilar tomonidan iliq kutib olinmadi, chunki Fortran assemblerga qaraganda past unumdorlikka ega kod yaratadigan yuqori darajadagi dasturlash tili deya qarala boshladi. Shu tufayli uni optimallashtirish zarurati vujudga keldi.
Keyinchalik bu til olimlar tomonidan intensiv hisoblash dasturlarini yozish uchun keng qoʻllanilgan. Murakkab maʼlumotlar turini kiritish uni ayniqsa texnik ilovalar uchun moslashtirdi.
1960-yilga kelib, Fortranning IBM 709, 650, 1620, 7090 kompyuterlari uchun versiyalari paydo boʻldi. Uning katta mashhurligi raqobatchi kompyuter ishlab chiqaruvchilarni oʻz kompyuterlari uchun Fortran kompilyatorlarini tuzishga undadi. Shunday qilib, 1963-yilga kelib turli platformalar uchun 40 dan ortiq kompilyatorlar tuzilgan edi. Shu bois Fortran birinchi keng tarqalgan dasturlash tili hisoblanadi[6].
Fortran SSSRʼda Gʻarbga qaraganda kechroq paydo boʻldi, chunki dastlab Algol SSSRʼda yanada istiqbolli til hisoblangan. Sovet fiziklarining 1960-yillarda Fortran dasturlari yordamida deyarli barcha hisob-kitoblar amalga oshirilgan CERNʼdagi hamkasblari bilan aloqasi Fortranni amalga oshirishda muhim rol oʻynadi.
Fortrandagi birinchi sovet kompilyatori 1967-yilda „Minsk-2“ mashinasi uchun
Obyektga yo'naltirilgan dasturlash (Object-Oriented Programming – OOP)
Python obyektga yo'naltirilgan dasturlash tilidir. Bunda ob'ekt modeli ko'rsatilgan va har bir narsa ob'ekt hisoblanadi. Klasslar va ob'ekt ma'naviy bo'linadi, va dasturchilar o'z klasslarini yaratish, ularni boshqarish va ob'ektlar orqali ma'lumot almashishlari mumkin
Protsedural dasturlash
Java protsedural dasturlash paradigmasini ham qo'llaydi. Funksiyalarning yaratilishi, o'zgaruvchilarni boshqarish, shartlar, sikllar va boshqa protsedural dasturlash prinsiplarini o'z ichiga oladi.
Java bu multiparadigmal xususiyati bilan, qo'shimcha kuchli xususiyatlar, xavfsizlik va to'g'ri ishlashni ta'minlashda ishlatiladi. Java Virtual Machine (JVM) o'rtasida ishlaydi va turli platfomalarda dasturlarni o'zlashtirish imkonini beradi
C++, o'yin yaratishdan tarmoq dasturlashgacha turli sohalarda ishlatiluvchi multiparadigmal dasturlash tili hisoblanadi. Uda, C++ usullar va paradigmalarni biriktiradi, va dasturchilar uni protsedural, ob'ektga yo'naltirilgan va generik dasturlashga qo'llaydilar. Quyidagi paradigmalarda C++ning ahamiyati kuchli
Protsedural dasturlash
C++ protsedural dasturlashga imkon beradi. Dasturchilar funksiyalarni yaratish, o'zgaruvchilarni boshqarish, shartlar va sikllar qo'llash orqali klassik protsedural dasturlash usullarini o'zlashtirishlari mumkin.
Obyektga yo'naltirilgan dasturlash (Object-Oriented Programming - OOP)
C++ obyektga yo'naltirilgan dasturlashga yana bir qadam qo'shadi. U ob'ekt modelini o'z ichiga olgan va dasturchilarga klasslar, ob'ektlar, inkapsulyatsiya, polimorfizm va boshqa OOP prinsiplarini qo'llayish imkonini beradi.
C++ning bu multiparadigmal xususiyati uni keng tarqalgan sohalarda foydalanish imkonini beradi. Bu til, kuchli va flexibil dasturlarni yaratish uchun qo'llaniladi va turli vazifalarni bajarishda ishlab chiqarish va effektivlikni ta'minlaydi.
3-mavzu Parallel algoritmlar Reja 1. Parallel algoritmlar xaqida malumot 2. Parallel tashkil etishda yuzaga keladigan echimlarni ko'rib chiqish 3. Parallel algoritmlarni zamonaviy dasturiy ta’minotlarga bog’liqligi
1. Parallel algoritmlar, ma'lum bir vazifani bajarish uchun har bir amalni boshqarishning o'zgaruvchilarni bir vaqtda boshqarishda yoki bir qancha asosiy qurilmalarda (processorlar, intizomlar) bajarishda ishlatiladigan algoritmlardir. Bu turiy algoritmlar, parallelismni olish yoki distributive hisoblash uchun yozilgan vaqtiy, hajmi va kuchliliqni pasaytirish uchun mo'ljallangan muhiti muhokama qiladi.
Parallel algoritmlar quyidagi asosiy xususiyatlarga ega bo'ladi:
Bir vaqtda ko'p amallarni bajarish Parallel algoritmlar bir vaqtda ko'p amallarni bajarishda mo'ljallangan. Misol uchun, bir massivdagi barcha elementlarni bir vaqtda hisoblash, ma'lumotlarni qidirish, tasodifiy sonlar yaratish kabi.
Parallelismda bo'lgan o'zgaruvchilarni boshqarish Parallel algoritmlar parallelismni olish uchun ko'p qurilmalarni boshqarishda mo'ljallanganlar. Har bir qurilma o'zining o'zgaruvchilarni boshqaradi va parallel algoritmlar bu o'zgaruvchilarni ko'p qurilmalarni boshqarish uchun ko'rsatadi.
Distributive ishlov berish Parallel algoritmlar yordamida ma'lumotlar distributive ravishda ishlov berilishi mumkin. Misol uchun, ko'p qurilmali parallel hisoblashda har bir qurilma o'zini boshqarish uchun tayyorlash, hisoblash va natijalarni to'plashadi.
Parallel algoritmlar quyidagi turlarda bo'ladi:
Task Parallelism (Vazifalar bo'yi Parallelizm) Bu turiy parallelizm vazifalarni bir vaqtda boshqarishga asoslangan. Har bir vazifa o'zining qo'llanuvchilarni o'z ichiga oladi.
Data Parallelism (Ma'lumotlar bo'yi Parallelizm) Bu parallelizm turida massivlar, ro'yxatlar yoki boshqa ma'lumot strukturasi bo'ylab parallel amallar bajariladi. Har bir qurilma o'zining maydonini ishlab chiqaradi.
Pipeline Parallelism (Truboprovod Parallelizmi) Bu turiy parallelizm ma'lumotlar trubasiga o'xshash, bir ko'plab amallarning bajarilishini o'z ichiga oladi. Har bir qurilma o'zining faqat bitta vazifasini bajaradi va natijani keyingi qurilma uchun uzatadi.
Parallel algoritmlar avtomatik ravishda parallel muhiti yoki dasturlash tillarini (masalan, OpenMP, MPI, CUDA) qo'llaydilar. Bu algoritmlar ko'p o'zgaruvchili, intensiv hisoblash va distributive vazifalarni bajarishda qo'llaniladi
2. Parallel tashkil etishda yuzaga keladigan echimlarni ko'rib chiqish parallel algoritmlarni amalga oshirish uchun jarayonlar biroz beradi ko'p protsessorli arxitektura va tizimlarning xilma-xilligi g'oyasi:
- protsessorlar ko'p bo'lishi mumkin va ular boshqacha bo'lishi mumkin
buyruqlar tizimlari;
- protsessorlar avtonom ishlashi yoki birgalikda ishlashi mumkin
ish;
- alohida protsessorlar bo'sh ishlashi mumkin, yo'q
foydali ishlarni bajarish;
- protsessorlar o'zlarining mahalliy xotiralariga ega va umumiy xotirada ishlashi mumkin
xotira;
- harakatlarni protsessorlarga taqsimlash buyurilishi mumkin
dastur yoki nazoratchi tomonidan amalga oshirilishi mumkin, hisoblashning ma'lum bir modelini qo'llab-quvvatlaydi. Bunday makon yo'nalishda tabiiy rivojlanishga imkon beradi asenkron jarayonlarni modellashtirish, shuningdek, buni tushunishga yordam beradi
dasturlarning bajarilishi uchun kontekstlar mavjud, ularga bog'liq buyruqlarning bajarilishi. Dastur natijalarini tahlil qilishda quyidagilar aniqlanadi boshqaruv xatolarining turli toifalari va imkonsiz bo'lganlar ajralib turadi ularni tashkil etuvchi barcha buyruqlar bajarilishi mumkinligiga qaramay, harakatlar. Ta'minlashda harakatlarni qisman tartibga solishning roli namoyon bo'ladi hisoblash boshqaruvlari yordamida dasturlarning ishlashi,
harakatlarning ketma-ket bajarilishining imperativligini aks ettiruvchi parallel jarayonlarni tashkil qilishda. Optimallashtiruvchi kompilyatorlar har qanday dastur ko'pincha ko'p dastur sifatida ko'rib chiqiladi. Parallel algoritmlarga o'tish tarkibni qayta ko'rib chiqishga olib keladi ko'p tushunchalar va har xil turlarni aks ettiruvchi yangi atamalarni kiritish oddiy uchun alohida ahamiyatga ega bo'lmagan hodisalar va ta'sirlar
ketma-ket algoritmlar. Parallel bo'lgan kunlar o'tdi dasturlash algoritmik bo'lmagan deb nomlangan. Endi atama "parallel algoritm" algoritm nima qila olishini tushunish bilan bog'liq bir va bir guruh ijrochilar tomonidan ijro etiladi. Bunday tushuncha
muammolarni hal qilish maydonini keskin kengaytiradi, yondashuvlarni o'zgartiradi
parallellikdan foydalanadigan echimlarni amalga oshirish va ma'lum darajada
vazifalarni belgilash va hayotni rejalashtirishga ta'sir qiladi foydalanishga yo'naltirilgan muammolarni hal qilish dasturlari tsikli parallellik. Avvalo, quyidagi masalalarni aniqlashtirish kerak muammoning bayonotini shakllantirish:
1. Dasturning hayotiy tsiklining ish qobiliyati qanchalik o'zgaradi
parallel algoritm yordamida muammoni hal qilishmi?
2. Muammoni hal qilishda modelni qay darajada hisobga olish kerak
parallellikmi?
3. Parallel rivojlanish yutuqlarini qanday asoslash va o'lchash kerak
algoritmmi?
4. O'tish paytida muammoning bayoni qanchalik o'zgaradi
parallel algoritmlar?
5. Parallel dasturlash paradigmasi nima beradi
parallel algoritmni ishlab chiqishmi?
6. Ishlab chiqilgan parallel vositalar qanday taqdim etiladi
rivojlanishdan oldingi bosqichda muammoni hal qilish algoritmlari
dasturlar?
Yarim asrlik an'anaviy ketma-ket dasturlash tizimlarga to'plangan juda ko'p sonli dasturlar disk raskadrovka qilindi dasturlash va standart kutubxonalar. Ishlab chiqarishni o'zgartirish tayyor disk raskadrovka qilingan dasturiy echimlarga ega bo'lgan vazifalar uchun ruxsat etilgan parallellikni hisobga olish takroriy dasturlash va bu juda qiyin, qayta disk raskadrovka. Asosiy dalil – tabiiyni hisobga olishning maqsadga muvofiqligi
muammoni hal qilish darajasida parallellik, echishda yo'qolgan oddiy algoritmlar orqali vazifalar. Parallel tillar soni parallel algoritmlarni amalga oshirish uchun qulay dasturlash yil ular bir yildan beri o'sib bormoqda, garchi ulardan foydalanish tashkilotning barcha muammolarini hal qilmasa ham parallel hisoblash. Shunday qilib, parallel algoritmni qismlarga bo'lib amalga oshirish mumkin turli xil qurilmalar to'plamiga, so'ngra birlashishga olingan natijalar va maqsadli natijani olish. Vujudga keladi
amaliy savollar:
- Algoritm ta'rifida qismlar qanday ta'kidlangan, alohida qurilmalar tomonidan bajariladimi?
- Algoritmni amalga oshirish aniq ishlatilishi kerakmi
3. Ba’zi bir zamonaviy dasturiy ta’minotlarga e’tibor qilsak, ularning ayrim tuzuvchilari dasturning ishlash effektivligiga va na xotiraning aql bilan ishlatilishiga e’tibor qilishadi. Ularning fikricha, dastur ko’p joy olsa, foydalanuvchi qo’shimcha xotira sotib olishga majbur bo’ladi yoki yangi tezroq ishlaydigan komyuter sotib oladi. Lekin kompyuterlarning tezligi cheksiz kattalashmaydi. U simli kabelda elektronlarning harakat tezligi bilan, optik kabellarda yorug’likning tarqalish tezligi bilan va hisoblashda qatnashadigan kompyuterlar orasidagi aloqa kanallarining komutativlik tezligi bilan chegaralanadi. Boshqa cheklovlar kompyuter imkoniyatlari bilan bog’liq emas, balki qo’yilgan masalaning murakkablik darajasiga bog’liq. Shunday masalalar mavjudki, ularni yechish uchun eng tez ishlaydigan algoritmlar qo’llanilganda ham odam umri yetmaydi. Bu masalalar orasida yaqinroq javob olish uchun algoritmlar kerak bo’ladigan, juda zarurlari ham mavjud.
Komyuter sistemalarini to’rtta asosiy kategoriyaga ajratish mumkin. Bu uchun qanday ishlashi haqidagi ko’rsatmani birmuncha almashtiramiz. Markaziy protssessor nuqtai nazaridan dastur rasshifrovka qilish va bajarish kerak bo’lgan qoidalar oqimidir. Ma’lumotlarni ham oqim ko’rinishida kiruvchi deb hisoblash mumkin. Biz tahlil qiladigan to’rtta kategoriya ma’lumot va qoidalarning bitta oqimga kirish-kirmasligi bilan aniqlanadi
Bitta qoida bitta ma’lumotlar oqimi (SISD) modeli o’zida bitta protssesorli klassik modelni ko’rsatadi. Unga eski avlod kompyuterlari bilan bir qatorda ko’pgina zamonaviy kompyuterlar ham misol bo’ladi. Bunday kompyuter protsessori har qanday vaqt momentida faqatgina bitta qoidani bajarishga qodir va faqat bitta ma’lumotlar to’plami bilan ishlay oladi. Bu kabi ketma-ket sistemalarda boshqa kategoriyalardan farqli ravishda hech qanday parallellik yo’q
Bitta qoida /bir nechta ma’lumotlar oqimibo’lgan komyuterlarda (SIMD) bir xil operatsiyani turli xil ma’lumotlar bilan ishlovchi bir nechta protssessorlar mavjud. SIMD - mashinalar ba’zan vektorli protsessorlar deb ham ataladi, chunki ular vektorlar ustida amal bajarish uchun juda qulay. Bunda har qaysi protssesorga bitta vector koordinasi beriladi va amal bajarilgandan so’ng natija vektor kelib chiqadi. Masalan, vektorlarni qo’shish – koordinatalar orqali bajariladigan amal. Vektorlar yig’indisining birinchi koordinatasi – qoshiluvchi vektorlar birinchi koordinatalarining yig’indisi, ikkinchi koordinata – ikkinchi koordinalar yig’indisi va hokazo. Bizning SIMD mashinada har qaysi protssesor kiritiluvchi vektorlarning ikkita koordinatasini haqida qoidasi oladi. Bu yagona qoidani bajargandan so’ng natija to’liq hisoblanadi. E’tibor bersak, N ta elementdan iborat vektorni yechishga SISD mashinaga N ta iteratsion siklni bajarish kerak bo’lsa, protsessorlar soni N tadan kam bo’lmagan SIMD – mashinaga bitta amalning o’zi yetarli
Bir vaqtda faqat bir xil ma’lumotlar ustida amal bajarish avval g’alati tuyulishi mumkin, chunki qandaydir bir sonni kvadratga ko’tarish, ikkiga ko’paytirish, o’nga bo’lish kabi dasturlar kamdan-kam uchraydi. Lekin bu holatga boshqa nuqtai-nazardan qarasak, bunday tipdagi mashinalarda sonning tub yoki murakkabligini tekshirishni takomillashtish mumkinligini ko’ramiz. Agar protsessorlar soni N ta bo’lsa, unda biz ixtiyoriy 1 va N2 orasidagi sonlarning tub yoki murakkabligini MISD – mashina orqali bitta operatsiyada tekshirishimiz mumkin.
Bu kategoriya kategoriyalar orasida ancha murakkabidir. MIMD –sistemalar holatida biz o’z qoidasini amalga oshira oladigan bir nechta protsessor bilan ish ko’ramiz. Bundan tashqari, bir nechta ma’lumotlar oqimi ham mavjud va har qaysi protsessor o’z ma’lumotlar to’plami bilan ishlay oladi. Bu amaliyotda MIMD – sistema har qaysi protsessorda o’z dasturini yoki o’sha dasturning alohida qismlarini yoki SIMD – konfiguratsiyaday vektorli amallarni bajara olishini anglatadi. Ko’pchilik parallelizmning yangicha yondashuvlarida, masalan komyuter klasterlari yoki multiprotsessorli sistemalarning asosida MIMD – kategoriya yotadi
Parallel hisoblash ning bir turi hisoblash bu erda ko'plab hisob-kitoblar yoki bajarilish jarayonlar bir vaqtning o'zida amalga oshiriladi.[1] Katta muammolarni ko'pincha kichikroq muammolarga bo'lish mumkin, keyinchalik ularni bir vaqtning o'zida hal qilish mumkin. Parallel hisoblashning bir necha xil shakllari mavjud: bit darajali, ko'rsatma darajasi, ma'lumotlar va vazifa parallelligi. Parallelizm uzoq vaqtdan beri ishlatilgan yuqori samarali hisoblash, ammo jismoniy cheklovlarning oldini olish tufayli keng qiziqish uyg'otdi chastota miqyosi.[2] So'nggi yillarda kompyuterlar tomonidan elektr energiyasini iste'mol qilish (va natijada issiqlik ishlab chiqarish) tashvishga solmoqda.[3] parallel hisoblash inverktiv paradigma bo'ldi kompyuter arxitekturasi shaklida, asosan ko'p yadroli protsessorlar.[4]
Parallel hisoblash bilan chambarchas bog'liq bir vaqtda hisoblash - ular tez-tez birgalikda ishlatiladi va ko'pincha bir-biriga qarama-qarshi bo'lib turadi, garchi ikkalasi bir-biridan farq qiladi: bir-biriga o'xshashliksiz parallellik bo'lishi mumkin (masalan, bit darajasidagi parallellik ) va parallelliksiz bir vaqtda (masalan, tomonidan ko'p vazifalarni bajarish kabi) vaqtni taqsimlash bitta yadroli protsessorda).[5][6] Parallel hisoblashda hisoblash vazifasi odatda mustaqil ravishda qayta ishlanishi mumkin bo'lgan va natijalari tugagandan so'ng birlashtiriladigan bir nechta, ko'pincha juda o'xshash kichik vazifalarga bo'linadi. Aksincha, bir vaqtda hisoblashda turli jarayonlar ko'pincha tegishli vazifalarni hal qilmaydi; ular qilganda, odatdagidek tarqatilgan hisoblash, alohida vazifalar har xil xarakterga ega bo'lishi mumkin va ko'pincha ba'zi birlarini talab qiladi jarayonlararo aloqa ijro paytida.
Parallel kompyuterlar, taxminan, apparatlarning parallellikni qo'llab-quvvatlash darajasiga qarab tasniflanishi mumkin ko'p yadroli va ko'p protsessor bir nechta kompyuterlar ishlov berish elementlari bitta mashina ichida esa klasterlar, MPPlar va panjara bitta topshiriq ustida ishlash uchun bir nechta kompyuterlardan foydalaning. Ixtisoslashgan parallel kompyuter arxitekturalari ba'zida an'anaviy vazifalarni tezlashtirish uchun an'anaviy protsessorlar bilan birga qo'llaniladi.
Ba'zi hollarda parallellik dasturchi uchun shaffof, masalan, bit darajasida yoki buyruq darajasidagi parallellikda, ammo aniq parallel algoritmlar, ayniqsa, paralellikdan foydalanadiganlarni yozishdan ko'ra qiyinroq ketma-ket birlari,[7] chunki bir xillik potentsialning bir nechta yangi sinflarini taqdim etadi dasturiy ta'minotdagi xatolar, ulardan poyga shartlari eng keng tarqalgan. Aloqa va sinxronizatsiya turli xil kichik topshiriqlar orasida, odatda, dasturning optimal parallel ishlashini ta'minlash uchun eng katta to'siqlar mavjud.
An'anaga ko'ra, kompyuter dasturlari uchun yozilgan ketma-ket hisoblash. Muammoni hal qilish uchun algoritm ko'rsatmalarning ketma-ket oqimi sifatida qurilgan va amalga oshirilgan. Ushbu ko'rsatmalar a-da bajariladi markaziy protsessor bitta kompyuterda. Bir vaqtning o'zida faqat bitta ko'rsatma bajarilishi mumkin - bu buyruq tugagandan so'ng keyingisi bajariladi.
Parallel hisoblash, boshqa tomondan, muammoni hal qilish uchun bir vaqtning o'zida bir nechta ishlov berish elementlaridan foydalanadi. Bunga har bir ishlov berish elementi boshqalar bilan bir vaqtda algoritmning bir qismini bajarishi uchun muammoni mustaqil qismlarga ajratish orqali erishiladi. Qayta ishlash elementlari xilma-xil bo'lishi mumkin va bir nechta protsessorlarga ega bo'lgan bitta kompyuter, bir nechta tarmoq kompyuterlari, ixtisoslashtirilgan qo'shimcha qurilmalar yoki yuqoridagi har qanday kombinatsiya kabi manbalarni o'z ichiga oladi.[8] Tarixiy parallel hisoblash ilmiy hisoblash va ilmiy muammolarni simulyatsiya qilish uchun ishlatilgan, ayniqsa tabiiy va muhandislik fanlari, masalan. meteorologiya. Bu parallel apparat va dasturiy ta'minotni loyihalashtirishga olib keldi, shuningdek yuqori samarali hisoblash.[9]
Chastotani o'lchash yaxshilanishining ustun sababi edi kompyuterning ishlashi 1980 yillarning o'rtalaridan 2004 yilgacha ish vaqti dasturning bir buyruq uchun o'rtacha vaqtga ko'paytirilgan ko'rsatmalar soniga teng. Har bir narsani doimiy ravishda ushlab turish, soat chastotasini ko'paytirish ko'rsatmani bajarish uchun o'rtacha vaqtni pasaytiradi. Shunday qilib chastotaning ko'payishi hamma uchun ish vaqtini pasaytiradi hisoblash bilan bog'langan dasturlar.[10] Biroq, quvvat sarfi P chip tomonidan tenglama bilan berilgan P = C × V 2 × F, qayerda C bo'ladi sig'im soat tsikliga o'tish (kirishlari o'zgaradigan tranzistorlar soniga mutanosib), V bu Kuchlanish va F protsessor chastotasi (sekundiga tsikllar).[11] Chastotaning ko'payishi protsessorda ishlatiladigan quvvat hajmini oshiradi. Protsessorning quvvat sarfini oshirish oxir-oqibat bunga olib keldi Intel 2004 yil 8 mayda uning bekor qilinishi Tejas va Jayxavk protsessorlar, bu odatda dominant kompyuter arxitekturasi paradigmasi sifatida chastota masshtabining oxiri sifatida keltirilgan.[12]
Elektr energiyasini iste'mol qilish va katta qizib ketish muammosini hal qilish markaziy protsessor (CPU yoki protsessor) ishlab chiqaruvchilar bir nechta yadroli energiya tejaydigan protsessorlarni ishlab chiqarishni boshladilar. Yadro protsessorning hisoblash birligidir va ko'p yadroli protsessorlarda har bir yadro mustaqil bo'lib, bir vaqtning o'zida bir xil xotiraga kira oladi. Ko'p yadroli protsessorlar ga parallel hisoblash olib keldi ish stoli kompyuterlar. Shunday qilib, ketma-ket dasturlarni parallellashtirish asosiy dasturlash vazifasiga aylandi. 2012 yilda to'rt yadroli protsessorlar standart bo'ldi ish stoli kompyuterlar, esa serverlar 10 va 12 yadroli protsessorlarga ega. Kimdan Mur qonuni har 18-24 oyda bir protsessor uchun yadrolar soni ikki baravar ko'payishini taxmin qilish mumkin. Bu 2020 yildan keyin odatdagi protsessor o'nlab yoki yuzlab yadrolarga ega bo'lishini anglatishi mumkin.[13]
An operatsion tizim mavjud bo'lgan yadrolarda turli xil vazifalar va foydalanuvchi dasturlarining parallel ravishda bajarilishini ta'minlashi mumkin. Biroq, ketma-ket dasturiy ta'minot dasturi ko'p yadroli arxitekturadan to'liq foydalanishi uchun dasturchi kodni qayta tuzishi va parallel qilishi kerak. Ilova dasturiy ta'minotining ishlash vaqtini tezlashtirish endi chastotalarni kattalashtirish orqali amalga oshirilmaydi, aksincha dasturchilar ko'p yadroli arxitekturalarning hisoblash quvvatining ortib borishi uchun o'zlarining dasturiy ta'minot kodlarini parallellashtirishlari kerak.
4 – mavzu Dasturlash tillarida paralellik modellari Reja 1. Dasturlash tillarida paralellik modellari xaqida 2. Dasturlash tillarida parallellik modellari 3. Funktsional dasturlash rekursiv ta'riflar
Dasturlash tillarida parallelizm, ya'ni amallarni parallel ravishda bajarish, har bir dasturlash tillariga o'z xususiyatlar va modellar bo'yicha keladi. Har bir parallelizm modeli, parallel amallarni bajarishda foydalaniladigan texnologiyalarni va prinsiplarni aks ettiradi. Quyidagi, ba'zi mashhur parallelizm modellari haqida malumot:
Protsessorning Parallelizmi
Bu model, bir kompyuterda bir nechta protsessorlarni ishlatish imkonini beradi. Yagona protsessor tashkil etilgan amallarni bajarish uchun yozilgan dasturda ishlov beradi. Parallelism shunday qilib amallarni bir nechta protsessorlarni ishlatish orqali bajarish imkonini beradi.
Firibgar Parallelizmi (Thread-Level Parallelism - TLP)
TLP modeli, bir dasturda bir nechta firibgar yaratib, har bir firibgar o'zining o'zini bajaradi. Bu model yordamida bir dastur bitta amalni ikki yoki undan ko'p joyda parallel ravishda bajarishi mumkin.
Vazifalar Bo'yi Parallelizmi (Task-Level Parallelism - TAP)
TAP modeli, dasturlashda amallar to'plamini parallel ravishda bajarish uchun yaratilgan. Har bir amalni bitta protsessor boshqaradi va undan tashqari, amallar parallel ravishda bajariladi.
Vector (SIMD) Parallelizmi
SIMD (Single Instruction, Multiple Data) parallelizmi, bitta instruksiya orqali bir nechta ma'lumotlar to'plamini parallel ravishda ishlatishni ta'minlaydi. Masalan, bir vaqtning o'zida bir nechta sonlarni qo'shish, ko'paytirish va boshqa amallar bitta instruksiyada bajariladi.
Tarmoq Parallelizmi (Distributed Parallelism)
Bu model, boshqa kompyuterlarga yoki tarmoqqa bog'liq qurilmalarga amallarni parallel ravishda bajarishni ta'minlaydi. Masalan, MPI (Message Passing Interface) va boshqa texnologiyalar bu modelda foydalaniladi.
Grafika Usullari (GPU Parallelizmi)
Bu parallelizm modeli, grafika protsessorlari (GPU)ni intensiv ma'lumotlar hisoblash va grafika ishlash uchun qo'llaydi. CUDA (Compute Unified Device Architecture) va OpenCL kabi dasturiy interfeyslar bu parallelizm modelida foydalaniladi.
Task Parallel Library (TPL)
Bu model, dasturlash tillarida parallel amallarni bajarishda yordam berish uchun yaratilgan kutubxona yoki interfeyslar to'plamini ta'kidlaydi. Masalan, .NET platformasida Task Parallel Library mavjud.
Bu parallelizm modellari, mahsulot, vazifa va maqsadlarga qarab tanlanadi. Har bir model o'zining afzalliklarini va cheklarini ta'minlaydi va mos ravishda yozilgan dasturlash tillariga bog'liq bo'lishi mumkin
Dasturlash tillarida parallellik modellari Dasturlash tillari tarixi bir qator misollarni to'pladi dasturlarni taqdim etishning lakonik shakllari, standartlardan boshlab, yashirin
Fortran tilidagi tsikllar va u operatorlari. Aniqlik bilan parallel tillarni ishlab chiqishda amaliy pragmatika dasturlash til tuzilmalarini meros qilib olishi mumkin va
odatiy dasturlash paradigmalaridan mexanizmlar va tasdiqlangan parallel dasturlash tillari. Avvalo, bu algebraik tarqalish mexanizmlari ma'lumotlar tuzilmalariga oid funktsiyalar va operatsiyalar birinchi parallel dasturlash tili APL. Keyingi parallellikni boshqarishning vizual vositalarini soddalashtirish sisal tilida taklif qilingan tsikllarni yashirin parallellashtirishga yondashuv fazoviy iteratsiyalar makonini qurish asosida
qayta ishlangan ma'lumotlar. Rivojlanish, disk raskadrovka, sinov va boshqa muammolar yanada keskinlashmoqda parallel dasturlarni tekshirish murakkabligi jihatidan juda yuqori oddiy dasturlash. Bu erda jamlangan zamonaviy til ijodkorligi va tizimli tadqiqot faoliyati dasturlash, muvaffaqiyatli tajribani birlashtirish vositalari va usullarini toppish parallel dasturlash va usullarni muvaffaqiyatli o'qitish parallel hisoblash. Tegishli echimlarni tahlil qilishga e'tibor portativ dasturlar, vizualizatsiya vositalarini ishlab chiqish sohalari jarayonlar, yozishni boshqarish va xotiraga kirish intizomi. Deyarli parallellik dunyosida barcha asosiy tushunchalar dasturlash o'zgaradi yoki kengayadi (dastur,
dallanish, tsikl, hodisa, xotira, natija). Qator paydo bo'ladi parallel dasturlash uchun xos bo'lgan tushunchalar (protsessor, oqim, kutish, davomiylik, filtr, to'siq). Dasturlar aylanmoqda ko'p tishli, ko'chadan-parallel, xotira nusxalarini oladi va
replikatsiyalar, voqealar bir vaqtning o'zida turli xil sinxronlashtiriladigan narsalarda sodir bo'ladi , natijani hisoblash jarayonning tugashini anglatmasligi mumkin.
Tushunchalarni bunday qayta ko'rib chiqish nafaqat dasturlash uslubiga, balki dastur kodini yaratish bosqichida kompilyatsiya xususiyatini o'zgartiradi. Qayta ishlatiladigan foydalanish texnikasining roli ortib bormoqda yozish vositalariga mos keladigan elektron darajadagi component jarayonlarni boshqarish. Bir qator standart imperativ tillarning versiyalari mavjud o'zaro ta'sirni ifodalashga moslashtirilgan dasturlash har bir daqiqada taxmin qilingan ketma-ket jarayonlar vaqt faqat bitta jarayon mavjud. Dasturda ushbu yondashuv bilan tanqidiy intervallar ajratiladi, ularni hisobga olish quyidagilar uchun foydalidir dasturlarni parallellashtirish. Ko'plab an'anaviy tillar dasturlash mahalliy parallellikni ifodalashga moslashtirilgan maxsus kengaytmalar yoki kutubxona funktsiyalari orqali, mustaqil harakatlar bilan uchastkalarni ajratishni ta'minlash,
kompilyator tomonidan parallellashtirish uchun mos. Katta umidlar qat'iy funktsional yondashuv bilan bog'liq C tilidagi parallel dasturlar va ma'lumotlar turlarining xususiyatlari "dangasa" hisoblash sxemasini afzal ko'rish. "Dangasa" va "baquvvat"ning afzalliklari va kamchiliklariga qarshi turish hisoblash usullari qisman "monad" tushunchasi bilan yumshatilgan qat'iy funktsional Haskell dasturlash tili. Xususiyatlari til konstruktsiyalarining semantikasi ta'riflari hali ham aks etmaydi dasturlarning o'qilishi va disk raskadrovka muammolarini hal qilish. "Xotira" deb nomlangan murakkab hisoblash jadvali, murakkablikni kamaytirish uchun mashhur amaliy vositaga aylanmoqda
hisoblash. Hozirda yuzlab funktsional tillar mavjud turli xil vazifalar sinflariga yo'naltirilgan dasturlash parallel dasturlash. Funktsional tillar dasturlash deyarli hamma uchun odatiy vositalar bilan boyitilgan dasturlar va tashkilotlarni taqdim etishda taniqli yondashuvlar hisoblash tajribasi va axborot jarayonlari. Taqdim etilgan parallel jarayonlarni tashkil etish. Ma'lumotlarni vizualizatsiya qilish mumkin va dasturlar. Standart va ob'ektga yo'naltirilgan vositalar mavjud dasturlash. Kompilyatsiya boshqaruvi qo'llab-quvvatlanadi va kompilyatorlarni loyihalash. Bugungi kunga qadar yo'qolgan
resurs va ekspluatatsiya bilan bog'liq qo'rquvning dolzarbligi funktsional dasturlashning qiyinchiliklari.
Funktsional dasturlash rekursiv ta'riflar texnikasi bilan o'z hissasini qo'shadi va xaritalash, funktsiya argumentlarini qayta ishlash parallelligi, dangasa
hisoblash, shuningdek filiallarda "shartlar" tushunchasini kamaytirish "qo'riqchi" yoki "namuna"tushunchalariga. Amaliy funktsional dasturlash tillari oilasida tarqatilgan va tashkil etilgan tillar muhim o'rin tutadi parallel hisoblash. Amaliyotchilar katta maqtovlar bilan javob berishadi Ericsson kompaniyasining Erlang funksional dasturlash tili. Fortran-qo'shma dasturlar Parallel hisob-kitoblarni taqdim etish vositalari quyidagilardan boshlab mavjud birinchi yuqori darajadagi tillar. Fortran II va Fortran IV tillari tashkilot dasturlarini taqdim etish uchun juda ko'p qirrali parallel jarayonlar. Koroutin mexanizmi ko'p kirish (kirish) protseduralari, dasturlarni taqdim etishga imkon berdi o'zaro ta'sir qiluvchi jarayonlar va dasturni dekompozitsiya qilish mustaqil ko'rinadigan boshqaruv va hisoblash qismlari dastur komponentlari, lekin bu parallel amaliyotga olib kelmadi dasturlash va asta-sekin koroutinlar modullarga aylandi, ierarxiya kabi funktsiyalar ierarxiyasini taqdim etish oopdagi sinflar. Sintaktik jihatdan parallel dasturlash vositalari
zamonaviy Fortran dasturlarida matnni belgilash kabi ko'rinadi kalit so'zlar va kutubxona funktsiyalari muammolari. Lisp-kechiktirilgan hisoblash Ma'lumotlar va dasturlarni taqdim etishni birlashtirish to'ldirishga imkon berdi parametrlarni oldindan hisoblangan qiymat yoki ko'rsatkich bo'yicha uzatish ifodalarning taqdimotini uzatishni tashkil qilish qobiliyati, hisoblash kerak bo'lganda amalga oshirilishi mumkin. Bunday
imkoniyat "dangasa" hisoblash va rivojlanish kontseptsiyasiga olib keldi statik jarayonlardan farqli o'laroq jarayonlarni dinamik optimallashtirish usullari dasturlarni optimallashtirish. APL-vektorli operatsiyalar Bir hil elementlarni qayta ishlash g'oyasi yanada muvaffaqiyatli bo'ldi APL tilidagi ma'lumotlar tuzilmalari, ayniqsa vektorlarning paydo bo'lishi bilan Cray arxitekturalari. 1962 yilda qiziqarli mexanizm taklif qilindi
ko'p o'lchovli vektorlarni amalga oshirish, kengaytirishga moslashtirilgan va
ma'lumotlarni qayta ishlashni parallellashtirish. Murakkab ma'lumotlar taqdim etiladi
skalar ketma-ketligi va pasportidagi juftlik sifatida ushbu ketma-ketlik tuzilgan. Bunday echim har qanday narsaga imkon beradi skalar ustidagi funktsiyani aniqlash avtomatik ravishda tarqaladi
xuddi shu turdagi skalalardan o'zboshimchalik bilan ma'lumotlar tuzilmalari. Hozirgi kunda ko'pgina ixtisoslashgan parallel tillar uchun vaqt dasturlash odatda murakkab konstruktsiyalar bilan faktorizatsiya qilinadi ma'lumotlar tuzilishining xususiyatlarini hisobga olgan holda, oddiylari ajralib turadi ma'lumotlar tuzilishi bo'yicha "sızdırılan" xususiyatlarni ko'rsatish yuqori darajadagi funktsiyalar – funktsiyalardan foydalanish. Natijada ma'lumotlar tuzilmalari, funktsiyalari, usullarini mustaqil ravishda o'zgartirish mumkin to'liq natija to'plamlari va ko'rsatilgan to'plamlar to'plami. Maqsadli ravishda quyidagilarga moslashtirilgan konveyer jarayonlari ajratiladi oraliq natijalarni saqlashni minimallashtirish. 1980-yillardan beri bu g'oya parallellikni qo'llab-quvvatlovchi ko'plab tillar tomonidan meros qilib olingan va bizning vaqtimiz aslida standartdir. Algol-68-muhim saytlar va semaforlar 1960-yillarning oxiriga kelib sezilarli xilma-xillik rivojlandi
tadqiqot paytida parallelizmning nazariy modellari parallel hisoblashning ishonchliligi muammosi paydo bo'ldi imperativ ketma-ketlikdagi xatti-harakatlarning kutilmagan farqida unga kiritilgan "mustaqil"qismlarga qarab harakatlar imperativlikni buzadigan jarayonlar. Bunday oldini olish uchun effektlar Algol-68 tilining semantikasiga g'oya doimiy ravishda kiritilgan amalga oshiriladigan muhim bo'limlar va ularni himoya qilish nuqtai nazaridan taqdim etish semaforlar. Unix va JCL – jarayonlarni boshqarish Mustaqil ravishda jarayonlarni aniq yaratish va ularni tashkil etish g'oyalari kanallar orqali o'zaro ta'sirlar vazifalarni boshqarish tillarida paydo bo'ladi va operatsion tizimlardagi jarayonlar.
Setl to'plamlari va kvantorlari Dasturlash ishonchliligiga yana bir yondashuv tilda taklif qilingan Setl-ga yo'naltirilgan bir nechta nazariy dasturlash rivojlanishda vakolatli matematiklarning sezgi kuchayishi to'plamlarni o'zgartirish nuqtai nazaridan dastur spetsifikatsiyalari, tabiiyki elementlarni parallel ravishda qayta ishlash imkoniyatini nazarda tutadi to'plamlar va amalga oshirish uchun mustaqil uslubda. Meros Setl kabi yuqori darajadagi universal tillardan echimlar, moslashuvchan va moslashtirilgan ma'lumotlar va jarayonlarni mavhumlashtirish qat'iy tuzilish, dalillarni etishtirish uchun qulay parallel dasturlash amaliyotida tuzilmalar. Bu borada Setl tilining nazariy ko'p semantikasini rivojlantirish bo'yicha tajriba alohida qiziqish uyg'otadi, unda juda umumiy qurilish mavjud to'plamlar ustidagi kvantorli formulalar oddiy sxemaga botiriladi
jarayonlarni ketma-ket boshqarish. Setl tilini amalga oshirish u boy polimorfizm bilan ajralib turadi. To'plamlarni ifodalash uchun yigirmaga yaqin turli xil ma'lumotlar tuzilmalari ishlatiladi, ularning tanlovi dinamikaga qarab dasturlash tizimi tomonidan amalga oshiriladi bir nechta operatsiyalar. Natijada dasturlashtiriladigan funktsiyalar sust
ma'lumotlarning amalga oshirish tuzilishiga bog'liq. Boshqaruv amaliyotida jarayonlar buyruqlarni mustaqil pozitsiya sifatida tushunishdan foydalanadi jarayon avlodlari. Bunday tushuncha tabiiy ravishda g'oyalarga mos keladi to'plam elementlarining mustaqilligi haqidagi to'plam nazariyalari va xizmat qilishi mumkin dasturlash tilining mustaqil semantikasi arxitekturasining asosi. SQL-tranzaktsion xotira va normal shakllar
5-mavzu Ultra yuqori darajali tillar Reja 1. Ultra yuqori darajali tillar xaqida malumot 2. Ultra yuqori darajadagi tillarga asoslangan dasturda ko’rish 3. Ultra yuqori darajadagi tillarni dasturlash tiliga bog’liqligi
1."Ultra yuqori darajali tillar" ifodasi bir nechta mananingda ishlatilishi mumkin, chunki bu nutqda "ultra yuqori darajali" ni nima bilan ta'riflash uchun yorliq ma'lumotlar berilmagan. Uning o'zida ma'lumotlar yoki yondashuvlarga o'xshash konseptlarni ma'noni anglash uchun qo'llanish mumkin. Ammo, umuman, "ultra yuqori darajali tillar" deyilganida quyidagi mumkun bo'lgan ma'no qat'iy emas:
Yuqori darajali, mushkul va muhimi maqsadlarni bajarish uchun ishlatiladigan dasturlash tillari Bu tilda yozilgan dasturlar, adliya ta'limotlardan dasturlash va robototexnika ilgari bilan tajribaga ega bo'lgan yuqori darajali tillardir.
Yuqori darajali matematika va texnika dasturlash tillari Bu tilda yozilgan dasturlar, matematik va texnika sohasidagi muammolarni yechishda yoki texnik jarayonlarni avtomatlashda yuqori darajali tillar bo'lishi mumkin.
Yuqori darajali ta'limotlar uchun foydalaniladigan tillar Bu tilda yozilgan dasturlar, yuqori darajali ta'limotlarni amalga oshirishda yoki matnlar, ma'lumotlar va grafik ma'lumotlarni tahlil qilishda foydalaniladi.
Axborot tizimlarini boshqarish uchun ishlatiladigan tillar Bu tilda yozilgan dasturlar, katta hajmdagi axborot tizimlarini boshqarish, ma'lumotlarni saqlash va qayta ishlov bajarishda yuqori darajali yechimlar tashkil etadigan tillar bo'lishi mumkin.
Shunday qilib, "ultra yuqori darajali tillar" ifodasini qanday manada tushuntish mumkinligi dasturlash sohasidagi tilda, maqsadlarda va vazifalarda bog'liqdir. Eslatib o'tish kerakki, bu tilda yozilgan dasturlar keng qamrovli vaqt talab etuvchi bo'lishi mumkin, shuning uchun ularni o'rganish va ishlatish uchun yuqori darajada tajribaga ega bo'lish lozim. uqori darajadagi domenlar dastlab Jon Postelning IANA kompaniyasi tomonidan yaratilgan, qoʻllab-quvvatlangan va boshqarilgan.inglizcha: Internet Assigned Numbers Authority — „Internet adreslar fazosini administratsiyalash“), AQSh Mudofaa vazirligi bilan tuzilgan shartnoma asosida ishlagan. Uning oʻlimidan soʻng, bu savollar boshqa xalqaro ICANN tashkilotiga — ismlar va raqamlarni belgilash uchun Internet korporatsiyasiga oʻtkazildi (inglizcha: Internet Corporation for Assigned Names and Numbers) va podryatchi funktsiyalari AQSh Savdo vazirligiga oʻtkazildi.
ICANN hozirda Internetdagi barcha DNS manzillar maydonini saqlab turadi va boshqaradi, faqat AQSh hukumati idoralari tomonidan boshqariladigan cheklangan TLDlar bundan mustasno. Texnik jihatdan TLDlar ICANN tomonidan boshqariladigan DNS ildiz serveri tizimi orqali mavjud. ICANN 2012-yil 12-yanvardan boshlab barcha internet foydalanuvchilari uchun birinchi darajali domenlarni bepul roʻyxatdan oʻtkazish ochilishini eʼlon qildi.
2.Ultra yuqori darajadagi tillarga asoslangan dasturlarni tayyorlash (YASVU)
dasturlashtirilgan echimlarning uzoq umr ko'rishiga qaratilgan muhim va qiyin vazifalar. Hayot tsiklining uzayishiga erishiladi muayyan erkinlik darajasi bilan umumlashtirilgan echimlarni taqdim etish ruxsat etilgan qo'shni komponentlarning to'liq bo'shliqlariga nisbati, ilgari amalga oshirilgan yoki kelajak uchun rejalashtirilgan. Amalga oshirish YASVU semantikasi tomonidan ruxsat etilgan jarayonlar oilasining torayishi, quyidagi pragmatik maqsadlar yoki tushunchalarga zid keladi motivlar:
- dasturlashtiriladigan echimlarni mavhumlashtirishning yuqori darajasi;
- oldindan aytib bo'lmaydigan tashqi omillarga bog'liq muammolar hal qilinadi;
- asosiy vositalar va/yoki hisoblash algoritmlaridan foydalaniladi parallellik;
- tezlik va ishlash uchun pragmatik talablar dolzarbdir hisoblash;
- dinamik ravishda qayta konfiguratsiya qilingan ko'p protsessorli komplekslar.
Odatda, yangi YASVA yaratuvchilari boshlang'ich sifatida foydalanadilar
bir yoki bir nechta asosiy Java materiallari va ularga kiritilgan ixtiro qilingan vositalar va usullar. Paradigmalar asosiy Java-dan meros bo'lib o'tadi tegishli muammolarni qoniqarli hal qilish. Bunday hollarda YASVUNING paradigmatik tavsifi quyidagicha ifodalanishi mumkin tashqi sintaktik o'xshashlik bo'lsa-da, asosiy Java-ga nisbatan til konstruktsiyalari ba'zan butunlay boshqa semantikani yashiradi. YASVU muntazam, matematik jihatdan aniq va qayta ishlash mumkin bo'lgan to'g'ri, mavhum tuzilmalar
ma'lumotlar va dasturlarni o'zgartirish, o'xshashliklardan foydalanish va dalillarga asoslangan inshootlar. Bularning barchasi yuqori darajani kafolatlash uchun o'ljallangan
hisoblash samaradorligi, rivojlanish jarayonining ishonchliligi dasturlar va ularning hayot tsiklining davomiyligi. Algebraik tipiklar spetsifikatsiyalar, nazariy-ko'p konstruktsiyalar, parallellik, dasturlarni ishlab chiqish jarayonlarining modellari. Maxsus ixtiro qilingan
vakillik imkoniyatlarini, ularning umumiyligini oshiradigan tizimli vositalar va miqyoslilik. Tabiiy ishlash zaxirasi kompyuterlar parallel jarayonlardir. Ularning tashkiloti nazoratni talab qiladi va vaqtinchalik munosabatlar va imperativ bo'lmagan uslubni batafsil hisobga olish harakatlarni boshqarish. Qo'llab-quvvatlovchi superkompyuterlar yuqori samarali hisoblash, maxsus texnikaga muhtoj hali rivojlanmagan tizim dasturlash, garchi allaqachon ayniqsa muhim muammolarni samarali hal qilish tajribasi mavjud. Shunday qilib, funktsiyalarning ta'riflarini "sızdırabilir" oddiy ma'lumotlar, ularni ma'lumotlar tuzilmalariga taqsimlang va shu bilan oddiy funktsiyalarni matritsa kabi murakkab ma'lumotlarga tarqatish arifmetik. Shunga 'xshash tuzilmalar Backus tomonidan uning ichida taklif etiladi funktsional dasturlash uslubi va tili haqida dasturiy maqola Matritsalarni qayta ishlashga yo'naltirilgan APL. Qoida tariqasida, parallel dasturlash tillari quyidagilarni o'z ichiga oladi turli paradigmalarga xos vositalar. Bu belgilaydi jamg'arishga transformatsion yondashuvning maqsadga muvofiqligi ishlab chiqish va modernizatsiya qilishda dasturiy echimlarning to'g'riligi
umumiy tizim doirasida turli tillarda parallel dasturlar dasturlash. YASP rivojlanishi hozirda quyidagilarga qaratilgan umumiy kutubxona modullari asosida muammolarni hal qilish jarayonlarni samarali tashkil etish yoki sublizing, bunga imkon beradi ko'p tarmoqli dasturlash. Bu haqiqiy amaliyotni istisno qilmaydi ilgari disk raskadrovka qilingan an'anaviy dasturlarni qo'lda parallellashtirish, ularni ishlab chiqarish tizimlaridan foydalanish uchun qulay shaklga keltirish parallel hisoblashni qo'llab-quvvatlash. Bunday ishlarning katta qismi texnik xususiyatga ega va tizimli ma'lumotlar tuzilmalarini qayta tashkil etish, o'zgaruvchilar holatini o'zgartirish va dasturga kompilyatorga quyidagilarni aytib beradigan izohlarni kiritish axborot va mantiqiy munosabatlar.
3. Algoritmni ifodalash uchun dasturlash tillari deb atalubchi sun’iy tillar qo’llaniladi. Buning uchun ishlab chiqilgan algoritm shu tillar yordamida kompyuter tushuna oladigan ko’rinishida tavsiflanishi zarur. Hozirgi kunda dasturlash tillarini u yoki bu belgisi bo’yicha sinflash mumkin. Dasturlash tilining kompyuterga bog’liklik darajasi bo’yicha sinflash eng umumiy hisoblanadi. Protseduraga mo’ljallangan tillar turli masalalarni yechish algoritmlarni tavsiflashga mo’ljallangan, shuning uchun ular ko’pincha oddiy qilib algoritmik tillar deb ataladi. Hozirgi kunda hisoblash, muhandis-texnik, iqtisodiy, matnli va sonli axborotlarni tahlil qilish va boshqa masalalarni yechish tillari mavjud. Masalan, Fortran tili 1954 yil ishlab chiqilgan bo’lib, formulalar translyatori degan ma’noni anglatadi va ilmiy va muhandis-texnik masalalarni hisolashlarda ishlatiladi. Kobol tili 1959 yil yaratilgan bo’lib, savdo-sotiq masalalarigamo’ljallangan til degan ma’noni anglatadi. Pascal tili 1971 yili Niklaus Virt tomonidan yaratilib, franso’z olimi Blez Pascal nomiga qo’yilgan.Bu til turli xildagi masalalarni yechimini olishda tartiblangan dasturlar tuzishda ishlatiladi.
Internet. Web Server. Web dasturlash vositalari (tillari) Ma`lumki, yuqori darajadagi dasturlash tillarida yozilgan dasturlarni kompyuterga tushuntirish uchun kompilyator degan qo'shimcha dastur kerak bo'ladi. Web dasturlashda ham huddi shunday jarayon sodir bo'ladi. Siz internetdagi saytlarni ko'rishlik uchun ishlatadiganingiz Brauzerlar - web dasturlash tillarining bazilarini kompilyatori hisoblanadi. Web dasturlashda yana shunday tillar ham borki ularni brouzer kompyuterga tarjima qilib tushuntirib bera olmaydi, lekin bunday tillar web saytni asosini tashkil etadi. Ana shunday tillarni brouzer tushunadigan qilib berish uchun ham Web server ga o'xshaga n dasturlar (kompilyator yoki interpretatorlar) to'plami kerak bo'ladi. Bunday dasturlar esa sayt joylashgan serverlarda turadi, qachonki unga so'rov yuborganingizda (istalgan biror ssilkani bosganingizda, birinchi marta saytni ochganingizda va hokazo...) shu sayt joylashgan serverdagi Web server dasturlari sizning brauzeringizga saytni brauzer tushunmaydigan tillarda yozilgan joylarini tarjima qilib jo'natadi. Shunday qilib klient - yani siz tomondagi web saytni kodlarini kompyuteringizga tushuntirib beradigan tarjimon bu - Brauzer, server tomonidagi web saytni sizning brauzeringiz tushunmaydigan joylarini unga tarjima qilib jo'natadigan tarjimon bu Web Server hisoblanadi. Quyida web serverni
Bu yerda Klient yani siz tomonda sizning Brauzer va u tushunadigan web dasturlash tillari (HTML,CSS,Java Script) turgan bo'lsa, server tomonda Apache -> Web server, PHP -> PHP tili uchun interpretator va ma`lumotlar ombori bilan ishlash uchun vosita (bu MYSQL, Oracle va boshqalar bo'lishi mumkin) turibdi. Bundan tashqari server tomonida yana boshqa tillar ham bo'lishi mumkin. Hullas, siz qachonki brauzerdan kerakli sayt nomini kiritganingizda bu so'rovingiz DNS serverdan saytga mos IP bo'yicha kerakli serverga boradi, so'rovingiz Brauzerda kiritilgani uchun ham ko'pincha standart HTTP protokoli bo'yicha yuborilgani uchun uni Web server kutib oladi va so'rovingizga mos papkadan index faylni qidirib topadi. Undagi bog'lanishlardan kelib chiqib kerakli fayllarni yuklaydi, bu fayllarni kengaytmasiga qaraydi, agar kengaytmasi .html bo'lsa uni shundoq, aks holda masalan .php bo'lsa PHP serverdagi interpretator orqali brauzer tushunadigan tilga tarjima qildiradi(shuni ichida ma`lumotlar bazasidan ham kerakli ma`lumotlar yuklab olinadi) va natijani sizni brauzeringizga jo'natadi. PHP dasturlash tili yordamida sayt yaratish uchun avvalo o'z shaxsiy komputeringizda Virtual server o'rnatishingiz lozim. Masalan Denwer, yoki XAMPP yoki WAMPP Brauzeringiz o'zi tushunadigan tilda kelgan sayt kodlarini natijasini ekraningizda sizga ko'rsatib beradi va siz tayyor saytni ko'rasiz. Demak, agar web dasturlash bilan shug'ullanaman deydigan bo'lsangiz, minimum:
HTML,CSS,JavaScript,PHP,MySQL larni bilishingiz kerak ekan. Bunda HTML-> Sayt karkasini yasaydi, CSS- saytni pardozini(dizaynini) amalga oshiradi, Javascript - saytni dinamikasi(haraktlarini) ta`minlaydi, PHP - saytni mantiqiy amallarini bajaradi(masalan siz login bo'lganmisiz, yoki yo'qmi, login bo'lgan bo'lsangiz sizda nimalar chiqadi, aks xolda nimalar...), MySQL - PHP bilan hamkorlikda saytga ma`lumotlar bazasidan ma`lumotlarni o'qib olish, yozish, o'zgartirish uchun xizmat qiladi.4 Programmani yaratish jarayonidagi uning nomlari Beta versiya - bu versiya programmani ommaga havola qilinib, ularning fikri bo`yicha programmaga turli o`zgartirishlar kiritiluvchi versiyasi. Programmaning bu versiyasi, odatda, tekin bo`lib, ko`pchilik hukmiga havola etiladi. Programmaning bu versiyasi orqali sizga yetkazilgan ziyon qoplanmaydi(fayllaringizning o`chib ketishi, OS ning buzilishi va h.k.). Hozirda ko`pchilik firmalar o`z mahsulotlarini Beta versiyasini chiqarib, o`z mahsulotlarini takomillashtirib bormoqdalar. Bundan, programma ishlab chiqarish bo`yicha yetakchi bo`lgan Microsoft korporatsiyasi ham mustasno emas(Windows Vista, Office 2007, Exchange Server 2007, Internet Explorer 7 va h.k.). Release Candidate(versiya nomzodi) - bu versiyaning nomidan ma'lumki, u haqiqiy, sotuvga chiqariladigan versiyaga kandidat(nomzod)dir. Bu kabi versiyalar qisqacha RC deb ataladi. Shu turdagi versiyalar esa, RC1, RC2 kabi nomlanadi. Ko`pchilik RC versiyalar sotuvga chiqariladi, chunki bu versiya o`zida ma'lum bir imkoniyatlarni jamlagan bo`ladi va bu versiya orqali yetkazilgan zarar programmani yaratgan firma tomonidan qoplanadi. Final Release(so`nggi versiya) - programmani yaratishda qo`yilgan maqsadni "to`liq" amalga oshiruvchi versiya. Bu versiyani "alfa" versiya deb ham atashadi. Bu versiya o`z bahosida sotiladi, unga ko`rsatiluvchi xizmatlarning barchasi programma yaratuvchisi tomonidan ko`rsatiladi. Build XXXX(XXXX - qurish) - bu, odatda, versiya hisoblanmaydi. XXXX ning o`rnida biror son keladi.
Bu son programmaning kompilyatsiya(programmalash tilidan haqiqiy bajariluvchi kodga o`tkazish) sonini bildiradi. Programma yadrosi(qo`shimchalarsiz, asosiy qism)ga nisbatan yuritiladi. Masalan, Windows Vista Beta 2 Build 5308 - Windows Vistaning Beta 2 versiyasi turkumida 5308-kompilyatsiya(OSga nisbatan "kompilyatsiya"ni ishlatish noo`rinroq:)). Update(yangilash) - programmaning biror teshigini(biror kichik xato, kamchiligi) tuzatuvchi kichik yordamchi programma. Bu yordamchi programmaning hajmi, odatda, kichik bo`lib, faqat o`sha kamchilikni tuzatishgagina xizmat qiladi. Ya'ni bu programmacha biror *.dll faylni yoki programmaishlatuvchi funksiyalardan birortasini "tuzatib" qo`yadi, xolos. Bunday Update("qarz")lar har doim tekin bo`ladi. Service Pack(xizmat paketi) - o`zida bir qancha Update lar bajaruvchi amallarni saqlovchi paket. Uning qisqacha nomi SP. Programmaning haqiqiy versiyasi yoki avvalgi SP dan shu paytgacha bo`lgan xatoliklarni birdaniga tuzatuvchi programma.
Ya'ni, u bir qancha Update lar ishini o`zi bajaradi. Masalan, Windows XP chiqqanidan so`ng, taxminan bir yildan keyin SP1 chiqdi. Bundan kelib chiqadiki, Windows XP SP1 bir yil davomidagi xatoliklarni tuzatuvchi paket hisoblanadi. SP ham programma ishlab chiqaruvchi firmaning xatolari tufayli kelib chiqqan xatolarni tuzatgani uchun tekin bo`ladi. Trial(yoki demo)-versiya(vaqtinchalik) - bu versiya, programma sotuvga chiqarilgandan so`ng tekin tarqatila boshlaydi. Bu versiyaning asosiy maqsadi foydalanuvchilarni ushbu programmani sotib olishga jalb qilish va ularni programma bilan tanishtirish. Trial versiyalar, odatda, ikki xil bo`ladi: a) vaqt bo`yicha chegalangan; b) imkoniyatlar bo`yicha. Vaqt bo`yicha chegaralangan versiya ma'lum muddat, masalan, 30 kun ishlaydi va shundan so`ng boshqa ishga tushmaydi. Bu holatda siz programmani sotib olishingiz kerak. Odatda, vaqt bo`yicha trial-versiyalar programmaning hamma imkoniyatlarini o`zida saqlaydi. Imkoniyatlar bo`yicha versiya esa programmaning sotib olingan versiyasining nechadir foiz imkoniyatlarini o`zida saqlaydi yoki ma'lum cheklanishlar qo`yilgan bo`ladi. Bu versiyaning ishlash muddati chegaralanmaydi. Yuqo`ridagi ikki holatdan tashqari yana bir holat bor. Bunda programmaning hamma imkoniyati saqlanadi, muddat ham berilmaydi, faqat foydalanuvchiga programmani sotib olish haqida eslatib turiladi.5
Bu esa ko`pchilikning jig`iga tegishi mumkin. Ko`pchilikka ma'lum Total Commander programmasi shu kabi programmadan biri, u har ishga tushganida 1, 2, 3 deb nomlangan knopkalardan birini bosishingizni talab qiladi. Dasturlashni o'rganishni nimadan boshlash kerak? Eng avvalo insonda kuchli qiziqish bo'lishi kerak. Lekin bu hammasi emas. Dasturchi bo'lish uchun matematika yoki geometriya fanlarini ham yaxshi o'qigan bo'lishingiz kerak deb o'ylaymiz. Aslida dasturlash uchun matematika yoki geometriya unchalik ishlatilmasligi mumkin. Aytmoqchimizki aniq fanlarni yaxhsi tushunaolgan inson dasturchi bo'lishi ham oson bo'ladi. Agar dasturchi bo'lishga qaror qilgan bo'lsangiz, Dastlab eng sodda tildan boshlash kerak 1-navbat HTML tilini o'rganasiz. 2-navbat CSS va Javascript asoslarini o'rganasiz. 3-navbat Delphi yoki Java asoslarini o'rganasiz. Yana Mobile telefonlar (Android, iOS) uchun dastur tuzish usullari bilan qiziqib ko'rasiz Endi oldingizda 3 ta katta yo'l chiqadi. Siz esa shu yo'lning biridan yurishingiz kerak. 1-yo'l. Web App yoki web dasturlash yo'nalishi. asosan internet bilan ishlaydigan dasturlar yaratish 2-yo'l Win, Linux App ya'ni Faqat Komputer uchun dasturlar tuzish 3-yo'l Mobile dasturlash ya'ni Hozirda ommabop Android, iOS (Iphone) uchun dasturlar tuzish Agar 3 ta yo'lni ham o'rganaman desangiz katta natijaga erishish qiyin. Chunki ularning har biri katta bir olam misolidir
6-mavzu Yuqori samarali dasturlash Reja 1. Yuqori samarali dasturlash 2. Kuchli umumiy maqsadli tillar 3. Dasturlash texnikasining asosiy rivojlanishi
1 . "Yuqori samarali dasturlash" deganda, dasturlash sohasida yaxshi natijalarni olish uchun yaxshi amaliyot va prinsiplarni o'rganishni anglatamiz. Bu, tegishli texnologiyalarni va yaxshi muhandislik prinsiplarini qo'llashni ham ifodalaydi. Quyidagi chiziqli yondashuvlarga e'tibor bering:
Algoritmlar va Dasturlash Tilini Tushunish Dasturlashni o'rganishdan avval, algoritmlar va dasturlash tillari haqida to'liq tushunish muhimdir. Dasturlash tillari, masalan, Python, Java, JavaScript, C++, Kotlin, yoki boshqa, sizning lozim bo'lgan vazifalarni bajarish uchun foydalaniladigan dasturlash tillarini o'z ichiga oladi.
Amaliyot va Loyiha Asosida O'rganish Dasturlashni o'rganishda amaliyot ham muhimdir. Amaliyotni bajarish orqali teoridan ortiqcha o'rganishni va mahoratni oshirishni o'rganasiz.
Muhit va Texnologiyalarni O'rganish: So'nggi yangiliklar, texnologiyalar va foydalanilayotgan dasturlash muhitlarini kuzating. Yangi texnologiyalarni o'rganib, ularni o'z dasturlarizda qanday qo'llab-quvvatlash mumkinligini tushunib chiqing.
Kodni Tozalash va Yaxshi Struktura: Kodningizni tozalash, uni yangilash va yaxshi struktura berish muhimdir. Kodningizning qolgan dasturlash jamiyatiga mos kelishini ta'minlash uchun yaxshi amaliyotga ega bo'lishingiz kerak.
Jamoa Ishi Dastur tuzilishi va jamoa ishini o'rganing. Proyektlar ustida jamoa ishi qilishni o'rganib, qanday qilib komandasiz yaxshi natijalarni olishni o'rganing.
Testlar va To'g'ridan-to'g'ri Tuzatish Dasturning to'g'ri va samarali ishlashi uchun testlar yozing va kodni to'g'ridan-to'g'ri tuzatish prinsiplarini o'rganing.
O'z O'zini Tahlil Qilish va O'zini Oshirish O'zingizni baholash va o'zini oshirish uchun kuzating. Qanday qilib samaraliroq kod yozishingiz mumkinligini o'rganing.
Dasturlash Jamoasi va Forumlardan Foydalaning Dasturlash sohasidagi jamoalarga qo'shilish, forumlarda savollar berish va javob olish o'rganish uchun samarali yo'l bo'ladi.
Dasturlashni Hayotiy Foydalanish Dasturlashni hayotiy vazifalarda ham qo'llashga harakat qiling. O'zingizni chellendiring va mahoratni oshirish uchun o'z vositalaringizni yarating.Начало формы
2. Yuqori darajali dasturlash tillari C va C ++ bu kuchli umumiy maqsadli tillar hisoblanib, Bell Laboratories tomonidan ishlab chiqilgan. C tili 1972 yilda, C ++ tili esa 1983 yilda chiqarilgan. PASCAL. Bu dasturlash tili 1970 yilda yaratilgan va dastlab dasturlashni o'rgatish uchun mo'ljallangan. Ushbu til matematik, fizik va faylasuf Blez Paskal nomi bilan atalgan. U 1990-yillarning boshlarida Sun Mikrosystems tomonidan yaratilgan va bitta kompyuterda veb-serverdan yoki Internet orqali ishlaydigan dasturlarni ishlatish uchun ishlatiladi. Hozirgi kunda eng ommabop, eng ko'p foydalanuvchiga ega, eng sodda deb tariflanayotgan PYHTON ni eslamasdan iloji yo'q. Python bu universal professional dasturlash tili bo'lib uni har qanday turdagi dasturiy mahsulotlar ishlab chiqish maqsadida foydalanish mumkin.
Google kompaniyasi o'zining shaxsiy dasturlash tilini ishlab chiqganligi ko'pchilikka sir emas. Bugungi kunda ushbu kompaniya texnologiya sohasida tassavur qilish mumkin bo'lgan har qanday yo'nalishga shiddat bilan kirib, o'z inqiloblarini hosil qilishmoqda. Xuddi shu kabi Google kompaniyasining asosiy "muloqot" tili hisoblangan Go dasturlash tili 2007-yilda Robert Griesemer, Rob Pike va Ken Tompsonlar tomonidan ishlab chiqilgan bo'lib, 2009-yilda rasman ochiq kodli dasturlash tili sifatida ommaga taqdim etilgan. To'g'ri u JavaScript yoki Python kabi dasturlash tillari kabi mashxur bo'lib ulgurmagan bo'lsada, Go dasturlash tili foydalanuvchilarga ko'plab imkoniyatlar yaratib bera oladi.
Ushbu maqolamiz davomida biz Go dasturlash tilining imkoniyatlari bilan yaqindan tanishib chiqamiz:
Foydalanish uchun oson
Go JavaScript yoki Pythondek ommalashmagan bo'lsada, ularni bog'lab turadigan bitta umumiy jihat bor: tushunish va o'rganish juda oson. Ammo bu sintaksis yangi yaratilgan tillardan ko'ra ko'proq afzalliklarga ega. Sababi, uni o'qish oson bo'lib, bir nechta dasturchilarga bir-birlarining dastur bloklarini to'ldirib ketish imkoniyatini taqdim etadi. Ushbu til sintaksis jihatdan C dasturlash tillariga o'xshab ketadi
Go foydalanuvchilari qo'shimcha kutubxonalarni yuklab olmasdan turib shu tilda mavjud bo'lgan kutubxonalardan foydalangan holatda ham o'zlariga ma'qul bo'lgan dasturlarni yarata oladilar. Bu Go dasturlash dunyosiga eng aqlli qo'shimchalardan biri bo'lib, ular sizning ma'lumotlar bloklaringizga ma'lumotlar tuzilmalarini qo'shishning sodda usulini taklif etadi. Boshqa tillarda murakkab ishlashni talab qiladigan bir qator vazifalarni Go interfeysi orqali bitta qatorli kod yordamida bajarish mumkin.
3. Tilning nomi "Streams and Iterations in A" degan ma'noni anglatadi
Single Assignment Language, o'zi esa 70-yillarning o'rtalarida ma'lum bo'lgan VAL tilining rivojlanishi. Maqsadlar orasida SISAL tilining rivojlanishi eng xarakterli ekanligini ta'kidlash kerak, funktsional dasturlash uslubi bilan bog'liq:
- universal funktsional tilni yaratish;
- yuqori samaradorlik uchun optimallashtirish texnikasini ishlab chiqish
parallel dasturlar;
- bilan taqqoslanadigan ishlash samaradorligiga erishish
Fortran va C kabi imperativ tillar;
- katta uchun funktsional dasturlash uslubini joriy etish
ilmiy dasturlar.
SISAL tilini yaratuvchilarning ushbu maqsadlari funktsional ekanligini tasdiqlaydi
tillar to'g'ri parallel dasturlarni ishlab chiqishga yordam beradi. Buning sabablaridan biri funktsional dasturlar haqiqiy ta'sirga bog'liq bo'lgan nojo'ya ta'sirlar va xatolardan xoli vaqt. Bu disk raskadrovka qiyinligini sezilarli darajada kamaytiradi. Natijalar turli xil arxitekturalarga, operatsion tizimlarga yoki
instrumental muhit. Imperativ tillardan farqli o'laroq, funktsional tillar kodlash yukini kamaytiradi, ular osonroq axborot oqimlari va boshqaruv sxemalarini tahlil qiling. Oson albatta, funktsional dasturni yarating parallel, agar uni ko'pchilikdan ozod qilish orqali yozish mumkin bo'lsa ifoda bilan bog'liq parallel dasturlashning qiyinchiliklari individual darajadagi operatsiyalar o'rtasidagi qisman tartib munosabatlari uskunalar. SISAL tili foydalanuvchisi imkoniyatga ega bo'ladi
algoritmlarni loyihalash va bir marta ishlashga e'tibor qarating dasturlar katta blokli va muntazam tashkil etilgan 187 ishlab chiqarish darajasining tabiiy parallelligiga asoslangan inshootlar vazifalar. Sisal tilida parallel dasturlash quyidagilarga asoslanadi funktsional dasturlash paradigmasi. Ammo tilning maqsadi fortranning abadiy tirik tili uchun raqobat yaratishga qaratilgan va bundan mustasno bundan tashqari, val tili asosiy til sifatida ishlatilgan
Paskal tilidan meros bo'lib qolgan navbat. Fortran tilidan vektorlarni qayta ishlash va taqdim etish bo'yicha bir qator g'oyalar meros qilib olingan. Sisal tilidagi hisoblash tizimi tushunchadan foydalanadi APL tili kabi tarqatishga imkon beradigan "ko'p ma'noli" har qanday tuzilish ma'lumotlariga skalyar harakatlar va ularni qayta ishlash
ko'p protsessorli konfiguratsiyalarda bajaring. Bilan ishlash nomlangan xotira (Name-oriented) bilan bog'liq muammolardan ozod qilinadi bir martalik joylarni lokalizatsiya qilish orqali yon ta'siri – SSA shakllarini tayinlash, bu dasturlarni qulay qiladi transformatsiyalar, optimallashtirish va kompilyatsiya, shu jumladan parallellashtirish va kattalashtirish. Axborot bilan qiymatlarni ko'rsatish
qayta ishlash ko'p protsessorlarda bajariladigan deb hisoblanadi konfiguratsiyalar. Displey natijalari konvolyutsiyaga tushishi mumkin yoki
filtrlash. Konfiguratsiyani shakllantirish ko'rinish bilan boshqariladi
iteratsiya bo'shliqlari va bir darajali bog'liqliklarni hisobga olish
iteratsiyalar bilan. Dastur bir martalik uchastkalardan qurilgan
optimallashtirish texnikasini soddalashtiradigan va parallellashtiruvchi optimallashtirishlar. Dasturlash texnikasining asosiy rivojlanishi-rivojlanish
ularni parallel arxitekturalarda amalga oshirish uchun tsikl tuzilmalari.
"Iteratsiya maydoni" tushunchasi kiritildi va maxsus taklif qilindi
olingan ko'p qiymatlarni filtrlash uchun dizayn iteratsiyalar va takrorlanuvchanlik bo'limlarining birgalikda bajarilishi.
Buyruqlarning asosiy turlari:
- iplarni qayta ishlash (navbat =Stack= ro'yxat);
- bir martalik tayinlash nazorati (SSA shakllari);
- qiymatni ro'yxatdan o'tkazish uchun tsiklni "qaytish" bo'limi bilan to'ldirish
parallellashtirilgan tsikl;
- iteratsiya makonini shakllantirish;
- iteratsiyalar orasidagi kanal almashinuvi;
- ketma-ket qiymatlarni qadoqlash, yig'ish yoki filtrlash bo'yicha operatsiyalar.
7-mavzu Transformatsion sementika Reja 1 Transformatsion metod. 2 Transformatsiyalar amallarni o‘z ichiga oladi 3 Transformatsion semantika bu
|