Mazkur uslubiy ko’rsatma Muhammad al-Xorazmiy nomidagi tatu samarqand filialining uslubiy Kengash tomonidan chop yetishga tavsiya yetildi
Download 1.5 Mb.
|
MaruzalarMatni
Qayta foydalanishni qo’llashning 3 zaruriy sharti. Muvaffaqoyatli loyilash va DT yaratishda qayta foydalanishni qo’llashda uch asosiy shart bajarilishi lozim:
Ilovalar
Muammolar Qayta foydalanish keng qo’llanilishi bilan bir qatorda b’zi muammolarni ham sanab o’tish zarur.
Dasturiy generatorlar Dasturiy komponentlardan qayta foydalanishga alternativ – bu dasturiy generatorlar hisoblanadi. Bu yondashuvga ko’ra qayta foydalanish uchun zarur bo’lgan axborot predmet sohasidagi bilim bilan dastur generatori tizimiga yoziladi. Bu holatda tizim spetsifikatsiyasida qayta foydalanishda aynan qanday komponentlar tanlanganligi hamda ularning interfeyslari aniq ko’rsatilishi lozim. 5-MAVZU: ALGORITMLAR VA MA’LUMOTLAR TUZILMASINI ISHLAB CHIQISH Massiv, bog'langan ro'yxat(Linked List), to'plam(stack), navbatlar(Queues), qidirish, saralash, daraxt, graf ... Agar hayotda hech qanday foydasi bo'lmasa ham, nima uchun men yuqoridagi murakkab narsalarni o'rganishim kerak degan savollar bormi? Nima uchun kompaniyalar kundalik ishda foydali bo'lmasa ham, ma'lumotlar tuzilmalari va algoritmlari bilan bog'liq savollar berishadi? Ko'plab yangi boshlanuvchilar va tajribali dasturchilar ma'lumotlar tuzilmalari va algoritmlarini o'rganishdan qochishadi, chunki ular murakkab va yuqorida aytilganlarning hammasidan hayotda foyda yo'q deb o'ylashadi. Shunday qilib, mavzuni muhokama qilishdan oldin, biz sizga oddiy muammoni tashlamoqchimiz va buning echimini topishingiz kerak. Agar siz 20000 sahifali PDF -hujjatda o'z raqamingizni qidirishingiz kerak bo'lsa (ID raqamlar ortib borish tartibda), buni qanday qilasiz? Agar siz tasodifiy yoki ketma -ket qidirishga harakat qilsangiz, bu juda ko'p vaqtni oladi. Biroz vaqt o'tgach, asabiylashishingiz mumkin. Siz quyida keltirilgan boshqa yechimni sinab ko'rishingiz mumkin. 1. 10000-sonli sahifaga o’ting. 2. Agar ID raqamingiz mavjud bo’lmasa, lekin boshqa barcha ID’lar bu sahifada siznikidan kichik bo'lsa, demak u erda sizning ID’ingiz yo'q, 3. 15000-sahifaga o’ting. 4. Shunga qaramay, sizning ID’ingiz mavjud bo’lmasa va sizninig ID'ingizdan katta bo'lsa demak u erda mavjud emas 5. 12500-sahifaga o’ting. Xuddi shu jarayonni davom ettiring va 30-40 soniya ichida siz o'z raqamingizni topasiz. Tabriklaymiz ... siz binar qidirish algoritmidan foydalandingiz. Bu oddiy misol edi va siz nima uchun ma'lumotlar tuzilishi va algoritmlarini o'rganish haqiqiy hayotda muhimligini biroz tushungan bo'lishingiz mumkin. Kundalik hayotda ko'plab misollar topishingiz mumkin. Agar siz bu mahorat mahsulotga asoslangan kompaniyalar intervyularida muvaffaqiyatli qatnashish uchun muhim deb o'ylasangiz, siz mutlaqo adashdingiz. Yuqoridagi misoldan biz to'g'ridan -to'g'ri ma'lumotlar tuzilishi va algoritmlarini o'rganishning ikkita sababini aytishimiz mumkin: Agar siz muvaffiqiyatli intervyu berishni va mahsulotga asoslangan kompaniyalarga kirishni xohlasangiz Agar siz haqiqiy murakkab muammolarni hal qilishni yaxshi ko'rsangiz. Mahsulotga asoslangan eng yaxshi kompaniyalarning intervyularida muvvafaqiyat qozonish: Sizning barcha SQL va Linux buyruqlaringiz algoritmlar va ma'lumotlar tuzilmalari ekanligini bilasizmi? Siz buni sezmasligingiz mumkin, lekin dastur shunday ishlaydi. Ma'lumotlar tuzilmasi va algoritmlar dasturiy ta'minotni ishga tushirish va ishga qabul qilishda katta rol o'ynaydi. Ko'pgina talabalar va mutaxassislarda quyidagi savollar bo’lishi mumkin, nima uchun bu kompaniyalarning intervyularida til/frameworklar/asboblar bo'yicha maxsus savollar emas, balki ma’lumotlar tuzilmasi va algoritmlarga e'tibor qaratilgan? Keling, nima uchun bunday bo'lishini qarab o’tamiz. Agar biror kishidan biror narsa haqida qaror qabul qilishini so'rasangiz, u shunday javob berishi mumkin: “ Men X ni tanlayman, chunki u A, B dan yaxshiroqdir. Men C ni ham tanlshim mumkin edi, lekin men buni yaxshiroq deb o’ylayman". Kundalik hayotimizda biz har doim vazifani qisqa vaqt ichida samarali va kam resurslardan foydalangan holda bajaruvchi insonlar ortidan ergashamiz. Xuddi shu narsalar ham ushbu kompaniyalar bilan sodir bo'ladi. Bu kompaniyalar duch keladigan muammo ancha murakkab va juda katta miqyosda. Dastur ishlab chiqaruvchilari, shuningdek, ushbu kompaniyalar muammolarini hal qilishda to'g'ri qarorlar qabul qilishlari kerak. Hash jadvallar, daraxtlar, graflar kabi ma’lumotlar tuzilmasi va turli algoritmlarni bilish bu muammolarni samarali hal qilishda katta yordam beradi va intervyu oluvchilar nomzodlarning bu vositalarni muammoni hal qilish uchun qanday ishlatayotishiga ko'proq qiziqishadi. Xuddi avtomobil ustasi mashinani tuzatish va uni to'g'ri ishlashi uchun to'g'ri vositaga muhtoj bo'lgani kabi, dasturchi ham dasturni to'g'ri ishlashi uchun to'g'ri vositaga (algoritm va ma'lumotlar tuzilishi) muhtoj. Shunday qilib, intervyu oluvchi ushbu muammoni hal qilish uchun to'g'ri vositalar to'plamini qo'llay oladigan nomzodni aniqlab olishga harakat qiladi. . Agar siz bir ma'lumot strukturasining boshqasidan farqli o'laroq xususiyatlarini bilsangiz, muammoni hal qilish uchun to'g'ri ma'lumotlar tuzilmasini tanlashda to'g'ri qaror qabul qila olasiz. Google, Microsoft, Facebook, Amazon kabi kompaniyalarda ishlaydigan muhandislar boshqalardan farq qiladi va boshqa kompaniyalarga qaraganda yuqori maosh oladi. Lekin nima uchun? Ushbu kompaniyalarda kodlash-bu faqat amalga oshirish va loyihaga ajratilgan vaqtning 20-30% vaqtini oladi. Ko'pincha kompaniyaning resurslarini (serverlar, hisoblash kuchi va h.k.) tejash uchun eng yaxshi va eng maqbul algoritmlarga ega bo'lgan narsalarni loyihalash bilan shug'ullanadi. Bu kompaniyalardagi intervyular algoritmlarga yo'naltirilganligining asosiy sababi, chunki ular o'ylab topa oladigan odamlar kompaniyani minglab dollarlarni tejashga imkon beradigan algoritmlarni yaratishni xohlashadi. Youtube, Facebook, Twitter, Instagram, GoogleMaps bu saytlarning barchasi dunyodagi eng ko'p foydalanuvchilarga ega. Bu saytlarda ko'proq foydalanuvchilar bilan ishlash uchun ko'proq optimallashtirish talab qilinadi va shuning uchun mahsulotga asoslangan kompaniyalar faqat o'z talablariga binoan dasturiy ta'minotini optimallashtiradigan nomzodlarni yollashadi. Misol: Siz Facebook kompaniyasida ishlayapsiz deylik. Sizga masala qo’yilgan, (masalan, Hindistonlik foydalanuvchilar ro'yxatini saralash)siz berayotgan yechim O (n^2) o'rniga O (nLogn), vaqt bilan muammoni hal qiladi, bu yerda n 100 millionga teng - bu esa kompaniyani qanoatlantiradi. ssenariy - 100 million (Facebookda ro'yxatdan o'tgan foydalanuvchilar soni 1 milliarddan oshganini hisobga oladigan bo'lsak). nLogn 800 million, n^2 esa 10^7 milliard bo'ladi. Xarajatlar nuqtai nazaridan, samaradorlik 10^7 martadan ko'proq yaxshilanganini ko'rishingiz mumkin, bu esa server narxi va vaqtini tejash imkonini beradi. Endi siz kompaniyalar to'g'ri qaror qabul qila oladigan va kompaniya resurslarini, vaqtini va pulini tejaydigan aqlli ishlab chiqaruvchini yollamoqchi bo'lishini tushunib oldingiz. Shunday qilib, ma'lum bir muammoni hal qilish uchun List o'rniga Hash jadvalidan foydalanishni hal qilishdan oldin, keng ko'lamli va barcha holatlar haqida yaxshilab o'ylab ko'rish kerak. Bu kompaniya uchun daromad keltirishi mumkin yoki kompaniya katta miqdordagi pulni yo'qotishi mumkin. Real hayotdagi ba'zi murakkab muammolarni hal qilish. Kitobingizni yoki kiyimingizni chalkash xonangizdan topa olmaganingizda, jahlingiz chiqadi, to’g’rimi? Albatta, yaqinlaringiz hamma narsani o'z joyida saqlashga maslahat berishsa, haqdir, shuning uchun keyingi safar narsalaringizni osongina olishingiz mumkin. Bu erda siz hamma narsani (ma'lumotlarni) shunday tuzilmada tartibga solishingiz va saqlashingiz kerakki, biror narsani qidirish kerak bo'lganda, siz osongina va iloji boricha tezroq olasiz. Bu misol, ma'lumotlarni real hayotda tartibga solish yoki tuzish qanchalik muhimligi haqida aniq tasavvur beradi. Endi kutubxonaga oid misol. Agar siz kutubxonadan “Dasturlash san’ati" kitobini topishingiz kerak bo'lsa, avval dasturlash bo'limiga, so'ngra “Dasturiy injiniring" bo'limiga o'tasiz. Agar bu kitoblar shunday tartibga solinmagan bo'lsa va tasodifiy ravishda tarqatilsa, ma'lum bir kitobni topish qiyin bo’ladi. Shunday qilib, ma'lumotlar tuzilmalari bizning kompyuterimizda ma'lumotlarni qanday tashkil qilishimizni anglatadi. Kompyuter olimlari bizda mavjud ma'lumotlarni tartibga solishning eng yaxshi usulini ishlab chiqadilar va izlaydilar, shuning uchun ularni kiritilgan ma'lumotlarga asoslanib yaxshiroq qayta ishlash mumkin. Ko'plab yangi dasturchilarda biz kundalik hayotimizda ma'lumotlar tuzilishi va algoritmining barcha turlaridan foydalanadigan va bu haqiqiy murakkab muammoni hal qilishda qanday foydali degan savol tug'iladi. Ta'kidlash joizki, siz texnologiyaning yirik gigant kompaniyalariga kirishni xohlaysizmi yoki yo'qmi, sizning kundalik hayotingizda ko'p yordam beradi. Bizga ishonmaysizmi ... Keling, ba'zi misollarni ko'rib chiqaylik. Facebook. Siz tasavvur qila olasizmi, sizning Facebookdagi do'stlaringiz, do'stlaringizning do'stlari, ularning hammasi Graf orqali osongina ifodalanishi mumkinmi? Bir necha daqiqaga o'tirib, yana o'ylab ko'ring. Siz do'stlaringizning Facebookdagi aloqalarini ifodalash uchun graf qo'llashingiz mumkin. Agar sizga kartalar to'plamini saqlash va to'g'ri joylashtirish kerak bo'lsa, buni qanday qilardingiz? Siz uni tasodifiy tashlaysiz yoki siz kartalarni bir -birining ustki qismiga joylashtirasiz. Siz bu erda Stack -dan foydalanib, kartalarni bir -biriga to'g'ri joylashtirishingiz mumkin. Agar sizga lug'atda so'z qidirish kerak bo'lsa, sizning yondashuvingiz qanday bo'ladi? Siz sahifa -sahifa yurasizmi yoki biron -bir sahifani ochasizmi, agar so'z topilmasa, siz joriy sahifadagi so'zlarning tartibiga qarab (ikkilik qidiruv) ochilgan sahifadan oldin/keyin ochasiz. Birinchi ikkisi haqiqiy muammo uchun to'g'ri ma'lumotlar tuzilmasini tanlashning yaxshi namunasi, uchinchisi-ma'lum bir muammoni qisqa vaqt ichida hal qilish uchun to'g'ri algoritmni tanlashning yaxshi namunasidir. Yuqoridagi barcha misollar bizning kundalik hayotimizda ma'lumotlarni qanday tashkil etish haqiqatan ham muhimligini aniq tushunishga imkon beradi. Ma'lumotni ma'lum bir tuzilishga joylashtirish ko'p vaqtni tejashga yordam beradi va ularni boshqarish yoki ulardan foydalanish osonlashadi. Xuddi shu narsa algoritmga ham tegishli, biz hammamiz vaqtimizni, kuchimizni va resurslarimizni tejashni xohlaymiz. Biz hammamiz kundalik hayotimizdagi muammolarni hal qilishning eng yaxshi usulini tanlashni xohlaymiz. Dunyoda juda ko'p muammolar borki, ularni hal qilish uchun bir necha soat yoki kun kerak bo'ladi, hatto yillar talab qilinishi mumkin. 6-MAVZU: DASTURIY TA’MINOTNI LOYIHALASH MODELLARI Har qanday yangi dastur yoki dasturiy ta'minotni ishlab chiqishda, uni yakuniy ishga tushirish uchun zarur bo'lgan turli bosqichlarni ko'rib chiqish muhimdir. Dasturiy ta'minotning to'g'ri ishlashi uchun zarur bo'lgan qadamlar quyidagilarni o'z ichiga oladi: ishlab chiqish, joriy qilish/kodlash, sinovdan o'tkazish va muntazam texnik xizmat ko'rsatish. Siz yaratayotgan dasturiy ta'minot yoki dastur turidan qat'i nazar, ishlab chiqish va sinov rejasi har qanday loyihani muvaffaqiyatli yakunlashning muhim jihati hisoblanadi. Biz dasturiy ta'minotni ishlab chiqish va boshqarishning eng mashhur modellarini, ularning afzalliklari va kamchiliklarini ko'rib chiqamiz. Download 1.5 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling