JavaScript'ning qisqacha tarixi
JavaScript qanday paydo bo'lgani va yillar davomida qanday rivojlangani
Muallif: Kamran Ahmed
Taxminan 10 yil oldin Jeff Atwood (stackoverflow asoschisi) JavaScript kelajak tili bo'lishini ta'kidlagan va “Atwood qonuni” degan iborani o'ylab topgan edi. Bu qonunga ko'ra, JavaScript'da yozish mumkin bo'lgan har qanday ilova oxir-oqibat JavaScript'da yoziladi. Oradan 10 yil o'tib, bugungi kunga nazar tashlasangiz, bu gap har qachongidan ham to'g'ri ekanini ko'rasiz. JavaScript tobora ko'proq qo'llanilishda davom etmoqda.
JavaScript e'lon qilinishi
JavaScript dastlab Netscape kompaniyasidan Brendan Eich tomonidan yaratilgan va birinchi marta 1995-yilda Netscape'ning press-relizida e'lon qilingan. Uning nomlanish tarixi ancha g'alati: dastlab yaratuvchisi uni Mocha deb atagan, keyinroq u LiveScript deb o'zgartirilgan. 1996-yilda, chiqarilganidan taxminan bir yil o'tib, NetScape Java hamjamiyatining shuhratidan foydalanish umidida (garchi JavaScript'ning Java bilan hech qanday aloqasi bo'lmasa ham) uni JavaScript deb qayta nomlashga qaror qildi va JavaScript'ni rasman qo'llab-quvvatlaydigan Netscape 2.0'ni chiqardi.
ES1, ES2 va ES3
1996-yilda Netscape tilni standartlashtirish umidida uni ECMA International'ga topshirishga qaror qildi. Standart spetsifikatsiyaning birinchi nashri 1997-yilda chiqdi va til standartlashtirildi. Dastlabki relizdan keyin ECMAScript ustida ish davom ettirildi va qisqa vaqt ichida yana ikkita versiya chiqarildi: 1998-yilda ECMAScript 2 va 1999-yilda ECMAScript 3.
O'n yillik sukunat va ES4
1999-yilda ES3 chiqqanidan keyin o'n yil davomida to'liq sukunat hukm surdi va rasmiy standartga hech qanday o'zgartirish kiritilmadi. Dastlabki kunlarda to'rtinchi nashr ustida biroz ish olib borildi; muhokama qilinayotgan imkoniyatlar orasida class'lar, module'lar, static typing, destructuring va boshqalar bor edi. Uni 2008-yilgacha chiqarish rejalashtirilgan edi, biroq tilning murakkabligiga oid siyosiy kelishmovchiliklar tufayli bu nashrdan voz kechildi. Shunga qaramay, vendor'lar tilga o'z kengaytmalarini qo'shishda davom etdi, dasturchilar esa boshlari qotib qoldi — turli brauzerlar o'rtasidagi moslik muammolariga qarshi kurashish uchun polyfill'lar qo'shishga majbur bo'ldi.
Sukunatdan ES5'gacha
Google, Microsoft, Yahoo va ES4'ga qarshi chiqqan boshqa tomonlar birlashib, ES3 uchun kamroq shijoatli, vaqtincha ES3.1 deb nomlangan yangilanish ustida ishlashga qaror qilishdi. Lekin jamoalar ES4'dan nimani olish va nimani olmaslik borasida hamon tortishayotgan edi. Nihoyat, 2009-yilda asosan moslik va xavfsizlik muammolarini tuzatishga va hokazolarga qaratilgan ES5 chiqarildi. Biroq u katta shov-shuvga sabab bo'lmadi — vendor'larga standartlarni joriy etish uchun juda ko'p vaqt kerak bo'ldi va ko'plab dasturchilar “zamonaviy” standartlardan bexabar holda hamon ES3'dan foydalanishda davom etdi.
ES6 chiqarilishi — ECMAScript 2015
ES5 chiqqanidan bir necha yil o'tib vaziyat o'zgara boshladi: TC39 (ECMA International tarkibidagi, ECMAScript'ni standartlashtirish uchun mas'ul qo'mita) ECMAScript'ning keyingi versiyasi (ES6) ustida ishlashda davom etdi. Bu versiya dastlab ES Harmony deb nomlangan, oxir-oqibat esa ES2015 nomi bilan chiqarildi. ES2015 murakkab ilovalarni yozish imkonini beradigan muhim imkoniyatlar va syntactic sugar'larni qo'shadi. ES6 taklif qiladigan imkoniyatlarning ba'zilari:
- Class'lar, module'lar, arrow'lar
- Kengaytirilgan object literal'lar
- Template string'lar
- Destructuring
- Default va rest parametrlar
- Spread operator
letvaconst- Iterator'lar
for..of - Generator'lar
mapvaset- Proxy'lar va Symbol'lar
- Promise'lar
- Math, Number, String, Array, Object API'lari va boshqalar
Brauzerlarning ES6'ni qo'llab-quvvatlashi hali ham yetarli emas, lekin ES6 kodini ES5'ga transpile qilish orqali ES6 taklif qiladigan barcha imkoniyatlardan dasturchilar baribir foydalana oladi. ECMAScript'ning 6-versiyasi chiqishi bilan TC39 ECMAScript yangilanishlarini har yili chiqarish modeliga o'tishga qaror qildi. Bu yangi imkoniyatlar tasdiqlanishi bilanoq qo'shilishini va to'liq spetsifikatsiya tayyorlanib, tasdiqlanishini kutib o'tirmasligimizni ta'minlash uchun qilindi — shu sababli ECMAScript'ning 6-versiyasi 2015-yil iyunidagi relizdan oldin ECMAScript 2015 yoki ES2015 deb qayta nomlandi. ECMAScript'ning keyingi versiyalarini esa har yili iyun oyida chop etishga qaror qilindi.
ES7 chiqarilishi — ECMAScript 2016
2016-yil iyun oyida ECMAScript'ning yettinchi versiyasi chiqarildi. ECMAScript har yilgi reliz modeliga o'tgani sababli ECMAScript 2016 (ES2016) nisbatan kam yangilik taklif qildi. ES2016 atigi ikkita yangi imkoniyatni o'z ichiga oladi:
- Darajaga ko'tarish operatori
** Array.prototype.includes
ES8 chiqarilishi — ECMAScript 2017
ECMAScript'ning sakkizinchi versiyasi 2017-yil iyun oyida chiqarildi. ES8'ning asosiy yangiligi async funksiyalarning qo'shilishi bo'ldi. ES8'dagi yangi imkoniyatlar ro'yxati:
Object.values()vaObject.entries()- String padding, ya'ni
String.prototype.padEnd()vaString.prototype.padStart() Object.getOwnPropertyDescriptors- Funksiya parametrlari ro'yxatlari va chaqiruvlarida trailing comma'lar
- Async funksiyalar
Unda ESNext nima?
ESNext — ma'lum bir vaqtda ECMAScript'ning joriy versiyasi qaysi bo'lsa, o'shanga ishora qiluvchi dinamik nom. Masalan, ushbu maqola yozilayotgan paytda ES2017 yoki ES8 joriy ESNext hisoblanadi.
Kelajakda nimalar kutmoqda?
ES6 chiqqanidan beri TC39 o'z jarayonini ancha soddalashtirdi. Endi TC39 Github organization'i orqali ishlaydi va u yerda ECMAScript'ning keyingi versiyalariga qo'shilishi uchun yangi imkoniyatlar yoki syntax bo'yicha bir nechta proposal'lar mavjud. Istalgan kishi proposal yuborishi mumkin, bu esa hamjamiyatning ishtirokini oshiradi. Har bir proposal spetsifikatsiyaga kirishidan oldin yetuklikning to'rt bosqichidan o'tadi.
Mana, taxminan shu bilan yakunlaymiz. Fikr-mulohazalaringizni discord'da bemalol qoldiring. Shuningdek, tilning asl spetsifikatsiyalariga havolalar: ES6, ES7 va ES8.