**Dasturlash tillari tarixi** — 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.

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.

Tarixi
------

### Mashina kodlari va assembler

Kompyuterning elektron qurilmalari ishlashning fizik tamoyillari shundan iboratki, kompyuter faqat bir va noldan iborat buyruqlarni — kuchlanishning pasayishi ketma-ketligini, yaʼni mashina kodini idrok eta oladi. Kompyuterlar rivojlanishining dastlabki bosqichida odam kompyuterga tushunarli tilda, mashina kodlarida dasturlar tuzishi kerak edi. Har bir koʻrsatma birliklar va nollarning turli kombinatsiyasi sifatida ifodalangan *opkod* hamda *operand* manzillaridan iborat edi. Shunday qilib, protsessor uchun har qanday dastur oʻsha paytda birlar va nollar ketma-ketligi sifatida qaragan.

Keyinchalik kompyuter bilan muloqot qilish amaliyoti shuni koʻrsatdiki, bunday tilni oʻzlashtirish qiyin va noqulaydir. Uni ishlatganda 1 yoki 0 ni notoʻgʻri ketma-ketlikda yozib koʻplab xatolarga yoʻl qoʻyish ehtimoli juda yuqori edi. Dasturni boshqarish juda qiyin boʻlgan. Bundan tashqari, mashina kodlarida dasturlashda kompyuterning ichki tuzilishini, har bir blokning ishlash prinsipini yaxshi bilish kerak edi va bunday tildagi eng yomon narsa shundaki, bu tildagi dasturlar — birlar va nollarning juda uzun ketma-ketligi mashinaga bogʻliq, yaʼni har bir kompyuter uchun oʻz dasturini tuzish kerak edi va mashina kodlarida dasturlash juda koʻp narsa: vaqt, ish va dasturchining eʼtiborini oshirishni talab etardi.

Tez orada mashina kodini yaratish jarayonini avtomatlashtirish mumkinligi maʼlum boʻldi. 1950-yildan boshlab dasturlarni yozish uchun *mnemonik til* — **Assembler tili**dan foydalanila boshlandi. Assembler tili mashina kodini inson uchun qulayroq shaklda koʻrsatishga imkon berdi: buyruqlar va bu buyruqlar bajariladigan obyektlarni belgilash uchun buyruqning mohiyatini aks ettiruvchi ikkilik kodlar oʻrniga harflar yoki qisqartirilgan maxsus soʻzlar qoʻllanilgan. Masalan, assembler tilida ikkita raqamni qoʻshish boʻyicha koʻrsatma *add* soʻzi bilan ifodalanadi, uning mashina kodi *000010* tarzida boʻladi.

Assembler quyi darajadagi dasturlash tilidir. Quyi darajadagi dasturlash tili, bu muayyan turdagi protsessorga yoʻnaltirilgan va uning xususiyatlarini hisobga oladigan dasturlash tili demakdir. Bunday holda, „quyi" „yomon" degani emas, balki bu shuni anglatadiki, til operatorlari mashina kodiga yaqin va maxsus protsessor koʻrsatmalariga qaratilgan boʻladi. Assemblar tilining paydo boʻlishi dasturchilarning hayotini sezilarli darajada osonlashtirdi, chunki endi ular koʻzda miltillovchi nollar va birlar oʻrniga oddiy tilga yaqin belgilardan iborat buyruqlar bilan dastur yozishlari mumkin edi. Oʻsha vaqt uchun bu til innovatsiya edi va mashhur edi, chunki u kichik dasturlarni yozishga imkon berardi, bu esa oʻsha davr mashinalari uchun muhim mezon sanalgan.

Ammo u orqali yirik dasturiy taʼminotlar ishlab chiqish murakkabligi boʻlganligi bois uchinchi avlod tillari hisoblanmish yuqori darajadagi tillarning paydo boʻlishiga olib keldi. Ammo assemblerdan foydalanish shu bilan tugamadi, u bugungi kungacha tor doiralarda mashhur boʻlib kelmoqda. Hozirgi vaqtda u dasturlarning alohida qismlarini yozishda yoki baʼzan dasturlarning oʻzini yozishda qoʻllaniladi. Misol tariqasida, drayverlar, oʻyinlar va operatsion tizimlar yuklagichi (*bootloader*)ni yozishda assemblerga murojaat etiladi. Shuni unutmaslik kerakki, bu til hakerlar orasida ham mashhurdir, chunki bu tilda yozilgan dasturning tezligi yuqori darajadagi dasturlash tilida yozilgan dastur tezligidan ancha yuqori boʻlishidadir. Buning sababi shundaki, assemblerda yozilgan dastur hajmi juda kichik boʻladi. Antivirus ishlab chiquvchilari oʻz dasturlarining baʼzi modullarida assemblerdan ham foydalanadilar.

### Birinchi yuqori darajadagi dasturlash tillari

1950-yillarning oʻrtalari dasturlashning jadal rivojlanishi bilan tavsiflanadi. Mashina kodlarida dasturlashning roli pasaya boshladi, mashinalar va dasturchilar oʻrtasida vositachi boʻlgan yangi turdagi dasturlash tillari paydo boʻla boshladi. Dasturlash tillarining ikkinchi va uchinchi avlodlari davri boshlandi. XX asrning 50-yillari oʻrtalariga kelib, birinchi yuqori darajadagi dasturlash tillari (*high-level programming languages*)ni yaratishga kirishildi. Ushbu tillar kompyuterning maʼlum bir turiga (mashinadan mustaqil) bogʻlanmagan edi. Ularning har biri uchun oʻz kompilyatorlari ishlab chiqilgandi. *Kompilyatsiya* — yuqori darajadagi manba tilda yozilgan dasturni mashina kodiga yaqin quyi darajali tildagi ekvivalent dastur (absolyut kod, obyekt moduli, baʼzan assembler tili)ga oʻgirishni anglatadi.

Birinchi yuqori darajadagi dasturlash tili 1942-1945-yillarda Konrad Suze tomonidan yaratilgan en:Plankalkül dasturlash tili edi. Buyruqlarni kompyuterga yetkazish uchun moʻljallangan birinchi ishlaydigan dasturlash tillari 1950-yillarning boshlarida yozilgan. 1949-yilda taklif qilingan Jon Mauchlyning en:Short code elektron kompyuter uchun yaratilgan birinchi yuqori darajadagi tillardan biri edi. Mashina kodidan farqli oʻlaroq, Short code matematik ifodalarni tushunarli shaklda ifodalaydi. Biroq, dastur har safar ishga tushirilganda mashina kodiga tarjima qilinishi kerak edi, bu jarayon ekvivalent mashina kodini ishlatishdan ancha sekinroq davom etardi.

Oʻz kompilyatoriga ega boʻlgan birinchi yuqori darajali til 1951-yilda doktorlik dissertatsiyasi uchun Korrado Böhm tomonidan yaratilgan.

#### FORTRAN

Tijoriy maqsad uchun ishlab chiqilgan birinchi til FORTRAN (***FOR**mula **TRAN**slation*) 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.

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 yaratilgan, ammo u unchalik mashhur boʻlmagan. Fortranning keng qoʻllanilishi 1968-yilda BESM-6 (*БЭСМ-6*) mashinasi uchun „*ФОРТРАН-ДУБНА*" kompilyatori yaratilgandan keyin boshlandi. 1972-yilda paydo boʻlgan ES (*ЕС*) EHMlarida dastlab Fortran translyatori (boshqa dasturlar bilan birga IBM/360 dan „aynan nusxa olingan") mavjud edi.

#### ALGOL

Algol 1958-yilda ETHʼda (Syurix, Shveytsariya) bir haftalik konferentsiyada keng koʻlamli ilovalar uchun universal dasturlash tili sifatida ishlab chiqilgan va keyin Xalqaro axborotni qayta ishlash federatsiyasi tomonidan tuzilgan qoʻmita tomonidan yakunlangan. Qoʻmita tarkibiga Yevropa hamda amerikalik bir qancha yetakchi dasturlash tillari sohasidagi olimlar va muhandislar, jumladan, Jon Bekus, Jon Makkarti, Piter Naur, Edsger Deykstr va keyinchalik Kobol tilini rivojlantirish qoʻmitasiga raislik qilgan Jozef Vegstenruen jalb etildi.

Dastlab, taklif qilingan ALGOL (*ALGOrithmic Language*) nomi rad etildi. Ammo u umumiy foydalanishga aylanganligi sababli, IALʼning rasmiy nomi keyinchalik ALGOL 58 ga oʻzgartirilishi belgilab qoʻyildi.

Yangi tilning tarafdorlari ham, tanqidchilari ham bor edi. Qoʻshma Shtatlarda Algol sovuqqonlik bilan qabul qilindi, u faqat akademik muhitda mashhur edi. Algolnining targʻibotchilari bir qator qiyinchiliklarga duch kelishdi. Xususan, oʻsha paytda mavjud boʻlgan kompyuterlarning hech biri Algol alifbosini tashkil etgan barcha 116 ta harfni kiritish-chiqarishni qoʻllab-quvvatlamas edi.

Ammo Yevropada Algol ishtiyoq bilan qabul qilindi. U akademik muhitda tezda mashhurlikka erishdi va kompilyatorlar hamma joyda ishlab chiqildi, ularning koʻpchiligi amalga oshirishning murakkabligiga qaramay, juda muvaffaqiyatli boʻldi. Algol Buyuk Britaniyadan SSSRʼning Uzoq Sharqiga tarqalib, ilmiy nashrlarda algoritmlarni tavsiflash uchun universal til va haqiqiy dasturlash vositasiga aylandi.

Algolda dastur tushunchasi buyruqlarning erkin ketma-ketligi sifatida emas, balki aniq tasvirlangan va ajratilgan qismlardan iborat blokli tuzilma sifatida paydo boʻldi.

Algol dasturining asosiy bloki asosiy dasturning oʻzi hisoblanadi. U *begin* va *end* kalit soʻzlari juftligi bilan chegaralangan blokga oʻrnatilgan bajariladigan qismini, shuningdek, pastki dasturlarning tavsiflarini oʻz ichiga oladi. Har bir ostdastur kichik dastur shaklida boʻlib, uning ichida oʻziga xos maʼlumotlar tasvirlangan, nom va rasmiy parametrlar roʻyxati koʻrinishidagi yagona aniqlangan interfeys va kod blokini oʻzz ichiga oladi. Bunday holda, bloklar kichik ostbloklarga ajratilishi mumkin.

#### LISP

Lisp tili 1960-yilda J. Makkarti tomonidan taklif qilingan boʻlib, u raqamli boʻlmagan xarakterdagi masalalarni yechish dasturlarini ishlab chiqishga qaratilgan edi. LISP inglizcha **LIS**t **P**rocessing (*roʻyxatga ishlov berish*) iborasining qisqartmasi boʻlib, uning asosiy qoʻllanish sohasini yaxshi taʼkidlaydi.

Algebraik ifodalar, grafiklar, chekli guruhlar elementlari, toʻplamlar, xulosa chiqarish qoidalari va boshqa koʻplab murakkab obyektlarni roʻyxat shaklida tasvirlash qulayligi bois ushbu dasturlash tili tezda mashhurlikka erishdi. Xususan, roʻyxatlar kompyuterlar xotirasida axborotni taqdim etishning eng moslashuvchan shaklidir.

Oʻtgan davr mobaynida ushbu tilning bir qator dialektlari: Common LISP, Mac LISP, Inter LISP, Standard LISP va boshqalar paydo boʻldi. Ularning orasidagi farqlar katta emas va asosan oʻrnatilgan funksiyalarning bir oz boshqacha toʻplamiga va dasturlarni yozish shaklidagi baʼzi farqlari bilan xarakterlanadi. Shunday ekan, ulardan biri ustida ishlashni oʻrgangan dasturchi boshqasini bemalol oʻzlashtira oladi.

Lispʼning katta afzalligi uning funksional yoʻnalishidir, yaʼni dasturlash funksiyalar yordamida amalga oshiriladi. Bundan tashqari, funksiya maʼlum bir klassning elementlarini boshqa klassning tegishli elementlari bilan bogʻlaydigan qoida sifatida tushuniladi.

Moslashtirish jarayoni dasturning ishlashiga hech qanday taʼsir koʻrsatmaydi, faqat uning natijasi — funksiyaning qiymati muhim sanaladi. Bu katta dasturiy paketlarni yozish va diskni raskadrovka qilishni nisbatan osonlashtiradi. Dasturlarning aniqligi, ularning funksiyalarining ochiq-oydin chegaralanganligi, ularni bajarishda murakkab nojoʻya taʼsirlarning yoʻqligi mantiqiy jihatdan murakkab vazifalarni, masalan, sunʼiy intellektni dasturlash uchun majburiy talablardir.

#### COBOL

Kobol 1959-yilda ishlab chiqilgan va asosan biznes ilovalarini ishlab chiqish uchun dasturlar yozish, shuningdek, iqtisodiy sohada ishlash uchun moʻljallangan edi.

Tilni yaratuvchilar uni mashinadan mustaqil va tabiiy ingliz tiliga iloji boricha yaqinroq qilishni maqsad qilganlar. Ikkala maqsad ham muvaffaqiyatli amalga oshirildi; COBOL dasturlari hatto mutaxassis boʻlmaganlar uchun ham tushunarli hisoblanadi, chunki ushbu dasturlash tilidagi matnlar hech qanday maxsus izohga muhtoj emas.

Kobol koʻplab ilova hamda dialektlarga ega. Til uchun bir qator standartlar: 1968, 1974, 1985 va 2002-yillarda tasdiqlangan. Eng soʻnggi standart tilga obyektga yoʻnaltirilgan paradigmani joriy etdi.

Manbalar
--------

1. ↑  History of programming languages. Richard L. Wexelblat. Association for Computing Machinery New York, June 1978. 795 p. ISBN 978-0-12-745040-7.
2. ↑  R.Bogatirev. Priroda i evolyutsiya ssenarnix yazikov. — Mir PK, 2001.
3. ↑  Knuth, Donald E.; Pardo, Luis Trabb. „Early development of programming languages". Encyclopedia of Computer Science and Technology. Marcel Dekker. 7: 419-493.
4. ↑  Sebesta, W.S. (2006). Concepts of Programming Languages. p. 44. ISBN 978-0-321-33025-3.
5. ↑  Corrado Böhm’s PhD thesis
6. ↑  Е.К. Хеннера. Информатика под редакцией Е.К. Хеннера. — Академия, 2004.