Zamonaviy dasturlash tillari va ulardan foydalanish. Zamonaviy yuqori darajadagi dasturlash tili: misollar va taqqoslashlar Dasturlash tillarida dastur kengaytmalari

Har qanday dasturlash tilini o'rganishdan oldin ularning tarixi va qayerda qo'llanilishi haqida bir oz ma'lumotga ega bo'lishingiz kerak.

Men sizga 25 ta mashhur dasturlash tillarining qisqacha sharhini taqdim etaman. Eng mashhuridan boshlab eng kam mashhurgacha. Maqola dasturlash sohasida yangi boshlanuvchilar uchun tayyorlangan. Siz har bir til haqida o'qishingiz va o'zingiz yoqtirgan tilni tanlashingiz mumkin.

Dasturlash tillarini o'rganishni boshlashdan oldin, men sizga kursni o'tashingizni maslahat beraman.

1. JavaScript

Prototipga yo'naltirilgan skript dasturlash tili. JavaScript dastlab veb-sahifalarni "jonli" qilish uchun yaratilgan. Brauzerda ular to'g'ridan-to'g'ri HTMLga ulanadi va sahifa yuklanishi bilanoq ular darhol bajariladi.

JavaScript yaratilganda, u dastlab boshqa nomga ega edi: “LiveScript”. Ammo keyin Java tili juda mashhur edi va marketologlar shunga o'xshash nom yangi tilni yanada ommalashtirishga qaror qilishdi.

JavaScript Java uchun o'ziga xos "kichik ukasi" bo'lishi rejalashtirilgan edi. Biroq, tarixning o'z yo'li bor, JavaScript juda ko'p o'sdi va endi u butunlay mustaqil til bo'lib, o'ziga xos xususiyatlarga ega va Java bilan hech qanday aloqasi yo'q.

2. Java


Kuchli yozilgan ob'ektga yo'naltirilgan dasturlash tili. Java ilovalari odatda maxsus bayt-kodga tarjima qilinadi, shuning uchun ular Java Virtual Mashinasidan foydalangan holda har qanday kompyuter arxitekturasida ishlashi mumkin.

Dasturlarni bajarishning ushbu usulining afzalligi bayt-kodning operatsion tizim va apparat ta'minotidan to'liq mustaqilligi bo'lib, u Java dasturlarini mos keladigan virtual mashina mavjud bo'lgan har qanday qurilmada ishga tushirish imkonini beradi. Java texnologiyasining yana bir muhim xususiyati uning moslashuvchan xavfsizlik tizimi bo'lib, unda dastur bajarilishi to'liq virtual mashina tomonidan boshqariladi.

Bu til dastlab Oak deb nomlangan va Jeyms Gosling tomonidan iste'molchi elektron qurilmalarini dasturlash uchun ishlab chiqilgan. Keyinchalik u Java nomini oldi va mijoz ilovalari va server dasturlarini yozish uchun foydalanildi.

3.PHP


Bu umumiy, ochiq manbali, umumiy maqsadli talqin qilinadigan til (skript tili). PHP veb-ishlab chiqish uchun maxsus yaratilgan va uning kodi to'g'ridan-to'g'ri HTML kodiga kiritilishi mumkin. Tilning sintaksisi C, Java va Perl tillaridan kelib chiqqan va uni oʻrganish oson.

PHP ning asosiy maqsadi veb-ishlab chiquvchilarga dinamik ravishda yaratilgan veb-sahifalarni tezda yaratish imkoniyatini berishdir, ammo PHP doirasi bu bilan cheklanmaydi.

4. Python

Dasturchilarning mahsuldorligini, kodni o'qish qobiliyatini va veb-ilovalarni ishlab chiqishni yaxshilashga qaratilgan yuqori darajadagi umumiy maqsadli dasturlash tili. Python asosiy sintaksisi minimalist. Python-dagi kod modullarga birlashtirilishi mumkin bo'lgan funktsiyalar va sinflarga ajratilgan.

5. C#


Ob'ektga yo'naltirilgan dasturlash tili. 1998-2001 yillarda Microsoft kompaniyasida Anders Xeylsberg boshchiligidagi bir guruh muhandislar tomonidan Microsoft .NET Framework uchun ilovalarni ishlab chiqish tili sifatida ishlab chiqilgan. C# tili C-ga o'xshash sintaksisi bo'lgan tillar oilasiga tegishli bo'lib, ularning sintaksisi C++ va Java tillariga eng yaqin.

Til statik yozishga ega, polimorfizmni, operatorni ortiqcha yuklashni, delegatlar, atributlar, hodisalar, xususiyatlar, umumiy turlar va usullar, iteratorlar, yopishni qo'llab-quvvatlaydigan anonim funktsiyalar, LINQ, istisnolar, XML formatidagi sharhlarni qo'llab-quvvatlaydi.

6. C++


Kompilyatsiya qilingan, statik tarzda terilgan umumiy maqsadli dasturlash tili. Bu dunyodagi eng keng tarqalgan tillardan biridir. Google Chrome, Mozilla Firefox, Winamp va Adobe mahsulotlari qatori C++ yordamida ishlab chiqilgan. Bundan tashqari, C++ da tezkor ishlov berish va kompilyatsiya qilish tufayli ba'zi zamonaviy o'yinlar va operatsion tizimlar ishlab chiqilgan.

7. Ruby


Veb-ilovalarni ishlab chiqishga qaratilgan oddiy va o'qiladigan dasturlash tili. 1995 yilda Yukihiro Matsumto tomonidan ishlab chiqilgan. Bu tilda operatsion tizimdan mustaqil ravishda ko'p ish zarralari, qat'iy dinamik yozish va axlat yig'uvchisi mavjud.

Ruby-ning asosiy maqsadi oddiy va ayni paytda tushunarli dasturlarni yaratishdir, bunda dasturning tezligi emas, balki qisqa ishlab chiqish vaqti, sintaksisning ravshanligi va soddaligi muhim ahamiyatga ega. Til "eng kam ajablanib" tamoyiliga amal qiladi: dastur o'zini dasturchi kutganidek tutishi kerak.

8.CSS


Kaskadli uslublar jadvallari belgilash tilidan foydalangan holda yozilgan hujjatning ko'rinishini tasvirlash uchun rasmiy tildir.
U birinchi navbatda HTML va XHTML belgilash tillari yordamida yozilgan veb-sahifalarning ko'rinishini tavsiflash va loyihalash vositasi sifatida ishlatiladi, lekin har qanday XML hujjatlariga ham qo'llanilishi mumkin.

9.C


Kompilyatsiya qilingan, statik tarzda terilgan, umumiy maqsadli dasturlash tili. C tili Dennis Ritchi tomonidan 1972 yilda Bell Labsda ishlab chiqilgan. Bu C++, Java, C#, JavaScript va Perl kabi dasturlash tillarining salafidir. Shu sababli, bu tilni o'rganish boshqa tillarni tushunishga olib keladi. S tili past darajadagi ilovalarni ishlab chiqish uchun ishlatiladi, chunki u apparatga eng yaqin hisoblanadi.

10. Maqsad-C


Apple korporatsiyasi tomonidan qo'llaniladigan kompilyatsiya qilingan ob'ektga yo'naltirilgan dasturlash tili, C tili va Smalltalk paradigmalariga asoslangan. Objective-C tili C tilining yuqori to'plamidir, shuning uchun C kodi Objective-C kompilyatori tomonidan to'liq tushuniladi. Til birinchi navbatda Mac OS X (Kakao) va GNUstep - ob'ektga yo'naltirilgan OpenStep interfeysini amalga oshirish uchun ishlatiladi. Til iOS (Cocoa Touch) uchun ham qo'llaniladi.

11.Shell

Bu til emas, balki buyruqlar tarjimoni (buyruqlar tili). Uning skriptlari dasturiy ta'minotni yangilashni avtomatlashtirish uchun ishlatiladi. Looplar, tarmoqlanish va funksiya deklaratsiyasi uchun standart konstruktsiyalarni o'z ichiga oladi. UNIX operatsion tizimlar oilasi standart ishni boshqarish tili sifatida SHELL dan foydalanadi.

12. R


Statistik ma'lumotlarni qayta ishlash va grafikalar uchun dasturlash tili, shuningdek, GNU loyihasi doirasida bepul va ochiq manbali hisoblash muhiti. R ma'lumotlarni tahlil qilish uchun statistik dasturiy ta'minot sifatida keng qo'llaniladi va statistik dasturlar uchun de-fakto standartga aylandi. R buyruq qatori interfeysidan foydalanadi.

13. Perl


Yuqori darajadagi talqin qilinadigan dinamik umumiy maqsadli dasturlash tili. Tilning nomi qisqartma bo'lib, amaliy qazib olish va hisobot tilini anglatadi - "ma'lumotlarni olish va hisobotlarni yozish uchun amaliy til". Tilning asosiy xususiyati uning matn bilan ishlashning boy imkoniyatlari, jumladan sintaksisga kiritilgan muntazam iboralar bilan ishlashdir. Hozirgi vaqtda u tizim boshqaruvi, veb-ishlab chiqish, tarmoq dasturlash, o'yinlar, bioinformatika, foydalanuvchi grafik interfeysini ishlab chiqish kabi keng ko'lamli vazifalar uchun qo'llaniladi.

14. Skala


Funktsional va ob'ektga yo'naltirilgan dasturlash imkoniyatlarini o'zida mujassamlashtirgan komponentlarga asoslangan dasturiy ta'minotni oson va tez yaratish uchun ixcham va tip xavfsizligi uchun mo'ljallangan ko'p paradigmali dasturlash tili. Scala dasturlari ko'p jihatdan Java dasturlariga o'xshaydi va Java kodlari bilan erkin aloqada bo'lishi mumkin.

15. Boring


Google tomonidan ishlab chiqilgan kompilyatsiya qilingan ko'p bosqichli dasturlash tili. Go tili zamonaviy taqsimlangan tizimlar va ko'p yadroli protsessorlarda ishlaydigan yuqori samarali dasturlarni yaratish uchun tizimli dasturlash tili sifatida ishlab chiqilgan. Buni C tilini almashtirishga urinish sifatida ko'rish mumkin. Rivojlanish jarayonida yuqori samarali kompilyatsiyani ta'minlashga alohida e'tibor berildi. Go dasturlari obyekt kodiga kompilyatsiya qilinadi va ularni bajarish uchun virtual mashina kerak emas.

16.SQL

Strukturaviy so'rovlar tili. tegishli ma'lumotlar bazasini boshqarish tizimi tomonidan boshqariladigan ixtiyoriy relyatsion ma'lumotlar bazasida ma'lumotlarni yaratish, o'zgartirish va manipulyatsiya qilish uchun foydalaniladigan rasmiy, protsessual bo'lmagan dasturlash tili. SQL, birinchi navbatda, relyatsion ma'lumotlar bazalarida saqlanadigan ma'lumotlarni tavsiflash, o'zgartirish va olish uchun mo'ljallangan axborot mantiqiy tilidir. Har bir SQL bayonoti ma'lumotlar bazasidan ma'lumotlarni so'rash yoki ma'lumotlar bazasidagi ma'lumotlarning o'zgarishiga olib keladigan ma'lumotlar bazasiga qo'ng'iroqdir.

17. Xaskell


Standartlashtirilgan, sof, funktsional, umumiy maqsadli dasturlash tili. Bu dangasa hisoblashni qo'llab-quvvatlaydigan eng keng tarqalgan dasturlash tillaridan biridir. Tilning o'ziga xos xususiyati uning yozishga jiddiy munosabatidir. Haskell - bu murakkab funktsional ma'lumotlar turlarini o'rganish va tajriba qilish uchun ajoyib til.

18. Tezkor


Ochiq, ko'p paradigmali, kompilyatsiya qilingan, umumiy maqsadli dasturlash tili. Apple tomonidan asosan iOS va OS X dasturchilari uchun yaratilgan Swift Cocoa va Cocoa Touch ramkalari bilan ishlaydi va Apple kompaniyasining asosiy Objective-C kod bazasi bilan mos keladi. Swift o'zidan oldingi Objective-C ga qaraganda osonroq o'qiladigan va xatolarga chidamli til bo'lishi uchun mo'ljallangan edi. Swift Objective-C-dan juda ko'p qarz oladi, lekin u ko'rsatkichlar bilan emas, balki kompilyator ishlov beradigan o'zgaruvchilar turlari bilan belgilanadi. Ko'pgina skript tillari shunga o'xshash printsip asosida ishlaydi.

19. Matlab


Matritsaga asoslangan ma'lumotlar tuzilmalarini, keng imkoniyatlarni, integratsiyalashgan ishlab chiqish muhitini, ob'ektga yo'naltirilgan imkoniyatlarni va boshqa dasturlash tillarida yozilgan dasturlarga interfeyslarni o'z ichiga olgan yuqori darajadagi talqin qilingan dasturlash tili. MATLABda yozilgan dasturlar ikki xil - funksiyalar va skriptlardir. Funktsiyalar kiritish va chiqish argumentlariga, shuningdek, oraliq hisoblash natijalari va o'zgaruvchilarni saqlash uchun o'z ish maydoniga ega. Skriptlar umumiy ish maydonidan foydalanadi. Ikkala skriptlar ham, funktsiyalar ham matnli fayllar sifatida saqlanadi va dinamik ravishda mashina kodiga kompilyatsiya qilinadi.

20. Visual Basic


Microsoft korporatsiyasi tomonidan ishlab chiqilgan dasturlash tili va integratsiyalashgan dasturiy ta'minotni ishlab chiqish muhiti. Visual Basic tili o'z ajdodining ruhi, uslubi va sintaksisini meros qilib oldi - ko'plab dialektlarga ega BASIC tili. Shu bilan birga, Visual Basic ob'ektga yo'naltirilgan va komponentlarga yo'naltirilgan dasturlash tillarining protseduralari va elementlarini birlashtiradi.

Visual Basic ham Microsoft Windows operatsion tizimlari uchun RAD ma'lumotlar bazasi ilovalarini tez ishlab chiqish uchun yaxshi vositadir. Atrof-muhit bilan ta'minlangan ko'plab tayyor komponentlar dasturchiga dasturni ishga tushirish kodini yozishga e'tiborini qaratmasdan darhol dasturning biznes mantiqini ishlab chiqishga yordam berish uchun mo'ljallangan.

21. Delphi


Kuchli statik o'zgaruvchilarni yozishga ega bo'lgan imperativ, tuzilgan, ob'ektga yo'naltirilgan dasturlash tili. Foydalanishning asosiy yo'nalishi - amaliy dasturlarni yozish.

Bugungi kunda Windows uchun 32 va 64 bitli dasturlarni ishlab chiqishni qo'llab-quvvatlash bilan bir qatorda, Apple Mac OS X, shuningdek, Google Android uchun ilovalar yaratish mumkin (to'g'ridan-to'g'ri ARM protsessorida bajariladi).

22. Ajoyib


Python, Ruby va Smalltalk imkoniyatlariga ega Java tiliga qoʻshimcha sifatida Java platformasi uchun moʻljallangan obyektga yoʻnaltirilgan dasturlash tili. Groovy JVM baytekodining dinamik kompilyatsiyasi bilan Java-ga o'xshash sintaksisdan foydalanadi va to'g'ridan-to'g'ri boshqa Java kodi va kutubxonalari bilan ishlaydi. Til har qanday Java loyihasida yoki skript tili sifatida ishlatilishi mumkin.

23. Visual Basic .NET


Microsoft .NET platformasida amalga oshirilgan Visual Basic evolyutsiyasining navbatdagi bosqichi sifatida ko'rib chiqilishi mumkin bo'lgan ob'ektga yo'naltirilgan dasturlash tili. VB.NET oldingi versiyaga (Visual Basic 6.0) orqaga qarab mos kelmaydi. Eski versiyalardagi loyihalarni ishlab chiqish (*.vbp) faqat maxsus usta (Migratsiya ustasi) tomonidan VB.NET formatiga oldindan o'zgartirilgandan so'ng mumkin; ammo, konvertatsiya qilingandan so'ng, matnlarni qo'lda sezilarli darajada o'zgartirish talab etiladi.

24.D

Digital Mars kompaniyasidan Valter Bright tomonidan yaratilgan ko'p paradigmali dasturlash tili. D dastlab C++ tilining reinjiniringi sifatida ishlab chiqilgan, ammo C++ ning sezilarli ta'siriga qaramay, bu uning varianti emas. Tilga Python, Ruby, C#, Java va Eyfel dasturlash tillari tushunchalari ham ta'sir ko'rsatdi.

25. Assembler


Makrolar kabi qo'shimcha funktsiyalarni taqdim eta oladigan mashina buyruqlariga har doim ham mos kelmaydigan buyruqlar bilan past darajadagi mashinaga yo'naltirilgan til; ifodalar, makrolar va dastur modulligini ta'minlash vositalari kabi yuqori darajadagi dasturlash tili konstruktsiyalari bilan kengaytirilgan avtokod.

Assembly tili - bu mashina kodida yozilgan dasturlarni odam o'qishi mumkin bo'lgan shaklda ko'rsatish uchun ishlatiladigan yozuv tizimi. Assambleya tili dasturchiga alifbo tartibidagi mnemonik operatsiya kodlaridan foydalanishga, kompyuter registrlari va xotirasiga o'z xohishiga ko'ra ramziy nomlar berishga, shuningdek o'zi uchun qulay bo'lgan manzillash sxemalarini o'rnatishga imkon beradi. Bundan tashqari, u raqamli konstantalarni ifodalash uchun turli xil sanoq tizimlaridan foydalanishga imkon beradi va dastur qatorlarini ularga havola qilish uchun ramziy nomlar bilan belgilash imkonini beradi.

Men hamma tillarni olmadim, chunki... ular professional dasturchilar orasida unchalik talabga ega emas. Mening vazifam tugadi, endi siz faqat tegishli tilni tanlashingiz va uni zabt etishingiz kerak. Ishlaringizga omad.

Yigirmanchi asrning 50-yillarida vakuumli kompyuterlarning paydo bo'lishi bilan dasturlash tillarining jadal rivojlanishi boshlandi. O'sha paytda har qanday dasturni ishlab chiqishdan ancha qimmat bo'lgan kompyuterlar yuqori samarali kodni talab qilar edi. Bunday kod qo'lda Assambleya tilida ishlab chiqilgan. 50-yillarning oʻrtalarida Jon Backus boshchiligida IBM uchun algoritmik algoritm ishlab chiqildi. dasturlash tili FORTRAN. Arifmetik ifodalarni mashina kodiga aylantiruvchi tillarda allaqachon ishlanmalar mavjudligiga qaramay, shartli bayonotlar va kiritish/chiqarish operatorlari yordamida hisoblash algoritmini yozish imkoniyatini beruvchi FORTRAN tili (FORmula TRANslator) yaratildi. algoritmik dasturlash tillari davrining boshlanish nuqtasi.

Yuqori samarali kod yaratish uchun FORTRAN tili talab qilingan. Shuning uchun ko'pgina til konstruksiyalari dastlab IBM 407 arxitekturasini hisobga olgan holda ishlab chiqilgan.Ushbu tilning rivojlanishining muvaffaqiyati boshqa hisoblash tizimlarini ishlab chiqaruvchilarning tarjimonlarning o'z versiyalarini yaratishga kirishishiga olib keldi. O'sha paytda tilni qandaydir birlashtirish maqsadida 1966 yilda ishlab chiqilgan FORTRAN IV tili FORTRAN 66 deb nomlangan birinchi standartga aylandi.

Dastlab IBM arxitekturasiga qaratilgan FORTRAN tiliga muqobil sifatida 50-yillarning oxirida Piter Naur boshchiligida ALGOL (ALGOritmik til) ishlab chiqilgan. Ushbu tilni ishlab chiquvchilarning asosiy maqsadi kompyuter tizimining o'ziga xos arxitekturasidan mustaqil bo'lish edi. Bundan tashqari, ALGOL tilini yaratuvchilar algoritmlarni tavsiflash va matematikada qabul qilinganiga yaqin nota tizimidan foydalanish uchun qulay tilni ishlab chiqishga harakat qilishdi.

FORTRAN va ALGOL tillariga e'tibor qaratilgan birinchi tillar edi dasturlash hisob-kitoblar.

Birinchi versiyalari 60-yillarning boshlarida paydo bo'lgan PL 1 tili dastlab IBM 360 ga qaratilgan bo'lib, o'sha yillarda ishlab chiqilgan COBOL tilining bir qismi bilan FORTRAN tilining imkoniyatlarini kengaytirdi. IBM kompyuterlari va EC seriyali mashinalarida ishlagan dasturchilar orasida PL/I tili ma'lum darajada mashhur bo'lishiga qaramay, hozirgi vaqtda u faqat nazariy qiziqish uyg'otmoqda.

60-yillarning oxirida Nayard va Dahl boshchiligida foydalanuvchi tomonidan belgilangan ma'lumotlar turlari tushunchasidan foydalangan holda Simula-67 tili ishlab chiqildi. Darhaqiqat, bu sinflar tushunchasini ishlatadigan birinchi tildir.

70-yillarning o'rtalarida Virt Paskal tilini taklif qildi, u darhol keng qo'llanila boshlandi. Shu bilan birga, AQSh Mudofaa vazirligi tashabbusi bilan dasturchi va lord Bayronning qizi Ada Lavleys sharafiga Ada deb nomlangan yuqori darajadagi tilni yaratish ishlari boshlandi. Tilning yaratilishi talablarni aniqlash va spetsifikatsiyalarni ishlab chiqish bilan boshlandi. Loyiha ustida to'rtta mustaqil guruh ishladi, biroq ularning barchasi Paskal tilini asos qilib olishdi. 1980-yillarning boshida ada tili uchun birinchi sanoat kompilyatori ishlab chiqildi.

Universal dasturlash tili C 70-yillarning o'rtalarida Denis Ritchie va Ken Tompson tomonidan ishlab chiqilgan. Bu til mashhur tizimli dasturlash tiliga aylandi va bir vaqtlar UNIX operatsion tizimining yadrosini yozish uchun ishlatilgan. C tili standarti 1982 yilda ANSI ishchi guruhi tomonidan ishlab chiqilgan. Si tilining xalqaro standarti 1990 yilda qabul qilingan. C tili C++ va Java dasturlash tillarining rivojlanishi uchun asos bo'ldi.

Algoritmik tillar bilan bir qatorda biznes ma'lumotlarini qayta ishlash uchun mo'ljallangan tillar, shuningdek, sun'iy intellekt tillari parallel ravishda ishlab chiqilgan. Birinchisi COBOL tilini (Common Business Oriented Language), ikkinchisi esa LISP (LISt Processing) va Prolog tillarini o'z ichiga oladi. 60-yillarda J. Makkarti rahbarligida ishlab chiqilgan LISP tili oʻyin nazariyasida keng qoʻllanilgan birinchi funksional roʻyxatni qayta ishlash tili boʻldi.

Shaxsiy kompyuterlarning paydo bo'lishi bilan tillar integratsiyalashgan rivojlanish muhitining tarkibiy qismlariga aylandi. Turli ofis dasturlarida ishlatiladigan tillar paydo bo'ldi, masalan, VBA (Visual Basic for Application).

90-yillarda Internetning tarqalishi bilan ma'lumotlarni taqsimlangan qayta ishlash imkoniyatlari kengaydi, bu dasturlash tillarining rivojlanishida o'z aksini topdi. Java, Perl va PHP kabi server ilovalarini yaratishga yo'naltirilgan tillar va hujjatlarni tavsiflash tillari - HTML va XML mavjud. An'anaviy dasturlash tillari C++ va Paskal ham o'zgarishlarni boshdan kechirmoqda: dasturlash tili nafaqat tilning funksionalligini, balki dasturlash muhiti tomonidan taqdim etilgan sinf kutubxonalarini ham anglata boshlaydi. Asosiy e'tibor dasturlash tillarining spetsifikatsiyasidan taqsimlangan ilovalarning o'zaro ta'siri mexanizmlarini standartlashtirishga o'tmoqda. Yangi texnologiyalar paydo bo'lmoqda - COM va CORBA, ular taqsimlangan ob'ektlarning o'zaro ta'sirini aniqlaydi.

Dasturlash tillarini qo'llash sohalari

Hozirgi vaqtda dasturlash tillari inson faoliyatining turli sohalarida qo'llaniladi, masalan:

  • ilmiy hisoblash (C++, FORTRAN, Java tillari);
  • tizim dasturlash (C++, Java tillari);
  • axborotni qayta ishlash (C++, COBOL, Java tillari);
  • sun'iy intellekt (LISP, Prolog);
  • nashriyot faoliyati (Postscript, TeX);
  • masofaviy axborotni qayta ishlash (Perl, PHP, Java, C++);
  • hujjatlar tavsifi (HTML, XML).

Vaqt o'tishi bilan ba'zi tillar rivojlandi, yangi xususiyatlarga ega bo'ldi va talab saqlanib qoldi, boshqalari esa o'z ahamiyatini yo'qotdi va bugungi kunda, eng yaxshi holatda, faqat nazariy qiziqish uyg'otmoqda. Bu asosan quyidagi omillarga bog'liq:

  • muayyan dasturlash tilida ilovalarni ishlab chiqishni qo'llab-quvvatlovchi dasturlash muhitining mavjudligi;
  • parvarish qilish qulayligi va dastur sinovi;
  • muayyan dasturlash tilidan foydalangan holda ishlab chiqish narxi;
  • til tuzilmalarining aniqligi va ortogonalligi;
  • ob'ektga yo'naltirilgan yondashuvni qo'llash.

Ko'pgina zamonaviy kompyuter dasturlari yuqori darajadagi tillar yordamida yoziladi. Shunisi e'tiborga loyiqki, ularning ko'pchiligi 60-70-yillarda ishlab chiqilgan, ammo bugungi kunda ham dolzarbdir. Yuqori darajadagi tillar haqida yana qanday faktlarni qayd etishimiz mumkin? Tegishli yechimlarning eng keng tarqalgan turlari qanday?

Yuqori darajadagi dasturlash tillarining mohiyati

Yuqori darajadagi dasturlash tili mashinadan mustaqil deb tasniflangan vositadir. Bu nimani anglatadi? Gap shundaki, dasturlash tillari bir necha toifalarga bo'lingan.

Mashina kodi mavjud: foydalanuvchini kompyuterning apparat elementlari bilan bevosita boshqarish uchun mo'ljallangan algoritmlar to'plami. Ularning mohiyati butunlay mashinaga bog'liq bo'ladi: faqat ma'lum algoritmlar ma'lum turdagi shaxsiy kompyuterlar uchun mos keladi.

Assambleya tillari mavjud. Aslida, ular kompyuterning apparat komponentlarini mashina kodi orqali past darajadagi boshqarish uchun mo'ljallangan qo'shimchalardir. Ammo ko'p sabablarga ko'ra, montaj tillari odatda mashinaga bog'liq deb tasniflanadi. Qoida tariqasida, ular shaxsiy kompyuter apparat komponentining ma'lum bir turiga moslashtirilgan. Ularning asosiy vazifasi foydalanuvchiga tegishli past darajadagi aloqalar orqali kompyuterni boshqarishni osonlashtirishdir.

O'z navbatida, yuqori darajadagi dasturlash tili foydalanuvchiga kompyuterda qanday aniq uskuna o'rnatilganidan qat'i nazar, shaxsiy kompyuter bilan o'zaro aloqa qilish imkonini beradi. Shuning uchun uni mashinadan mustaqil deb tasniflash kerak. Operatsion tizimlarni yozishda ko'pincha yuqori darajadagi dasturlash tilidan foydalaniladi. Ammo assembler tilida yozilgan operatsion tizimlar mavjud. Past va yuqori darajadagi dasturlash tillari bir vaqtning o'zida ishlatilishi mumkin. Shaxsiy kompyuterga yuqori darajadagi buyruqlar beradigan shaxs, u yoki bu tarzda, ularni ma'lum bir apparat komponentlariga etkazishi kerak va bu funktsiyani montaj tillari bilan bir vaqtda tuzilishda ishtirok etadigan yuqori darajali tillar yordamida amalga oshirish mumkin. operatsion tizimdan.

Tarjimonlar

Yuqori darajadagi dasturlash tillariga kiritilgan eng muhim elementlar tarjimonlardir. Ularning funktsiyasi har xil bo'lishi mumkin. Tarjimonlarni qo'llashning asosiy yo'nalishlari orasida yuqori darajadagi dasturlash tilida yaratilgan buyruqlarni kompyuterning ma'lum bir apparat komponenti, masalan, protsessor tomonidan tushunarli bo'lgan mashina kodiga "tarjima qilish" kiradi. Bu vazifani bajaruvchi translyatorlar kompilyatorlar deb ham ataladi. Tegishli komponentlarning yana bir turi mavjud - tarjimonlar. Ular, o'z navbatida, yuqori darajadagi buyruqlarni operatsion tizim yoki biron bir dastur uchun tushunarli bo'lganlarga "tarjima qilish" uchun mo'ljallangan.

Yuqori darajadagi tillarning tasnifi

Yuqori darajadagi dasturlash tillarini turli yo'llar bilan tasniflash mumkin. Umumiy sxema mavjud, unga ko'ra ular quyidagi asosiy navlarga bo'linadi:

Protsessual yo'naltirilgan (hisoblashning istalgan bosqichida ma'lumotlarni qayta ishlashda vosita sifatida foydalaniladi);

Muammoga yo'naltirilgan (kompyuterni qo'llash sohalarining kengayishi natijasida paydo bo'ladigan sanoat va amaliy muammolarni hal qilish vositasi sifatida ishlatiladi);

Ob'ektga yo'naltirilgan (birinchi ikki turdagi tillarning alohida holatlari bo'lishi mumkin, ammo ular turli darajadagi tayyorgarlikka ega bo'lgan keng doiradagi ishlab chiquvchilar tomonidan foydalanish uchun moslashtirilgan, masalan, vizual interfeysga ega yechim shaklida ).

Keling, ushbu tasnifga mos keladigan ba'zi tarixiy va zamonaviy yuqori darajadagi dasturlash tillarini ko'rib chiqaylik.

Protseduraga yo'naltirilgan tillar

Bularga Fortran kiradi. U keng tarqalgan foydalanish uchun yaratilgan birinchi yuqori darajadagi dasturlash tili hisoblanadi. Oddiy tuzilish bilan tavsiflanadi. BASIC ham protsessual yo'naltirilgan tildir. U dasturlashni o'rgatishda eng ko'p qo'llaniladiganlardan biri hisoblanadi. Boshqa protsessual yo'naltirilgan tilga misol SI. U dastlab UNIX OT uchun yaratilgan. Uning asosida keyinchalik ob'ektga yo'naltirilgan dasturlash vositalari bilan to'ldirilgan C++ tili yaratildi. Bu turkumga kiruvchi yana bir til Paskal tilidir. Ko'pincha dasturlashni o'rgatishda ham qo'llaniladi. Ushbu tilning imkoniyatlari uni professional turdagi dasturiy ta'minotni ishlab chiqish uchun juda kuchli vosita sifatida foydalanish imkonini beradi.

Muammoga yo'naltirilgan tillar

Bularga Lisp va Prolog kiradi. Birinchi til 1962 yilda, Fortran yaratilganidan bir necha yil o'tgach ishlab chiqilgan. Shuning uchun tarixda ikkinchi deb hisoblanadi. Dasturchilar uchun belgilar qatorlari bilan ishlash uchun vosita sifatida faol foydalaniladi. Amalda, Lisp ekspert tizimlari sifatida tasniflangan tizimlarda, shuningdek, analitik hisoblash uchun mo'ljallangan tizimlarda ishlatilgan. Prolog mantiqiy dasturlash sohasida keng qo'llanilishini topdi. Amalda u ko'pincha tegishli tizimlarda sun'iy intellekt algoritmlarini boshqarishda ishtirok etadi.

Ob'ektga yo'naltirilgan tillar

Keling, ob'ektga yo'naltirilgan toifaga kiruvchi yuqori darajadagi dasturlash tillarining misollarini o'rganamiz. Bular orasida Visual Basic, Delphi, Visual Fortran, yuqorida tilga olingan C++, shuningdek Prolog ++ tillari bor. Aslida, ularning barchasida protsessual yo'naltirilgan tillar mavjud. Biroq, boshqa vositalarga o'rganib qolgan ishlab chiquvchilar tomonidan kerakli algoritmlarni keyinchalik o'zlashtirish maqsadida ular vizual boshqaruv vositalari bilan sezilarli darajada to'ldirilishi kutilmoqda. Shunday qilib, birinchi yuqori darajadagi dasturlash tili Fortranni IT-mutaxassislari Visual Fortran imkoniyatlaridan foydalangan holda tezda o'rganishlari mumkin. Shunga o'xshash usuldan foydalanib, siz BASIC yoki Prologni tezda o'zlashtirishingiz mumkin.

O'z navbatida Delphi dan foydalanganda dasturlash yuqori darajadagi Object Pascal tilida amalga oshiriladi. Ob'ektga yo'naltirilgan tillar sifatida tasniflangan ko'plab boshqa dasturiy ta'minot ishlab chiqish muhitlari mavjud. Dasturiy ta'minotni ishlab chiqish texnologiyasining ushbu sohasi faol rivojlanmoqda.

Fortran va Lisp birinchi va ikkinchi yuqori darajadagi tillardir

Keling, birinchi yuqori darajadagi dasturlash tili Fortran va ikkinchisi hisoblangan Lisp qanday paydo bo'lganligini batafsil o'rganamiz. 1954 yilda Jon Backus boshchiligidagi IBM ishlab chiquvchilari dasturchilar kompyuter bilan o'zaro aloqani sezilarli darajada osonlashtiradigan tilni yaratdilar, shu vaqtgacha bu mashina buyruqlari yoki assembler orqali amalga oshirildi. U Fortran nomini oldi va tez orada SSSRda ruslashtirilgan nomi bilan tanildi. Fortran ilmiy hisoblash uchun mashhur vositaga aylandi.

IBM mutaxassislari tomonidan jamiyatga taklif qilingan asosiy inqilobiy element, aslida, assemblerga muqobil bo'lish uchun yaratilgan o'sha kompilyator edi. Fortran-dan foydalangan holda dasturlarni yozishning birinchi yillarida ko'plab ishlab chiquvchilar kompilyatorni birinchi navbatda mehnat xarajatlari nuqtai nazaridan unchalik muvaffaqiyatli bo'lmagan yechim deb hisoblashgan. Darhaqiqat, ko'plab mashina kodlari tarjimondan foydalangandan ko'ra soddaroq tuzilgan. Biroq, kompyuterning ishlashi tez sur'atlar bilan o'sib borishi sababli, dasturchilar kompilyatordan foydalanmasdan, shaxsiy kompyuterning hisoblash quvvatidan to'liq foydalanadigan samarali dasturiy ta'minotni yaratish juda qiyin ekanligini tushuna boshladilar. Shunday qilib, IBM ishlab chiqaruvchilarining tashabbuslari yanada rivojlandi. Fortran yuqori darajadagi dasturlash tilining asosiy sintaktik tuzilmalari ko'p hollarda yangi echimlarni yaratishda tayanch sifatida ishlatila boshlandi.

Fortranga kiritilgan kontseptsiyalarni ishlab chiqishda amaliy natijalarga erishish misoli Lispning yaratilishidir. Bu til 1958 yilda ishlab chiqilgan, ammo u biroz keyinroq - 1960 yilda keng ma'lum bo'ldi. Lisp Jon Makkarti tomonidan ishlab chiqilgan va IT mutaxassislari uchun mashhur jurnallardan birida nashr etilgan. Ko'rib chiqilayotgan tilning asosiy maqsadi ro'yxatni qayta ishlashdir. Lisp sun'iy intellekt tizimlarini ishlab chiquvchilar orasida mashhur bo'ldi. Uning asosida Planner, Scheme va Common Lisp kabi tillar yaratilgan. Lisp shuningdek, ko'plab zamonaviy dasturiy ta'minot ishlab chiqish vositalariga sezilarli ta'sir ko'rsatdi. Bugungi kunda mashhur bo'lgan yuqori darajadagi dasturlash tillarining tuzilishi asosan Fortran va Lisp algoritmlariga asoslangan.

Biroq, ko'rib chiqilayotgan dasturiy ta'minotni ishlab chiqish vositalarini tasniflashning boshqa yondashuvlarini ko'rib chiqish qiziqarli bo'ladi.

Universal yuqori darajadagi tillar

Shunday qilib, zamonaviy mutaxassislar universal yuqori darajadagi tillarni aniqlaydilar. Bularga, xususan, 60-yillarda ishlab chiqilganlar kiradi. Ularning asosiy xususiyatlari:

Keng ko'lamdagi vazifalarga (birinchi navbatda hisoblash bilan bog'liq bo'lganlarga) e'tibor qarating;

Ko'p sonli til konstruktsiyalari va algoritmlari;

Faqat o'z davri uchun emas, balki kompyuter texnikasi rivojlanishining zamonaviy bosqichi uchun ham ahamiyati;

Imperativ metodologiya uchun tegishli tillarda yordam.

Universal tillar IT rivojlanishining tegishli sohasida asosiy hisoblanadi. Shuni ta'kidlash mumkinki, hozirgacha ularning ichki tuzilishi bo'yicha to'g'ridan-to'g'ri o'xshashlari yo'q. Aslida, bu zamonaviy ob'ektga yo'naltirilgan interfeyslarda tegishli tillardan foydalanishning dolzarbligini ko'p jihatdan tushuntiradi. Shuningdek, qayd etilgan tillarda ma'lumotlar turi keng tarqalgan. Bu omil asosan ularning ko'p qirraliligini belgilaydi. Umumjahon tillar toifasiga kiruvchi tillarning eng diqqatga sazovor xususiyatlaridan biri uzluksizlikdir. Shunday qilib, tarixan, keyingi tillar, qoida tariqasida, o'zidan oldingi tillarning tushunchalariga asoslanadi.

Noyob tillar

Ba'zi IT mutaxassislari "noyob tillarni" alohida toifa sifatida tasniflashadi. Bularga quyidagilar kiradi: APL, Cobol, Forth, SETL va CLU. Ularning o'ziga xos xususiyatlari qanday?

APLning eng muhim jihati massivlardan (vektorlar va matritsalar) asosiy strukturaviy tip sifatida foydalanish hisoblanadi. Kobol tilining o'ziga xosligi uning tijorat sohasiga qaratilganligidir. Shunday qilib, natijalarni taqdim etishning standartlashtirilgan formati bilan bog'liq muammolarni hal qilishda undan foydalanish tavsiya etiladi. To'rtinchi til dasturlarning postfiks belgilaridan foydalanish bilan bir qatorda stek belgilaridan foydalanish bilan tavsiflanadi. SETL o'zining asosiy ma'lumotlar turlaridan biri sifatida qiymatlar to'plamidan foydalanadi. CLU ham yuqori darajadagi dasturlash tilidir. Uning asosiy xususiyati mavhum ma'lumotlar turlari bilan ishlash kontseptsiyasidan foydalanishdir. Ko'pgina IT mutaxassislari noyob tillarga asoslangan yangi echimlarning mantiqiy paydo bo'lishini ko'rishadi - masalan, Ob'ektga yo'naltirilgan Kobol.

Parallel dasturlash vositalari

Ushbu turkumga juda ko'p sonli echimlar kirishi mumkin. O'z navbatida, parallel dasturlash tillari tasniflash uchun juda ko'p asoslarga ega bo'lishi mumkin. Masalan, jarayonlarni tashkil qilish usuli. Ushbu asos parallel dasturlash vositalarini ulardagi mavjudligiga qarab tasniflashni o'z ichiga oladi:

Korutin;

Filiallar;

Uyushmalar;

Parallel qavslar;

Jarayonlar bilan ishlash algoritmlari.

Ko'rib chiqilayotgan turdagi tillarni tasniflashning yana bir asosi jarayonni sinxronlashtirish usullaridir. Shuning uchun tegishli echimlar quyidagilarni o'z ichiga olishi mumkin:

semaforlar;

Monitorlar;

- "uchrashuv";

Muhim hududlar;

Masofaviy protsedura chaqiruvi;

Atom sifatida tasniflangan operatsiyalar.

Ko'rib chiqilayotgan tillarga Modula-2, BLISS, Concurrent Pascal, DP, Argus kiradi.

C tillar oilasi

Yuqorida biz yuqori darajadagi dasturlash tiliga misol sifatida C kabi yechimni ko'rib chiqdik.Aslida u butun oilani tashkil qiladi. Unga tegishli tillar C ning xususiy konstruksiyalaridir. Shunday qilib, unga turli xil ob'ektga yo'naltirilgan komponentlar qo'shilishi C++ tilining rivojlanishiga olib keldi. Bir qator C konstruksiyalarini sezilarli filtrlashdan so'ng Java tili paydo bo'ldi. Shuni ta'kidlash mumkinki, Java asosan Paskal tilini yaratuvchisi Niklaus Virt boshchiligidagi Oberon loyihasi kontseptsiyalari ta'sirida yaratilgan. Bu yuqori darajadagi JavaScriptmi? Albatta, ha, uning tor qo'llanilishiga qaramay - veb-sahifalarni ishlab chiqish vositasi sifatida. Ammo yuqori darajadagi dasturlash tillari, xususan, HTML, XML va SGML ni o'z ichiga olmaydi. Ular gipermatnni belgilash vositalari sifatida tasniflanadi.

Paskal tillari oilasi

Paskal yuqori darajadagi dasturlash tillari ham alohida oilani tashkil qiladi. Paskal asosida Oberon aslida yaratilgan bo'lib, ob'ektga yo'naltirilgan til sifatida tasniflangan. Oberonning asosiy xususiyati uning turi xavfsizligini ta'minlash qobiliyatidir. Oberondan tashqari, Paskal oilasidagi tillarga Modula-2, shuningdek Paskal komponenti kiradi.

Ada tillari oilasi

Tegishli tillar toifasida fundamental - Ada, AQSh Mudofaa vazirligi ehtiyojlari uchun buyurtma qilingan. U 70-yillarning oxiri - 80-yillarning boshlarida yaratilgan. U ko'p sonli funktsiyalar, imkoniyatlar va ko'p qirralilik bilan tavsiflanadi. Ada tillari oilasi Sidar, Modula 3 kabi echimlarni o'z ichiga oladi.

Simula tillar oilasi

Simula tili simulyatsiya modellashtirish bilan bog'liq dasturlash sohalarida keng tarqalgan. Tegishli echimlarning o'ziga xosligi ma'lum bir yadrodan foydalanishda yotadi. Uning qo'llanilishi ma'lum dastur sohalariga moslashtirilgan turli xil kengaytmalardan foydalanishga imkon beradi. Simula asosida ob'ektga yo'naltirilgan Smalltalk tili, shuningdek, ma'lumotlar, protseduralar va boshqaruv bilan ishlashni aks ettiruvchi algoritmlarni bir abstraktsiya doirasida birlashtirish qobiliyati bilan ajralib turadigan BETA tili yaratildi. BETA obyektlarini turli kontekstlarda, masalan, o‘zgaruvchilar, funksiyalar yoki parallel tizimlarda ko‘rish mumkin.

Hisobot sarlavhasi

Zamonaviy dasturlash tillari va ulardan foydalanish

Loyiha muallifi

Loyiha tuzilishi

● Dasturlash tillarini tasniflash sxemasi

● Dasturlash tillarining tasnifi

● Dasturlash tillari haqida umumiy ma'lumot

● Foydali manbalar

Dasturlash tilini tasniflash sxemasi

Dasturlash tillarining tasnifi

Protsessual dasturlash- fon Neyman kompyuter arxitekturasining aksidir. Protsessual tilda yozilgan dastur masalani yechish algoritmini aniqlovchi buyruqlar ketma-ketligidir. Protsessual dasturlashning asosiy g'oyasi ma'lumotlarni saqlash uchun xotiradan foydalanishdir. Asosiy buyruq - topshiriq bo'lib, uning yordamida kompyuter xotirasi aniqlanadi va o'zgartiriladi. Dastur xotira tarkibini o'zgartiradi, uni dastlabki holatdan natijaga o'zgartiradi.

Quyidagi protsessual dasturlash tillari mavjud:

 Fortran tili 20-asrning 50-yillari boshlarida ilmiy-texnikaviy muammolarni dasturlash uchun yaratilgan;

 COBOL – 20-asrning 60-yillari oxirida turli xil maʼlumotlarni saqlash vositalarida saqlanadigan katta hajmdagi maʼlumotlarni qayta ishlash muammolarini hal qilish uchun yaratilgan;

 ALGOL (1960) — koʻp maqsadli ilgʻor dasturlash tili. U birinchi marta “blokli dastur strukturasi” va “dinamik xotira ajratish” tushunchalarini kiritdi;

 20-asrning 60-yillari oʻrtalarida yangi boshlanuvchilar uchun maxsus dasturlash tili – BASIC yaratildi. U o'rganish qulayligi va ilmiy, texnik va iqtisodiy muammolarni hal qilish uchun universal vositalar, shuningdek, muammolar, masalan, o'yinlar mavjudligi bilan tavsiflanadi.

Yuqorida sanab o'tilgan barcha tillar vazifalarning turli sinflariga qaratilgan edi, ammo ular ma'lum darajada kompyuter arxitekturasi bilan bog'liq edi.

 1963-1966 yillarda PL-1 ko‘p maqsadli universal til yaratildi. Ushbu til hisoblash jarayonlarini tadqiq qilish va rejalashtirish, modellashtirish, mantiqiy muammolarni hal qilish va dasturiy ta'minot tizimlarini ishlab chiqish uchun juda mos keladi.

 Paskal tili (PASCAL) (1968-1971) shaxsiy kompyuterlar uchun eng ommabop protsessual dasturlash tili bo‘lib, hozir ham muvaffaqiyatli qo‘llanilmoqda. Paskal tili umumiy masalalardan xususiy (oddiyroq va ko'lami kichikroq)ga bo'lgan yondashuvga asoslangan. Paskal tilining asosiy tamoyillariga quyidagilar kiradi: a) Strukturaviy dasturlash, u subprogrammalar va mustaqil ma'lumotlar tuzilmalaridan foydalanishga asoslangan; b) Yuqoridan pastga dasturlash, masalani oddiy, mustaqil echiladigan masalalarga bo'lishda. Keyin asl muammoni hal qilish butunlay yuqoridan pastgacha quriladi.

 Protsessual dasturlash tillariga ADA tili kiradi (1979).Til birinchi dasturchi, Bayronning qizi Ada Lavleys sharafiga nomlangan. U modulli dizayni bilan ajralib turadi.

 SI tili (70-yillarning boshlari) ham protsessual dasturlash tillariga tegishli. Uning asl versiyasi Assembly tili o'rniga Unix operatsion tizimini joriy qilish tili sifatida rejalashtirilgan edi. SI tilining xususiyatlaridan biri shundaki, ifodalar va operatorlar orasidagi farqlar tekislanadi, bu esa uni funksional dasturlash tillariga yaqinlashtiradi. Bundan tashqari, SI tilida protsedura tushunchasi mavjud emas, quyi dasturlardan foydalanish esa protseduraning imkoniyatlarini birlashtira oladigan funksiya tushunchasiga asoslanadi. Bir tomondan, boshqaruv konstruksiyalari va ma'lumotlar tuzilmalari to'plamiga asoslanib, uni yuqori darajadagi tilga ajratish mumkin, ikkinchi tomondan, u kompyuterning funktsional birliklariga bevosita kirish uchun vositalar to'plamiga ega, bu operativ til sifatida foydalanish mumkinligini bildiradi.

Ob'ektga yo'naltirilgan dasturlash (OOP) dasturlash usuli bo'lib, unda dasturlarning asosiy elementlari ob'ektlar hisoblanadi. Dasturlash tillarida ob'ekt tushunchasi xususiyatlar to'plami (ma'lum ob'ektga xos bo'lgan ma'lumotlar tuzilmalari), ularni qayta ishlash usullari (ularning xususiyatlarini o'zgartirish tartibi) va ushbu ob'ekt reaksiyaga kirishishi mumkin bo'lgan hodisalar sifatida amalga oshiriladi. qoida, ob'ekt xususiyatlarining o'zgarishiga olib keladi. Bir ob'ektda ma'lumotlar va ularni qayta ishlash jarayonlarini birlashtirish inkapsulyatsiya deb ataladi va OOPning eng muhim tamoyillaridan biridir.

Yana bir asosiy tushuncha sinfdir. Sinf - bu shablon bo'lib, uning asosida ma'lum bir dasturiy ta'minot ob'ekti yaratilishi mumkin, u ushbu sinf ob'ektlarining xatti-harakatlarini belgilaydigan xususiyatlar va usullarni tavsiflaydi. Ushbu sinf tuzilishiga ega bo'lgan har bir aniq ob'ekt sinfning namunasi deb ataladi.

OOPning keyingi eng muhim tamoyillari meros va polimorfizmdir. Meros mavjud bo'lganlar asosida yangi sinflarni yaratishni o'z ichiga oladi va avlod sinfiga ota-klassning barcha xususiyatlariga ega bo'lish (meros olish) imkonini beradi.

Polimorfizm tug'ilgan ob'ektlar zanjirning qayerda joylashganligiga qarab qanday usullardan foydalanishlari kerakligi haqida ma'lumotga ega ekanligini anglatadi.

OOP ning yana bir muhim printsipi modullikdir - ob'ektlar o'z xususiyatlarining to'liq ta'rifini o'z ichiga oladi, usullar va xususiyatlarning ta'riflari undan tashqarida joylashtirilmasligi kerak, bu bitta ob'ektni boshqasiga erkin nusxalash va amalga oshirish imkonini beradi.

Eng zamonaviy dasturlash tillari C++ va Java. 90-yillarning o'rtalaridan boshlab ko'plab ob'ektga yo'naltirilgan tillar vizual dizayn tizimlari sifatida amalga oshirildi, ularda dasturiy mahsulotning interfeys qismi interaktiv tarzda yaratilgan, dastur bayonotlari deyarli yozilmagan. Ob'ektga yo'naltirilgan vizual dizayn tizimlariga Visual Basic, Delphi, C++ Builder, Visual C++ kiradi. VBA tili (Visual Basic for Application) Microsoft Office dasturlari (Excel, Word, Power Point va boshqalar) tilidir. VBA tilning asosiy sintaksisi va asosiy tillar - dialektlarning dasturlash qoidalariga amal qiladi, ma'lum operatsiyalarni va grafik foydalanuvchi interfeysini avtomatlashtirish, turli dasturiy mahsulotlar o'rtasida integratsiyani avtomatlashtirish uchun makrolarni yaratishga imkon beradi.

Deklarativ dasturlash tillari

Bularga funksional va mantiqiy dasturlash tillari kiradi. Funktsional dasturlash - bu dasturlarni yozishning bir usuli bo'lib, unda faqat funktsiyani chaqirish amal qiladi. Funktsional dasturlash xotiradan ma'lumotlarni saqlash joyi sifatida foydalanmaydi va shuning uchun oraliq o'zgaruvchilar, tayinlash bayonotlari yoki tsikllardan foydalanmaydi. Funktsional tillarda asosiy tushuncha ifodadir. Funksional tilda yozilgan dastur funksiya va ifodalarni tavsiflash ketma-ketligidir. Ifoda murakkabni oddiyga qisqartirish yo'li bilan hisoblanadi. Barcha iboralar ro'yxat shaklida yozilgan. Birinchi til 1959 yilda yaratilgan Lisp tili (LISP, LIST Processing) edi. Bu til katta hajmdagi matnli axborotni qayta ishlash imkonini beradi. Mantiqiy dasturlash mantiqiy jihatdan dasturlashdir. 1973 yilda sun'iy intellekt tili Prolog (PROLOG) (Programming in Logic) yaratildi. Prolog dasturi faktlar va qoidalar ketma-ketligidan tuziladi, so'ngra Prolog qoidalar yordamida isbotlashga harakat qiladigan bayonot tuziladi. Tilning o'zi unga kiritilgan qidirish va moslashtirish usullaridan foydalangan holda yechim izlaydi. Mantiqiy dasturlar yuqori unumdorlik bilan tavsiflanmaydi, chunki ularni bajarish jarayoni turli xil qidiruv usullaridan foydalangan holda oldinga va orqaga fikrlash zanjirlarini qurishga to'g'ri keladi.

Dasturlash tillariga umumiy nuqtai

Assembler

Kompyuter dasturlash tillari ikkita asosiy guruhga bo'linadi:

1) past darajadagi tillar;

2) yuqori darajadagi tillar.

Past darajadagi tillar Assambleya tillarini o'z ichiga oladi. Ular o'z nomlarini Assembler tizimi dasturidan oldilar, u bunday tillarda yozilgan manba dasturlarni to'g'ridan-to'g'ri mashina ko'rsatmalari kodlariga aylantiradi. Bu yerdagi qismlar operatorlar bo‘lib, yig‘ish natijasi esa mashina buyruqlarining ketma-ketligidir.Assembly tili mashina buyruqlari tilining afzalliklari va yuqori darajali tillarning ayrim xususiyatlarini o‘zida mujassam etgan. Assembler boshlang'ich dasturda ramziy nomlardan foydalanish imkoniyatini beradi va dasturchini buyruqlar, o'zgaruvchilar va konstantalar uchun kompyuter xotirasini ajratishning zerikarli ishlaridan (mashina ko'rsatmalari tilida dasturlashda muqarrar) qutqaradi.

Assembler, shuningdek, mashinaning buyruqlar tili kabi kompyuterning texnik imkoniyatlaridan moslashuvchan va to'liq foydalanish imkonini beradi. Assembler manba dasturi tarjimoni yuqori darajadagi dasturlash tili uchun zarur bo'lgan tarjimonga qaraganda soddaroq. Assemblerda siz mashina ko'rsatmalari tilidagi dastur kabi hajmi va bajarilish vaqti bo'yicha samarali dastur yozishingiz mumkin. Yuqori darajadagi tillarda bu afzallik yo'q. Ushbu til ko'pincha real vaqt rejimida tizimlar, texnologik jarayonlar va uskunalarni dasturlash, axborot va o'lchash tizimlarining ishlashini ta'minlash uchun ishlatiladi. Bunday tizimlar odatda egallagan kompyuter xotirasi hajmiga yuqori talablarga ega. Ko'pincha Assambleya tili makro ko'rsatmalarni yaratish uchun vositalar bilan to'ldiriladi, ularning har biri mashina ko'rsatmalarining butun guruhiga teng. Bu til makroassembly tili deb ataladi. Ko'knori "qurilish" bloklaridan foydalanish Assambleya tilini yuqori darajadagi tilga yaqinlashtiradi. Assembly tili mashinaga bog'liq bo'lgan tildir, ya'ni u ma'lum bir turdagi kompyuterning arxitektura xususiyatlarini aks ettiradi.

Paskal

Paskal dasturlash tili Shveytsariya Federal Texnologiya Institutining Kompyuter fanlari kafedrasi professori Nikolas Virt tomonidan 1968 yilda PL/1, Algol va Fortran kabi mavjud va tobora murakkablashib borayotgan dasturlash tillariga muqobil sifatida ishlab chiqilgan. . Paskal tilining jadal rivojlanishi uning standartining 1973 yilda qayta ko'rib chiqilgan xabar ko'rinishida paydo bo'lishiga olib keldi va 1979 yilda bu tildan tarjimonlar soni 80 dan oshdi. 80-yillarning boshlarida Paskal o'z mavqeini yanada mustahkamladi. MS-Paskal va Turbo tarjimonlari -Kompyuter uchun Paskal. O'shandan beri Paskal eng muhim va keng qo'llaniladigan dasturlash tillaridan biriga aylandi. Shunisi e'tiborga loyiqki, til uzoq vaqtdan beri akademik va tor kasbiy qiziqish doirasidan chiqib ketgan va yuqori rivojlangan mamlakatlarning aksariyat universitetlarida nafaqat foydalanuvchining ish quroli sifatida qo'llaniladi. Paskal tilining eng muhim xususiyati bu tuzilgan dasturlash g'oyasining timsolidir. Yana bir muhim xususiyat - asosiy tushunchalardan biri sifatida ma'lumotlar tuzilishi tushunchasi.

Paskalning mashhurligining asosiy sabablari quyidagilardir:

Tilning soddaligi uni tezda o'zlashtirish va algoritmik jihatdan murakkab dasturlar yaratish imkonini beradi

Ma'lumotlar tuzilmalarini ifodalashning ishlab chiqilgan vositalari raqamli va ramziy va bitli ma'lumotlar bilan ishlash qulayligini ta'minlaydi

Paskal tilidan tarjimonlarni yaratish uchun maxsus texnikaning mavjudligi ularning rivojlanishini soddalashtirdi va tilning keng tarqalishiga yordam berdi.

Paskal tarjimonlarining optimallashtiruvchi xususiyatlari samarali dasturlar yaratish imkonini beradi. Bu Paskaldan tizimli dasturlash tili sifatida foydalanish sabablaridan biri edi

Paskal tili tizimli dasturlash g'oyalarini amalga oshiradi, bu dasturni vizual qiladi va ishlab chiqish va tuzatish uchun yaxshi imkoniyatlar beradi.

Bell Labs xodimi Denis Ritchi 1972 yilda Ken Tompson bilan birgalikda Unix operatsion tizimini joriy qilish vositasi sifatida C tilini yaratgan, ammo bu tilning mashhurligi ma'lum bir operatsion tizim va muayyan tizim dasturlash vazifalari doirasidan tezda oshib ketdi. Hozirgi vaqtda har qanday vosita va operatsion tizim C tili kompilyatorini o'z ichiga olmasa, uni to'liq deb hisoblash mumkin emas. Ritchi shunchaki C tilini o'z boshidan ixtiro qilgani yo'q - prototipi Tompson tomonidan ishlab chiqilgan B tili edi. C dasturlash tili dasturchilarni mashq qilish uchun vosita sifatida yaratilgan. Shunga muvofiq, uning muallifining asosiy maqsadi har tomonlama qulay va foydali til yaratish edi.

C - bu tizim dasturchisi vositasi bo'lib, kompyuterda axborotni qayta ishlashning eng nozik mexanizmlarini chuqur o'rganishga imkon beradi. Til dasturchidan katta intizom talab qilsa-da, u o'zining rasmiy talablarida qat'iy emas va qisqacha shakllantirishga imkon beradi.

C - zamonaviy til. U dasturlash nazariyasi va amaliyoti tomonidan tavsiya etilgan boshqaruv tuzilmalarini o'z ichiga oladi. Uning tuzilishi dasturchini o'z ishida yuqoridan pastga dizayn, tuzilgan dasturlash va qo'shimcha modul ishlab chiqishdan foydalanishga undaydi.

C kuchli va moslashuvchan tildir. Unix operatsion tizimining aksariyati Fortran, Paskal, Lisp va BASIC tillarining kompilyatorlari va tarjimonlari uning yordami bilan yozilgan.

C - qulay til. U juda cheklovsiz yaxshi dasturlash uslubini qo'llab-quvvatlash uchun etarlicha tuzilgan. Qaysidir ma'noda C tili eng universaldir, chunki... Zamonaviy yuqori darajadagi dasturlash tillariga xos bo'lgan vositalar to'plamiga qo'shimcha ravishda (tuzilish, modullik, ma'lum ma'lumotlar turlari) u deyarli assembler darajasida dasturlash vositalarini o'z ichiga oladi. Operatorlar va vositalarning katta to'plami dasturchidan ehtiyotkor bo'lishni, aniqlikni va barcha afzalliklari va kamchiliklari bilan tilni yaxshi bilishni talab qiladi.

C++ tili 80-yillarning boshlarida paydo bo'lgan. Bjarne Stroustrup tomonidan o'zini va do'stlarini assembly, C yoki boshqa yuqori darajadagi turli tillarda dasturlashdan ozod qilish maqsadi bilan yaratilgan.

Til muallifining fikriga ko'ra, C va C++ mafkurasi o'rtasidagi farq taxminan quyidagicha: C dasturi protsessorning "fikrlash usuli" ni, C++ esa dasturchining fikrlash tarzini aks ettiradi. Zamonaviy dasturlash talablariga javob beradigan C++ tanlangan bilim sohasi tushunchalari va dastur vazifalariga eng mos keladigan yangi ma'lumotlar turlarini ishlab chiqishga e'tibor beradi. Sinf C++ tilidagi asosiy tushunchadir. Sinf tavsifi ushbu turdagi ob'ektlarni ko'rsatish uchun zarur bo'lgan ma'lumotlar tavsifini va shunga o'xshash ob'ektlar bilan ishlash uchun operatsiyalar to'plamini o'z ichiga oladi.

An'anaviy C va Paskal tuzilmalaridan farqli o'laroq, sinf a'zolari nafaqat ma'lumotlar, balki funktsiyalardir. Sinfning a'zo funktsiyalari ushbu sinf ob'ektlari ichidagi ma'lumotlarga imtiyozli kirish huquqiga ega va ushbu ob'ektlar va dasturning qolgan qismi o'rtasida interfeysni ta'minlaydi. Keyingi ish paytida sinfning ichki tuzilishini va o'rnatilgan funktsiyalarning ishlash mexanizmini eslab qolishning hojati yo'q. Shu ma'noda sinf elektr moslamasiga o'xshaydi - uning tuzilishi haqida kam odam biladi, lekin uni qanday ishlatishni hamma biladi.

C++ - bu ob'ektli dasturlash tili bo'lib, joriy o'n yillikda an'anaviy protsessual dasturlash o'rnini bosishi mumkin bo'lgan dasturlarni ishlab chiqish va amalga oshirishning ilg'or usuli. Til yaratuvchisi doktor Byorn Stroustrupning asosiy maqsadi C++ tilini dasturchilarning mehnat unumdorligini oshiradigan va yirik dasturiy mahsulotlarni o‘zlashtirish jarayonini osonlashtiradigan konstruksiyalar bilan jihozlash edi.

Abstraktsiya, amalga oshirish, merosxo'rlik va polimorfizm C++ tilining zaruriy xossalari bo'lib, shuning uchun u Si tili kabi nafaqat universal, balki ob'ekt tilidir. Fortran Fortran, ayniqsa raqamli modellashtirish bilan shug'ullanadigan foydalanuvchilar orasida keng qo'llaniladigan tildir. Bu bir necha sabablarga ko'ra:

Yillar davomida to'plangan Fortran amaliy dasturlarining katta mablag'larining mavjudligi, shuningdek, ushbu tildan samarali foydalanadigan juda ko'p sonli dasturchilarning mavjudligi;

Barcha turdagi kompyuterlarda samarali Fortran tarjimonlarining mavjudligi va turli mashinalar uchun versiyalar ancha standartlashtirilgan va dasturlarni mashinadan mashinaga o'tkazish odatda unchalik qiyin emas;

Fortranning dastlabki e'tibori fizik, matematik va texnik ilovalarga qaratilgan edi; xususan, bu uzoq vaqt davomida o'rnatilgan murakkab o'zgaruvchilar turiga va bunday o'zgaruvchilar bilan ishlash uchun o'rnatilgan funktsiyalarning katta to'plamiga ega yagona til bo'lib qolganligida namoyon bo'ldi.

O‘tgan davr mobaynida dasturlashning yangi metodologiyasi va falsafasi shakllandi. 1970-yillarning boshidan boshlab Fortran munosib tanqidga uchradi. 1977 yilda yangi til standarti Fortran 77 qabul qilindi. Yangi standartni yaratish uchun juda ko'p vaqt kerak bo'ldi, ammo endi biz uni ishlab chiqish yakunlandi va yangi Fortran-90 standarti Fortran foydalanuvchilari amaliyotiga kira boshladi deb hisoblashimiz mumkin. Faqat IBM PC kabi mashinalarda bir nechta tarjimonlar mavjud, masalan, Watfor, Lap-Fortran va boshqalar. Ammo bunday turdagi mashinalarda eng ko'p ishlatiladigan Fortran-77 tarjimonining turli versiyalari. 1990 yilda chiqarilgan MS-Fortran 5.0 tarjimoni Fortran-90 standartiga deyarli to'liq mos keladi. Ko'pgina yirik ilmiy va muhandislik ilovalari Fortranda yozilgan, chunki u portativ va mustahkam bo'lib, o'rnatilgan matematik va trigonometrik funktsiyalarga ega. Har qanday Fortran amaliy dasturining qo'shimcha, ajralmas qismi bu turli grafik ma'lumotlar va tasvirlardan foydalanish imkonini beruvchi kengaytirilgan grafik kutubxonadir.

Til asosan 1975-1980 yillarda AQSh Mudofaa vazirligi tomonidan o'rnatilgan tizimlar (ya'ni real vaqtda ishlaydigan avtomatlashtirilgan komplekslarni boshqarish tizimlari) uchun yagona dasturlash tilini ishlab chiqish maqsadida amalga oshirilgan ulkan loyiha natijasida yaratilgan. . Bu, birinchi navbatda, harbiy ob'ektlarni (kemalar, samolyotlar, tanklar, raketalar, snaryadlar va boshqalar) bortda boshqarish tizimlarini anglatardi. Shuning uchun Ada mualliflari tomonidan qabul qilingan qarorlar universal deb hisoblanmasligi kerak. Ular tanlangan fan sohasining xususiyatlari kontekstida idrok etilishi kerak. Ada tili 1978-1979 yillarda oʻtkazilgan xalqaro til loyihalari tanlovi natijasida paydo boʻlgan. Ishtirokchilar AQSh Mudofaa vazirligi homiyligida batafsil ishlab chiqilgan juda qattiq talablarga javob berishlari kerak edi. Qizig'i shundaki, ushbu tanlovning so'nggi bosqichlariga chiqqan barcha tillar Paskal tiliga asoslangan edi. Shu munosabat bilan Ada yuqorida sanab o'tilgan beshta asosiy talabni hisobga olgan holda ishlab chiqilgan Paskal sifatida shartli ravishda tavsiflanishi mumkin. Shu bilan birga, mualliflar asosan Paskal tilini yangi elementlar bilan kengaytirish yo'lidan borishdi. Natijada sezilarli darajada murakkabroq til paydo bo'ldi.

COBOL

COBOL asosan iqtisodiy tadqiqotlar uchun ishlab chiqilgan nisbatan eski tildir. Til sizga katta hajmdagi ma'lumotlar bilan samarali ishlash imkonini beradi, u turli xil qidirish, saralash va tarqatish imkoniyatlariga boy. Ingliz tilining keng qo'llanilishiga asoslangan Cobol dasturlari hatto Cobol tilini bilmaydiganlar uchun ham tushunarli, chunki bu dasturlash tilidagi matnlar hech qanday maxsus izohga muhtoj emas. Bunday dasturlar odatda o'z-o'zini hujjatlashtirish deb ataladi. Kobolning boshqa afzalliklari odatda uning tuzilishini o'z ichiga oladi. Shaxsiy kompyuterlar uchun ushbu tildan juda kuchli kompilyatorlar ishlab chiqilgan. Ulardan ba'zilari shunchalik samaraliki, shaxsiy kompyuterda disk raskadrovka qilingan dasturni asosiy kompyuterlarga osongina o'tkazish mumkin.

Kamchiliklarni sanab o'tayotganda, Kobolda faqat oddiy algebraik hisoblarni dasturlash mumkinligini esdan chiqarmaslik mumkin emas. Bu til muhandislik hisoblari uchun mos emas. Tilning rivojlanishini ma'lum darajada to'xtatayotgan yana bir sabab - bu Qo'shma Shtatlarda standartlarni ishlab chiqadigan maxsus tuzilgan sanoat qo'mitasining mavjudligi, unga rioya etilishi hukumat komissiyasi tomonidan nazorat qilinadi. Har doimgidek, bunday hollarda, dasturiy ta'minotni ishlab chiqish bilan shug'ullanadigan kompaniyalar o'zlarining ish qismlarini komissiyaning qat'iy talablariga moslashtirishga shoshilmayaptilar, versiyalar o'rtasida raqobat yo'q va oxirida tilning tarqalishi yo'qoladi.

PL/1 1964-1965 yillarda IBM tomonidan ishlab chiqilgan. PL/1 universal tillardan biridir, ya'ni turli sohalardagi muammolarni hal qilish imkonini beradi: raqamli hisoblar, matnni qayta ishlash, iqtisodiy masalalar va boshqalar. O'z imkoniyatlariga ko'ra, u Fortran, ALGOL-60 kabi tillarni qamrab oladi. (raqamli hisoblar uchun yaratilgan), Kobol (iqtisodiy muammolar uchun), garchi bir qator sabablarga ko'ra PL/1 bu tillarni siqib chiqara olmadi.

PL/1 yuqori darajadagi tillar deb ataladigan barcha asosiy konstruksiyalarni, shuningdek, amaliy dasturlash uchun qulay boʻlgan bir qator maxsus vositalarni oʻz ichiga oladi. Til ko'p sonli tafsilotlarga ega qurilish to'plamiga o'xshaydi - foydalanuvchi faqat tilning o'zi uchun zarur bo'lgan qismlarini o'zlashtirishi kerak. Uning operatorlari juda ixcham bo'lib, bu ko'pincha dasturni boshqa tillarga qaraganda ixchamroq yozish imkonini beradi. PL/1 tilini biladigan dasturchi bir xil yoki o'xshash sinfdagi istalgan boshqa tilni osongina o'zlashtira oladi.

Shu bilan birga, PL/1 tilni o‘rganish va undan foydalanishni qiyinlashtiradigan qator kamchiliklarga ham ega. Ularning asosiylari quyidagilar. Birinchidan, bir-birini takrorlaydigan juda ko'p vositalar mavjud, ularni eslab qolish qiyin, qachon foydalanish kerakligi aniq emas, qo'shimcha ravishda bu tarjima tezligini ham, dasturni bajarish tezligini ham pasaytiradi. Ikkinchidan, dasturlar to'liq mashinadan mustaqil emas.

Modul

Modula tilining tarixi 1980 yilda, ko'pchilik kompyuter olimlariga asosan Paskal tilining yaratuvchisi sifatida ma'lum bo'lgan taniqli axborot nazariyotchilaridan biri Niklaus Virt o'zi Modula deb atagan yangi dasturlash tilining tavsifini e'lon qilgan paytdan boshlanadi deb hisoblashimiz mumkin. . Dasturlashni o'rgatish uchun mo'ljallangan Paskal tilidan farqli o'laroq, Modula boshidanoq professional tizim dasturchilari uchun til bo'lib, o'zidan oldingi eng yaxshi an'analarni davom ettirgan va ularni shu kabi dasturlash tillariga qo'yiladigan talablarga javob beradigan yangi g'oyalar bilan boyitgan. tuzilishi, modulliligi va kengaytirish qobiliyati sifatida. Ko'pgina boshqa dasturlash tillari singari, Modula ham evolyutsiyani boshdan kechirdi, uning asl nomi Modula-2 nomiga aylantirildi. Modula tilining rivojlanishi bilan bir vaqtda u uchun yangi kompilyatorlar yaratildi, ammo ularning hech biri Paskal va C tillarining eng yaxshi ilovalari bilan raqobatlasha olmadi, masalan, Borland tomonidan ishlab chiqilgan. Modula tili uchun ushbu o'tish davrida eng yaxshi ilovalar Logitech tomonidan ishlab chiqilgan bo'lib, ularning xususiyatlari Turbo Paskal va Turbo C dan past bo'lgan. Faqat 1988 yilda, Amerika bozorida Top Speed ​​​​tizimi paydo bo'lgandan so'ng, Modula-2 tizim dasturlash uchun mo'ljallangan protsessual tillar orasida o'zining munosib o'rnini egalladi. Top Speed ​​​​tizimining mashhurligini oshirishga bir nechta omillar yordam berdi: qulay va qo'shimcha ravishda foydalanuvchilar talabiga binoan oson o'zgartiriladigan operatsion muhit, tezkor kompilyator va tanlangan havola muharriri. Ammo eng muhimi shundaki, yaratilgan dasturlar tez edi va xotirada ko'p joy egallamaydi.

ASOSIY

BASIC (Asosiy - boshlanuvchilar uchun universal ramziy ko'rsatma kodi - "yangi boshlanuvchilar uchun universal ramziy ko'rsatma kodi"). Fortran tilining bevosita avlodi va shaxsiy kompyuterlar uchun eng mashhur dasturlash tili. BASIC 1963 yilda paydo bo'lgan (muallifni nomlash qiyin bo'lar edi, lekin uning paydo bo'lishi uchun asosiy kredit, shubhasiz, amerikaliklar Jon Kemeny va Tomas Kurtsga tegishli). Har qanday afzalliklarga o'xshab, BASIC-ning soddaligi, ayniqsa, dastlabki versiyalarda tuzilish qiyinchiliklariga aylandi; Bundan tashqari, BASIC rekursiyaga ruxsat bermadi - samarali va ayni paytda qisqa dasturlarni yozish imkonini beruvchi qiziqarli texnika.

Kuchli BASIC kompilyatorlari ishlab chiqilgan bo'lib, ular nafaqat boy lug'at va yuqori unumdorlikni, balki tizimli dasturlash imkoniyatini ham ta'minlaydi. Ba'zi dasturchilarning fikriga ko'ra, eng qiziqarli versiyalar GWBASIC, Turbo-Basic va Quick Basic.

Bir vaqtlar Quick Basic ning paydo bo'lishi BASIC tilida dasturlash tizimlarining ikkinchi avlodining tug'ilishini belgilab berdi. U modulli va protsessual dasturlash, kutubxonalar yaratish, tayyor dasturlarni kompilyatsiya qilish va hokazo imkoniyatlarini taqdim etdi, bu esa uni C, Paskal, Fortran va boshqalar kabi klassik dasturlash tillari darajasiga olib chiqdi. Bundan tashqari, yo'qligi sababli. rasmiy BASIC tili standarti boʻlib, uning Quick Basic koʻrinishida amalga oshirilishi de-fakto standartga aylandi. BASIC ning turli versiyalari orasida shubhasiz etakchilar 80-yillarning oxirida paydo bo'lgan Microsoft-dan Quick Basic 4.5 va PDS 7.1 edi.

Lisp

Lisp tili 1960-yilda J. Makkarti tomonidan taklif qilingan boʻlib, raqamli boʻlmagan masalalarni yechish dasturlarini ishlab chiqishga qaratilgan. Ushbu tilning inglizcha nomi, LISP, LISt Processing (ro'yxatni qayta ishlash) iborasining qisqartmasi bo'lib, uning qo'llanilishining asosiy sohasini yaxshi ta'kidlaydi. "Ro'yxat" tushunchasi juda keng bo'lib chiqdi. Algebraik ifodalar, grafiklar, chekli guruhlar elementlari, to'plamlar, xulosa chiqarish qoidalari va boshqa ko'plab murakkab ob'ektlarni ro'yxatlar shaklida tasvirlash qulay. Ro'yxatlar kompyuter xotirasida axborotni aks ettirishning eng moslashuvchan shaklidir. Shuning uchun ro'yxatlarni qayta ishlash uchun maxsus mo'ljallangan qulay til tezda mashhurlikka erishganligi ajablanarli emas.

Lisp paydo bo'lgandan so'ng, turli mualliflar sun'iy intellekt sohasidagi muammolarni hal qilishga qaratilgan bir qator boshqa algoritmik tillarni taklif qilishdi, ular orasida Planner, Snoball, Refal, Prolog bor. Biroq, bu Lispning bunday muammolarni hal qilish uchun eng mashhur til bo'lib qolishiga to'sqinlik qilmadi. Uning mavjudligining deyarli qirq yillik tarixi davomida ushbu tilning bir qator dialektlari paydo bo'ldi: Common LISP, Mac LISP, Inter LISP, Standard LISP va boshqalar. Ularning orasidagi farqlar fundamental emas va asosan bir oz farq qiladi. o'rnatilgan funktsiyalar to'plami va yozuv shakli dasturlaridagi ba'zi farqlar. 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, funktsiya deganda ma'lum bir sinf elementlarini boshqa sinfning tegishli elementlari bilan moslashtiradigan qoida tushuniladi. Moslash jarayonining o'zi dasturning ishlashiga ta'sir qilmaydi, faqat uning natijasi muhim - funktsiyaning qiymati. Bu katta dasturiy ta'minot tizimlarini yozish va disk raskadrovka qilishni nisbatan osonlashtiradi. Dasturlarning ravshanligi, ularning funktsiyalarining aniq chegaralanganligi va ularni bajarishda murakkab nojo'ya ta'sirlarning yo'qligi sun'iy intellekt kabi mantiqiy jihatdan murakkab vazifalarni dasturlash uchun majburiy talablardir. Dasturlashda intizom faqat bir kishi emas, balki butun dasturchilar guruhi dastur ustida ishlayotganda ayniqsa muhim bo'ladi.

Lisp dasturlash tili asosan ramziy ma'lumotlarni qayta ishlash uchun mo'ljallangan. Shuning uchun Lisp dunyosida raqamlar asosiy roldan uzoqda bo'lishi tabiiy. Lisp-dagi asosiy ma'lumotlar turlari atom va nuqta juftligi deb ataladi.

Prolog

Mantiqiy dasturlash tili ma'lum bir mavzu bo'yicha bilimlarni ifodalash va undan foydalanish uchun mo'ljallangan. Bu tildagi dasturlar ma'lum munosabatlar to'plamidan iborat bo'lib, uning bajarilishi berilganlar asosida yangi munosabat hosil qilishgacha qisqartiriladi. Prolog deklarativ yondashuvni amalga oshiradi, unda berilgan ob'ektlarga tegishli qoidalar va bayonotlar yordamida muammoni tasvirlash kifoya. Agar ushbu tavsif etarlicha aniq bo'lsa, u holda kompyuter mustaqil ravishda kerakli echimni topishi mumkin.

PAL obyekti

Object PAL kuchli dasturlash tilidir. Object PAL - ob'ektga yo'naltirilgan, hodisalarga asoslangan, vizual dasturlash tili. Object PAL funksionalligining dastlabki darajasida siz ma'lumotlar operatsiyalarini bajarishingiz, maxsus menyular yaratishingiz va ma'lumotlarni kiritish seansini boshqarishingiz mumkin. Object PAL-dagi hodisalar Paradoksdan interaktiv foydalanish effektini simulyatsiya qiluvchi buyruqlarni hosil qiladi. Tez-tez bajariladigan vazifalarni avtomatlashtirish, shuningdek, interaktiv ish paytida mavjud bo'lmagan jadvallar, shakllar va hisobotlarda amallarni bajarish mumkin. Object PAL, shuningdek, Windows muhitida to'liq xususiyatli dasturlash tilining barcha xususiyatlarini taqdim etadi. Maxsus menyu tizimini, yordam tizimini va turli ma'lumotlarni tekshirishni amalga oshiradigan to'liq tizimlarni yaratish uchun Object PAL dan foydalanishingiz mumkin. Object PAL-da siz o'z ishingizni dinamik bog'langan kutubxonada saqlashingiz mumkin, unga bir nechta shakllar orqali kirish mumkin. Bundan tashqari, siz C, C++ yoki Paskal kabi tillarda yozilgan dasturlarni o'z ichiga olgan boshqa dinamik kutubxonalar bilan aloqa o'rnatishingiz mumkin.

Object PAL mustaqil dasturlarni yaratish uchun vosita sifatida ishlatilishi mumkin. To'liq Windows dasturini yozishingiz va uni Paradox ostida ishga tushirishingiz mumkin.

Object PAL ham mijoz, ham server sifatida dinamik ma'lumotlar almashinuvi mexanizmini qo'llab-quvvatlaydi. Bundan tashqari, Object PAL mijoz sifatida murakkab hujjatlar bilan ishlash mexanizmini qo'llab-quvvatlaydi. Yuqoridagilardan tashqari, ishlaydigan ilovani tovush va animatsiya effektlari bilan ta'minlash orqali ilovangizga multimediani kiritish mumkin.

Borlandning dBase tilini amalga oshirishi ob'ektga yo'naltirilganlik va an'anaviy dasturlash usullarining muvaffaqiyatli gibrididir. Ob'ektni loyihalashdan foydalangan holda tizimlarni yaratish va yozuvlarni qayta ishlashning odatiy usullaridan foydalanish imkonini berdi. Borland kompaniyasining katta yutug'i shundaki, u ob'ekt va protsessual dasturlash texnikasini juda muvaffaqiyatli birlashtirgan. Windows uchun birinchi versiya foydalanuvchiga ma'lumotlar bazasi dasturiy ta'minoti bozoridagi eng kuchli ob'ektga asoslangan vositani berdi. U irsiyat, inkapsulyatsiya va polimorfizm xususiyatlariga ega bo'lgan ob'ektlarning yangi sinflarini yaratishga imkon beradi. Bundan tashqari, oddiy jadval ma'lumotlar bazalarini boshqarish uchun ideal bo'lgan an'anaviy dBase buyruqlari yordamida ushbu ob'ektlarni dasturlash imkonini beradi. Bularning barchasi inkor etilmaydigan afzalliklarni beradi - ob'ektni dasturlash texnikasiga o'tishni juda qiyin, masalan, Paradox DBMSda bo'lgani kabi, juda qiyin o'tishni amalga oshirish.

Java tili turli maishiy texnika uchun ilg'or dasturiy ta'minotni yaratish loyihasining bir qismi sifatida paydo bo'lgan. Loyiha C++ da boshlangan edi, lekin tez orada bir qator muammolar paydo bo'ldi, unga qarshi kurashishning eng yaxshi yo'li vositaning o'zini - dasturlash tilini o'zgartirish edi. Har bir arxitektura uchun alohida kompilyatsiya qilinishi shart bo'lmagan va turli xil operatsion tizimlar ostida turli protsessorlarda ishlatilishi mumkin bo'lgan dasturlarni yaratishga imkon beruvchi platformadan mustaqil dasturlash tili zarurligi ayon bo'ldi. Internet uchun interaktiv mahsulotlar yaratish uchun Java tili talab qilingan. Aslida, Java-ni yaratishda qabul qilingan me'moriy qarorlarning aksariyati C va C ++ ga o'xshash sintaksisni ta'minlash istagidan kelib chiqqan. Java o'zgaruvchilarni e'lon qilish, parametrlarni o'tkazish, operatorlarni o'tkazish va kodni bajarish oqimini boshqarish uchun deyarli bir xil konventsiyalardan foydalanadi. Java C++ ning barcha yaxshi xususiyatlarini qo'shadi.

Java tili texnologiyasini yaratish uchun uchta asosiy element birlashadi

Java o'zining appletlaridan keng foydalanishni ta'minlaydi - kichik, mustahkam, dinamik, platformaga bog'liq bo'lmagan, Web-sahifalarga o'rnatilgan faol tarmoq ilovalari. Java appletlari har qanday HTML hujjati kabi sozlanishi va iste'molchilarga oson tarqatilishi mumkin.

Java oddiy, tanish sintaksisni mustahkam, ishlatish uchun qulay ishlab chiqish muhiti bilan birlashtirib, ob'ektga yo'naltirilgan ilovalarni ishlab chiqish kuchini ochadi. Bu dasturchilarning keng doirasiga tezda yangi dasturlar va yangi appletlar yaratish imkonini beradi.

Java dasturchiga oynalash, tarmoq va kiritish-chiqarishda qo'llaniladigan ko'plab tizim funktsiyalarini aniq mavhumlash uchun ob'ekt sinflarining boy to'plamini taqdim etadi. Ushbu sinflarning asosiy xususiyati shundaki, ular tizim interfeyslarining keng doirasi uchun platformadan mustaqil abstraktsiyalarni taqdim etadi.

Kompyuter tarmoqlari uchun dasturlash tillari

Kompyuter tarmoqlari uchun dasturlash tillari talqin qilinadi. Ular uchun tarjimonlar bepul tarqatiladi va dasturlarning o'zi manba kodida. Bunday tillar skript tillari deb ataladi.

Perl - bu dasturchi Larri Uoll tomonidan katta matnlar va fayllarni qayta ishlash uchun yaratilgan talqin qilingan til bo'lib, amaliy qazib olish va hisobot tilini anglatadi. Masalan, Perl yordamida siz bir yoki bir nechta fayllarni ochadigan, ma'lumotlarni qayta ishlaydigan va natijalarni yozadigan skript yaratishingiz mumkin.

Perl - bu ixtiyoriy matnli fayllarni qayta ishlash, ulardan kerakli ma'lumotlarni olish va xabarlarni chiqarish uchun moslashtirilgan til. Perl turli tizim dasturlarini yozish uchun ham foydalidir. Bu tildan foydalanish oson, samarali, lekin uni nafis va ixcham deb aytish qiyin. Perl iboralarining sintaksisi C tilining sintaksisiga yaqin. Rekursiya ixtiyoriy chuqurlikda bo'lishi mumkin. Perl matnli fayllarni skanerlash uchun mo'ljallangan bo'lsa-da, u ikkilik ma'lumotlarni ham qayta ishlay oladi. Perl sizga oddiy ifodalardan foydalanish, ob'ektlar yaratish, Perl kodining bo'laklarini C yoki C++ dasturiga kiritish imkonini beradi, shuningdek, ma'lumotlar bazalariga, shu jumladan Oraclega kirish imkonini beradi.

World Wide Web ixtirosi bilan Perl Common Gateway Interface (CGI) orqali veb-serverlar bilan o'zaro ishlash uchun ajoyib vosita ekanligini isbotladi. Perl buyruqlari HTML formasidan yoki boshqa manbadan ma'lumotlarni osongina olishi va u bilan biror narsa qilishi mumkin.

Til PHP(1995-1997) ma'lumotlar bazasiga kirish vositalariga ega va butun dunyo bo'ylab dinamik saytlar yaratuvchilari tomonidan qo'llaniladi.

Til Tcl/Tk(80-yillar oxiri) mavhum tiplanmagan ob'ektlar bilan ishlash uchun mo'ljallangan kuchli buyruqlardan iborat bo'lib, grafik interfeysli dasturlarni yaratishga imkon beradi.

Til VRML(1994) Internetda virtual uch o'lchovli interfeyslarni tashkil qilish uchun yaratilgan.

Til XML. 1996 yildan beri hujjat tuzilishining universal tilini yaratish ustida ish olib borilmoqda. HTML o'rnini bosishi mumkin.

Xulosa

Foydali manbalar

Aizili tomonidan sharh

Hisobot qayerda?

Ranifkani ko'rib chiqing

Re: Hisobot qayerda?
Hammasi bo'ladi :-D

Shamagulova Elita sharhi

Mishina Aleksandra sharhi

Ajoyib hisobot. Dasturlash tillari haqida ko'p yangi narsalarni o'rgandim.

Aleksandra Morozovaning sharhi

Albatta, men biron bir shaklda hisobot yoki hech bo'lmaganda taqdimotni ko'rishni xohlayman.

Zalina 2016 yil 13 yanvar, soat 15:42

Turli xil dasturlash tillari va ularni qo'llash sohalari. Yandex-da ma'ruza

  • Yandex kompaniyasining blogi,
  • Veb-sayt ishlab chiqish,
  • Dasturlash,
  • Sanoat dasturlash

Biz bu yilgi birinchi postimizni juda oddiy mavzuga bag'ishlashga qaror qildik, bu haqda Kichik ShADda ma'ruza o'qildi. Unda texnologiyaga qiziquvchi o'rta maktab o'quvchilari ishtirok etadilar, shuning uchun taqdimotning o'ziga xosligi - ma'ruza ayniqsa dasturlashni endi boshlayotgan va qaysi yo'nalishni rivojlantirish haqida o'ylayotganlar uchun qiziqarli bo'ladi. Ular uchun Yandex-da Stepic.org platformasida o'qish mumkin bo'lgan "Dasturlashga kirish (C++)" kursi mavjud.

Oʻqituvchi Mixail Gustokashin Yandex akademik dasturlari kuratori, Oliy Iqtisodiyot maktabining Kompyuter fanlari fakulteti talabalari tanlovlari markazi direktori. Mixail Butunrossiya dasturlash olimpiadalarining o'nlab g'olib va ​​sovrindorlarini tayyorladi.

Ma'ruzada qanday dasturlash tillari borligi, ular qanday farqlanishi, qanday paydo bo'lishi va qaysilari yaxshiroq va qaysi biri yomonroq ekanligi haqida so'z boradi. Avvaliga biz tillar tarixi haqida bir oz gaplashamiz - ular qanday paydo bo'lgan, odamlar qanday dasturlashni boshlagan, hamma narsa qanday rivojlangan, hozir nima bo'layotgani. Ikkinchi bo'limda qaysi tillar qanday vazifalarga mos kelishi, qanday qilib "sevimli tilingizni tanlash va hayotdan zavqlanish" haqida so'z boradi. Ma'ruzachi, shuningdek, uning fikricha, bularning barchasini qanday o'rganishingiz va keyin ishga kirishingiz mumkinligi haqida bir oz gapirib beradi.

Har doimgidek, kesma ostida ma'ruzaning batafsil transkripti mavjud bo'lib, siz uning mazmunini ko'rishingiz mumkin.

Dasturlash tillari tarixi

Keling, boshidan boshlaylik. Boshida kompyuterlarda hatto klaviatura ham bo‘lmagan! Ya'ni, hamma narsa juda yomon edi - ularda na klaviatura, na ekran bor edi, ularda faqat perfokartalar bor edi (bu teshikli yoki teshiksiz kichik narsalar). Shunga ko'ra, ular u erda pinlarni yopishtirishdi yoki u erda yorug'lik qilishdi. Agar teshik bo'lsa (yoki aksincha bo'lmasa) - bu nol yoki birlikni anglatardi. Va o'sha paytdagi dasturlar mashina kodlari yordamida yozilar edi - kompyuterdagi har bir operatsiya (qo'shish, ayirish, ba'zi murakkab operatsiyalar) qandaydir mashina kodiga ega edi. Odamlarning o'zlari ushbu kodni belgidan, xotiradagi har xil manzillardan tanladilar, ular hammasini qo'llari bilan taqillatib, o'quvchiga qo'yishdi - va barchasi hisobga olindi. Albatta, dasturchining ishi, ehtimol, o'sha paytda unchalik qiziq emas edi - teshiklar qilish - va fan va texnologiyaning rivojlanishi bilan, albatta, ular har xil "qiziqarli" narsalarni o'ylab topishni boshladilar. Masalan, hayotni biroz osonlashtirgan assembler.

Xo'sh, u qanday qilib hayotni osonlashtirdi? Buyruq uchun qandaydir "sehrli" kod mavjudligini eslash o'rniga, "inson" ingliz tiliga o'xshash har xil so'zlar ishlatilgan - ba'zilari qo'shiladi yoki mov - va keyin registrlar yoki xotira sohalari, ular kerak bo'lgan o'zgaruvchilar. operatsiyalarni bajarish sanab o'tilgan. Ammo bu, umuman olganda, qaysi registrda nima borligini, qayerda o'zgaruvchilar borligini va umuman nima sodir bo'layotganini boshimizda saqlash uchun juda ko'p aqliy kuch talab qilishi aniq. Nima uchun bu sodir bo'ldi? Chunki kompyuterlar "ahmoq" edi va boshqa "aqlli" narsani tushunolmadi. Darhaqiqat, assemblerdan mashina kodini yig'ish ham vaqt va xotirani talab qiladi (o'sha paytda, albatta, bu juda oz edi).

Asta-sekin, bunday katta murakkab dasturlarni ishlab chiqish juda qiyin ekanligi ayon bo'ldi. Bu jamoalarda dasturchining unumdorligi nihoyatda past edi - ya'ni u kuniga bir necha satr yozar (ma'noli) va har bir satr alohida hech narsa qilmasdi - bir necha oddiy arifmetik amallar. Va odamlar dasturlarni yozishni oson va qulayroq qilish uchun tillarni inson tiliga, xususan, ingliz tiliga ko'proq o'xshash qilishni xohlashdi. Va ketamiz!

Eski va o'lik tillar

Birinchi tillardan biri Fortran edi. Aytgancha, u perfokartalarda ham ochilgan - Fortran dasturlarini ochish uchun maxsus perfokartalar mavjud edi. Ammo agar siz hozir bu Fortranni olsangiz, mening fikrimcha, u hatto 50-60 orasida. paydo bo'ldi - va agar siz unga biror narsa yozishga harakat qilsangiz, siz juda yoqimsiz bo'lasiz, sizga kafolat beraman! Zamonaviy Fortran hali ham tirik, lekin avvalgisidan ancha farq qiladi.

Boshqa tillar - endi men siz faqat dasturlash tarixi haqida gapiradigan turli tadbirlarda eshitgan bir narsani yozaman - bu COBOL. Bu biznes ilovalarini yozish uchun til edi. Biznes ilovalari nima? Banklardagi ba'zi operatsiyalar, boshqa narsa, bularning barchasi Cobolda yozilgan. Albatta, bu erda juda mashhur emas. O'ylaymanki, siz Moskvada Cobol dasturchisini topish juda qiyin bo'ladi. Va Moskvada bo'lmagan joyda - bundan ham qiyinroq. Ammo, ajablanarlisi shundaki, bundan atigi 10 yil oldin, insoniyat tomonidan yozilgan barcha kodlarning yarmidan ko'pi Kobolda yozilgan. Va bugungi kunga qadar barcha bank operatsiyalarining muhim qismi unda yozilgan dasturlar (COBOL) yordamida amalga oshiriladi va odamlar hali ham unda nimadir yozadilar.

Shuningdek, "kulgili" til ham bor, u Algol deb nomlangan (uning yaratilgan yilini tavsiflovchi 68-versiya). Bu algoritmik til. Umuman olganda, ular u erda nimadir qilishlari mumkin edi, lekin hozir bizni ular nima qilishlari mumkinligi unchalik qiziqtirmaydi. Va shu bilan biz antik davrga va nisbatan foydalanilmagan tillarga ekskursiyamizni yakunlashimiz va hali tirik (va faol yashayotgan) ga o'tishimiz mumkin.

Qadimgi, ammo tirik tillar

Algol Evropada ixtiro qilingan va Fortran asosan shtatlarda ishlatilgan - katta farqlar yo'q. Qaysi tendentsiya sezilarli? Avvaliga hamma narsa murakkab edi va yozish uchun siz deyarli muhandis, elektrotexnika muhandisi bo'lishingiz kerak, qaysi kontaktlar qayerga ulanganligini va dasturlash uchun boshqa narsalarni tushunishingiz kerak edi. Keyin siz ham qog'oz parchalari bilan o'tirib, xotirani hisoblashingiz, unga qarashingiz kerak edi. Va asta-sekin hamma narsa oddiyroq, soddaroq, soddaroq va keyinchalik dasturchi uchun oddiyroq bo'ldi - odam uchun imkon qadar kamroq o'ylash, imkon qadar ko'proq avtomatik ravishda qilish. Taxminan bu davr oxirida (ma'ruzachi Algol va Kobolga ishora qiladi), ma'lum ma'noda bugungi kungacha "omon qolgan" tillar paydo bo'la boshlaydi.

ASOSIY. Ehtimol, ba'zi odamlar hali ham unda biror narsa yozadilar, hech bo'lmaganda men ba'zi muassasalarda QBasic tilida dars berishlarini ko'rdim - "1989" yozilgan ko'k oyna bor. Umuman olganda, u "barcha kuchi bilan yashaydi"! U dasturchi bo'lmaganlar uchun til sifatida ixtiro qilingan. O'sha paytda dasturchi juda ixtisoslashgan kasb edi. Va bu erda ular sizga aytadilar: "Bizda ajoyib asosiy til bor va har qanday aqlli odam unda dastur yozishi mumkin - bu oson." Shunga qaramay, BASIC va zamonaviy BASIC juda katta farq. 10 dan keyin raqamlangan bu satrlarning barchasi, har xil GOTO va boshqa dahshatlar - ular endi zamonaviy BASIC bilan hech qanday aloqasi yo'q va hatto 1989 yildagi BASIC-ga ham ular bilan aloqasi yo'q.

Yana bir kulgili voqea - Paskal tili bo'lib, universitet doiralarida, asosan, Rossiya va sobiq Sovet Ittifoqi mamlakatlarida keng tarqalgan. U ta'lim tili sifatida hayratlanarli darajada ishlatilgan va ishlatilmoqda. Dunyoning qolgan qismida u kamroq tarqalgan, lekin u ham tirik va yaxshi. Wirth kabi odam bor - u olim, nazariyotchi. U Algol muhokamasida ishtirok etdi, unga nima bo'lganini yoqtirmadi va o'z tilini - Paskalni o'ylab topdi. Va keyin Borland kompaniyasi (va undan oldin ko'plab boshqa kompaniyalar - ayniqsa, Apple ishtirok etgan) uni olib, hamma narsani buzdi. Uning go'zal, izchil nazariyasi bor edi - "hamma narsa yaxshi bo'ladi" - va ular uni olib, odamlar ishlashi uchun zarur bo'lgan narsalar bilan to'ldirishdi. Xo'sh, u xohlaganchalik chiroyli bo'lib chiqmadi.

Va nihoyat, . C muhandislar tomonidan ixtiro qilingan. Agar Paskal olim tomonidan ixtiro qilingan bo'lsa, u holda C Kernighan va Ritchie tomonidan ixtiro qilingan, ular Bellda muhandis bo'lib ishlaganlar. Bu qanday sodir bo'ldi? O'sha paytda bu tillarda tizimli biror narsa yozish mumkin emas edi (ma'ruzachi Fortran, COBOL, Algolga ishora qiladi). "Tizimli" nima? Masalan, operatsion tizim, ba'zi drayverlar, boshqa narsa. Bu tillar matematik hisob-kitoblar, biznes hisob-kitoblari uchun mo'ljallangan edi. Va qolgan hamma narsa Assambleyada yozilgan. Ba'zi tillar bor edi, ular hozir o'lik, ya'ni C tili Assambleyadan darhol paydo bo'lmagan, lekin ba'zi bir oraliq narsalar orqali paydo bo'lgan.

Buning nima keragi bor? Kernigan va Ritchi “Asteroidlar” o‘yinchog‘ini o‘ynashni yaxshi ko‘rardi – kosmik kema uchadi, u yerda asteroidlar bor, u ularga o‘q uzadi va ular parchalanib ketadi. Ular o'ynagan serverlari bor edi, lekin u erda juda ko'p odamlar bor edi va o'yinchoq sekin edi. Va ular o'zlarining ofislarida biron bir joyda hech kim foydalanmayotgan kompyuterlari borligini aniqladilar. Ammo muammo bor edi - u boshqa arxitekturaga ega edi va o'yin Assambleyada yozilgan.

Ular uni qayta yozishdi, albatta, hatto unga o'ynash uchun ba'zi xususiyatlarni qo'shdilar. Ammo bu ularni har safar yangi arxitektura uchun qayta yozish unchalik aqlli emas degan fikrga olib keldi. Va ular tizimli dasturlash uchun mos bo'lgan yuqori darajali tilni yozishga qaror qilishdi, ya'ni unda xotirani boshqarish mumkin bo'ladi, unda narsalar qaerda yotganini va xotiraning ushbu qismlariga qanday kirishni tushunish mumkin bo'ladi. . Shunday qilib, keyingi hamma narsaga katta ta'sir ko'rsatadigan C tili paydo bo'ldi. Ularning barchasi (ma'ruzachi Algol, Fortran va boshqa tillarga ishora qiladi) katta ta'sir ko'rsatdi, ammo C - ha ...

Shunga ko'ra, u o'sha paytda hozirgidan ham mashhurroq bo'lgan operatsion tizim bo'lgan Unix-da asosiy til edi. Va 80-yillarda vaziyat shunga o'xshash edi (ma'ruzachi Basic, C va boshqa tillarni ko'rsatadi). Aytaylik, bularning barchasi bizning mamlakatimizda asta-sekin so'ndi (ma'ruzachi Assambleya tili, Fortran va Algol haqidagi eslatmalarni o'chiradi) ... Va 80-yillarda kompyuterlar kichikroq, aqlli, arzonlashdi va odamlar har xil g'alati narsalarni xohlashdi. hayotni yanada yaxshiroq qilish, yanada qiziqarli yashash.

80-yillardagi tillar

Birinchi g'alati narsalardan biri bu C++ tili edi. C tilida juda ko'p kamchiliklar mavjud (yaxshi, umuman olganda juda katta) - siz unda hamma narsani qilishingiz mumkin, shu jumladan oyog'ingizga otish, o'zingizni fantastika bilan oyog'ingizga otish, boshqa oyog'ingizga, bir oyog'ingizni boshqasiga otish. oyoq, umuman olganda - nima qilishni xohlasangiz. Biroq, shu bilan birga, u erda ba'zi me'moriy ishlar juda qiyin - yana, Assambleyada bo'lgani kabi, biz qaerda ekanligimizni, nima va qanday xotirani ajratganimizni kuzatib borishimiz kerak; U har doim bir joyda "oqadi", bu xotira - ya'ni biz uni ajratdik, o'chirishni unutdik, noto'g'ri narsani o'chirib tashladik, xotira chegarasidan tashqariga chiqdik, umuman olganda - biz bir qator muammolarni hal qildik.

C++ dastlab C tiliga rivojlanishni osonlashtiradigan qo'shimchalar to'plami sifatida yaratilgan. O'sha paytda ob'ektga yo'naltirilgan dasturlash modaga aylandi va odamlar hamma narsani ierarxiya shaklida tasvirlash mumkin deb qaror qilishdi, ya'ni sizda to'p bor (mavhum), siz undan futbol to'pi, voleybol, boshqa mavhum to'pni meros qilib olasiz. . O'sha paytda "biz hamma narsani qandaydir ierarxiya shaklida yozyapmiz va hamma narsa yaxshi bo'ladi, hayot yaxshilanadi, hamma narsa yaxshi bo'ladi va tamom" degan moda edi. C++, qaysidir ma'noda, ushbu ob'ektga asoslangan yondashuvni amalga oshirdi - bu birinchi ob'ektga yo'naltirilgan dasturlash tili emas edi, lekin u juda mashhur bo'ldi va unda har xil xususiyatlar paydo bo'la boshladi. Shu bilan birga, C++ C tili bilan deyarli to'liq mosligini (o'sha paytda) saqlab qoldi; C tilida yozilgan dastur 99% hollarda C++ sifatida muvaffaqiyatli tuzilgan va hatto xuddi shunday ishlagan. Bu C dan C++ ga o'tishni osonlashtirish uchun mo'ljallangan edi.

Ob'ektga yondashuvdan tashqari (C++ da) tezda standart andozalar kutubxonasi (STL) paydo bo'ldi. O'ylaymanki, maktabda Paskal tilini o'rganayotganlar, birinchidan, sizda o'rnatilgan tartiblash yo'qligini aniqladilar (qadimgi, ko'k Borland Paskalda, hozir u zamonaviy versiyalarda) - misol bor (manba). kod) saralash, uni nusxalash va joylashtirish mumkin. Ammo bu yerda butun sonlarni, bu yerda haqiqiy sonlarni va bu yerda bir-biri bilan solishtirish mumkin bo‘lgan satrlarni saralashni istasangiz, aynan bir xil ishni bajaradigan uch xil turdagi yozishingiz kerak edi, ularda turli xil ma’lumotlar turlari mavjud. Bu unchalik yaxshi emas va C++ da darhol paydo bo'lmagan andozalar bu muammoni sezilarli darajada engillashtirdi. Ya'ni, sizda bir-biri bilan solishtirish mumkin bo'lgan narsani muvaffaqiyatli saralaydigan mavhum dastur mavjud edi.

90-yillardagi skript tillari

Ammo vaqt to'xtamadi, 80-yillarda juda ko'p qiziqarli voqealar sodir bo'ldi. Ammo 80-90-yillarning boshlarida kompyuterlar shunchalik yaxshi bo'ldiki, juda g'alati va juda samarasiz ishlarni qilish mumkin edi. Xususan, bu skript tillari bo'lib, ular mashina kodiga tuzilmagan, aksincha talqin qilingan. BASIC ham bir muncha vaqt talqin qilingan, ammo bu skript tillari asosan matnni qayta ishlash uchun mo'ljallangan edi - bular, masalan, Perl, Python (u vaqt unchalik mashhur emas edi), PHP, Ruby - bular skript tillari u yoki bu boshqa darajada, ular hali ham yashaydilar (ularning barchasi 2000 yilgacha, hatto undan ham oldin paydo bo'lishga muvaffaq bo'lgan).

Keling, ularni biroz ko'rib chiqaylik, chunki bular o'ziga xos narsalar va hozir ko'p joylarda qo'llaniladi. Fikr nima? Agar kompilyatsiya qilmasak, biz ko'proq narsaga ruxsat berishimiz mumkin. Masalan, dastur o'z kodiga qarashi va qandaydir tarzda undan foydalanishi mumkin; u ichida nima sodir bo'layotganini biladi va shuning uchun u juda ko'p qiziqarli narsalarni qila oladi.

Perl matnni qayta ishlash uchun mo'ljallangan edi - o'sha paytlarda kompyuterlarda xotira shunchalik ko'p ediki, siz u erda biron bir matnni to'ldirishingiz va bu matn bilan foydali narsalarni qilishingiz mumkin edi (masalan, so'zlarni sanash, qandaydir qidiruvni amalga oshirish). Ammo, mening fikrimcha, u biroz aqldan ozgan odamlar tomonidan ishlab chiqilgan, chunki bu haqda hazil bor: "Yozilgan har qanday belgilar to'plami haqiqiy Perl dasturidir". Menimcha, siz faqat unga yozishingiz mumkin, uni o'qiy olmaysiz. Men Perl kodiga qaraganimda va biror narsani tushunishga harakat qilsam, men hech narsani tushunmayapman. Ehtimol, agar men uni yaxshiroq bilganimda, men nimanidir tushungan bo'lardim, lekin hali ham biladigan odamlardan eshitganimdek, ular buni qayta yozish osonroq ekanligini aytishadi. Ya'ni, dasturlar qisqa bo'lib chiqadi va u erda nima borligini aniqlash va uni tuzatishdan ko'ra ularni noldan qayta yozish haqiqatan ham osonroq.

Taxminan o'sha paytda, 90-yillarning o'rtalarida Internet paydo bo'ldi. Avvaliga bu pochta, statik HTML-ga ega veb-saytlar edi, lekin odamlar hamma narsa dinamik ravishda sodir bo'lishi, ba'zi shakllarni to'ldirish, mehmonlar kitoblarini yaratish va boshqa narsalar uchun u erda qandaydir dinamikani qo'shishni xohlashdi. Shunga ko'ra, bu qandaydir o'zaro ta'sirni talab qildi, ular protokolni, uning qanday o'zaro ta'sirini va eng muhimi, foydalanuvchi so'roviga javoban "tupurib yuboriladigan" ushbu statik (shartli) sahifalarni yaratishni o'ylab topishdi.

Umuman olganda, o'sha paytda Pearldan boshqa hech narsa mos emas edi. Sof C yoki C++ da ishlov beruvchini yozish yomon fikr edi. Va bundan yaxshiroq narsa yo'qligi sababli, o'sha paytda (va ancha vaqt davomida) Pearl veb-ishlab chiqish uchun mashhur til edi. Albatta, miqyosni hozir sodir bo'layotgan voqealar bilan taqqoslab bo'lmaydi.

PHP tasodifan... kabi paydo bo'ldi. Bir kishi buni tezda to'xtatdi - u o'z sahifasini yaratdi, uning mehmonlar kitobi, boshqa narsa va boshqa narsalari bor edi. Va u Perl uchun C ga o'xshash ba'zi makroslar to'plamini yozdi, chunki u C dan qanday foydalanishni bilardi, chunki bu unga juda qulay edi. Va men uni Shaxsiy Bosh sahifa deb nomladim. U buni baham ko'rdi va dedi: "Odamlar, men yozganlarimga qarang, bu erda hamma narsa Perl-ga qaraganda ancha aniq va siz uni tahrirlashingiz mumkin." Va odamlarga yoqdi.

Keyin u bu biznesdan voz kechdi. Umuman olganda, bu PHP yashay boshladi va vaqt o'tishi bilan Perlga qaraganda ancha mashhur bo'ldi. Ammo uning bu "tug'ilish travması" (Pearl uchun makrolar to'plami sifatida yaratilgan) unga juda shafqatsiz hazil bo'ldi. Til g'alati bo'lib chiqdi. Ya'ni, u o'z-o'zidan rivojlandi, uni hech kim loyihalashtirmadi, rivojlanish jarayonini hech kim boshqarmadi (na kompaniya, na biron bir shaxs), lekin ko'plab guruhlar bor edi, ularning har biri o'zlariga yoqqan narsalarni arraladi. Natijada, funktsiyalar boshqacha nomlanadi, hatto uslub ham yo'q, hamma narsa ta'kidlangan, asosan tasodifiy, sozlamalar bu erda va u erda va bularning barchasi qanday ishlashi juda aniq emas. Ammo siz ikki soat ichida o'tirib, PHP-da yozishingiz mumkin, chunki u shunday mo'ljallangan edi.

Python va Ruby: Ruby hozir kamroq mashhur, Python qandaydir tarzda yaxshiroq "rejalashtirilgan", bu haqda keyinroq gaplashamiz. Ko'rinib turibdiki, o'sha kunlarda bu (ma'ruzachi Perl, Python, Ruby, PHPga ishora qiladi) juda ixtisoslashgan maqsadlar uchun juda ixtisoslashgan tillar edi. Umuman olganda, o'sha paytda hech kim tizim dasturlarini yozmagan, ularda biznes mantig'i yo'q va hozir ko'p emas.

90-yillardan tuzilgan tillar

Biz bir xil vaqtlarda aylanamiz, lekin boshqa yo'nalishda. O'sha paytda biz C++ tilidan yozilishi kerak bo'lgan deyarli hamma narsa uchun foydalanardik, bu internet uchun emas, matnga ishlov berish uchun emas, balki shunchaki ilovalar, operatsion tizimlar, o'yinchoqlar uchun - umuman olganda, hamma narsa uchun. Lekin C++ aslida dahshatli til. Nega? Chunki, birinchidan, u orqaga qarab muvofiqlik tufayli barcha C muammolarini meros qilib oldi. U erda siz hali ham C tilida bo'lgan bir xil million xil usullarda o'zingizni o'ldirishingiz mumkin (tabiiyki, C++ da yangi usullar qo'shilgan). Shu bilan birga, agar siz C++ mualliflari aytganidek, hamma narsani yaxshi va to'g'ri yozsangiz, unda, albatta, eski C kod usullaridan foydalangan holda o'zingizni o'ldirishning iloji yo'q edi va ular kamroq bo'lganga o'xshaydi. ular. Biroq, u juda g'alati, o'ziga xos ob'ekt modeliga ega edi. Dasturni modullarga, qandaydir bo'laklarga bo'lish odatda C tilidan kelib chiqqan (agar siz C yoki C++ da qanday yozishni bilsangiz - aslida bu kutubxona matnini dasturingizga oddiygina kiritish uchun mo'ljallangan edi. oxirida, siz bir nechta o'z ichiga olgan narsalarni yozganingizda, sizda hamma narsa bor - agar u boshida bo'lgani kabi "ibtidoiy" bo'lsa - hamma narsa bitta faylga kiritiladi va keyin hammasini kompilyatsiya qilish juda uzoq vaqt talab etadi, chunki u aylanib yuradi. O'sha Paskal Virtovskiy bu borada ancha o'ylangan edi, keyingi versiyalari yanada yaxshilandi.

Umuman olganda, C++ juda ko'p kamchiliklarga ega. Dasturchi C++ da yozish uchun yuqori malakaga ega bo'lishi kerak edi va bunday dasturchilar qimmat edi (va o'qitish va boshqa narsa, ya'ni bozorda dasturchilarni topish qiyin, ularga juda ko'p maosh to'lash kerak, yaxshi, umuman olganda. bu shunday emas... ). Bizning kompyuterlarimiz esa tezroq va tezroq hisoblanmoqda, ular arzonlashadi, odamlar yangi kompyuterlarni sotib olishadi va ko'proq ilovalarni, telefonlari uchun ko'proq o'yinchoqlarni xohlashadi, umuman olganda - ko'proq quvonch.

Java shunday paydo bo'ldi. Bu tilning nomini qanday olganligi haqida juda kulgili hikoya ham bor. U yerda dasturchilar bor, ular doim kofe ichishadi va o‘sha paytda Java orolida o‘sgan kofe ichish moda bo‘lgan. Til o'rnatilgan qurilmalar uchun, xususan, qahva mashinasi uchun til sifatida yaratilgan. Bu nom paydo bo'ldi ...
U bilan nima boshlandi, uning nimasi yaxshi edi va nega u shunchalik mashhur bo'ldi? Birinchidan, ular Sishnoy merosidan butunlay qutulishdi. Hech qanday alomat yo'q, tanangizning bir qismini otib tashlash va hamma narsani buzishning kamroq usullari. Ikkinchidan, ular ob'ekt modeli nuqtai nazaridan ancha yangi g'oyalarni taqdim etdilar - ya'ni C++ Java'dan ancha oldin paydo bo'lgan va ko'proq arxaik, "yovvoyi" ob'ekt modelidan foydalangan. Xo'sh, bu erda (ma'ruzachi Java-ga ishora qiladi) o'sha paytda ko'proq o'ylangan va nazariy jihatdan odamlar o'ylashgan va amalda ular qo'llashgan va hamma narsani ancha sovuqroq qilishgan.

Va nihoyat, uchinchi. Bizning Java dasturlarimiz mashina kodiga emas, balki virtual mashina uchun kodga kompilyatsiya qilingan. Ya'ni, sizda virtual mashina (VM) JVM - Java bor edi. Sizning dasturlaringiz qandaydir oraliq vakillikka yig'ilgan va keyin ushbu mashina yordamida ular allaqachon bajarilgan. Nima berdi? Birinchidan, u sekinlashdi, ikkinchidan, xotirani dahshatli kuch bilan iste'mol qildi, uchinchidan, u har qanday joyda (nazariy jihatdan) ko'chma edi - hatto qahva qaynatgichga, hatto qahva maydalagichga, hatto kompyuterga, hatto mobil telefonga ham. Bir tomondan, bu yaxshi, ya'ni siz virtual mashinani amalga oshirishni yozdingiz, keyin Java dasturlaringizni hamma joyda ishga tushirdingiz. Ammo, boshqa tomondan, o'sha telefonning xotirasi kam, unumdorligi past bo'lganligi yomon va bularning barchasi sekinlasha boshladi.

Ammo bu til birinchi navbatda ixtiro qilingan asosiy narsa emas. Java tili dasturchilar uchun malaka talablarini kamaytirish uchun ixtiro qilingan. Ya'ni, yomonroq dasturchilar Java-da yaxshi dasturlar yozishlari mumkin, chunki u yomon dasturlarni yozishga imkon bermaydi - yomon dasturlarni yozish uchun hech qanday vosita yo'q. U erda siz faqat yaxshi dasturlar yozishingiz mumkin. Xo'sh, tilni yaratuvchilarning tushunishida.

Ya'ni, agar C, C++, Python-da, har qanday narsada, biz loyihamizdan qandaydir dahshatli axlatxonani yaratishimiz mumkin, bu erda hamma narsa aralashib ketgan, soatlab yig'ilgan va boshqa narsa. Java-da siz axlatxonani ham yaratishingiz mumkin, ammo buning uchun siz biroz harakat qilishingiz kerak. Ya'ni, sukut bo'yicha, bu "axlatxona" emas, boshqa muammolar paydo bo'ladi, biror narsa meros qilib olingan va meros bo'lib o'tgan - umuman olganda, bitta mazmunli chiziq uchun unchalik ahamiyatli bo'lmagan o'ntasi bor. Biroq, bunday o'rtacha malakali dasturchi juda yuqori sifatli kod yozishi mumkin.
Biz deyarli oxiriga yetdik. Biz uchun keyingi narsa .Net (dotnet) paydo bo'ldi va ayniqsa biz C# ga qiziqamiz (deyarli bir xil narsa [ma'ruzachi Java-ga ishora qiladi], ya'ni tafsilotlarda farqlar mavjud, agar siz ular orasidan tanlasangiz. , ular ko'proq pul to'laydigan joyga qarang).

Va yana bir narsa - JavaScript. Java tiliga hech qanday aloqasi yo'q, o'sha yili paydo bo'lgan - bu so'z moda edi, ular uni ishlatish uchun savdo belgisini litsenziyalashdi.

E'tibor berishingiz kerak bo'lgan asosiy narsa nima? (O'qituvchi C++ dan Java, .Net, C#, JavaScript va PHP ga o'qlarni chizadi). Ushbu tillarning birida va boshqa ko'plab tillarda oddiy dastur yozish uchun - agar siz C++ tilini bilsangiz, umuman boshqa hech narsani bilishingiz shart emas - siz C++ tilida yozasiz, so'ngra boshida dollar qo'shasiz, yana bir narsa kichik ishlarni bajaradi. va u har qanday narsa ustida ishlay boshlaydi (ma'ruzachi C++ dan o'qlar tayinlangan tillarga ishora qiladi). Ya'ni, ular ba'zi oddiy narsalarda juda o'xshash. Agar siz ba'zi maktab muammolarini, ta'lim muammolarini yoki boshqa narsalarni hal qilsangiz (siz katta loyihani ishlab chiqmayapsiz - sizda raqamlarni o'qiydigan, konsolda raqamlarni ko'rsatadigan va boshqa biror narsa qiladigan bitta fayl mavjud), u holda ular o'rtasida deyarli farq yo'q. bu tillar. JavaScript va PHP ixtisoslashganligi aniq, ular uchun hamma narsa biroz boshqacha. Ammo bu erda (ma'ruzachi Java va C# tillariga ishora qiladi) umuman farqi juda kam.

O'shandan beri har xil qiziqarli narsalar paydo bo'ldi, ammo ular muvaffaqiyatli yashaydimi yoki o'ladimi, aniq emas. Ular hozir nimadan foydalanmoqda, qanday maqsadlarda?

Vazifaga qarab tilni tanlash

Aytaylik, siz video karta uchun drayverni yozish vazifasiga duch keldingiz. Bugun qaysi tildan foydalanasiz? (Tomoshabinlardan hayqiriq: Java!) Nega... Java ajoyib, lekin nega Ruby yoki PHP emas? (O'qituvchi kinoya bilan gapiradi.)

Past darajadagi dasturlash

Agar siz past darajadagi biror narsa yozayotgan bo'lsangiz, unda eng yaxshi tanlov C dir, lekin aslida men C++ dan foydalanilganini eshitganman (lekin ko'rmaganman). Lekin men bunga unchalik ishonmayman, chunki Cda siz aniq nazorat qilishingiz mumkin - siz juda ko'p bayt xotira berganingiz uchun, bu juda ko'p bo'lishini anglatadi. Va C++ (STL) da satr qanday amalga oshiriladi? Xo'sh, qandaydir tarzda amalga oshirildi. Va oxir-oqibat, biz u erda qanday va nima sodir bo'layotganini bilmaymiz, ehtimol video kartamizda xotira tugaydi yoki boshqa narsa sodir bo'ladi. Shuning uchun, C hali ham yashaydi va o'lmaydi, bunday tizim dasturlash vazifalari hali ham mavjud - operatsion tizimni yozing, drayverlarni yozing, boshqa narsalarni yozing - C buning uchun juda yaxshi. Bundan tashqari, hozirda batareyalar bilan ishlaydigan har xil qurilmalar paydo bo'lmoqda (narsalar Interneti yaqinda paydo bo'lishi va'da qilingan) (va tabiiyki, ular millionlab bo'ladi, hamma narsa ushbu Internet narsalar bilan qoplanadi), ular kerak juda arzon bo'lishi va elektr energiyasini juda kam iste'mol qilishi. Shunga ko'ra, 2 KB xotira, 5 kHz protsessor bo'ladi va yaqin kelajakda qandaydir virtual mashina yoki skript tilini o'zgartirish mumkin bo'lmasligi aniq - bu siz biror narsa yozishingiz kerak bo'ladi. C da. Va hozir ham, masalan, video kartada hisoblash (OpenCL yoki boshqa texnologiya) - ular uchun dasturlar yozish uchun yangi tilni o'ylab topmaydilar - ular C ni katta cheklovlar bilan bajaradilar. Odamlar qanday qilib bilganlari uchun, nega yangi narsalarni o'rganish kerak? Rasmiy ravishda, bu, ehtimol, qaysidir ma'noda C.

Veb dasturlash

Aytaylik, siz yangi Facebook (ijtimoiy tarmoq) yozmoqchisiz. Buni nimaga yozasiz? (Tomoshabinlar HTML va CSS haqida gapirishadi.) HTML va CSS - bu dizayn va biz u erda fotosuratlar, do'stlar qo'shish va sharhlar qoldirish mumkin bo'lishini xohlaymiz.

Skript qismi uchun - ya'ni mijoz tomonida nima sodir bo'ladi - bu JavaScript. Bundan tashqari, ba'zida JavaScript boshqa tilda yaratiladi va yuboriladi (bu skript yaratiladi ... chunki ba'zan mantiqdagi ba'zi o'zgarishlarni qayta ishlash osonroq).

Ajablanarlisi shundaki, u PHP da yozilgan - va Facebook va boshqa ko'plab yirik loyihalar. Albatta, ular o'zlarining ba'zi narsalarini yozishlari kerak edi, shunda u hali ham normal ishlashi uchun "noto'g'ri" emas, lekin ular buni qilishdi. Asosan, nima yozishingiz muhim emas, lekin men Perlni tavsiya qilmayman. Bu erda va hozir, albatta, hech kim noldan veb uchun hech narsa yozmaydi. Hamma qandaydir ramka yoki boshqa narsalarni yozmoqda. Onlayn do'kon? Biz onlayn-do'kon uchun ramka yuklab oldik - va bu, biz onlayn-do'kon yozdik.

Biznes uchun dasturlash

Keyinchalik siz bank uchun zerikarli ariza yozmoqchisiz. Yoki, masalan, sizda SIM-karta sotadigan odam bormi? Ehtimol, siz biror marta telefon yoki boshqa narsalarni sotib olgan bo'lsangiz va unga: "Tizim osilib turibdi, biz hech narsa qila olmaymiz" deb aytishgandir. Bunday ariza yozish uchun nimadan foydalanasiz? (Tomoshabinlardan Python haqida qichqiriq) Siz buni Pythonda yozolmaysiz, nima deysiz?! Pythonda biznes uchun hech narsa yozishning hojati yo'q. Nega? Chunki Python-da biror narsa yozganingizda, yozish jarayonida sezilarli miqdordagi xatolarni aniqlab bo'lmaydi. Python har tomonlama dinamik tarzda teriladi va umuman olganda siz xatoni shunday yashirishingiz mumkinki, u shunday vaziyatda paydo bo'ladiki, siz hatto bu egri foydalanuvchilar u erda nima qilganini tushunolmaysiz, hamma narsa siz uchun buzilgan. Ya'ni, Python-da o'zingiz uchun kichik skriptlarni yozish yaxshiroqdir - siz u erda nima sodir bo'layotganini va nima qilinayotganini tushunasiz. Xo'sh, yoki tashlab yuborishga qarshi bo'lmagan narsa: siz raqobatchilaringizdan oldin biror narsa chiqarmoqchisiz, agar u vaqti-vaqti bilan buzilib qolsa nima bo'ladi. Siz Pythonda yozdingiz va tamom - siz bozorni qo'lga kiritdingiz. Va agar siz uzoq vaqt davomida biror narsa yozsangiz, masalan, qandaydir bank ilovasi (shuning uchun u kreditlarni tasdiqlaydi, boshqa narsa) - uni Java-da yozasiz. Chunki bu jiddiy masala, qog'ozlar, pullar, hujjatlar, boshqa narsa, lekin uni shunchalik buzib bo'lmaydiki, hamma narsa buziladi, aks holda odamlar xafa bo'lishadi - ularning pullari ketdi va hech qayerga etib bormadi, chunki qandaydir tarzda lahzada satr raqamga aylandi yoki aksincha. Demak, siz uni metodik ravishda Java-da olib borasiz va yozasiz, yozasiz ... Xo'sh, yoki .Net-da, bunday holatlar, qoida tariqasida, ham sodir bo'ladi. U erda, albatta, siz ham muammolarga duch kelishingiz mumkin, ammo buning ehtimoli biroz pastroq.

Armiya, aerokosmik sanoati uchun dasturlash

Endi tasavvur qiling-a, ular sizni Oyga raketada yuborishga qaror qilishdi. Raketa dvigatellarini boshqaradigan kodni yozish uchun nimadan foydalanishni afzal ko'rasiz? Keling, ko'rib chiqaylik. Bu, ehtimol (ma'ruzachi Perl, Python, PHP, Ruby-ni ko'rsatadi), bunga loyiq emas - u sekinlashadi, boshqa narsa sodir bo'lmoqda va umuman, men bunday raketada uchishga rozi bo'lmagan bo'lardim. C++ da? Rostini aytsam, men ham bunga ishonmagan bo'lardim, chunki C++ da o'zingizni o'ldirishning juda ko'p usullari mavjud. Kosmosda biror joyda bo'lganingizda, bu unchalik yaxshi emas.

Ehtimol, Java-da? Ko'rinib turibdiki, u erda hamma narsa ishonchli va arxitektura yaxshi, yovvoyi turlar yo'q, xotira chegarasidan tashqarida keraksiz sayohatlar yo'q. Aytaylik, eng muhim daqiqa keldi va bizning Java biz uchun axlat yig'ishga qaror qildi. Biz qo'nishimiz, sekinlashishimiz kerak va u: "Yo'q, axlat ketmoqda". Umuman olganda, unchalik yaxshi emas.

Rostini aytsam, bu dastur Paskalda yozilganini afzal ko'raman. Albatta, men Paskalni yoqtirmayman, lekin qandaydir tarzda bunday masalalarda juda zo'r bo'lardi.

Dasturiy ta'minotni ishlab chiqish uchun bir nechta tillardan foydalanish

Xo'sh, zamonaviy tillar haqida umuman nima deyish kerak? Endi ko'plab loyihalar birorta tilda yashamaydi, ya'ni ularning ba'zilari bir tilda, ba'zilari boshqa, uchinchisi esa uchinchi tilda yashaydi. Misol uchun, agar sizda katta hajmdagi ma'lumotlarni qayta ishlaydigan veb-ilovangiz bo'lsa, disklarga qo'ng'iroqlar (hatto ma'lumotlar bazalariga ham emas, ular shunchalik kattaki, hatto u erdagi ma'lumotlar bazasi allaqachon yozilgan biron bir ma'lumotni bajara olmaydi) ehtimol, qandaydir tarzda yoziladi. keyin past darajadagi C, diskka vahshiyona tez yozish uchun va bularning barchasi. Tabiiyki, butun loyihani C tilida yozishning hojati yo'q. Ehtimol, Java-da tez qo'ng'iroqlar uchun C funktsiyalarini chaqiradigan qandaydir oraliq mantiq bor. Xo'sh, frontend (foydalanuvchi nimaga qaraydi), albatta, allaqachon biror narsada, ba'zi skriptlarda, brauzer (JavaScript) tomonidan to'g'ridan-to'g'ri bajariladigan narsada yozilgan. Va bularning barchasi birgalikda yashaydi va muvaffaqiyatli o'zaro ta'sir qiladi.

Ba'zi ilovalarni, hatto katta dasturlarni ishlab chiqishda, ba'zida odamlar nima qilishadi? Ular uni olib, Pythonda prototip yozadilar (hammasi qanday ishlaydi), uning eskizini chizadilar, qandaydir arxitektura haqida o'ylashadi. Unga yozish haqiqatan ham juda tez - ular prototipni yig'ib, u bilan tajriba o'tkazishdi va dedilar: "Voy! Bu juda zo'r! ” Va ular uni butunlay qayta yozishdi. Ular ishni ikki marta bajarganga o'xshaydi, bu esa ikki baravar ko'proq vaqtni talab qildi (yaxshi, bir yarim). Lekin yoq! Ko'pincha bu usul yomon emasligi ma'lum bo'ladi, chunki agar siz darhol biror narsa yozsangiz, masalan, Java-da va keyin qaror qilsangiz: "Yo'q, keling, arxitekturani to'liq o'zgartiramiz va hamma narsani o'zgartiramiz", deb qaror qilsangiz, unda siz 10 baravar ko'p pul sarflaysiz. vaqt. Bunday narsalar ham mavjud va yashaydi.

Har qanday dasturlash tilining muvaffaqiyati uchun shartlar

Keling, nima uchun ba'zi chiroyli tillar omon qolmagani yoki juda cheklangan makonda yashamaganligi haqida gapiraylik. Wirth Apple, Borland va uning Paskaliga nima qilgan yomon kompaniyalarni ko'rganida, u yanada yaxshi tilni - Oberonni o'ylab topdi. Bu shunchaki vahshiyona minimalist edi - ya'ni juda kam buyruqlar bor edi (Stringlar? Bizga strings nima uchun kerak? Biz belgilar massivini yaratamiz!). To'g'ri, uning uchun nimadir ish bermadi, buning iloji bo'lishi mumkin edi.

Yana bir narsa. Amerika harbiylari ulardan hamma narsa ishlaydigan va hamma narsa yozilishi mumkin bo'lgan ajoyib tilni ishlab chiqishni so'radi. Natijada juda dahshatli Ada tili paydo bo'ldi, ammo ular hali ham biror narsa yozadilar, lekin yana faqat harbiylar uchun.

Muammo nimada? Nima uchun Python kabi ba'zi tillar, hech bir kompaniya boshida qo'llab-quvvatlamadi, bozorni egallab oldi. PHP ham yaxshi ishlab chiqilmagan bo'lsa ham bozorni (ko'p qismini) o'z-o'zidan egallab oldi. Va har xil milliardlab dollar sarmoya kiritildi (ma'ruzachi Adaga ishora qiladi) va hech qaerga ketmadi, hech narsa sodir bo'lmadi. Bu nima bilan bog'liq? Buning sababi, bu tillar atrofida hech qanday infratuzilma mavjud emas. Ya'ni, til zo'r bo'lishi mumkin, ammo hujjatlar bo'lmasa, savollarga javob beradigan jamoa bo'lmasa (Stack Overflow bo'yicha) va nihoyat, eng muhimi, ko'p sonli bo'lmasa. kutubxonalar, til o'chib ketmaydi. Ya'ni, masalan, siz Oberon-da veb-sayt yozmoqchisiz. Bu nima, nega emas? Va qiyinchilik boshlanadi ... Oberonda o'z veb-serveringizni engil sinovdan o'tkaza olmaysiz, hech qanday kutubxonalarni ulay olmaysiz, chunki Oberonda ular yo'q. Va bularning barchasi ba'zi bir qo'ltiq tayoqchalari orqali amalga oshiriladi, kuch ketadi va umuman siz taslim bo'lasiz va veb-saytingizni Oberon o'rniga sof C-da yozasiz. Va yaxshi yashaydigan tillar boshqa tillardagi kutubxonalardan qanday foydalanishni biladigan tillardir. Xuddi shu Python sekinlashadigan joylarda. Umuman olganda, saralash va boshqa narsalar kabi barcha turdagi standart narsalar C tilida yozilgan va u (Python) ular bilan o'zaro ta'sir qilishi mumkin.

Java-da Java Native interfeysi ham mavjud. Bu asosan C, ya'ni u erda (mening fikrimcha, ular har doim uni taqiqlashni xohlashadi, lekin ular buni hali taqiqlamaganga o'xshaydi) bu tillar allaqachon mavjud kutubxonalar (asosan C) bilan o'zaro ta'sir qilishi mumkin. Va shuning uchun ular uni olib ishlaydilar. Sizga aytmoqchi bo'lgan g'oya aniq, to'g'rimi? C kutubxonasini qo'llab-quvvatlamaydigan tillarda yozmang. Xo'sh, agar siz ajoyib narsadan foydalanmoqchi bo'lsangiz. Asta-sekin ular (tillar) o'zlarining infratuzilmalariga ega bo'lishadi. Va ular qandaydir yaxshi yashashadi.

Dasturlash tili va kasbga yo'naltirish

Keling, hayotdan nimani xohlayotganingizni qanday tushunish haqida gapiraylik. Eng zo'r narsalar nima? Siz ba'zi tizim dasturlarini qila olasiz, to'g'rimi? Bu bitlarni sanash siz uchun juda yaxshi, siz kvadrokopterlarni, qandaydir kameralarni ishga tushirishni va boshqa biror narsa qilishni xohlaysiz. Keyin, ehtimol, C sizning tanlovingizdir.

Agar siz yozmoqchi bo'lsangiz, ehtimol hayotdagi eng qiziqarli ilovalar emas, lekin ularni loyihalash, bularning barchasini o'ylab ko'rish va ko'pincha o'tirib, zerikish uchun ko'p pul ishlang (buning uchun pul to'lashingiz kerak) agar siz missda yaxshi bo'lsangiz), mana ular - Java, .Net. Siz qandaydir bankda ishlashga borasiz, yozasiz, oq ko'ylakda to'qqizda ishga borasiz, yaxshi maosh olasiz va eng yaxshi Java dasturchilarining tavsiyalariga ko'ra yozasiz, .Net qo'y va boshqalar ...

Agar siz ba'zi ilovalar, qandaydir brauzer, qandaydir o'yinchoqlar yoki boshqa narsalarni yozmoqchi bo'lsangiz, unda C++ juda yaxshi. Agar siz veb-saytlar yozmoqchi bo'lsangiz, unda ular siz tanlagan tillardir (ma'ruzachi Perl, Python, PHP, Ruby tillarini ko'rsatadi), unchalik katta farq yo'q. Bitta narsa shundaki, PHP Python-dan oldin o'ladi, shuning uchun agar siz yangi narsalarni o'rganishga dangasa bo'lsangiz, Python-ni o'rganing. Siz katta farqni sezmaysiz, lekin siz uzoqroq davom etasiz.

Ruby bilan nima sodir bo'layotgani ham noma'lum. Xo'sh, agar siz uni allaqachon o'rgangan bo'lsangiz, PHP bilan shug'ullanishingiz mumkin, xayriyatki, bu shunchalik soddaki, uni qayta o'rganish ko'p vaqt talab qilmaydi.

Va nihoyat, dasturlash tillarini qo'llashning yana bir sohasi bor - bu dasturchi bo'lmagan kishi ulardan foydalanadi. Aytaylik, siz matematik, fizik, kimyogar, tahlilchi yoki har qanday odamsiz va siz tezda biror narsani hisoblashingiz, ba'zi ma'lumotlarni tahlil qilishingiz kerak (biologlar uchun, masalan, Qo'mondon orollarida qancha arktik tulki yashaydi). Bularning barchasini Excelda jadvalga qo'yishingiz yoki biror narsa bilan tahlil qilishingiz mumkin. Python ham buning uchun yaxshi, u matn bilan ishlashi mumkin va juda ko'p kutubxonalar, statistik va boshqalar. Agar siz Mashinani o'rganish turini qilishni, ba'zi ma'lumotlarni qayta ishlashni, bashorat qilishni istasangiz, bu Python-da hozir eng tezkor tarzda amalga oshiriladi. To'g'ri, vazifalar juda boshqacha ekanligini ta'kidlash kerak. Misol uchun, agar siz kotirovkalar doimo o'zgarib turadigan sharoitda bir zumda birjada savdo qilmoqchi bo'lsangiz, Python-da Mashinani o'rganish qanchalik ajoyib yozmasin, uni tezroq biror narsada yozgan odamlar Hamma narsadan oldin hamma narsani sotib olishga ulguradilar. Agar ularning algoritmlari yomonroq bo'lsa ham, siz uchun hisoblab chiqiladi. Shuning uchun, hatto ushbu mashinani o'rganish vazifalari (ularning ba'zilari) yuqori unumdorlikni (va nihoyatda yuqori unumdorlikni) va shunga mos ravishda boshqa tillarni talab qiladi.

O'zingiz xohlagan narsani tushunishning yagona yo'li - hamma narsani sinab ko'rish. Endi men buni qanday qilib hamma narsani sinab ko'rishingiz mumkinligi haqidagi tasavvurlardan biri sifatida aytaman. Qanday qilib dasturchi va baxtli bo'lish mumkin? Shunday qilib. Keling, toza varaqdan boshlaylik. Bu yerda siz maktabda matematika, rus tili va boshqa majburiy va ixtiyoriy fanlarni o‘qiyapsiz, dasturlash sohasidagi bilimlaringiz esa doskada (o‘qituvchi bo‘sh doskani ko‘rsatadi) ayni damda aks ettirilgan. Va siz baxtli inson bo'lishni, o'zingiz yoqtirgan narsa bilan shug'ullanishni, ko'p pul ishlashni va o'zingizni hech narsadan bosh tortmaslikni va baxtli bo'lishni xohlaysiz.

Bunga erishishning bir yo'li. Universitetga umuman o‘qishga kirmagan yoki o‘qishni tashlab milliarderga aylangan, kompaniya egalariga aylangan va hokazolar haqida har xil ilhomlantiruvchi hikoyalar bor, albatta. Ammo shuni ta'kidlash kerakki, milliarder bo'lib ulgurmagan, balki yaxshi yashayotgan odamlarning aksariyati ma'lum bir vaqtda universitetni tugatgan.

Universitetga qabul qilish bilan bog'liq vaziyat qanday (siz hozir maktabda o'qiysiz)? Maktabda bo'lganingizda, keyingi qadam ro'yxatga olish va unga g'amxo'rlik qilish ekanligini tushunishingiz kerak. Yagona davlat imtihonini topshiring yoki olimpiadada g'olib bo'ling. Yagona davlat imtihonida siz Paskal, C++ (shu jumladan sof C), Python tillaridan foydalanishingiz mumkin (bularni keyinroq eslatmayman). Olimpiadada bir xil Paskal, o'sha C++, o'sha Python (hozir uning muammolari haqida gaplashamiz) va ko'pincha Java mavjud. Olimpiadaga qarab sodir bo'ladigan boshqa narsalar ham bor, lekin bu gap emas.

Informatika bo'yicha Butunrossiya olimpiadasida til taqsimoti grafigi qanday ko'rinishga ega? Butunrossiya, eng zo'r Olimpiya o'yinlarida qatnashadigan odamlar, ular nima yozadilar? Bu shunday ko'rinadi (bu erda Paskal degan ma'noni anglatadi va bu erda taxminan 2000 va bu erda taxminan nolga teng, bu erda C ++ va bu erda 2015).

2000 yilda deyarli hech kim C++ yozmagan. 15 yil o'tdi va Paskal zamonaviy bo'lishiga qaramay, deyarli hech kim Paskalda yozmaydi. Bu deyarli hamma narsani qila oladigan til. Shunchaki, hamma buni, har bir yangi tendentsiyani o'rganishga juda dangasa bo'lib qolgan va ular Borland Paskalda hamma narsani yozishda davom etishgan, bu, albatta, hech narsa qila olmaydi. C++ da odamlar saralash uchun ba'zi algoritmlarni (STL) yozadilar - ajoyib, ular sort() ni yozishgan va tamom. Paskalda, oddiy, eskisida - bu muammo. Biz qandaydir to'plamni yozdik (kerak edi) - ajoyib, biz uni C++ da yozdik, lekin Paskalda bu yana to'liq og'riq edi. Albatta, siz buni yangi Paskallar bilan qilishingiz mumkin, lekin ular odatda pul talab qiladi. Siz buni sezmagandirsiz, lekin bu haqiqat.

Java ham bor, lekin Java juda ko'p harflarga ega. Bu yirik loyihalar uchun, lekin kichik bir martalik dasturlar uchun bu juda yomon bo'lib chiqadi, chunki qo'shimcha harflar juda ko'p. Ammo ba'zi odamlar ham yozadilar, siz unga yozishni o'rganishingiz mumkin. Ammo bu yagona davlat imtihonida emas va ko'pchilik hali ham Yagona davlat imtihonini topshirishlari kerak.

Yagona davlat imtihoni uchun nima yaxshi? Yagona davlat imtihonini topshirish uchun (agar siz hech narsa bilmasangiz va ular sizga maktabda hech narsa o'rgatmasa) Python tilini o'rganish yaxshiroqdir. Unda ba'zi imtihon muammolarini mukammal hal qilish mumkin. Olimpiadada, umuman olganda, C++ dan foydalanilgani ma'lum bo'ldi, chunki Python juda sekin, u erda hamma narsa hal etilmaydi.

Shunday qilib, siz olimpiadadan diplom olish va oliy ma'lumot olish uchun universitetga kirish uchun tilning kichik bir qismini va ba'zi algoritmlarni (ehtimol) o'rgandingiz va ko'plab muammolarni hal qildingiz.

Endi men HSEda kursni qanday tashkil qilishimiz, tillar qanday tartibda o'qitilishi, ular amaliy fanlar fakultetida amaliy matematika va informatika bo'yicha qanday o'rganilishi haqida gapiraman, biz Yandex bilan birgalikda qilamiz. Birinchi semestrda - Python (to'liq emas, taxminan maktabda o'rganishingiz kerak) va C++ (allaqachon kengroq, odatda maktablarda o'qitiladiganidan ancha kengroq). Qo'rqmaslik uchun darhol aytaman, agar siz to'satdan o'qishga kirmoqchi bo'lsangiz, shunday deysiz: "Nima, men bularning barchasini allaqachon bilaman, nega men bir joyga o'qishim kerak? Men boshqa joyga borishni afzal ko'raman." Qanday qilib dasturlashni yaxshi biladiganlar uchun darhol algoritmlarni o'rganishga va juda nazariy tayyorgarlikka o'tish imkoniyati mavjud. Biz hozir ularga qaramaymiz, bu (taxtaga ishora qiladi) oraliq yoki umuman dasturchi bo'lmaganlar uchun.

Birinchi semestrda Python asoslari o'rgatiladi, shunchaki odamlar dasturlashni o'rganishi va hech kim juda xafa bo'lmasligi uchun. Python kamdan-kam hollarda maktablarda o'qitiladi; ko'pchilik Paskal yoki C++ tilini bilishadi. Ko'pincha hatto Paskal, agar bu ommaviy maktab bo'lsa. Xo'sh, hech kim xafa bo'lmasligi uchun hamma yangi tilni o'rganadi (go'yo ular teng sharoitda). Va C++ shunchaki, chunki C++ dan keyin istalgan joyga borishingiz mumkin.

Keyin Algoritmlar kursi va alohida kurs loyihasi keladi. Amalga oshirish bilan klassik algoritmlar. Bu biz nazariy jihatdan biror narsani olib, murakkablikni hisoblaganimiz emas. Ma'ruzada biz uni oldik, murakkabligini hisobladik, seminarda biz uni olib, algoritmni amalga oshirdik. Loyiha - bu talabalar biror narsani to'liq bajaradigan joy. Misol uchun, loyihalardan biri edi: hisoblang ... Aytaylik, sizning Moskvada ko'plab kvartiralaringiz bor va siz tushunasiz: "Oh, menda juda ko'p ortiqcha narsalar bor, ba'zilarini ijaraga beraman. Va ular ma'lum bir narxni belgilashadi va negadir hech kim sizdan kvartirani ijaraga olishni xohlamaydi - bu juda qimmat. Yoki ular qandaydir narxni belgilashdi, ular darhol uni sizdan olishdi va siz: "Oh, men uni arzonga sotganman" deb o'ylaysiz - va siz ham xafa bo'lasiz. Ya'ni, kvartirani ijaraga olish qancha turadi, hisoblash kerak edi? Siz ma'lumotlarni kiritasiz - bu siz uchun smeta yaratadi. Bir nechta narsalardan iborat bo'lgan bunday sayt: jumlalarni oling, ularni tahlil qiling, qandaydir (ehtimol) oddiy mashinani o'rganish algoritmini qo'llang va siz biror narsani tanlashingiz, biror narsa, bir necha metr, ba'zi xonalarni kiritishingiz mumkin bo'lgan chiroyli veb-yuzni yarating. , saunalar soni, sizning kvartirangizdagi jakuzi soni va narxini taxminan taxmin qiling. Ya'ni, qandaydir tugagan, unchalik murakkab bo'lmagan narsa. Bu erda (ma'ruzachi algoritmlar bo'yicha kursga ishora qiladi) konsolli kiritish-chiqarish bilan C++ yadrosini bildiradi. Xo'sh, bu erda (ma'ruzachi "loyiha" yozuviga ishora qiladi) ustoz rahbarligida biror narsa, ehtimol ma'lumotlar bazalari, ehtimol matnni tahlil qilish va boshqa narsalar.
Keyin uchinchi semestr bor - bu "Kompyuter tizimlari" deb nomlangan kurs. Tushunish uchun juda ko'p assembler tili mavjud (juda kam), so'ngra sof C va operatsion tizimlar bilan o'zaro aloqaga o'xshash narsa, mohiyatan tizim dasturlash. Va seminar uchun loyiha, shuningdek, tarmoq o'zaro har xil mavzuda bir narsa, juda past darajadagi: yordam, masalan, rsync qandaydir ishlab chiqish (sinxronizatsiya, ehtimol siz bilasiz. Sof C, ko'proq yoki kamroq, yozing. rsync-ning analogi bo'lib, siz tarmoq orqali papkalarni barcha fayllarga kirishlar bilan sinxronlashtirasiz va hokazo).

Va nihoyat, to'rtinchisi. Men buni nima deb atashni ham bilmayman, bu haqiqiy rivojlanish uchun zarur bo'lgan texnologiyalar, masalan, veb-ishlab chiqish uchun shunday vinaigrette. Ya'ni, bu ma'lumotlar bazalarining amaliy qo'llanilishi, yana loyihada amalga oshirilgan ishlarga o'xshash narsa (ma'ruzachi 2-kurs loyihasiga ishora qiladi), lekin chuqurroqdir. Ya'ni, bu ko'proq yoki kamroq aniq narsalar, amaliy dasturlash. Bunga parallel ravishda har qanday nazariya mavjud va ular bu erda ham fan bilan shug'ullanadilar.

Va ikkita kursdan so'ng, odamlar o'zlarini qiziqtirgan narsalarni qilish uchun ketishadi, chunki bu narsa dasturlash asoslarini juda keng qamrab oladi va bu vaqtga kelib odamlar kompyuter tizimlari bilan hech qanday sharoitda ishlashni xohlamasliklarini allaqachon tushunishadi (ular buni qilmadilar). tizim dasturlash kabi, masalan ), lekin ular ba'zi nazariy algoritmlar ustida ishlashni, murakkabliklarni hisoblashni, ba'zi yangi narsalarni, tarqatishni yoki boshqa narsalarni o'ylab topishni xohlashadi. Yoki, aksincha, ular bu erda ko'p narsa yo'q deb o'ylashadi ( o'qituvchi Python va C ++ bilan birinchi kursning chizig'iga ishora qiladi) ketdi, keyin ( O'qituvchi tizimli dasturlash bilan uchinchi kurs qatoriga ishora qiladi) - Menga yoqmaydi, baytlarni hisoblash va o'qish va yozishda har qanday cheklovlarni o'rnatish, oqimlar, mavzular va boshqa narsalarni qilish. Shunga ko'ra, odamlar yo'nalish tanlaydi va o'qiydi. Ya'ni, printsipial jihatdan, siz "o'rdak sindromi" ni rivojlantirmasligingiz uchun - siz birinchi bo'lib Paskalingizni ko'rgansiz va endi "Paskal - bu kuch" deysiz; yoki undan ham ilg'or - siz C++ ni ko'rdingiz va hamma haqida C++ kuchli ekanligi haqida gapira boshladingiz, ammo qolgan hamma narsa unchalik yaxshi emas.

Endi biz buni kengroq ko'rib chiqishimiz kerak (o'qituvchi doskadagi kurslar ro'yxatiga ishora qiladi) - bu, xususan, HSEda tanlangan usullardan biri (u yaqinda paydo bo'lgan, shuning uchun u juda zamonaviy). Tanishishning boshqa usullari ham bor. Boshqa yaxshi universitetlarda buyurtma biroz boshqacha va boshqa urg'u qo'yiladi. Ammo ular odamlarni o'zlarida bo'lgan hamma narsa bilan tanishtirishga harakat qilishadi.

Qanday qilib dasturchi sifatida ish qidirish kerak

Siz ( o'qituvchi kurslar ro'yxatiga ishora qiladi) hamma narsani qildim, universitetda o'qidim, ikki yil davomida samaraliroq boshqa narsa qildim va siz ishga borishingiz kerak. Ish uchun biror narsani qanday tanlash mumkin? Birinchidan, siz hamma narsa bilan tanishdingiz, biror joyga chuqurroq kirdingiz va nimani yaxshi ko'rishingizni allaqachon bilasiz. Siz o'zingiz yoqtirgan narsani tanlashingiz kerak, tabiiyki. Chunki sevsangiz, kuch sarflasangiz, sizda motivatsiya bo'ladi va umuman hammasi yaxshi bo'ladi. Chunki bu nafaqat pulda, balki uni siz uchun qiziqarli va yoqimli qilishdir. Xo'sh, siz ajoyib kompaniyaga kirishni va ishga kirishni xohlaysiz. Shaxsan men qanday odamni ko'rishni xohlardim? Aytaylik, menga yuzta talaba kelsin - ikkitami yoki bittami? Ular nima uchun kelishadi, men umuman tushunmayman, ular kim, ular nima, qanday? Eng yaxshisi, ular menga universitetda olgan diplomlarini ko'rsatishadi va men: "Voy!" Bu ajoyib diplom, lekin unchalik zo'r emas! Aytgancha, men noto'g'ri bo'lishim mumkin. Ehtimol, odam juda ko'p bo'sh vaqtga ega bo'lgan va ancha yaxshi o'rgangan.

Nima ajoyib bo'lardi? Birinchidan, siz boshidan oxirigacha yozgan ochiq manbali loyiha. Ma'lumotlar tez o'qilishi yoki boshqa biror narsa uchun qandaydir infratuzilmani yaratayotgan bo'lsam, unda, albatta, men uchun ochiq manbali biror narsa yozilishiga qiziqaman. Ular veb-sayt yaratmadilar, lekin mavzu bo'yicha biror narsa. Nega meni bu narsa qiziqtiradi? Men sizning kodingizga qaray olaman, qanchalik tez-tez bajarganingizni ko'raman, foydalanuvchilarning xatolariga, undan foydalanadigan ishlab chiquvchilarning xatolariga qanday munosabatda bo'lganingizni ko'raman - hamma narsa yozib olinadi, men hamma narsani ko'rib chiqaman va o'ylayman: “Voy, bu xatolik yuz bermadi. Ikki yildan beri u erda bo'lmaganman.” yopildi, bu erda siz foydalanuvchiga qo'pol tarzda javob berdingiz, bu erda boshqa narsa bor - men buni qabul qilmayman. Ya'ni, bu sizning shaxsiy loyihangiz.

Keyin yana nima ajoyib bo'lar edi? Men jamoaviy ishni qanday bajarganingizni ko'rmoqchiman. Ya'ni, siz mening oldimga suhbatga kelasiz va shunday deysiz: "Universitet yigitlari va men yaxshi ariza topshirdik. Men u yerda maʼlumotlar bazasini yaratayotgan edim, ular u yerda qandaydir mobil ilova ishlab chiqarishdi, bizda ham u yerda bir yigit ishlaydi, dizayner qiz, texnik yordam boʻyicha oʻgʻil. Biz besh kishi edik va biz ajoyib loyiha qildik. Xo'sh, men bu sizning loyihangiz ekanligini ko'rib turibman: "Sizniki nima?" Men yana kodga qarayman va siz odamlar bilan jamoada qanday ishlashni bilishingizni tushunaman.

Garajda, qayerdadir chiroq o‘chirilgan holda yolg‘iz o‘tiradigan, hech kim bilan gaplashmaydigan, soqol o‘stiradigan va yozadigan odam dasturchi emas. Odamlar bilan o'zaro aloqa hali ham mavjud. Masalan, ba'zida sizni so'kishi mumkin bo'lgan xo'jayin bilan (boshliqlar, ular shunday, har doim ham mehribon emas). Va men siz odamlar bilan qanday ishlashni bilasiz va agar sizda qandaydir yaxshi jamoa bo'lsa, bu meni xursand qiladi. Yaxshi bo'lmasa ham, yo'qligidan ko'ra yaxshiroqdir.

Shaxsan menga yana nima yoqadi? Agar siz o'zingizni katta loyihalarda isbotlagan bo'lsangiz. Misol uchun, agar siz tizimni dasturlash bilan shug'ullanayotgan bo'lsangiz, Linux yadrosiga biror narsa kiritdingiz va ba'zi bir xatolikni tuzatdingiz. Ya'ni, ular siz birovning kodini qanday o'qishni va unga qandaydir o'zgartirishlar kiritishni bilishingizni ko'rsatdi. Men qarayman: "Oh, haqiqatan ham, siz murakkab narsani topdingiz va ba'zi xatolarni tuzatdingiz!" Va men bundan juda xursand bo'lishni boshlayman. Chunki menda... mayli, bilmayman... dasturchim ishdan ketdi, chunki uning raqobatchilari unga yuqori maosh taklif qilishdi va menga zudlik bilan uning o'rnini - siz bilan to'ldirish uchun kimdir kerak. Men siz faqat noldan yozganingizni ko'raman, lekin siz boshqa birovning kodini qanday o'qish va tahrirlashni bilmaysiz va men xafa bo'ldim.

Va nihoyat, aniq pozitsiyaga qarab, boshqa turli xil narsalar mavjud. Agar siz tahlilchi sifatida ish olayotgan bo'lsangiz, Kaggle-da ma'lumotlarni tahlil qilish muammolarini hal qilishingizni xohlayman. Agar siz ba'zi algoritmik narsalar uchun ariza topshirayotgan bo'lsangiz, sport dasturlashda ba'zi algoritmlarni bajarishingizni xohlayman. Va nihoyat, kasb haqida o‘ylab ko‘rgan bo‘lsangiz, suhbatlar qanday o‘tkazilishini o‘qing, u yerda ba’zi odamlar katta norozilik bildirayotganini ko‘rgansiz: “Keldim, sevimli mashg‘ulotim nima ekanligini so‘rashdi. Men boyo'g'li kabi o'tiraman va javob bermayman, chunki mening sevimli mashg'ulotim yo'q " va ular buni HR qiladi deb o'ylashadi. Aslida, ular sizning qanchalik do'stona va adekvat ekanligingizni tushunishga harakat qilmoqdalar. Agar siz do'stona va noadekvat bo'lsangiz, siz qanchalik daho va mehnatkash bo'lishingizdan qat'i nazar, katta bilimga ega qattiqqo'l mutaxassis bo'lishingizdan qat'i nazar, jamoaga siz bilan ishlash qiyin bo'ladi va siz loyihani yolg'iz yakunlay olmaysiz. Bundan tashqari, agar siz uni tortib olsangiz ham, kompaniya uchun qanday yuk borligini tasavvur qilishingiz mumkin. Ertaga kelib: "Ish haqimni 10 barobar oshiring, aks holda men sizni tashlab ketaman" desangiz-chi. Kompaniyalar bunday vaziyatga tushib qolishni istamasligi aniq. Shu sababli, o'z-o'zida adekvatlik va xayrixohlikni tarbiyalash (hech bo'lmaganda) ba'zi kasbiy ko'nikmalarni rivojlantirish kabi muhimdir.

Xulosa qilib aytganda, nima deyishimiz mumkin? Qaysi tillar yaxshi va qaysi tillar yomon? Xo'sh, ma'lum bir tillar guruhida, masalan, Ruby, Python va PHP orasida nimani tanlash kerak? Albatta, to'g'ri javob Python, lekin aslida ularning orasidagi farq ruxsat etilgan xatolar sonida, boshqa narsa sonida - 5%, yaxshi, ehtimol 10%. Ya'ni, agar sizda PHP-da yozilgan tayyor loyihangiz bo'lsa, unda aqli joyida hech kim: "Keling, hamma narsani Python-da qayta yozaylik", demaydi. Ular: "Keling, ko'proq PHP dasturchilarini yollaymiz va PHPda yozishni davom ettiramiz." Ajoyib, bu yaxshi tanlov. Agar siz to'satdan biron bir loyiha yozishga qaror qilsangiz, hozir Pythonni tanlash oqilona bo'lishi aniq. Garchi, bu ham bog'liq. Ehtimol, sizda bozorda arzon PHP dasturchilari juda ko‘p, Python dasturlari esa qimmat va siz shunday deb o‘ylaysiz: “Ha, texnologiya sovuqroq, lekin men tayyor dasturchilarga pul tejayman”. Va hamma narsa ajoyib, siz allaqachon kelib, u erda ishlaysiz.
Java va C++ o'rtasida qanday tanlash mumkin? Ha, taxminan bir xil narsa sodir bo'ladi. O‘ylaymanki, qaysi tilda yangi yirik loyihani boshlashga qaror qilganingizda, o‘z kasbiy sohangiz bo‘yicha bilimga ega bo‘lasiz va to‘g‘ri tanlov qila olasiz. Endi siz hali bu tanlovni qilishingiz shart emas, shuning uchun men sizga o'zingiz yoqtirgan narsani qilishni maslahat beraman.

Asoslarni, yuqorida aytganimdek, dasturlashning juda va juda asoslarini (funksiya nima, if'ics, for'ics, massivlar va boshqa narsalar) ko'proq yoki kamroq har qanday tilda o'rganish mumkin. Misol uchun, C++ da, chunki unga o'xshashliklar juda ko'p va unda eng kam o'ziga xosliklar mavjud (bu darajada) va yozish uchun eng kam miqdorda qo'shimcha harflar mavjud. Xo'sh, ba'zi bir murakkab me'moriy narsalarni o'rganganingizda, siz o'rganasiz va bu haqda ko'p tashvishlanishingiz shart emas. Ya'ni, asosiysi, harakat qilib ko'ring, o'zingizga yoqqan narsani qidiring va siz allaqachon ertalab soat 4 bo'lganini tushunganingizda va siz o'yin-kulgi uchun o'tirib, yozasiz, chunki bu sizga yoqadi - ehtimol o'sha paytda O'zingiznikini topganingiz aniq.