Net dasturlash Programmistlar – ular shunday odamlar bo‘lib, hamma vaqt ham biror narsa etishmayotgandek, chunki programmaning effektivligi va qo‘llanilishida uning tez ishlashini orttirish uchun doim xar xil usullarni izlashda bo‘ladi. Ayrim xollarda biz ishlashda ko‘proq instrumentlarni talab kilamiz, ya’ni asosan programmalash tillari bilan ishlagandda. Bunday tillar ko‘pchilikni tashkil qilgani bilan ularning ichida ayrimlari kuchli hisoblanadi. Tilning effektivligi uning tezligi va shu bilan bir vaqtda egiluvchan (qo‘lay) ligiga bog‘liq bo‘ladi. Tilning sintaksisi qisqa tushunarli bo‘lishi kerak. U korrekt kodni tuza olishi bilan keng imkoniyatlarga ham ega bo‘lishi, lekin eskicha (va tupik) echimlarga ega bo‘lmasligi kerak. Xulosa qilib aytganda yaxshi til bir material bulmagan sifatga ega bo‘lishi kerak, ya’ni unda ishlagan odam rohat qilishi kerakdir. Manna shunday tillarning biri С# tili hisoblanadi.
NET Framework muhitini qo‘llab quvvatlaydigan Microsoft kompaniyasida yaratilgan С# tili programmalash sohasidagi boy merosga tayanadi. Uning bosh arxitektori shu sohaning etakchi mutaxasisi— Anders Xeylsberg (Anders Hejlsbeni).
С# — dunyodagi ikkita eng mufaqiyatli С va C++ kompyuter tillarining avlodidir. U S tilidan sintaksis, kalit suzlarini va operatorlarni meros qilib olgan. U C++ tilida aniqlangan ob’ekt modelini qurish va takomillashtirish imkoniyatga ega. SHuningdek, С# boshqa muvafaqiyatli Java tili bilan yaqindan bog‘langan. С# i Java umumiy kelib chiqishga ega bo‘lganligi bilan, ammo ularning ko‘pchilik muhim jihatlari bir biridan farq qilib, ularni “qarrindosh (dvoyurodnыy) aka ukalar” deyishga bo‘ladi. Masalan, ular ikkalasi ham programmalashda keng tarqalgan sistemani qo‘llab quvvatlaydi va yaxshi ishlay olishi uchun oraliq kodni foydalanadi, lekin amalga oshirish qismlari(detali)da bir-biridan farq qilanadi.9 Meros qilingan xarakteristikalardan tarkib topgan quvvatli fundamentga tayangan С#, programmalash san’atini yangi pag‘onaga ko‘taradigan muhim yangiliklarga egadir. Masalan, С# tilining elementlariga vakil (nomoyonda), xossalar, indeksatorlar va hodisalardek tushunchalar kiritilgan. SHuningdek, nishon(atribut) larni qo‘llab quvvatlaydigan sintaks qo‘shilgan; COM (Component Object Model bu —Microsoft komponentli ob’ektining modeli — o‘zining boshqa ob’ektlarga bo‘lgan xizmatini ko‘rsatadigan ob’ekt yordamida interfeysga ega bo‘lgan standart mexanizm ) bilan bog‘liq bo‘lgan muammolarni yo‘qotish hisobiga komponentlarni tuzish soddalashtirilgan. SHuningdek, Java tilidek С# tili xatolarni dinamik holda izlaydigan, xavsizligini va programmalarni boshqarishni taminlaydigan vositanilarni taqdim etadi. Biroq Java dan С# ning farqi bu uning programmistlarga ko‘rsatkichlarga murojat qila olishni berishida. SHunday qilib С#, C++ ning dastlabki kuchi va aniq shablon sinflarining(template class) korrekt foydalanadigan, turini kantrollaydigan (type checking) mexanizmga ega bo‘lgan Java ning xavfsizligini o‘zida mujassamlashtirgan. SHuningdek, С# tilida qo‘laylilik va ishonchlilik orasidagi qarama-qarshilik miyorlangan va yo‘q qilingan(foydalanuvchi yoki programmaga bilinmaydi).
Hisoblash texnikaning rivojlanish yo‘lidagi programmalash tillarining evolyusiyasi hisoblash muhitini, programmistlarning fikrlash usulini va programmalashga qarashni o‘zgartiradi. С# tili ham bundan mustasno emas. SHaroitga moslashish va yangiliklar kiritishni takomillashtirish jarayonida С# tili hozirgi vaqtda oldingi qatorlardadir. Bu har qanday professional programmist e’tiborga oladigan til xisoblanadi.
Dasturlar Dastur so‘zi ham komandalarning alohida blokini (berilgan kodini) aniqlovchi so‘z, ham yaxlit holdagi bajariluvchi dasturiy mahsulotni belgilovchi so‘z sifatida ishlatiladi.
Bu ikki xillilik o‘quvchini chalg‘itishi mumkin. SHuning uchun unga aniqlik kiritamiz. Demak dasturni yo dasturchi tomonidan yoziladigan komandalar to‘plami, yoki amallar bajaradigan kompyuter mahsuloti sifatida tushinamiz.
Dasturchilar oldida turgan masalalar
Vaqt o‘tishi bilan dasturchilar oldiga quyilgan masalalar o‘zgarib boryapti. Bundan yigirma yil oldin dasturlar katta hajmdagi ma’lumotlarni qayta ishlash uchun tuzilar edi. Bunda dasturni yozuvchi ham, uning foydalanuvchisi ham kompyuter sohasidagi bilimlar bo‘yicha professional bo‘lishi talab etilardi. Hozirda esa ko‘pgina o‘zgarishlar ro‘y berdi. Kompyuter bilan ko‘proq uning apparat va dasturiy ta’minoti haqida tushunchalarga ega bo‘lmagan kishilar ishlashyapti. Kompyuter odamlar tomonidan uni chuqur o‘rganish vositasi emas, ko‘proq o‘zlarining oldilariga qo‘yilgan, o‘zlarining ishlariga tegishli bo‘lgan muammolarini echish instrumenti bo‘lib qoldi.10 Foydalanuvchilarning ushbu yangi avlodini dasturlar bilan ishlashlarini osonlashtirilishi bilan bu dasturlarning o‘zini murakkabligi darajasi oshadi. Zamonaviy dasturlar - foydalanuvchi bilan do‘stona munosabatni yuqori darajada tashkil qiladigan ko‘p sondagi oynalar, menyu, muloqot oynalari va vizual grafikaviy muhitlardan tarkib topgan interfeysga ega bo‘lishi lozim.
Dasturlashga talabni o‘zgarishi nafaqat tillarning o‘zgarishiga balki uni yozish texnologiyasini ham o‘zgarishiga olib keldi. Dasturlash evolyusiyasi tarixida ko‘pgina bosqichlar bo‘lishiga qaramay biz bu kursimizda protsedurali dasturlashdan ob’ektlarga mo‘ljallangan dasturlashga o‘tishni qaraymiz.
Protseduraviy, strukturaviy va ob’ektlarga mo‘ljallangan dasturlash Shu vaqtgacha dasturlar berilgan ma’lumotlar ustida biror bir amal bajaruvchi protseduralar ketma-ketligidan iborat edi. Protsedura yoki funksiya ham o‘zida aniqlangan ketma-ket bajariluvchi komandalar to‘plamidan iboratdir. Bunda berilgan ma’lumotlarga murojaatlar protseduralarga ajratilgan holda amalga oshiriladi.
Strukturaviy dasturlashning asosiy g‘oyasi «bo‘lakla va hukmronlik qil» prinsipiga butunlay mos keladi. Kompyuter dasturini masalalar to‘plamidan iborat deb qaraymiz. Oddiy tavsiflash uchun murakkab bo‘lgan ixtiyoriy masalani bir nechta nisbatan kichikroq bo‘lgan tarkibiy masalalarga ajratamiz va bo‘linishni toki masalalar tushunish uchun etarli darajada oddiy bo‘lguncha davom ettiramiz.
Misol sifatida kompaniya xizmatchilarining o‘rtacha ish haqini hisoblashni olamiz. Bu masala sodda emas. Uni qator qism masalalarga bo‘lamiz:
Har bir xizmatchining oylik maoshi qanchaligini aniqlaymiz.
Kompaniyaning xodimlari sonini aniqlaymiz.
Barcha ish haqlarini yig‘amiz.
Hosil bo‘lgan yig‘indini kompaniya xodimlari soniga bo‘lamiz.
Xodimlarning oylik maoshlari yig‘indisini hisoblash jarayonini ham bir necha bosqichlarga ajratish mumkin.
Har bir xodim haqidagi yozuvni o‘qiymiz.
Ish xaqi to‘g‘risidagi ma’lumotni olamiz.
Ish haqi qiymatini yig‘indiga qo‘shamiz.
Keyingi xodim haqidagi yozuvni o‘qiymiz.
O‘z navbatida, har bir xodim haqidagi yozuvni o‘qish jarayonini ham nisbatan kichikroq qism operatsiyalarga ajratish mumkin:
Xizmatchi faylini ochamiz.
Kerakli yozuvga o‘tamiz.
Ma’lumotlarni diskdan o‘qiymiz.
Strukturaviy dasturlash murakkab masalalarni echishda etarlicha muvofaqqiyatli uslub bo‘lib qoldi. Lekin, 1980 – yillar oxirlarida Strukturaviy dasturlashning ham ayrim kamchiliklari ko‘zga tashlandi.11 Birinchidan, berilgan ma’lumotlar (masalan, xodimlar haqidagi yozuv) va ular ustidagi amallar (izlash, tahrirlash) bajarilishini bir butun tarzda tashkil etilishidek tabiiy jarayon realizatsiya qilinmagan edi. Aksincha, protseduraviy dasturlash berilganlar strukturasini bu ma’lumotlar ustida amallar bajaradigan funksiyalarga ajratgan edi.
Ikkinchidan, dasturchilar doimiy tarzda eski muammolarning yangi echimlarini ixtiro qilar edilar. Bu situatsiya ko‘pincha velosipedni qaytam ixtiro qilish ham deb aytiladi. Ko‘plab dasturlarda takrorlanuvchi bloklarni ko‘p martalab qo‘llash imkoniyatiga bo‘lgan hohish tabiiydir. Buni radio ishlab chiqaruvchi tomonidan priyomnikni yig‘ishga o‘xshatish mumkin. Konstruktor har safar diod va tranzistorni ixtiro qilmaydi. U oddiygina – oldin tayyorlangan radio detallaridan foydalanadi xolos. Dasturiy ta’minotni ishlab chiquvchilar uchun esa bunday imkoniyat ko‘p yillar mobaynida yo‘q edi.
Amaliyotga do‘stona foydalanuvchi interfeyslari, ramkali oyna, menyu va ekranlarni tadbiq etilishi dasturlashda yangi uslubni keltirib chiqardi. Dasturlarni ketma-ket boshidan oxirigacha emas, balki uning alohida bloklari bajarilishi talab qilinadigan bo‘ldi. Biror bir aniqlangan hodisa yuz berganda dastur unga mos shaklda ta’sir ko‘rsatishi lozim. Masalan, bir knopka bosilganda faqatgina unga biriktirilgan amallar bajariladi. Bunday uslubda dasturlar ancha interaktiv bo‘lishi lozim. Buni ularni ishlab chiqishda hisobga olish lozim.
Ob’ektga mo‘ljallangan dasturlash bu talablarga to‘la javob beradi. Bunda dasturiy komponentlarni ko‘p martalab qo‘llash va berilganlarni manipulyasiya qiluvchi metodlar bilan birlashtirish imkoniyati mavjud.
Ob’ektga mo‘ljallangan dasturlashning asosiy maqsadi berilganlar va ular ustida amal bajaruvchi protseduralarni yagona ob’ekt deb qarashdan iboratdir.