استاندارد JavaScript - بخش اول

گردآوری و تالیف : عرفان کاکایی
تاریخ انتشار : 10 آبان 1397
دسته بندی ها : جاوا اسکریپت

JavaScript از یک شوخی تبلیغاتی در سال 1995 برای به دست آوردن برتری تاکتیکی، به یک تجربه برنامه‌نویسی هسته‌ای در پس استفاده‌ترین پلتفرم برنامه در سال 2017 رسیده است. این زبان دیگر صرفا در مرورگرها اجرا نمی‌شود، بلکه برای ساخت برنامه‌های دسکتاپ و موبایل، در دستگاه‌های سخت‌افزار و حتی خلأ هوا هم استفاده می‌شود.

JavaScript چگونه به اینجا رسید و از این پس به کجا خواهد رفت؟

تاریخچه‌ای خلاصه از استانداردهای JavaScript

پیش‌تر در سال 1995، Netscape یک وب دینامیک فراتر از چیزی که HTML به همراه داشت را تصور می‌کرد. Brendan Eich در ابتدا به Netscape آورده شد تا یک زبان را توسعه دهد که از نظر عملکرد وابسته به Scheme بود، اما برای مرورگرها ساخته شده بود. پس از این که او ملحق شد، پی برد که مدیریت بالایی می‌خواست تا این زبان به مانند Java باشد و معامله‌ای برای این هدف از پیش شروع شده بود.

Brendan با گرفتن توابع عالی Scheme و نمونه‌های آزمایشی Self به عنوان مواد اولیه مورد نیاز خود، اولین نمونه آزمایشی JavaScript خود را در ده روز آماده کرد. اولین نسخه JavaScript نام رمزی Mocha را داشت. این نسخه ادبیات‌های آرایه یا آبجکت را نداشت، و هر خطایی به یک هشدار ختم می‌شد. کمبود مدیریت exception علت این است که امروزه بسیاری از عملیات‌ها به NaN یا undefined ختم می‌شوند. کار Brendan بر روی سطح صفر DOM و اولین ویرایش JavaScript، سکوی کار استاندارد را به وجود آوردند.

این نسخه اصلاح شده JavaScript، وقتی که در سال 1995 به همراه یک نسخه آزمایشی از Netscape Navigator 2.0 به بازار رفت، عنوان LiveScript را داشت. سپس وقتی که در همان سال نسخه آزمایشی سوم Navigator 2.0 منتشر شد، نام آن به JavaScript تغییر کرد. کمی پس از انتشار آن، Netscape یک پیاده‌سازی JavaScript سمت سرور را برای اسکریپت نویسی در Netscape Enterprise Server معرفی کرد، و آن را LiveWire نام گذاشت. JScript یا نسخه مهندسی معکوس شده Microsoft از JavaScript، در سال 1996 به همراه Internet Explorer 3، باندل شد. JScript برای سرور اطلاعات اینترنت در سمت سرور (IIS = Internet Information Server) در دسترس بود.

این زبان در سال 1996، شروع به استاندارد شدن تحت نام ECMAScript، و تحت نشر یک انجمن فنی در ECMA، شناخته شده با نام TC39 کرد. Sun نمی‌خواست که حق مالکیت JavaScript را به ECMA منتقل کند، و در حالیکه مایکروسافت JScript را معرفی کرد، دیگر شرکت‌های اعضا نمی‌خواستند از آن نام استفاده کنند، پس نام ECMAScript باقی ماند.

اختلافاتی که از پیاده‌سازی‌های در حال رقابت منشا می‌گرفتند، JavaScript توسط Netscape و JScript توسط Microsoft، اکثر جلسات انجمن استاندارد EC39 را حکمرانی می‌کردند. اما همچنان این انجمن ثمره‌ای به همراه داشت: سازگاری با نسخه‌های قدیمی به عنوان یک قانون تعیین شد، که در نتیجه عملگرهای تساوی سخت (=== و !==) را به جای شکستن برنامه‌های موجود بر پایه الگوریتم مقایسه تساوی سست، به میان آورد.

اولین نسخه ECMA-262 در ماه ژوئن سال 1997 منتشر شد. یک سال بعد و در ژوئن سال 1998، این مشخصه پس از مقدار زیادی بررسی توسط افراد ISO، تحت استاندارد بین المللی ISO/IEC 16262 تعریف شد و دومین نسخه را شکل داد.

نسخه سوم تا دسامبر سال 1999 منتشر شد، که عبارات معمولی، بیانیه switch، do / while، try / catch و Object#hasOwnProperty را به همراه برخی تغییرات دیگر استانداردسازی کرد. اکثر این قابلیت‌ها از قبل و از طریق runtime جاوااسکریپت، یعنی SpiderMonkey ساخته Netscape در دسترس بودند.

پیش‌نویس‌هایی برای یک مشخصه ES4 سریعا توسط TC39 منتشر شدند. این کار سریع و زود بر روی ES4، به JScript.NET در اواسط دهه 2000، و در نهایت به ActionScript 3 برای Flash در سال 2006 ختم شد.

نظریات متداخل درباره نحوه این که JavaScript چگونه می‌خواست به جلو حرکت کند، باعث کار بر روی مشخصه نحوه ثابت شدن آن شد. این یک زمان حساس برای استانداردها بود: Microsoft همه چیز را داشت، اما وب را انحصاری کرد و علاقه کمی به گسترش استانداردها داشت.

همینطور که AOS پنجاه کارمند را در سال 2003 اخراج کرد، بنیاد Mozilla شکل گرفت. با بیش از 95 درصد بازار مرورگر که در دستان Microsoft بودند، TC39 تخریب شد.

دو هفته طول کشید تا این که Brendan که حال در Mozilla بود، باعث شد که ECMA کار بر روی EC39 را با استفاده از بازار در حال رشد Firefox به عنوان یک اهرم، از سر گرفته بگیرد و Microsoft به عرضه برگردد. در اواسط 2005، TC39 شروع به انجام ملاقات‌هایی منظم کرد. درباره ES4 هم برنامه‌هایی برای معرفی یک سیستم ماژول، کلاس‌ها، تکرار، مولدها، تخریب، نشانه‌های تایپ، فراخوانی‌های tail صحیح، تایپ کردن جبری و مجموعه‌ای از دیگر امکانات وجود داشتند. با توجه به شدت بلندپروازانه بودن این پروژه، کار بر روی ES4 به طور مداوم تاخیر می‌خورد.

تا سال 2007 انجمن به دو بخش تقسیم شده بود: ES3.1 که یک روش افزایشی به ES3 بود، و ES4 که بیش از حد به طراحی‌اش رسیده شده بود و ماهیت آن زیاد مشخص نبود. به آگوست 2008 نرسیده بودیم، که ES3.1 به عنوان مسیر منتخب در نظر گرفته شد، اما بعدا نام آن به ES5 تغییر کرد. با این که ES4 رها می‌شد، اما بسیاری از ویژگی‌های آن در نهایت راه خود را به ES6 پیدا کردند، در حالیکه برخی از آن‌ها همچنان قرار است که بعدا مورد بررسی قرار بگیرند. بروزرسانی ES3.1 به عنوان پایه‌ای بر روی آنچه مشخصه ES4 می‌توانست به صورت تکه تکه بر روی آن ساخته شود، عمل کرد.

در دسامبر 2009 و در دهمین سالگرد انتشار ES3،‌ پنجمین نسخه ECMAScript منتشر شد. این نسخه عملا افزونه‌هایی را به مشخصه این زبان کدگزاری می‌کرد، که میان پیاده‌سازی مرورگرها رایج شده بودند، و ابزار جانبی get و set، انعکاس و خودآزمایی، ارتقاهای عملکری به نمونه آزمایشی Array، پشتیبانی بومی برای parse کردن JSON و حالت strict را اضافه می‌کرد.

یکی دو سال بعد و در ژوئن 2011، این مشخصه یک بار دیگر مجددا بررسی شده و ویرایش شد، تا تبدیل به سومین نسخه از استاندارد بین المللی ISO/IEC 16262:2011 شد و تحت عنوان ECMAScript 5.1 شکل گرفت.

TC39 چهار سال دیگر زمان صرف کرد تا ECMAScript 6 را در ژوئن 2015 شکل دهد. با شروع ES6، اصلاحات با سال انتشار خود نیز شناخته می‌شوند: مثلا ES5 به عنوان ES2015، ES7 هم به نام ES2016 و... شناخته می‌شوند. ششمین نسخه، بزرگترین بروزرسانی این زبان است که راه خود را به انتشار یافتن پیدا کرد، و بسیاری از پیشنهادهای ES4 که تعطیل شده بودند را پیاده‌سازی کرد.

به طور موازی با تلاش‌ها بر روی ES6، در سال 2012 WHATWG (یک شخص علاقه‌مند به پیشرفت وب) این تفاوت میان ES5.1 و پیاده‌سازی مرورگر را در قالب سازگاری نیازمندی‌های همکاری، سندنگاری کرد. این گروه String#substr را استانداردسازی کردند، که از پیش نامشخص بود؛ و ویژگی‌های Object.prototype را به __proto__ و __defineGetter__ به همراه برخی ارتقائات دیگر سندنگاری کردند. این تلاش در قالب یک مشخصه ECMAScript وب فشرده شده بود، که در نهایت راه خود را به Annex B در سال 2015 پیدا کرد. Annex B هم بروزرسانی شد و تبدیل به یک مورد اصولی و واجب برای مرورگرها شد، که پیش‌تر صرفا فقط جنبه آموزنده داشت.

نسخه ششم یک نقطه عطف قابل توجه در تاریخ JavaScript بود. در کنار ده‌ها امکانات جدید، ES6 یک نقطه تزریق کلید می‌سازد که ECMAScript در آن تبدیل به یک استاندارد حکمران می‌شود.

ادامه این مبحث را می‌توانید در بخش دوم بخوانید.

منبع

مقالات پیشنهادی

وب سایت های الهام بخش برای طراحی - سری هفتم

امروز قصد داریم یک سری وبسایت های خارجی که بطور کاربردی ، زیبا و قدرتمند طراحی شدن رو براتون قرار بدیم تا شما بتونین با طریقه طراحی اونها آشنا بشین یا...

ساخت پکیج لاراول 5 - قسمت اول

بسیاری از آموزش ها یک راست سراغ بخش توسعه ی پکیج می روند, اما بیایید با چند قدم ساده شروع کنیم. ممکنه شما بخواهید پکیچی رو فقط برای پروژه فعلی تون بسا...

ساخت پکیج لاراول 5 - قسمت چهارم

برای قسمت چهارم این سری آموزش ها ما بحث migration و seeding رو در ساخت پکیج ها پوشش خواهیم داد. 

وب سایت های الهام بخش برای طراحی - سری 10

امروز قصد داریم یک سری وبسایت های خارجی که بطور کاربردی ، زیبا و قدرتمند طراحی شدن رو براتون قرار بدیم تا شما بتونین با طریقه طراحی اونها آشنا بشین یا...