ECMAScript (/ˈɛkməskrɪpt/; ES)[1] ստանդարտ է սկրիպտային լեզուների համար, ներառյալ JavaScript, JScript և ActionScript: Այն առավել հայտնի է որպես JavaScript ստանդարտ, որը նախատեսված է տարբեր վեբ բրաուզերների միջև վեբ էջերի փոխգործունակությունն ապահովելու համար։ Այն ստանդարտացված է Ecma International-ի կողմից ECMA-262 փաստաթղթում։

ECMAScript-ը սովորաբար օգտագործվում է Համաշխարհային ցանցում (WWW) հաճախորդի կողմից սկրիպտավորման համար, և այն ավելի ու ավելի է օգտագործվում սերվերի կողմի հավելվածների և ծառայությունների համար, որոնք օգտագործում են գործարկման ժամանակի միջավայրեր՝ Node.js[2] deno[3] և bun[4]:

ECMAScript, ECMA-262, JavaScript

խմբագրել

ECMA-262-ը կամ ECMAScript լեզվի հստակեցումը սահմանում է ECMAScript լեզուն կամ պարզապես ECMAScript-ը։ ECMA-262-ը սահմանում է միայն լեզվի շարահյուսությունը և հիմնական հավելվածի ծրագրավորման միջերեսի (API) իմաստաբանությունը, ինչպիսիք են Array, Function, և globalThis, մինչդեռ JavaScript-ի վավեր իրականացումներն ավելացնում են իրենց սեփական գործառույթները, ինչպիսիք են մուտքային/ելքային և ֆայլային համակարգի մշակումը։

Պատմություն

խմբագրել

ECMAScript հստակեցումը սկրիպտային լեզվի ստանդարտացված ճշգրտում է, որը մշակվել է Netscape-ից Բրենդան Էյխի կողմից; սկզբում կոչվում էր Mocha, ապա LiveScript և վերջում JavaScript: 1995 թվականի դեկտեմբերին Sun Microsystems-ը և Netscape-ը հայտարարեցին JavaScript-ը մամուլի հաղորդագրության մեջ։ 1996 թվականի նոյեմբերին Netscape-ը հայտարարեց Ecma International ստանդարտների կազմակերպության հանդիպման մասին՝ JavaScript-ի ստանդարտացումը առաջ մղելու համար։ ECMA-262-ի առաջին հրատարակությունն ընդունվել է Ecma-ի Գլխավոր ասամբլեայի կողմից 1997 թվականի հունիսին։ Այդ ժամանակվանից ի վեր հրատարակվել են լեզվի ստանդարտի մի քանի հրատարակություններ։ «ECMAScript» անվանումը փոխզիջում էր լեզվի ստանդարտացման մեջ ներգրավված կազմակերպությունների, հատկապես Netscape-ի և Microsoft-ի միջև, որոնց վեճերը գերակշռում էին ստանդարտների վաղ նիստերում։ Էյխը մեկնաբանեց, որ «ECMAScript-ը միշտ անցանկալի ապրանքային անուն էր, որը հնչում է որպես մաշկային հիվանդություն»։ ECMAScript-ը ֆորմալացվել է գործառնական իմաստաբանության միջոցով՝ աշխատելով Սթենֆորդի համալսարանում և Լոնդոնի Կայսերական քոլեջի Հաշվիչների բաժնում՝ անվտանգության վերլուծության և ստանդարտացման համար։ «ECMA»-ն մինչև 1994 թվականը եղել է «Եվրոպական համակարգչային արտադրողների ասոցիացիա»։

Հատկություններ

խմբագրել

ECMAScript լեզուն ներառում է կառուցվածքային, դինամիկ, ֆունկցիոնալ և նախատիպի վրա հիմնված առանձնահատկություններ։

Հրամայական և կառուցվածքային

խմբագրել

ECMAScript JavaScript -ն աջակցում է C ոճի կառուցվածքային ծրագրավորում։ Նախկինում JavaScript-ն աջակցում էր միայն ֆունկցիաների շրջանակի սահմանումը՝ օգտագործելով var հիմնաբառը, սակայն ECMAScript 2015-ն ավելացրեց let և constt հիմնաբառերը՝ թույլ տալով JavaScript-ին աջակցել և՛ բլոկի շրջանակը, և՛ գործառույթների շրջանակը։ JavaScript-ն աջակցում է ստորակետի ավտոմատ տեղադրմանը, ինչը նշանակում է, որ ստորակետերը, որոնք սովորաբար ավարտում են C-ով հայտարարությունը, կարող են բաց թողնել JavaScript-ում։

Ինչպես C ոճի լեզուները, կառավարման հոսքը կատարվում է while, for, do / while, if / else, և switch հայտարարություններով։ Գործառույթները թույլ են մուտքագրված և կարող են ընդունել և վերադարձնել ցանկացած տեսակ։ Փաստարկները չեն տրամադրվել լռելյայնից մինչև չսահմանված։

Թույլ տպագիր

խմբագրել

ECMAScript-ը թույլ է մուտքագրված։ Սա նշանակում է, որ որոշ տեսակներ նշանակվում են անուղղակիորեն՝ հիմնվելով կատարված գործողության վրա։ Այնուամենայնիվ, JavaScript-ի կողմից փոփոխականի մի տեսակից մյուսը փոխակերպելու մի քանի տարօրինակություններ կան։ Այս տարօրինակությունները եղել են Wat[5][6] վերնագրով ելույթի թեմա։

Դինամիկ

խմբագրել

ECMAScript-ը դինամիկ մուտքագրված է։ Այսպիսով, տեսակը կապված է արժեքի հետ, այլ ոչ թե արտահայտության։ ECMAScript-ն աջակցում է օբյեկտների տեսակը փորձարկելու տարբեր եղանակներ, ներառյալ բադային[7] մուտքագրումը։

Տրանսպիլյացիա

խմբագրել

ES 2015 թվականից ի վեր JavaScript-ի վերափոխումը շատ տարածված է դարձել։ Transpilation-ը աղբյուրից-աղբյուր հավաքածու է, որտեղ օգտագործվում են JavaScript-ի ավելի նոր տարբերակները, և տրանսպիլյատորը վերագրում է աղբյուրի կոդը, որպեսզի այն ապահովվի ավելի հին բրաուզերների կողմից։ Սովորաբար, տրանսպիլյատորները տեղափոխվում են ES3՝ բրաուզերների բոլոր տարբերակների հետ համատեղելիությունը պահպանելու համար։ Որոշակի տարբերակի փոխադրման կարգավորումները կարող են կազմաձևվել ըստ անհրաժեշտության։ Transpiling-ը հավելյալ քայլ է ավելացնում կառուցման գործընթացին և երբեմն արվում է պոլիֆիլմերից խուսափելու համար։ Polyfills-ը նոր հնարավորություններ է ստեղծում հին միջավայրերի համար, որոնք չունեն դրանք։ Polyfill-ները դա անում են թարգմանչի գործարկման ժամանակ, օրինակ՝ օգտագործողի դիտարկիչում կամ սերվերում։ Փոխարենը, transpiling-ը վերագրում է ECMA կոդը ինքնին մշակման կառուցման փուլում, նախքան այն կհասնի թարգմանչին։

Համապատասխանություն

խմբագրել

2010 թվականին Ecma International-ը սկսեց մշակել ստանդարտների թեստ Ecma 262 ECMAScript-ի համար[8]։ Test262-ը ECMAScript-ի համապատասխանության թեստային փաթեթ է, որը կարող է օգտագործվել ստուգելու համար, թե որքանով է JavaScript-ի ներդրումը հետևում ECMAScript-ի ճշգրտմանը։ Թեստային փաթեթը պարունակում է հազարավոր անհատական ​​թեստեր, որոնցից յուրաքանչյուրը ստուգում է ECMAScript-ի որոշ հատուկ պահանջ(ներ)։ Test262-ի մշակումը Ecma տեխնիկական կոմիտեի 39 (TC39) նախագիծն է։ Թեստավորման շրջանակը և անհատական ​​թեստերը տրամադրվում են Ecma-ին TC39-ի անդամ կազմակերպությունների կողմից։

Կարևոր ներդրումներ են կատարել Google-ը (Sputnik թեստային փաթեթ) և Microsoft-ը, որոնք երկուսն էլ հազարավոր թեստեր են կատարել։ Test262 թեստային փաթեթը բաղկացած էր 38014 թեստերից Հունվարի 2020-ի դրությամբ[9]։ ECMAScript-ի բնութագրերը ES7-ի միջոցով լավ աջակցվում են հիմնական վեբ բրաուզերներում։ Ստորև բերված աղյուսակը ցույց է տալիս ծրագրային ապահովման ընթացիկ տարբերակների համապատասխանության մակարդակը ECMAScript-ի ամենավերջին հրատարակությունների նկատմամբ։

Սկրիպտավորման շարժիչի համապատասխանությունը
Սցենարավորման(Սկրիպտավորման) շարժիչ Տեղեկատվական հայտ(եր) Համապատասխանություն[10]
ES5[11] ES6 (2015)[12] ES2016+[13] Next[14][15]
SpiderMonkey Firefox 120 100% 98% 98% 5%
V8 Google Chrome 117, Microsoft Edge 113, Opera 98 100% 98% 98% 5%
JavaScriptCore Safari 17 99% 100% 98% 11%

Տես նաև

խմբագրել

Հղումներ

խմբագրել
  1. Stefanov, Stoyan (2010). JavaScript Patterns. O'Reilly Media, Inc. էջ 5. ISBN 9781449396947. Արխիվացված օրիգինալից 2016 թ․ հունիսի 10-ին. Վերցված է 2016 թ․ հունվարի 12-ին. «The core JavaScript programming language [...] is based on the ECMAScript standard, or ES for short.»
  2. «Node.js — ECMAScript 2015 (ES6) and beyond».
  3. «Deno joins JavaScript standards effort». 2021 թ․ դեկտեմբերի 14.
  4. https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a bun
  5. Bernhardt, Gary. Wat. CodeMash 2012. Destroy All Software. Արխիվացված օրիգինալից 2019 թ․ հոկտեմբերի 28-ին. Վերցված է 2021 թ․ օգոստոսի 18-ին.
  6. Gilbertson, Scott (2012 թ․ հունվարի 26). «Jokes for Nerds: Wat Moments in Programming». Wired. Արխիվացված օրիգինալից 2020 թ․ օգոստոսի 23-ին. Վերցված է 2021 թ․ օգոստոսի 22-ին.
  7. «JavaScript data types and data structures – JavaScript | MDN». Developer.mozilla.org. 2017 թ․ փետրվարի 16. Արխիվացված օրիգինալից 2017 թ․ մարտի 14-ին. Վերցված է 2017 թ․ փետրվարի 24-ին.
  8. «ECMAScript Language – test262». Test262.ecmascript.org. Արխիվացված է օրիգինալից 2011 թ․ մայիսի 14-ին. Վերցված է 2013 թ․ հոկտեմբերի 31-ին.
  9. «tc39/test262». GitHub. 2020 թ․ հունվարի 24. Արխիվացված օրիգինալից 2019 թ․ հոկտեմբերի 1-ին. Վերցված է 2020 թ․ հունվարի 29-ին.
  10. ES5 is the baseline for this test suite. The conformance rate for other editions reflects support for new features only, not a comprehensive score.
  11. «ECMAScript 5 compatibility table». compat-table.github.io (անգլերեն). 2024 թ․ ապրիլի 14. Արխիվացված օրիգինալից 2024 թ․ հունվարի 14-ին. Վերցված է 2024 թ․ ապրիլի 14-ին.
  12. «ECMAScript 6 compatibility table». compat-table.github.io (անգլերեն). 2024 թ․ ապրիլի 14. Արխիվացված օրիգինալից 2024 թ․ ապրիլի 4-ին. Վերցված է 2024 թ․ ապրիլի 14-ին.
  13. «ECMAScript 2016+ compatibility table». compat-table.github.io (անգլերեն). 2024 թ․ ապրիլի 14. Արխիվացված օրիգինալից 2024 թ․ հունվարի 14-ին. Վերցված է 2024 թ․ ապրիլի 14-ին.
  14. «ECMAScript Next compatibility table». compat-table.github.io. 2024 թ․ ապրիլի 14. Արխիվացված օրիգինալից 2024 թ․ հունվարի 14-ին. Վերցված է 2024 թ․ ապրիլի 14-ին.
  15. Composite score that includes new features from ES7 through next edition drafts