OYD ning vujudga kelishi va SQQ tilining yaratilishi 1970 yillar oxirida ko’plab loyihalar S strukturaviy dasturlash tili yordamida qayta ishlash uchun oson bo’lgan eng yuqori ko’rsatkichga erishgan. Endi bularga yangicha munosabat talab qilina boshlandi va ushbu muammoni hal etish uchun dastur tuzuvchiga katta hajmdagi dasturlar bilan ishlash imkonini beruvchi ob’ektga yo’naltirilgan dasturlash (OYD) yaratildi. Garchi, o’sha vaqtda S eng ommabop til bo’lishiga qaramasdan OYD ni qo’llab-quvvatlamadi. Shu bois uning ob’ektga yo’naltirilgan (keyinchalik SQQ deb atalgan) versiyasini yaratish zaruriyati tug’ildi.
Bu versiya o’sha Bell Laboratories kompaniyasining xodimi Byarn Straustrap tomonidan 1979 yil boshida ishlab chiqilgan. Dastlab yangi til “S sinflar bilan” degan nom oldi. Lekin, u 1983 yilda SQQ deb qayta nomlangan. Bo’lib, o’zida S tilini to’la qamrab oladi (ya’ni, S SQQ uchun poydevor bo’lib xizmat qiladi) va ob’ektga yo’naltirilgan dasturlashni qo’llab-quvvatlash uchun mo’ljallangan yangi imkoniyatlarni namoyon qiladi. Aslida SQQ S tilining ob’ektga yo’naltirilgan versiyasi hisoblanadi. Shuning uchun C#ni biluvchi dastur tuzuvchi uchun SQQ da dasturlashga o’tishda yangi tilni emas, balki faqatgina OYD ning yangi konsepsiyasini o’rganish kifoya qiladi.
SQQ tili uzoq vaqt mobaynida sifatga etibor bermay, faqat miqdor oshirish, hajmni kengaytirish jihatidan rivojlandi. 1990 yillar boshida u ommaviy ravishda qo’llanila boshlandi va katta yutuqlarga erishdi. O’n yillikning oxirida esa dasturiy ta’minotni qayta ishlashda eng keng foydalaniladigan va bugungi kunda ham peshqadamlik qilayotgan tilga aylandi.
Shuni anglash muhimki, SQQ ni ishlab chiqilishi yangi dasturlash tilini yaratishga intilish hisoblanmaydi, balki mavjud tilni faqatgina yetarli darajada muvaffaqiyatli takomillashtiryapti va to’ldiryapti. Bunday qarash, hozirda ham kompyuter tillarini rivojlantirishning yangi yo’nalishlarida ham qo’llanilayapti.
Internet va Java tilining vujudga kelishi Dasturlash tillarini rivojlantirishdagi keyingi katta muvaffaqiyatlardan biri Java tili bo’ldi. Dastlab Oak deb atalgan Java ustida ishlash 1991 yilda Sun Microsystems kompaniyasida boshlandi. Djeyms Gosling, Patrik Noton, Kris Vort, Ed Frank va Mayk Sheridan mazkur tilning asosiy ishlab chiquvchilari bo’lgan.
Java SQQ tilidan olingan sintaksis va strategiya bilan strukturaviy ob’ektga yo’naltirilgan til hisoblanadi. Java innovatsiyalari axborot texnologiyalarining shiddat bilan rivojlanishi va Internet foydalanuvchilari sonining tez sur’atlarda o’sishi, shuningdek dasturlash texnologiyalarining takomillashtirilishini ta’minladi. Internet ning keng tarqalishigacha yozilgan ko’plab dasturlar aniq protsessorlar va muayyan operatsion tizimlar uchun kompilyatsiya qilindi. Garchi dastur tuzuvchilar muvaffaqiyatli dasturlarni yozishda deyarli har doim koddan takroriy foydalanish savolini bergan bo’lsalar-da, bu savol birinchi navbatdagisi emas edi. Biroq, Internet ning (ya’ni kompyuter tarmog’i orqali turli xildagi protsessorlar va operatsion tizimlarni birlashtirish imkoniyatlarining paydo bo’lishi) rivojlanishi bilan aynan dasturni bir platformadan boshqasiga oson o’tkazish muammosi birinchi rejaga chiqdi. Bu vazifalarni hal etish uchun yangi til zarur edi va u Java bo’ldi.
Ta’kidlash kerakki, dastlab Java nisbatan oddiy rol o’ynadi. U til platformasiga bog’liq bo’lmagan, o’rnatilgan kontrollerlar uchun dasturiy ta’minotni yaratishda qo’llash mumkin bo’lgan vosita tarzida yaratildi. 1993 yilda kichik miqyosda (o’rnatilgan kontrollerlar uchun) o’tkazuvchanlik muammolarini hal qilish uchun foydalaniladigan texnologiyalar katta miqyosda (Internet uchun) foydalanilishi mumkinligi ravshan bo’ldi. Java ning eng asosiy imkoniyati – platformalararo o’tkazish kodini yaratish qobiliyati ushbu tilni tez tarqalishiga sabab bo’ldi.
Java da o’tkazuvchanlik dasturning boshlang’ich kodlarini bayt-kod deb ataladigan oraliq tilga, keyinchalik Java (Java Virtual Machine, JVM) virtual mashinasi tomonidan bajariladigan translyatsiya qilish vositasi yordamida erishiladi. Shunday ekan, Java-dasturi JVM ga ega bo’lgan ixtiyoriy platformada ishga tushirilishi mumkin. JVM nisbatan oson tatbiq etilishi sababli, u ko’p sonli platformalar uchun mo’ljallangan.
Bayt-koddan Java da foydalanish amalda har doim mashina kodlari tomonidan kompillyatsiya qilinadigan S va SQQ tillarida kodlarni qo’llashdan keskin farq qiladi. Mashina kodi muayyan protsessorlar va operatsion tizimlar bilan bog’liq, shunga ko’ra, SG’SQQ-dasturlarini boshqa platformalarda ishga tushirish uchun dasturning dastlabki kodini bu platformalarning (ya’ni dasturning bir nechta ijrochi versiyalari bo’lishi kerak) har birini mashina kodiga qayta kompillyatsiya qilish zarur. Bu ko’p mehnat talab qiladigan va qimmat jarayon ekanligi tushunarli. Java da esa elegant va samarali qaror – oraliq tillardan foydalanish taklif qilingan. Va bu qaror keyinchalik C#ga tatbiq etilgan.
YUqorida ta’kidlanganidek, Java mualliflari yangi qarashlari bilan uni S va SQQ (Java sintaksisi S ga asoslanadi, ob’ekt modeli esa SQQ dan shakllantirilgan ) negizida yaratishdi. Garchi Java-kod S yoki SQQ bilan o’zaro muvofiq bo’lmasada, uning sintaksisi mazkur tillar sintaksisidan kelib chiqqan. Shuning uchun S va SQQ dan foydalanuvchi dastur tuzuvchilarning katta qismi Java ga ortiqcha qiyinchiliklarsiz o’tishga muvaffaq bo’lishdi. SQQ ishlab chiqishda Straustrap kabi Java mualliflariga ham mutlaqo yangi tilni yaratish zaruriyati bo’lmadi. Ular asos sifatida oldin ma’lum bo’lgan tillardan foydalanishdi va diqqatlarini innovatsion elementlarga jamlay oldilar. Ta’kidlash joizki, Java yaratilganidan keyin S va SQQ tillari yangi kompyuter tillarini yaratish uchun umumqabul qilingan poydevor bo’lib qoldi.
C# tilining yaratilish tarixi Garchi Java tili dasturlarni bir platformadan boshqasiga o’tkazishning ko’plab muammosini hal qilgan bo’lsa ham, zamonaviy Internet-muhitida samarali ishlashi uchun unga bir qator xossalar yetmayapti. Ulardan biri bir qancha kompyuter tillarini (ko’p tilli dasturlash) o’zaro aloqa imkoniyatlarini qo’llab-quvvatlash hisoblanadi. Ko’p tilli dasturlash deganda turli tillarda yozilgan kodning birgalikda ishlash qobiliyati tushuniladi. Bu imkoniyat katta dasturlarni yaratishda, shuningdek ko’plab kompyuter tillarida va turli xil operatsion muhitlarda foydalanish mumkin bo’lgan alohida komponentlarni dasturlashda juda muhimdir.
Windows platformalarini to’g’ridan-to’g’ri qo’llab-quvvatlashning yo’qligi Java ning jiddiy kamchiligi hisoblanadi (Garchi, Java-dasturlari Windows muhitida installirlashgan JVM mavjudligida bajarishi mumkin bo’lsa ham).
Ushbu muammoni hal etish uchun Microsoft kompaniyasi 1990 yillar oxirida bu kompaniyaning umumiy strategiyasi .NET ning tarkibiy qismi hisoblangan C#tilini ishlab chiqdi (tilning bosh me’mori Anders Xeylsberg). Alfa-versiya tili 2000 yil o’rtalaridan muomalaga chiqarila boshlandi.
C#tili butun dunyoda keng qo’llanilayotgan va eng ommabop bo’lgan S, SQQ va Java dasturlash tillari bilan to’g’ridan-to’g’ri bog’liqdir. Hozirda amalda barcha professional dastur tuzuvchilar mazkur tilni biladi, shuning uchun ularga asoslangan C#ga o’tish ortiqcha qiyinchiliklarsiz ro’y beradi. Xeylsberg, CQQ va Java tillari muallifi sifatida, “g’ildirak kashf” qilmadi, balki kashf etilgan yo’ldan ketdi – asos sifatida oldin yaratilgan tillardan foydalangan holda e’tiborni yaxshilash va innovatsiyalarga qaratdi.
C#ning genealogik tasnifi 1.1. rasmda ko’rsatilgan. C#tili SQQ da aniqlagan ob’ektli modelga qurilgan. Sintaksisi, ko’plab kalit so’zlar va operatorlarni C tilidan meros qilib olgan. Shu sababli dasturlashning ushbu tillarini bilganlar uchun C#ni o’rganishda hech qanday muammo kelib chiqmaydi.
C#va Java o’rtasidagi aloqa nisbatan murakkab. Ikkala til ham o’tkazuvchi kodni yaratish uchun ishlab chiqilgan, C va SQQ larga asoslanadi, ularning sintaksisi va ob’ektli modelidan foydalanadi. Biroq, mazkur tillar o’rtasida to’g’ridan-to’g’ri aloqa yo’q, ular ko’proq umumiy ajdodlarga ega, lekin ko’plab belgilari bilan farq qiluvchi amakivachchalarga o’xshaydi. Agarda siz Java da ishlashni bilsangiz, bu C#ni o’zlashtirishingizni yengillashtiradi, va buning teskarisi, Java ni o’rganishda C#ning ko’plab konsepsiyalari bilimlari sizga foydasi tegadi.
C#tili mazkur kitobda ko’rib chiqiladigan ko’plab innovatsion xossalarga ega. Birdaniga anglash mumkinki, uning bir nechta eng muhim yangiliklari dasturiy ta’minlash komponentlarini o’rnatilgan qo’llab-quvvatlashga taalluqlidir.
YA’ni aslida C#komponentlarga yo’naltirilgan o’zida, masalan, dasturiy ta’minlash komponentlarining tarkibiy qismlarini bilvosita qo’llab-quvvatlovchi elementlarni (xossa, usul va hodisalar kabilar) qamrab oluvchi til sifatida yaratilgan.
Lekin, ehtimol, C#ning eng muhim yangi xususiyati – bu uning ko’p tilli muhitda ishlash qobiliyatining mavjudligidir.