একমাস্ক্রিপ্ট

ইসিএমএস্ক্রিপ্ট বা একমাস্ক্রিপ্ট হল জাভাস্ক্রিপ্ট, জেস্ক্রিপ্ট, একশনস্ক্রিপ্ট ইত্যাদি স্ক্রিপ্টিং ভাষাসমূহের জন্য প্রণীত একটি আদর্শ মান। এই আদর্শ মানটি সবচেয়ে বেশি পরিচিত জাভাস্ক্রিপ্টের বিভিন্ন ব্রাউজারে ওয়েব পেজের আন্ত ব্যবহারযোগ্যতা সংরক্ষণের একটি আদর্শ হিসেবে। ইসিএমএ-২৬২ নথির মাধ্যমে এই আদর্শটিকে একমা ইন্টারন্যাশনাল প্রমিতকরণ করেছে। একমাস্ক্রিপ্ট সাধারণত ওয়ার্ল্ড ওয়াইড ওয়েবে ক্লায়েন্ট-সাইড স্ক্রিপ্টিংয়ের জন্য ব্যবহৃত হলেও বর্তমানে নোড.জেএস, ডিনো এবং বান এর মত রান-টাইম পরিবেশের মাধ্যমে এর ব্যবহার সার্ভার-সাইড কাজেও বৃদ্ধি পাচ্ছে। ইসিএমএ-২৬২, একমাস্ক্রিপ্ট ভাষাকে সংজ্ঞায়িত করে যাকে শুধুমাত্র একমাস্ক্রিপ্ট নামে অভিহিত করা হয়। ইসিএমএ-২৬২ কেন্দ্রীয় অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (এপিআই)'এ শুধুমাত্র ভাষাটির পদবিন্যাস (সিনট্যাক্স) ও শব্দার্থবিন্যাস (সিমানটিকস) কেমন হবে সেটি ব্যাখ্যা করে, যেমন অ্যারে, ফাংকশন ইত্যাদি। তবে ইনপুট/আউটপুট এবং ফাইল সিস্টেমের মত বৈধ কার্যক্রম জাভাস্ক্রিপ্ট থেকে সংযুক্ত করা হয়েছে। নেটস্কেপের প্রকৌশলী ব্র্যান্ডন আইখের তৈরি একটি স্ক্রিপ্টিং ভাষাকে প্রমিতকরণ করার উদ্দেশ্যে একমাস্ক্রিপ্ট বিবরণী প্রস্তুত করা হয়েছিল। ভাষাটি প্রাথমিকভাবে মোচা, এরপরে লাইভস্ক্রিপ্ট ও সর্বশেষ জাভাস্ক্রিপ্ট নামে নামকরণ করা হয়েছিল। ১৯৯৫ সালের ডিসেম্বর মাসে সান মাইক্রোসিস্টেম্‌স ও নেটস্কেপ একটি সংবাদ বিজ্ঞপ্তিতে জাভাস্ক্রিপ্টকে উপস্থাপন করে। ১৯৯৬ সালে নেটস্কেপ একটি সংবাদ বিজ্ঞপ্তি প্রচার করে যেখানে জাভাস্ক্রিপ্ট প্রমিতকরণে একমা ইন্টারন্যাশনাল মানদন্ড অর্জন করার ঘোষণা দেয়। ১৯৯৭ সালের জুন মাসে ইসিএমএ-২৬২ একমা সাধারণ পরিষদে গৃহীত হয়। পরবর্তীতে এই ভাষা বিবরণীর একাধিক সংস্করণ প্রকাশিত হয়। প্রমিতকরণ উদ্যোগে প্রথমদিকের অধিবেশনে মাইক্রোসফট ও নেটস্কেপের বিভিন্ন মত পার্থক্য ও ভাষা বিবরণী তৈরিতে যুক্ত বিভিন্ন সংস্থার আপত্তিতে এই ভাষা বিবরণীটির নাম জাভাস্ক্রিপ্ট না রেখে "একমাস্ক্রিপ্ট" বা "ইসিএমএস্ক্রিপ্ট" করা হয়েছিল। ভাষাটির উদ্ভাবক আইখ এ সম্পর্কে মন্তব্য করে বলেন, "শুনতে চর্মরোগের মত লাগে একমাস্ক্রিপ্ট নামটি সবসময়ই একটা অবাঞ্চিত ব্যবসায়িক নাম হয়েই থাকবে।" নিরাপত্তা বিশ্লেষণ এবং প্রমিতকরণের জন্য স্ট্যানফোর্ড বিশ্ববিদ্যালয় এবং ইম্পেরিয়াল কলেজ লন্ডনের কম্পিউটার অনুষদের সহযোগিতায় অপারেশনাল সিমানটিকস পদ্ধতির মাধ্যমে ইসিএমএসস্ক্রিপ্টকে আনুষ্ঠানিকভাবে বিধিবদ্ধ করা হয়। একমার শব্দের ইসিএমএ হল "ইউরোপীয় কম্পিউটার ম্যানুফ্যাকচারার এসোসিয়েশন" নামের আদ্যক্ষর দিয়ে বানানো। যেটি ১৯৯৪ সাল পর্যন্ত এই নামেই ছিল। একমাস্ক্রিপ্ট ভাষায় স্ট্রাকচারড, ডাইনামিক, ফাংকশনাল এবং প্রোটোটাইপ-ভিত্তিক বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে। একমাস্ক্রিপ্ট জাভাস্ক্রিপ্ট ভাষাটি সি-এর মত স্ট্রাকচারড প্রোগ্রামিং সমর্থন করে। পূর্বে জাভাস্ক্রিপ্ট শুধুমাত্র var কীওয়ার্ড ব্যবহার করে ফাংশন স্কোপিং করত, কিন্তু একমাস্ক্রিপ্ট ২০১৫ let এবং const কীওয়ার্ড যোগ করে, ফলে জাভাস্ক্রিপ্ট ব্লক স্কোপিং এবং ফাংশন স্কোপিং উভয় কাজই করার সক্ষমতা অর্জন করে। জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে লাইনের শেষে সেমিকোলন যুক্ত করে ফলে জাভাস্ক্রিপ্টে সি এর মত সব লাইনের শেষে সেমিকোলন সংযুক্ত করার দরকার পড়ে না। সি-ধাঁচের ভাষাসমূহের মতো, জাভাস্ক্রিপ্টে কন্ট্রোল ফ্লো করা হয় while, for, do / while, if / else, এবং switch স্টেটমেন্ট দিয়ে। ফাংশনসমূহের টাইপ এখানে দুর্বল ফলে এরা যেকোনো টাইপের ডেটা গ্রহন ও রিটার্ন করতে পারে। আর্গুমেন্টসমূহ স্বয়ংক্রিয়ভাবে undefined এ থাকে না। ECMAScript দুর্বলভাবে টাইপ করা। এর মানে হল যে কাজটি ভাষাটিকে দিয়ে করানো হচ্ছে সেটির প্রকৃতির উপর ভিত্তি করে ভ্যারিয়েবলসমূহের ডেটা টাইপ নির্ধারিত হয়। জাভাস্ক্রিপ্টে এক ডেটা টাইপ থেকে অন্য ডেটা টাইপে রুপান্তরের প্রক্রিয়ায় কিছু সমস্যা আছে। এই সমস্যাগুলো নিয়ে ওয়াট নামে একটি ভিডিও লেকচার আছে। একমাস্ক্রিপ্ট গতিশীলভাবে টাইপ করা। অর্থাৎ এই ভাষার একটি ভ্যালু একটি মানের সাথে সম্পর্কযুক্ত কোনো অভিব্যক্তির সাথে নয়। একমাস্ক্রিপ্টে অবজেক্টসমূহের টাইপ পরীক্ষা করার জন্য বিভিন্ন পদ্ধতি আছে যেমন ডাক টাইপিং। XML (E4X) এর জন্য ECMAScript ECMAScript ইঞ্জিনের তালিকা Stefanov, Stoyan (২০১০)। JavaScript Patterns। O'Reilly Media, Inc.। পৃষ্ঠা 5। আইএসবিএন 9781449396947। ২০১৬-০৬-১০ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৬-০১-১২।  Wirfs-Brock, Allen; Eich, Brendan (২০২০-০৫-০২)। "JavaScript: The First 20 Years": 1–189। ডিওআই:10.1145/3386327 । উদ্ধৃতি শৈলী রক্ষণাবেক্ষণ: তারিখ ও বছর (link) https://nodejs.org/en/docs/es6 https://www.infoworld.com/article/3644460/deno-joins-javascript-standards-effort.html https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a bun Guo, Shu-yu (২০২২-০২-১৪)। "ECMAScriptÂŽ 2022 Language Specification"। tc39.es। Tc39.es। ২০২০-০৫-০৮ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২২-০২-১৪।  Krill, Paul (২০০৮-০৬-২৩)। "JavaScript creator ponders past, future"। infoworld.com। InfoWorld। ২০১৪-০৯-২০ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৩-১০-৩১।  "Netscape and Sun announce JavaScript, the Open, Cross-platform Object Scripting Language for Enterprise Networks and the Internet"। Netscape.com। Netscape। ১৯৯৫-১২-০৪। ২০০২-০৬-০৬ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-১১-০৪।  Press Release (নভেম্বর ১৫, ১৯৯৬)। "Industry Leaders to Advance Standardization of Netscape's JavaScript at Standards Body Meeting"। Netscape.com। Netscape। ১৯৯৮-১২-০৩ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৩-১০-৩১।  Eich, Brendan (২০০৬-১০-০৩)। "Will there be a suggested file suffix for es4?"। mozilla.org। Mail.mozilla.org। ২০২০-০৬-২১ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৫-০৫।  Maffeis, Sergio; Mitchell, John C. (২০২০-০১-০৩)। "An Operational Semantics for JavaScript" (পিডিএফ)। stanford.edu। Association for Computing Machinery। ২০২০-০১-০৩ তারিখে মূল (পিডিএফ) থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২০-০১-০৩।  "About"। ECMAScript। ২০১২-০৮-০২ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০০৯-১২-১৭।  David Flanagan (১৭ আগস্ট ২০০৬)। JavaScript: The Definitive Guide: The Definitive Guide। "O'Reilly Media, Inc."। পৃষ্ঠা 16। আইএসবিএন 978-0-596-55447-7। ১ আগস্ট ২০২০ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ১১ নভেম্বর ২০১৯।  Bernhardt, Gary। Wat। Destroy All Software। ২০১৯-১০-২৮ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০২১-০৮-১৮।  Gilbertson, Scott (২৬ জানুয়ারি ২০১২)। Wired https://web.archive.org/web/20200823123837/https://www.wired.com/2012/01/jokes-for-nerds-wat-moments-in-programming/। ২৩ আগস্ট ২০২০ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২২ আগস্ট ২০২১।  |শিরোনাম= অনুপস্থিত বা খালি (সাহায্য) "JavaScript data types and data structures – JavaScript | MDN"। Developer.mozilla.org। ২০১৭-০২-১৬। ২০১৭-০৩-১৪ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৭-০২-২৪।  ES5 is the baseline for this test suite. The conformance rate for other editions reflects support for new features only, not a comprehensive score. "ECMAScript 5 compatibility table"। kangax.github.io (ইংরেজি ভাষায়)। ২০১৮-১১-১৯ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৮-১১-০৮।  "ECMAScript 6 compatibility table"। kangax.github.io (ইংরেজি ভাষায়)। ২০১৮-১১-১৭ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৮-১১-০৮।  "ECMAScript 2016+ compatibility table"। kangax.github.io (ইংরেজি ভাষায়)। ২০১৮-১১-২৪ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৮-১১-০৮।  Composite score that includes new features from ES7 through next edition drafts