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

বাসিরুল বিল্লাহ: “ECMAScript” পাতাটি অনুবাদ করে তৈরি করা হয়েছে

{{তথ্যছক প্রোগ্রামিং ভাষা
| name = ECMAScript
| paradigm = [[Multi-paradigm]]: [[prototype-based programming|prototype-based]], [[functional programming|functional]], [[imperative programming|imperative]]
| released = {{Start date and age|1997}}
| designer = [[Brendan Eich]], [[Ecma International]]
| typing = [[weak typing|weak]], [[dynamic typing|dynamic]]
| implementations = [[JavaScript]], [[ActionScript]], [[JScript]], [[QtScript]], [[InScript (JavaScript engine)|InScript]], [[Google Apps Script]]
| influenced by = [[Self (programming language)|Self]], [[HyperTalk]], [[AWK]], [[C (programming language)|C]], [[CoffeeScript]], [[Perl]], [[Python (programming language)|Python]], [[Java (programming language)|Java]], [[Scheme (programming language)|Scheme]]
| website = {{URL|https://www.ecma-international.org/publications-and-standards/standards/ecma-262/}}
}}{{তথ্যছক ফাইল ফরম্যাট|name=ECMAScript (file format)|icon=|screenshot=|caption=|extension=.es|mime=application/ecmascript|type code=|uniform type=|magic=|owner=[[Sun Microsystems]],<br/>[[Ecma International]]|released={{Start date and age|1997|06}}|latest release version=Edition 14|latest release date={{start date and age|2023|06}}|genre=[[Scripting language]]|container for=|contained by=|extensions=JavaScriptes|extended to=|standard=|url=[https://www.ecma-international.org/publications-and-standards/standards/ Standards]}}

”’ইসিএমএস্ক্রিপ্ট বা একমাস্ক্রিপ্ট”’ <ref>{{বই উদ্ধৃতি|ইউআরএল=https://books.google.com/books?id=WTZqecc9olUC|শিরোনাম=JavaScript Patterns|শেষাংশ=Stefanov|প্রথমাংশ=Stoyan|তারিখ=2010|প্রকাশক=O’Reilly Media, Inc.|পাতা=5|আইএসবিএন=9781449396947|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20160610005241/https://books.google.com/books?id=WTZqecc9olUC|আর্কাইভের-তারিখ=2016-06-10|ইউআরএল-অবস্থা=live|সংগ্রহের-তারিখ=2016-01-12}}</ref> হল [[জাভাস্ক্রিপ্ট]], জেস্ক্রিপ্ট, একশনস্ক্রিপ্ট ইত্যাদি স্ক্রিপ্টিং ভাষাসমূহের জন্য প্রণীত একটি আদর্শ মান। এই আদর্শ মানটি সবচেয়ে বেশি পরিচিত জাভাস্ক্রিপ্টের বিভিন্ন ব্রাউজারে ওয়েব পেজের আন্ত ব্যবহারযোগ্যতা সংরক্ষণের একটি আদর্শ হিসেবে। <ref>{{সাময়িকী উদ্ধৃতি|শেষাংশ=Wirfs-Brock|প্রথমাংশ=Allen|শেষাংশ২=Eich|প্রথমাংশ২=Brendan|তারিখ=2020-05-02|বছর=2020|শিরোনাম=JavaScript: The First 20 Years|পাতাসমূহ=1–189|doi=10.1145/3386327|doi-access=free}}</ref> [https://www.ecma-international.org/publications-and-standards/standards/ecma-262/ ইসিএমএ-২৬২] নথির মাধ্যমে এই আদর্শটিকে [[একমা ইন্টারন্যাশনাল]] প্রমিতকরণ করেছে।

একমাস্ক্রিপ্ট সাধারণত [[ওয়ার্ল্ড ওয়াইড ওয়েব|ওয়ার্ল্ড ওয়াইড ওয়েবে]] ক্লায়েন্ট-সাইড স্ক্রিপ্টিংয়ের জন্য ব্যবহৃত হলেও বর্তমানে [[নোড.জেএস]], <ref>https://nodejs.org/en/docs/es6</ref> ডিনো <ref>https://www.infoworld.com/article/3644460/deno-joins-javascript-standards-effort.html</ref> এবং [[বান (সফটওয়্যার)|বান]] <ref>https://bun.sh/docs#:~:text=or%2C%20more%20formally%2C-,ECMAScript,-)%20is%20just%20a bun</ref> এর মত রান-টাইম পরিবেশের মাধ্যমে এর ব্যবহার সার্ভার-সাইড কাজেও বৃদ্ধি পাচ্ছে।

== একমাস্ক্রিপ্ট, ইসিএমএ-২৬২, জাভাস্ক্রিপ্ট ==
”’ইসিএমএ-২৬২”’, একমাস্ক্রিপ্ট ভাষাকে সংজ্ঞায়িত করে যাকে শুধুমাত্র একমাস্ক্রিপ্ট নামে অভিহিত করা হয়। <ref>{{ওয়েব উদ্ধৃতি|শেষাংশ=Guo|প্রথমাংশ=Shu-yu|তারিখ=2022-02-14|প্রকাশক=Tc39.es|শিরোনাম=ECMAScriptÂŽ 2022 Language Specification|ইউআরএল=https://tc39.es/ecma262/|ইউআরএল-অবস্থা=live|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20200508053013/https://tc39.es/ecma262/|আর্কাইভের-তারিখ=2020-05-08|সংগ্রহের-তারিখ=2022-02-14|ওয়েবসাইট=tc39.es}}</ref> ইসিএমএ-২৬২ কেন্দ্রীয় [[অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস|অ্যাপ্লিকেশন প্রোগ্রামিং ইন্টারফেস (এপিআই)]]’এ শুধুমাত্র ভাষাটির পদবিন্যাস (সিনট্যাক্স) ও শব্দার্থবিন্যাস (সিমানটিকস) কেমন হবে সেটি ব্যাখ্যা করে, যেমন অ্যারে, ফাংকশন ইত্যাদি। তবে [[প্রবিষ্ট/বহির্গত|ইনপুট/আউটপুট]] এবং [[ফাইল সিস্টেম|ফাইল সিস্টেমের]] মত বৈধ কার্যক্রম জাভাস্ক্রিপ্ট থেকে সংযুক্ত করা হয়েছে।

== ইতিহাস ==
[[নেটস্কেপ|নেটস্কেপের]] প্রকৌশলী ব্র্যান্ডন আইখের তৈরি একটি স্ক্রিপ্টিং ভাষাকে প্রমিতকরণ করার উদ্দেশ্যে একমাস্ক্রিপ্ট বিবরণী প্রস্তুত করা হয়েছিল। ভাষাটি প্রাথমিকভাবে মোচা, এরপরে লাইভস্ক্রিপ্ট ও সর্বশেষ জাভাস্ক্রিপ্ট নামে নামকরণ করা হয়েছিল। <ref>{{ওয়েব উদ্ধৃতি|শেষাংশ=Krill|প্রথমাংশ=Paul|তারিখ=2008-06-23|প্রকাশক=InfoWorld|শিরোনাম=JavaScript creator ponders past, future|ইউআরএল=http://www.infoworld.com/article/2653798/application-development/javascript-creator-ponders-past–future.html|ইউআরএল-অবস্থা=live|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20140920141040/http://www.infoworld.com/article/2653798/application-development/javascript-creator-ponders-past–future.html|আর্কাইভের-তারিখ=2014-09-20|সংগ্রহের-তারিখ=2013-10-31|ওয়েবসাইট=infoworld.com}}</ref> ১৯৯৫ সালের ডিসেম্বর মাসে [[সান মাইক্রোসিস্টেম্‌স]] ও [[নেটস্কেপ]] একটি সংবাদ বিজ্ঞপ্তিতে জাভাস্ক্রিপ্টকে উপস্থাপন করে। <ref>{{ওয়েব উদ্ধৃতি|তারিখ=1995-12-04|প্রকাশক=Netscape|শিরোনাম=Netscape and Sun announce JavaScript, the Open, Cross-platform Object Scripting Language for Enterprise Networks and the Internet|ইউআরএল=http://wp.netscape.com/newsref/pr/newsrelease67.html|ইউআরএল-অবস্থা=dead|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20020606002913/http://wp.netscape.com/newsref/pr/newsrelease67.html|আর্কাইভের-তারিখ=2002-06-06|সংগ্রহের-তারিখ=2019-11-04|ওয়েবসাইট=Netscape.com}}</ref> ১৯৯৬ সালে [[নেটস্কেপ]] একটি সংবাদ বিজ্ঞপ্তি প্রচার করে যেখানে জাভাস্ক্রিপ্ট প্রমিতকরণে [[একমা ইন্টারন্যাশনাল]] মানদন্ড অর্জন করার ঘোষণা দেয়। <ref>{{ওয়েব উদ্ধৃতি|শেষাংশ=Press Release|তারিখ=November 15, 1996|প্রকাশক=Netscape|শিরোনাম=Industry Leaders to Advance Standardization of Netscape’s JavaScript at Standards Body Meeting|ইউআরএল=http://cgi.netscape.com/newsref/pr/newsrelease289.html|ইউআরএল-অবস্থা=dead|আর্কাইভের-ইউআরএল=https://web.archive.org/web/19981203070212/http://cgi.netscape.com/newsref/pr/newsrelease289.html|আর্কাইভের-তারিখ=1998-12-03|সংগ্রহের-তারিখ=2013-10-31|ওয়েবসাইট=Netscape.com}}</ref> ১৯৯৭ সালের জুন মাসে ইসিএমএ-২৬২ একমা সাধারণ পরিষদে গৃহীত হয়। পরবর্তীতে এই ভাষা বিবরণীর একাধিক সংস্করণ প্রকাশিত হয়। প্রমিতকরণ উদ্যোগে প্রথমদিকের অধিবেশনে মাইক্রোসফট ও নেটস্কেপের বিভিন্ন মত পার্থক্য ও ভাষা বিবরণী তৈরিতে যুক্ত বিভিন্ন সংস্থার আপত্তিতে এই ভাষা বিবরণীটির নাম জাভাস্ক্রিপ্ট না রেখে “একমাস্ক্রিপ্ট” বা “ইসিএমএস্ক্রিপ্ট” করা হয়েছিল। ভাষাটির উদ্ভাবক আইখ এ সম্পর্কে মন্তব্য করে বলেন, “শুনতে চর্মরোগের মত লাগে একমাস্ক্রিপ্ট নামটি সবসময়ই একটা অবাঞ্চিত ব্যবসায়িক নাম হয়েই থাকবে।” <ref>{{ওয়েব উদ্ধৃতি|শেষাংশ=Eich|প্রথমাংশ=Brendan|তারিখ=2006-10-03|প্রকাশক=Mail.mozilla.org|শিরোনাম=Will there be a suggested file suffix for es4?|ইউআরএল=https://mail.mozilla.org/pipermail/es-discuss/2006-October/000133.html|ইউআরএল-অবস্থা=live|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20200621202321/https://mail.mozilla.org/pipermail/es-discuss/2006-October/000133.html|আর্কাইভের-তারিখ=2020-06-21|সংগ্রহের-তারিখ=2021-05-05|ওয়েবসাইট=mozilla.org}}</ref> নিরাপত্তা বিশ্লেষণ এবং প্রমিতকরণের জন্য [[স্ট্যানফোর্ড বিশ্ববিদ্যালয়|স্ট্যানফোর্ড বিশ্ববিদ্যালয়]] এবং [[ইম্পেরিয়াল কলেজ লন্ডন|ইম্পেরিয়াল কলেজ লন্ডনের]] কম্পিউটার অনুষদের সহযোগিতায় অপারেশনাল সিমানটিকস পদ্ধতির মাধ্যমে ইসিএমএসস্ক্রিপ্টকে আনুষ্ঠানিকভাবে বিধিবদ্ধ করা হয়। <ref>{{ওয়েব উদ্ধৃতি|শেষাংশ=Maffeis|প্রথমাংশ=Sergio|শেষাংশ২=Mitchell|প্রথমাংশ২=John C.|তারিখ=2020-01-03|প্রকাশক=[[Association for Computing Machinery]]|শিরোনাম=An Operational Semantics for JavaScript|ইউআরএল=http://theory.stanford.edu/people/jcm/papers/aplas08-camera-ready.pdf|ইউআরএল-অবস্থা=live|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20200103204704/http://theory.stanford.edu/people/jcm/papers/aplas08-camera-ready.pdf|আর্কাইভের-তারিখ=2020-01-03|সংগ্রহের-তারিখ=2020-01-03|ওয়েবসাইট=stanford.edu}}</ref> একমার শব্দের ইসিএমএ হল “ইউরোপীয় কম্পিউটার ম্যানুফ্যাকচারার এসোসিয়েশন” নামের আদ্যক্ষর দিয়ে বানানো। যেটি ১৯৯৪ সাল পর্যন্ত এই নামেই ছিল।

=== সংস্করণ ইতিহাস ===

== বৈশিষ্ট্য ==
একমাস্ক্রিপ্ট ভাষায় স্ট্রাকচারড, ডাইনামিক, ফাংকশনাল এবং প্রোটোটাইপ-ভিত্তিক বৈশিষ্ট্য অন্তর্ভুক্ত রয়েছে। <ref>{{ওয়েব উদ্ধৃতি|প্রকাশক=ECMAScript|শিরোনাম=About|ইউআরএল=http://www.ecmascript.org/about.php|ইউআরএল-অবস্থা=dead|আর্কাইভের-ইউআরএল=https://archive.today/20120802115457/http://www.ecmascript.org/about.php|আর্কাইভের-তারিখ=2012-08-02|সংগ্রহের-তারিখ=2009-12-17}}</ref>

=== আবশ্যিক এবং কাঠামোগত ===
একমাস্ক্রিপ্ট জাভাস্ক্রিপ্ট ভাষাটি সি-এর মত স্ট্রাকচারড প্রোগ্রামিং সমর্থন করে। পূর্বে জাভাস্ক্রিপ্ট শুধুমাত্র <code>var</code> কীওয়ার্ড ব্যবহার করে ফাংশন স্কোপিং করত, কিন্তু একমাস্ক্রিপ্ট ২০১৫ <code>let</code> এবং <code>const</code> কীওয়ার্ড যোগ করে, ফলে জাভাস্ক্রিপ্ট ব্লক স্কোপিং এবং ফাংশন স্কোপিং উভয় কাজই করার সক্ষমতা অর্জন করে। জাভাস্ক্রিপ্ট স্বয়ংক্রিয়ভাবে লাইনের শেষে সেমিকোলন যুক্ত করে ফলে জাভাস্ক্রিপ্টে সি এর মত সব লাইনের শেষে সেমিকোলন সংযুক্ত করার দরকার পড়ে না। <ref name=”Flanagan2006″>{{বই উদ্ধৃতি|ইউআরএল=https://books.google.com/books?id=2weL0iAfrEMC|শিরোনাম=JavaScript: The Definitive Guide: The Definitive Guide|শেষাংশ=David Flanagan|তারিখ=17 August 2006|প্রকাশক=”O’Reilly Media, Inc.”|পাতা=16|আইএসবিএন=978-0-596-55447-7|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20200801065235/https://books.google.com/books?id=2weL0iAfrEMC|আর্কাইভের-তারিখ=1 August 2020|ইউআরএল-অবস্থা=live|সংগ্রহের-তারিখ=11 November 2019}}</ref>

সি-ধাঁচের ভাষাসমূহের মতো, জাভাস্ক্রিপ্টে কন্ট্রোল ফ্লো করা হয় {{কোড|while}}, {{কোড|for}}, {{কোড|do}} / {{কোড|while}}, {{কোড|if}} / {{কোড|else}}, এবং {{কোড|switch}} স্টেটমেন্ট দিয়ে। ফাংশনসমূহের টাইপ এখানে দুর্বল ফলে এরা যেকোনো টাইপের ডেটা গ্রহন ও রিটার্ন করতে পারে। আর্গুমেন্টসমূহ স্বয়ংক্রিয়ভাবে {{কোড|undefined}} এ থাকে না।

=== দুর্বলভাবে টাইপ করা ===
ECMAScript দুর্বলভাবে টাইপ করা। এর মানে হল যে কাজটি ভাষাটিকে দিয়ে করানো হচ্ছে সেটির প্রকৃতির উপর ভিত্তি করে ভ্যারিয়েবলসমূহের ডেটা টাইপ নির্ধারিত হয়। জাভাস্ক্রিপ্টে এক ডেটা টাইপ থেকে অন্য ডেটা টাইপে রুপান্তরের প্রক্রিয়ায় কিছু সমস্যা আছে। এই সমস্যাগুলো নিয়ে ”ওয়াট” নামে একটি ভিডিও লেকচার আছে। <ref>{{সম্মেলন উদ্ধৃতি|ইউআরএল=https://www.destroyallsoftware.com/talks/wat|শিরোনাম=Wat|শেষাংশ=Bernhardt|প্রথমাংশ=Gary|কর্ম=Destroy All Software|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20191028204723/https://www.destroyallsoftware.com/talks/wat|আর্কাইভের-তারিখ=2019-10-28|ইউআরএল-অবস্থা=live|সংগ্রহের-তারিখ=2021-08-18}}</ref> <ref>{{ম্যাগাজিন উদ্ধৃতি|ইউআরএল=https://www.wired.com/2012/01/jokes-for-nerds-wat-moments-in-programming/|শেষাংশ=Gilbertson|প্রথমাংশ=Scott|তারিখ=26 January 2012|কর্ম=Wired|সংগ্রহের-তারিখ=22 August 2021|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20200823123837/https://www.wired.com/2012/01/jokes-for-nerds-wat-moments-in-programming/|আর্কাইভের-তারিখ=23 August 2020|ইউআরএল-অবস্থা=live}}</ref>

=== গতিশীল ===
একমাস্ক্রিপ্ট গতিশীলভাবে টাইপ করা। অর্থাৎ এই ভাষার একটি ভ্যালু একটি মানের সাথে সম্পর্কযুক্ত কোনো অভিব্যক্তির সাথে নয়। একমাস্ক্রিপ্টে অবজেক্টসমূহের টাইপ পরীক্ষা করার জন্য বিভিন্ন পদ্ধতি আছে যেমন ডাক টাইপিং। <ref>{{ওয়েব উদ্ধৃতি|তারিখ=2017-02-16|শিরোনাম=JavaScript data types and data structures – JavaScript {{pipe}} MDN|ইউআরএল=https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures|ইউআরএল-অবস্থা=live|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20170314230542/https://developer.mozilla.org/en-US/docs/Web/JavaScript/Data_structures|আর্কাইভের-তারিখ=2017-03-14|সংগ্রহের-তারিখ=2017-02-24|ওয়েবসাইট=Developer.mozilla.org}}</ref>

=== ট্রান্সপাইলিং ===

== সামঞ্জস্য ==
{| class=”wikitable sortable”
|+স্ক্রিপ্টিং ইঞ্জিন সামঞ্জস্য
! rowspan=”2″ scope=”col” | স্ক্রিপ্টিং ইঞ্জিন
! rowspan=”2″ scope=”col” | রেফারেন্স আবেদন(গুলি)
! colspan=”4″ scope=”col” | সামঞ্জস্য <ref>ES5 is the baseline for this test suite. The conformance rate for other editions reflects support for new features only, not a comprehensive score.</ref>
|-
! scope=”col” | ES5 <ref name=”kangax5″>{{ওয়েব উদ্ধৃতি|ভাষা=en|শিরোনাম=ECMAScript 5 compatibility table|ইউআরএল=https://kangax.github.io/compat-table/es5|ইউআরএল-অবস্থা=live|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20181119145151/http://kangax.github.io/compat-table/es5/|আর্কাইভের-তারিখ=2018-11-19|সংগ্রহের-তারিখ=2018-11-08|ওয়েবসাইট=kangax.github.io}}</ref>
! scope=”col” | ES6 (2015) <ref name=”kangax6″>{{ওয়েব উদ্ধৃতি|ভাষা=en|শিরোনাম=ECMAScript 6 compatibility table|ইউআরএল=https://kangax.github.io/compat-table/es6|ইউআরএল-অবস্থা=live|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20181117194027/http://kangax.github.io/compat-table/es6/|আর্কাইভের-তারিখ=2018-11-17|সংগ্রহের-তারিখ=2018-11-08|ওয়েবসাইট=kangax.github.io}}</ref>
! scope=”col” | ES7 (2016) <ref name=”kangax2016plus”>{{ওয়েব উদ্ধৃতি|ভাষা=en|শিরোনাম=ECMAScript 2016+ compatibility table|ইউআরএল=https://kangax.github.io/compat-table/es2016plus|ইউআরএল-অবস্থা=live|আর্কাইভের-ইউআরএল=https://web.archive.org/web/20181124112954/http://kangax.github.io/compat-table/es2016plus/|আর্কাইভের-তারিখ=2018-11-24|সংগ্রহের-তারিখ=2018-11-08|ওয়েবসাইট=kangax.github.io}}</ref>
! scope=”col” | নতুন (2017+) <ref name=”kangax2016plus” /> <ref>Composite score that includes new features from ES7 through next edition drafts</ref>
|-
! scope=”row” | আমার মুখোমুখি
| [[মোজিলা ফায়ারফক্স|ফায়ারফক্স]] 94
| 100%
| 98%
| 100%
| 100%
|-
! scope=”row” | [[ভি৮ (জাভাস্ক্রিপ্ট ইঞ্জিন)|V8]]
| [[গুগল ক্রোম]] 95, [[মাইক্রোসফট এজ|মাইক্রোসফ্ট এজ]] 95, [[অপেরা (ওয়েব ব্রাউজার)|অপেরা]] 80
| 100%
| 98%
| 100%
| 100%
|-
! scope=”row” | [[ওয়েবকিট|জাভাস্ক্রিপ্ট কোর]]
| [[সাফারি (ওয়েব ব্রাউজার)|সাফারি]] 15
| 100%
| 99%
| 100%
| 90%
|}

== আরো দেখুন ==

* XML (E4X) এর জন্য ECMAScript
* ECMAScript ইঞ্জিনের তালিকা

== তথ্যসূত্র ==
{{সূত্র তালিকা}}
[[বিষয়শ্রেণী:স্ক্রিপ্টিং ভাষা]]
[[বিষয়শ্রেণী:চলমান-টাইপকৃত প্রোগ্রামিং ভাষা]]
[[বিষয়শ্রেণী:কম্পিউটার মান]]
[[বিষয়শ্রেণী:জাভাস্ক্রিপ্ট]]

Go to Source


Posted

in

by

Tags: