آموزش جاوا اسکریپتمقالات

تاریخچه JavaScript

آیا تاریخچه جاوااسکریپت رو میدونید؟ اینکه جاوا اسکریپت (به انگلیسی: Javascript) از کجا آمده و چجوری به اینجا رسیده؟ و اینکه چرا اسمش شبیه زبان برنامه نویسی جاواست؟

(اگر تفاوت جاوا و جاوا اسکریپت رو نمیدونی حتما این مطلب رو بخون: تفاوت جاوا و جاوااسکریپت)

موکا

سال 1995 (سال 1374خودمان، در حالی که من در کلاس سوم ابتدایی مشغول یاد گرفتن جدول ضرب بودم) یک برنامه نویس آمریکایی به نام برندان آیک (به انگلیسی: Brendan Eich) که در شرکت نت اسکیپ Netscape فعالیت میکرد، یک زبان برنامه نویسی اسکریپتی به نام Mocha طراحی کرد.

موکا یک نوع نوشیدنی خوشمزه است که با قهوه دم کرده و پودر کاکائو درست میشود.

موکا
موکا نام قبلی جاوااسکریپت

زبان موکا به این دلیل طراحی شده که میخواستند امکانات جدیدی را به دنیای وب اضافه کنند.

مثلا تا آن موقع صفحات وب نسبت به رویدادهای مختلف (مثل کلیک کردن و کشیدن و یا حرکت موس) نمی توانستند واکنش نشان بدهند و همینجوری صاف توی چشمهای کاربر زل می زدند و کار خاصی از دستشان بر نمی آمد.

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

به همین دلیل به یک زبان ساده روی بستر وب نیاز بود که پیچیدگی زیادی نداشته باشد و بتواند یک تکانی به دنیای وب بدهد و مدیریت رفتارها و رویدادهای وب را پیاده سازی کند.

بعد از مدتی، شرکت نت اسکیپ، نام زبان موکا را تغییر داد. و نام جدید آن را لایواسکریپت (به انگلیسی: LiveScript) گذاشت.

این اولین فصل از تاریخچه جاوااسکریپت بود: پیدایش!

چرا برای جاوا و جاوا اسکریپت از اسامی مشابه استفاده شده ؟

در همین زمان، شرکت سان مایکروسیستمز که مالک زبان جاوا بود، و از موفقیت جاوا در پلتفرم های مختلف خیلی خوش به حالش شده بود، این نیاز را احساس کرد که زبان جاوا باید در دنیای وب هم ورود پیدا کند.

اما زبان جاوا برای اجرا شدن روی مرورگرهای اینترنتی بسیار سنگین و بزرگ بود. مرورگرهای اینترنتی که آن جوری اصلا نمی توانستند و زیر پلتفرمشان درد می گرفت، نتوانستند بستر خوبی برای اجرای جاوا باشند.

به همین دلیل پس از توافق نت اسکیپ و سان مایکروسیستمز، قرار شد نام زبان لایو اسکریپت به جاوا اسکریپت Javascript تغییر پیداکند.

جاوا اسکریپت Javascript
تاریخچه جاوااسکریپت

این توافق تجاری باعث شد که سهم هر دو شرکت سان مایکروسیستمز و نت اسکیپ از بازار افزایش پیداکند. در حقیقت این کار یک حربه تجاری در مقابل رقبای جاوا و جاوااسکریپت بود.

مگر رقیب جاوا و جاوااسکریپت که بود؟

مایکروسافت!

مایکروسافت عادت دارد که از محصولات موفق دیگران یک نسخه مشابه بسازد. و البته چه کسی است که نداند این محصولات مایکروسافت چقدر موفق بوده اند!

همزمان با این رویدادها، مایکروسافت نیز یک نسخه از جاوا اسکریپت را برداشته و سعی میکرد آن را با استانداردهای خودش ارائه دهد.

مایکروسافت نام این زبان را جی اسکریپت (به انگلیسی: Jscript) گذاشت (که اصلا هم به جاوااسکریپت شباهت ندارد!). و برای اولین بار در مرورگر محبوب و حرفه ای اینترنت اکسپلورر 3 از آن استفاده کرد.

خیلی از مردم فکر می کنند که جی اسکریپت و جاوااسکریپت زبانهای متفاوت اما مشابه هستند. در صورتی که این دو، فقط دو نام برای یک زبان برنامه نویسی هستند. دلیل این امر تمایل مایکروسافت به تملک و مایکروسافتی کردنِ همه چیز است.

هرچند مایکروسافت این حقیقت را قبول ندارد و چندین دلیل برای تفاوت جی اسکریپت و جاوااسکریپت می تراشد. (اینجا را ببینید)

نسخه استاندارد جاوااسکریپت

نت اسکیپ بعدها در سال 1997 زبان جاوااسکریپت را به سازمان ecma international ارائه داد تا تبدیل به یک زبان استاندارد شود. این زبان استاندارد، ECMAScript نام گرفت.

از این قسمت به بعد، تاریخچه جاوااسکریپت دچار تغییر و تحول هایی شد و پیچیدگی هایی نیز به آن افزوده شد. (این تغییرات و پیچیدگی ها را بعداً در مطالب مربوط به خودش برایتان توضیح خواهم داد)

در لیست زیر، نسخه های استداندارد اکما اسکریپت را به صورت خلاصه مشاهده می کنید:

نسخهنام رسمیتوضیحات
1ECMAScript 1 (1997)اولین نسخه استاندارد جاوااسکریپت
2ECMAScript 2 (1998)تغییرات اندک
3ECMAScript 3 (1999)اضافه شدن عبارات با قاعده (به انگلیسی: regular expressions)
اضافه شدن بلوک های مدیریت سعی و خطا (try , catch)
4ECMAScript 4این نسخه هیچوقت عرضه نشد!
5ECMAScript 5 (2009)اضافه شدن strict mode
اضافه شدن پشتیبانی از JSON
اضافه شدن متد String.trim()
اضافه شدن متد Array.isArray()
اضافه شدن متدهای پیمایش در آرایه ها(Iterator ها)
5.1ECMAScript 5.1 (2011)تغییرات اندک
6ECMAScript 2015اضافه شدن let و const
اضافه شدن مقادیر پیشفرض برای پارامترها
اضافه شدن متد Array.find()
اضافه شدن متد Array.findIndex()
7ECMAScript 2016اضافه شدن اپراتور (**) که عدد قبل از خودش را به توان عدد بعد میرساند
اضافه شدن Array.prototype.includes
8ECMAScript 2017اضافه شدن String padding
اضافه شدن object properties جدید
اضافه شدن فانکشن های Async
اضافه شدن حافظه مشترک
9ECMAScript 2018اضافه شدن پراپرتی های rest / spread
اضافه شدن پیمایشگر Async
اضافه شدن متد Promise.finally()
بروزرسانی و توسعه عبارات با قاعده
جدول تاریخچه جاوااسکریپت
برچسب ها

حامد عسکریان

برنامه نویس و عاشق تکنولوژی
دکمه بازگشت به بالا
بستن
بستن