Hamed Farag's Blog

Personal Blog Stuffed with Stuff :D

تاريخ الجافا سكريبت

مسا مسا عليكوا كلكوا .. يا رب تكونوا بخير وسعاده وحياتكوا مليانه إسكريبتات وكود 😄 ... إنها الJavaScript يا نااس .. الصراحة مش عارف ابدا منين ولا منين, الJavaScript رغم انها ممكن تكون بسيطة واي حد بيعرف يشتغل بيها بس هي مليانة بحاجات كتييير اوي المفروض لازم تعرفها لو انت عاوز تبقي في يوم من الايام يبقي اسمك JavaScript Developer وتقول علي نفسك فعلا "انا بعرف JavaScript".

 

إيه اللي انا هنتكلم فيه النهارده .. النهارده هنكتب شويتين تلاته عن تاريخ الJavaScript وإزاي بدأ ومين اللي طلع اللغه دي للنور .. الJavaScript كانت إيه بالنسبه للديفلوبرز ودلؤتي بقيت إيه بالنسبالهم .. نقدر نعمل بيها إيه .. وحاجات كتير كده خلينا نتكلم فيها وبعد كده خلينا نعوم في الJavaScript .. لان معروف ان قبل الشغل .. هه . ايوه بالظبط .. تظبيط الشغل 😄😄

 

نرجع كده بالتاريخ سنه 1995 شهر مايو .. فكرين شركه عريقة كده إسمها Netscape وكان ليها browser برضه بنفس الاسم وكان ساعتها ليه شنه ورنه وبرضه كان ساعتها فيه حرب في تكنولوجيا الويب بينها وبين مايكروسوفت وبين شركة Sun اللي معاها لغه الJava, شركة Sun و Netscape ضد Microsoft .. المهم ساعتها كان Netscape عاوزة تخترع لغة برمجه تكون lightweight وتكون سهله علي الديفلوبر وتكون interpreted language .. كيفيهم كده يا اخي هنعمل إيه.

شركة Netscape  عينت واحد سنة 1995 إسمه Brendan Eich ومتسناش الاسم ده عشان عيب تنساه 😄 .. وطلبت منه إن يعمل language الناس تستخدمها - اللي هما الديفلوبرز - وهيا بتعمل Web Pages بحيث لما يدوس مثلا علي Button يطلع Alert .. من الأخر شوية Actions تحصل علي الويب .. راح مطلع الJavaScript بس مكنش ساعتها إسمها كده .. كانت إسمها Mocha - متعرفش ليه سموها كده يمكن بيقلدوا الJava مش عارف الصراحه - وكان ده ال Code Name في الشركة, بعد كده طلعت بصورة رسمية للدنيا بإسم LiveScript  .. يقال والله اعلم إن بشمهندس Brendan طلع الMocha في إسبوعين 😄😄 .. وطبعا عقبال ما اتعملها Test والجو ده فطلعت مع ال Netscape Browser في سبتمبر 1995 ..يعني من الأخر لغة برمجه بحالها طلعت في 4 شهور 😄😄😄.

 

طيب .. Brendan فكر إزاي وهو بيعمل الJavaScript ؟

الراجل ده وهو بيصمم اللغه دي قعد مع نفسه كده وفكر .. وقال أنا أخد الحلو من هنا علي الحلو وأعمل حاجه أستيك, حاجه من الأخر ... وقتها كان فيه اشهر تلات لغات برمجه وكل واحده ليها ال language type اللي هما إيه

  • لغه إسمها Scheme ودي functional programming language
  • لغة إسمها Self ودي Prototype programming language
  • طبعا ال Java ودي Object-Oriented programming language

اول نوع اللي هي functional programming language اهم حاجه فيها حاجه إسمها lambdas expression يعني إيه الكلام ده يعني من الأخر كده ال function تعمل نفسها first class object يعني function يقدر يحصلها 4 حاجات

  • إن ال function can be assigned to variable
  • إن ال function can be passed as parameter
  • إن ال function can be included as a property at object
  • إن ال function can returned from function

هنشرح الكلام ده قدام بالتفصيل وبالامثله بس خليك فاكر يعني إيه first class object.

 

تاني نوع اللي هي Prototype programming language وكانت اول لغة برمجه من النوع ده إسمها Self واللي عملها شركه Xerox PARC سنة 1987, كانت اهم حاجه إن فيها طبعا الinheritance بس مش بين classes لا كانت بين objects .. كلمة prototype يعني object.

 

تالت نوع وده أكيد كلنا عرفينه اللي هي Object-Oriented programming language .. الشركة العظيمة Sun إتعملت سنة 1992 وإشترت ساعتها من Xerox لغة ال Self ولغة برمجه تانية كانت ساعتها أحسن لغة برمجه من نوع ال Object-oriented اللي عملتها برضه شركة Xerox إسمها SmallTalk .. وبكده اللغتين بقوا ملك شركة Sun وفضلت تطور فيهم لمدة 3 سنين لحد ما طلعت الJava للنور سنة 1995. المهم في السنة دي Sun قررت إن لازم توقف لغة من الإتنين يا Java يا Self .. فوقفوا ال Self .. في كتب تاريخ ال Computer Science بيقولوا إن ده اسوء قرار إتاخد في تاريخ Sun لان الديفلوبرز اللي بيعملوا ال Programming languages نفسها قالوا إن الprototypal أحسن في الperformance واسهل للمبرمجين فى الكتابه بيها.

المهم عشان مطولش 😄 .. كابتن Brendan .. قال انا هاخد ال Syntax بتاع الJava وهاخد من Scheme فكرة ال first class object وهاخد من ال Self ال prototype يعني مش هعتمد علي classes في ال inheritance .. وبالتالي خد احسن حاجه في كل واحده وطلع ال Mocha اللي إتغيرت إسمها ل LiveScript وطلعت في Netscape 2.

 

طيب جت منين كلمة JavaScript ؟

بص يا سيدي .. كان فيه Meeting بين Sun و Netscape وكان فيه إتحاد ما بينهم ضد مايكروسوفت .. المهم وهما قاعدين Sun قالت إن هديكم Java as exclusive license عشان تحطوها في الBrowser وفككوا من ال LiveScript بتاعتكوا دي .. طبعا Netscape قالت لووول .. امال إحنا كدرنا ليه عم Brendan معانا ما لو كنا عايزين نعمل كده من الأول كنا عملنا .. لا احنا اسفين إحنا مش هنشيل ال LiveScript من الBrowser. طبعا Sun قفشت وإزاي ده إحنا بنديكوا ال Java الجامده اللي ملهاش حل, قلولهم مش عاوزين نخنق ال developers عاوزين حاجه سلسله كده وتسلك .. يمين شمال مفيش .. راح حد من Netscape حب يهزر عشان يفك القعده وينعنشها فقال خلاص يا عم هنسميها JavaScript فراحت Sun قفشه في الكلمة وقالت وإحنا موافقين 😄😄. وإشترطت إن JavaScript تبقي TradeMark لشركه Sun وهنديكوا حق الإستخدام بتاعها 😄😄.😄

مايكروسوفت تسكت .. بيل جيتس مكنش سهل برضه .. راح قال مااااشي انا هعمل ال Scripting language بتاعتي .. وفعلا سنة 1996 طلع بال JScript وطلعت في Internet Explorer 3 .. طبعا Netscape قالت لا انا كده هجري ورا مايكروسوفت وبالتالي هبقي انا اللي بقلد وهي هتكون الاصل عشان مايكروسوفت هتطور في ال JScript وتطلع منها Version بسرعه .. راحت Netscape فكرت وقالت بس انا هعمل Standardization لل  JavaScript بتاعتي عشان الكل يمشي عليها وما يبقاش كل واحد يطلع باللي علي مزاجه .. راح حصل committee من Netscape و Microsoft وراحوا ل W3C .. W3C معبروهومش وقللوهم فككوا مني .. راحوا لل ISO وحصل نفس الكلام  .. راحوا لمنظمه إسمها European Computer Manufacturers Association إختصارها ECMA فالمنظمه فعلا وافقت بس قالتلهم هتسموها إيه ؟؟ .. أيوه صحيح هنسميها إيه ؟ Microsoft قالت معنديش مشكله لو سميتوها JavaScript .. طبعا Netscape لازم ترجع ل Sun .. Sun قالت لا مش هتسموها كده عشان انا مالكه لل Trademark .. سموا ال Standard اي إسم وال Implementation بتاع ال Netscape يبقي إسمه JavaScript بس وكل شركه عاوزة تطلع Browser تسمي أي إسم مش مشكلتي .. مايكروسوفت تسمي JScript وهكذا .. المهم ECMA زهقت من الوش ده راحت سمت الstandard بECMAScript 😄😄😄 .وإحنا دلؤتي بنكتب ECMAScript .. ولا JavaScript ولا JScript واللي مالك كلمة JavaScript دلؤتي هي Oracle عشان إشترت Sun والTradmark مرمي في الدرج وطبعا Netscape Browser مات وإنتهي أمره.

 

تاريخ وإصدارات ال ECMAScript.

فاكرين ال committee اللي لف علي المنظمات عشان يعملوا Standard لل JavaScript .. الشركتين Microsoft و Netscape هما اللي حطوا ال Standard مع بعض راسهم براس بعض وبعد ما إتفقوا وتمام التمام .. طلعت أول Version وهي ECMAScript 1 سنة 1997 والVersions كالتالي

  • إصدار ECMAScript 1 سنة 1997 .. خلاص اتفقوا وطلعوا اول Version.
  • إصدار ECMAScript 2 سنة 1998 .. شوية تظبيطات بسيطة عشان منظمة ال ISO وطلعت تحت إسم ISO/IEC 16262 international standard.
  • إصدار ECMAScript 3 سنة 1999 .. حطوا فيها شوية تحسينات وحاجات جديدة منها
    • ظهور ال Regular Expression
    • تحسين ال String Handling
    • ظهور ال Try/Catch
  • إصدار ECMAScript 4 .. دي مطلعتش واتلغت بسبب إنها إتعقدت وفعلا فيه شويه Features تقيله شالوها تماما وشوية Features تانية قالوا هنطلعها في ECMAScript 6 اللي معروفه بإسم ECMAScript Harmony
  • إصدار  ECMAScript 5 سنة 2009 .. وكانت طبعا فيها تحسينات كتييرة منها
    • حطوا ال strict mode ودي مكنتش موجوده قبل كده ودي بتخليك لما تكتب JavaScript او ECMAScript يعني .. تمشي علي حزافير ال Standard زي مثلا مينفعش تعمل x = 56 .. هيضرب Error .. فلازم تكتبها var x = 56.
  • شوية توضحيات حصلت كان مش واضحه في ECMAScript 3
    • دعم لل JSON
  • إصدار ECMAScript 5.1 سنة 2011 .. شوية تظبيطات بسيطة عشان منظمة ال ISO وطلعت تحت إسم ISO/IEC 16262:2011 international standard.
  • إصدار ECMAScript 6 سنة 2015 .. دي فيها كمية تحديثات وإضافات مش قليله زي مثلا
    • إضافة Syntax جديد من ضمنها Classes و Modules
    • إضافة for/of loops
    • إضافة arrow functions, binary data, typed arrays, collections, promises, number and math enhancements.
  • إصدار ECMAScript 7 ودي لسه شغالين عليها

 

إحنا خلاص قربنا نخلص التاريخ العظيم بتاع ال JavaScript .. ال JavaScript مكنش معترف بيها كلغة برمجة زمان وإنها مجرد حاجه كده تأدي الغرض وهي هتيجي إيه جنب الJava ولا جنب أي لغة برمجه strongly typed languages .. بس دلؤتي بقت هي ال Trend .. بقت لازم تكون في اي Web Page موجوده في الدنيا .. إتعمل بيها JavaScript Server Side واللي قدم الفكرة دي هي ال Node.JS كل يوم تقريبا بتطلع JavaScript Library جديده .. عشان خلاص هي المسيطرة او مفيش غيرها في ال Client Side.

 

الملخص

الJavaScript طلعت بإسم LiveScript سنة 1995 عن طريق شركة Netscape. اللي فكر وعملها هو Brendan Eich. ال JavaScript إتكونت من كوكتيل حلو من Self و Scheme و Java عشان تكون سهله للي هيستخدموها. ال Standard بقي إسمه ECMAScript عشان محصلش إتفاق علي الإسم. ال ECMAScript دلؤتي Version 6 وطلعت في 2015

 

المصادر

 

  • أستاذي محمد رضا Senior Lead Software Engineer و JavaScript Geek في شركة ITWorx.
  • موقع ويكيبيديا ECMAScript
  • موقع ويكيبيديا JavaScript