Jump to content

ECMAScript

Վիքիպեդիայից՝ ազատ հանրագիտարանից

Կաղապար:Short description Կաղապար:Infobox programming language Կաղապար:Infobox file format

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