ECMAScript (ES)
ECMAScript, பொதுவாக ES என்று சுருக்கமாக அழைக்கப்படுகிறது, இது ஒரு தரப்படுத்தப்பட்ட ஸ்கிரிப்டிங் மொழி விவரக்குறிப்பு (standardized scripting language specification) ஆகும். இது பல நிரலாக்க மொழிகளுக்கான அடித்தளமாகச் செயல்படுகிறது, ஜாவாஸ்கிரிப்ட் மிகவும் பிரபலமான மற்றும் பரவலாகப் பயன்படுத்தப்படும் செயலாக்கமாகும். இந்த மார்க்டவுன் ஆவணம் (Markdown document) ECMAScript, அதன் வரலாறு, அம்சங்கள் மற்றும் இணைய மேம்பாட்டில் அதன் பங்கு பற்றிய கண்ணோட்டத்தை வழங்குகிறது.
ECMAScript என்றால் என்ன?
தரப்படுத்தப்பட்ட மொழி (Standardized Language): ECMAScript என்பது ECMA International ஆல் பராமரிக்கப்படும் ஒரு தரப்படுத்தப்பட்ட ஸ்கிரிப்டிங் மொழி விவரக்குறிப்பாகும். நிலைத்தன்மை மற்றும் இயங்குதன்மை (consistency and interoperability) ஆகியவற்றை உறுதி செய்வதற்காக மொழியின் தொடரியல் (syntax) மற்றும் சொற்பொருளை (semantics) இது வரையறுக்கிறது.
ஜாவாஸ்கிரிப்ட் செயலாக்கம் (JavaScript Implementation): ஜாவாஸ்கிரிப்ட் என்பது ECMAScript இன் மிக முக்கியமான செயலாக்கமாகும், ஆனால் ActionScript போன்ற பிற மொழிகளும் இந்த விவரக்குறிப்பை அடித்தளமாகப் பயன்படுத்துகின்றன.
ECMAScript இன் வரலாறு
- ES1 (ECMAScript 1): 1997 இல் வெளியிடப்பட்டது. ஜாவாஸ்கிரிப்ட்டிற்கு அடித்தளம் அமைத்தது.
- ES2 (ECMAScript 2): 1998 இல் வெளியிடப்பட்டது. ISO/IEC 16262 உடன் சீரமைக்கச் சிறிய தலையங்க மாற்றங்கள் (Minor editorial changes).
- ES3 (ECMAScript 3): 1999 இல் வெளியிடப்பட்டது. வழக்கமான கோவைகள் (regular expressions),
try/catchவிதிவிலக்கு கையாளுதல் (exception handling) மற்றும்do/whileசுழல்கள் (loops) போன்ற குறிப்பிடத்தக்க மேம்பாடுகளை அறிமுகப்படுத்தியது. - ES5 (ECMAScript 5): 2009 இல் வெளியிடப்பட்டது.
strict mode,JSONஆதரவு,Object.create(),Object.defineProperty()மற்றும் வரிசை முறைகள் (map,filter,reduce) போன்ற புதிய அம்சங்கள் சேர்க்கப்பட்டன. - ES6 (ECMAScript 2015): 2015 இல் வெளியிடப்பட்டது. அம்பு செயல்பாடுகள் (arrow functions), வகுப்புகள் (classes), தொகுதிகள் (modules), டெம்ப்ளேட் லிட்டரல்கள், டிஸ்ட்ரக்சரிங்,
let/const,for...ofசுழல்கள், பிராமிஸ்கள் மற்றும்Symbolஆகியவற்றுடன் முக்கிய மைல்கல். - ES7 (ECMAScript 2016): 2016 இல் வெளியிடப்பட்டது.
Array.prototype.includes()மற்றும் அடுக்குக்குறியீடு ஆபரேட்டர் (exponentiation operator) (**) அறிமுகப்படுத்தப்பட்டது. - ES8 (ECMAScript 2017): 2017 இல் வெளியிடப்பட்டது.
async/await,Object.values(),Object.entries(),Object.getOwnPropertyDescriptors()மற்றும் சரம் திணிப்பு (string padding) (padStart/padEnd) சேர்க்கப்பட்டது. - ES9 (ECMAScript 2018): 2018 இல் வெளியிடப்பட்டது. பொருட்களுக்கான (objects) ரெஸ்ட்/ஸ்ப்ரெட் (rest/spread) பண்புகள் (properties),
Promise.prototype.finally()மற்றும் ஒத்திசைவற்ற மறு செய்கை (asynchronous iteration) அறிமுகப்படுத்தப்பட்டது. - ES10 (ECMAScript 2019): 2019 இல் வெளியிடப்பட்டது.
Array.prototype.flat(),Array.prototype.flatMap(),Object.fromEntries(),String.prototype.trimStart(),String.prototype.trimEnd()மற்றும்Symbol.prototype.descriptionசேர்க்கப்பட்டது. - ES11 (ECMAScript 2020): 2020 இல் வெளியிடப்பட்டது.
BigInt,Promise.allSettled(),globalThis, விருப்பச் சங்கிலி (optional chaining) (?.) மற்றும் நல்யிஷ் கோலேஸிங் ஆபரேட்டர் (nullish coalescing operator) (??) அறிமுகப்படுத்தப்பட்டது. - ES12 (ECMAScript 2021): 2021 இல் வெளியிடப்பட்டது.
String.prototype.replaceAll(),Promise.any(),AggregateError, தருக்க ஒதுக்கீட்டு ஆபரேட்டர்கள் (logical assignment operators) (&&=,||=,??=) மற்றும்WeakRefsசேர்க்கப்பட்டது. - ES13 (ECMAScript 2022): 2022 இல் வெளியிடப்பட்டது. உயர்மட்ட
await,Object.hasOwn(),Error.cause,Array,Stringமற்றும்TypedArrayஆகியவற்றிற்கானat()முறை மற்றும் தனிப்பட்ட வகுப்புப் புலங்கள்/முறைகளை (private class fields/methods) அறிமுகப்படுத்தியது. - ES14 (ECMAScript 2023): 2023 இல் வெளியிடப்பட்டது.
Array.prototype.toReversed(),Array.prototype.toSorted(),Array.prototype.toSpliced(),Array.prototype.with()மற்றும்Symbol.prototype.descriptionஆகியவை கெட்டராகச் (getter) சேர்க்கப்பட்டது.
ECMAScript (ES) ஜாவாஸ்கிரிப்ட்டுக்கு ஏன் தரப்படுத்தப்பட்டுள்ளது (Why ECMAScript (ES) is Standardized for JavaScript)
ஜாவாஸ்கிரிப்ட்டுக்கு ECMAScript ஏன் முக்கியமானது, தரப்படுத்தலில் அதன் பங்கு மற்றும் மொழிக்கான அதன் நன்மைகள் பற்றி ஆவணத்தின் இந்தப் பகுதி விவரிக்கிறது.
தரப்படுத்தலின் தேவை (The Need for Standardization)
மொழி நிலைத்தன்மை (Language Consistency): ஜாவாஸ்கிரிப்ட், இணைய மேம்பாட்டிற்குப் பரவலாகப் பயன்படுத்தப்படும் நிரலாக்க மொழியாக இருப்பதால், பல்வேறு செயலாக்கங்கள் (implementations) மற்றும் சூழல்களில் (environments) நிலைத்தன்மையை உறுதி செய்ய ஒரு தரப்படுத்தப்பட்ட விவரக்குறிப்பு தேவைப்பட்டது.
இயங்குதன்மை (Interoperability): வெவ்வேறு இணைய உலாவிகள் (web browsers) மற்றும் இயந்திரங்கள் ஜாவாஸ்கிரிப்ட்டின் சொந்த விளக்கங்களைக் கொண்டிருக்கலாம். அனைத்து தளங்களிலும் (platforms) ஜாவாஸ்கிரிப்ட் குறியீடு சீராகச் செயல்படுவதை உறுதிசெய்ய ஒரு தரநிலை உதவுகிறது.
ECMAScript இன் பங்கு (The Role of ECMAScript)
மொழியை வரையறுத்தல் (Defining the Language): ECMAScript அதன் தொடரியல் (syntax), தரவு வகைகள் (data types), செயல்பாடுகள் (functions) மற்றும் அடிப்படைப் பொருள்கள் (fundamental objects) உள்ளிட்ட ஜாவாஸ்கிரிப்ட்டின் முக்கிய அம்சங்களை வரையறுக்கிறது.
தரநிலைப்படுத்தல் அமைப்பு (Standardization Body): ECMAScript ஆனது தரநிலை அமைப்பான ECMA International (European Computer Manufacturers Association) மூலம் பராமரிக்கப்பட்டு உருவாக்கப்படுகிறது. இந்த அமைப்பு ஜாவாஸ்கிரிப்ட் ஒரு நன்கு வரையறுக்கப்பட்ட மற்றும் நிலையான மொழியாக இருப்பதை உறுதி செய்கிறது.
பதிப்பு பரிணாமம் (Version Evolution): ECMAScript நவீன இணைய மேம்பாட்டின் தேவைகளுடன் ஜாவாஸ்கிரிப்ட்டைப் புதுப்பித்து வைத்து, ஒவ்வொரு புதிய பதிப்பிலும் புதிய மொழி அம்சங்களையும் மேம்பாடுகளையும் அறிமுகப்படுத்துகிறது.
ECMAScript தரநிலைப்படுத்தலின் நன்மைகள் (Benefits of ECMAScript Standardization)
நிலைத்தன்மை (Consistency): தரப்படுத்தல் ஜாவாஸ்கிரிப்ட் வெவ்வேறு தளங்கள் மற்றும் உலாவிகளில் தொடர்ந்து செயல்படுவதை உறுதிசெய்கிறது, இணக்கத்தன்மை (compatibility) சிக்கல்களைக் குறைக்கிறது.
இயங்குதன்மை (Interoperability): டெவலப்பர்கள் ஜாவாஸ்கிரிப்ட் குறியீட்டைப் பல்வேறு சூழல்களில் உத்தேசித்துள்ளபடி செயல்படும் என்பதை அறிந்து, நம்பிக்கையுடன் எழுதலாம்.
புதுமை (Innovation): ECMAScript இன் தற்போதைய வளர்ச்சி புதிய மொழி அம்சங்கள் மற்றும் மேம்பாடுகளை அறிமுகப்படுத்த அனுமதிக்கிறது, எப்போதும் மாறிவரும் இணைய நிலப்பரப்புடன் (web landscape) ஜாவாஸ்கிரிப்ட் உருவாக உதவுகிறது.
குறுக்கு-தளம் மேம்பாடு (Cross-Platform Development): தரநிலைப்படுத்தல், டெவலப்பர்கள் கிளையண்ட் (client) மற்றும் சர்வர்-பக்க (server-side) சூழல்கள் இரண்டிலும் வேலை செய்யும் குறியீட்டை எழுதுவதை எளிதாக்குகிறது.
ஜாவாஸ்கிரிப்ட் செயலாக்கங்கள் (JavaScript Implementations)
முக்கிய உலாவிகள் (Major Browsers): Chrome, Firefox, Safari மற்றும் Edge போன்ற பிரபலமான வலை உலாவிகள் (web browsers) ஜாவாஸ்கிரிப்ட் குறியீட்டை இயக்க ECMAScript ஐச் செயல்படுத்துகின்றன.
Node.js: Node.js, ஒரு சர்வர்-பக்க (server-side) ஜாவாஸ்கிரிப்ட் இயக்க நேரம், ECMAScript தரநிலைகளுடன் ஒத்துப்போகிறது, ஜாவாஸ்கிரிப்டைச் சர்வர்-பக்க நிரலாக்கத்திற்குப் பயன்படுத்த உதவுகிறது.
ECMAScript இன் முக்கிய அம்சங்கள் (Key Features of ECMAScript)
அம்பு செயல்பாடுகள் (Arrow Functions): செயல்பாடுகளை (functions) வரையறுப்பதற்கான சுருக்கமான தொடரியல் (syntax) மற்றும்
thisஇன் லெக்சிகல் பிணைப்பை (lexical binding) வழங்கவும்.வகுப்புகள் (Classes): பொருள் சார்ந்த நிரலாக்கத்திற்கான (object-oriented programming) வகுப்புத் தொடரியல் (class syntax) அறிமுகப்படுத்தப்பட்டது.
தொகுதிகள் (Modules): மாட்யூல் இறக்குமதிகள் (imports) மற்றும் ஏற்றுமதிகளுக்கு (exports) சொந்த ஆதரவு (native support) சேர்க்கப்பட்டது.
பிராமிஸ்கள் (Promises): ஒத்திசைவற்ற (asynchronous) செயல்பாடுகளை மேம்படுத்தப்பட்ட கையாளுதலுக்காகப் பிராமிஸ்கள் அறிமுகப்படுத்தப்பட்டது.
Async/Await: ஒத்திசைவற்ற செயல்பாடுகளை (async functions) அறிமுகப்படுத்துவதன் மூலம் எளிமைப்படுத்தப்பட்ட ஒத்திசைவற்ற குறியீடு.
let மற்றும் const:
letமற்றும் மாறிலிகளுடன் (constants)constதொகுதி-நோக்க மாறிகள் (Block-scoped variables).டிஸ்ட்ரக்சரிங் (Destructuring): வரிசைகள் மற்றும் பொருள்களிலிருந்து மதிப்புகளை (values) எளிதாகப் பிரித்தெடுக்க அனுமதிக்கிறது.
டெம்ப்ளேட் லிட்டரல்கள் (Template Literals): ಹೆಚ್ಚು நெகிழ்வான சரம் இடைக்கணிப்பிற்காகத் (string interpolation) டெம்ப்ளேட் லிட்டரல்கள் அறிமுகப்படுத்தப்பட்டது.
வலை மேம்பாட்டில் ECMAScript இன் பங்கு (The Role of ECMAScript in Web Development)
கிளையண்ட் பக்க ஸ்கிரிப்டிங் (Client-Side Scripting): ECMAScript என்பது இணைய மேம்பாட்டில் கிளையண்ட்-பக்க ஸ்கிரிப்டிங்கிற்கான அடித்தளமாகும். இது ஊடாடும் (interactive) வலைப் பயன்பாடுகளுக்குச் சக்தி அளிக்கிறது.
இணக்கத்தன்மை (Compatibility): நவீன உலாவிகள் சமீபத்திய ECMAScript அம்சங்களை ஆதரிக்கும் அதே வேளையில், பழைய உலாவிகளுக்கான பின்தங்கிய இணக்கத்தன்மையை (backward compatibility) டெவலப்பர்கள் கருத்தில் கொள்ள வேண்டும்.
டிரான்ஸ்பைலர்கள் (Transpilers): பேபல் (Babel) போன்ற கருவிகள், புதிய ECMAScript குறியீட்டைப் பரந்த உலாவி ஆதரவிற்காகப் பழைய பதிப்புகளாக மாற்றலாம்.
டைப்ஸ்கிரிப்ட் (TypeScript): டைப்ஸ்கிரிப்ட், ECMAScript இன் சூப்பர்செட், மேம்படுத்தப்பட்ட கருவி (tooling) மற்றும் குறியீட்டுப் பாதுகாப்பிற்கான (code safety) நிலையான தட்டச்சு (static typing) ஆகியவற்றைச் சேர்க்கிறது.
ECMAScript தொடரியல் சில எடுத்துக்காட்டுகள் (Some Examples of ECMAScript Syntax)
அம்பு செயல்பாட்டுத் தொடரியல் (Arrow Function Syntax):
const x = (x, y) => x + y;வகுப்புத் தொடரியல் (Class Syntax):
class ClassName { constructor() { ... } }பிராமிஸ் தொடரியல் (Promise Syntax):
const promiseA = new Promise(myExecutorFunc);const promiseB = promiseA.then(handleFulfilled1, handleRejected1);ஸ்ப்ரெட் ஆபரேட்டர் (Spread Operator):
const year = [...q1, ...q2, ...q3, ...q4];வரைபடம் (Map):
const x = new Map([ ["a", 500],["b", 300],["c", 200] ]);
ECMAScript இணைய மேம்பாட்டின் ஒரு அடிப்படைப் பகுதியாகும், மாறும் மற்றும் ஊடாடும் வலைப் பயன்பாடுகளை நாம் எவ்வாறு உருவாக்குகிறோம் என்பதை வடிவமைக்கிறது. நவீன ஜாவாஸ்கிரிப்ட் மேம்பாட்டிற்குச் சமீபத்திய ECMAScript அம்சங்களைப் பற்றித் தெரிந்துகொள்வது அவசியம். ECMAScript ஜாவாஸ்கிரிப்ட்டுக்கு ஒரு தரப்படுத்தப்பட்ட அடித்தளத்தை வழங்குவதில் ஒரு முக்கியப் பங்கை வகிக்கிறது, நிலைத்தன்மை, இயங்குதன்மை மற்றும் மொழியின் தொடர்ச்சியான முன்னேற்றத்தை உறுதி செய்கிறது. இந்தத் தரநிலைப்படுத்தல், டெவலப்பர்கள் ஜாவாஸ்கிரிப்ட் குறியீட்டை பல்வேறு தளங்கள் மற்றும் சூழல்களில் நம்பகத்தன்மையுடன் வேலை செய்யும் என்பதை அறிந்து நம்பிக்கையுடன் எழுத அனுமதிக்கிறது.