الجافاسكريبت كما لم تعرفها من قبل! (مقدمة)

مقدمة

إعداد نصر جلال (@sniperadmin )


حقوق ملكية الصورة Image by vectorjuice

الفهرس:

  1. مقدمة
  2. الأنماط البرمجية

ملحوظة: سأفترض قبل البدء أن القارئ يعرف القليل عن البرمجة بشكل عام.


من هي الجافاسكريبت؟ هل نعرفها حق المعرفة؟ :mermaid:

أتذكر حينما بدأت تعلم أساسيات الواجهات frontend من ناحية هندسية. وقتها كنت واثق تماما من أنني أعرف الجافاسكريبت حق المعرفة!
وخلال رحلة الثلاث سنوات الأولى في رحلتي المهنية اكتشفت أنني حقا لم أكن أعرف عنها سوى قشور بسيطة.

لذلك قررت أن ألتقي مجددا بحورية الجافاسكريبت :mermaid: وأجلس معها على طاولة نشرب القليل من الليموناضة (عصير الليمون) :lemon:

بداية أود التنويه هنا إلى أنه معرفتنا باسمها “جافاسكريبت” قد يكون مخلوطا ببعض الأفكار المغلوطة، فمثلا أول الأسئلة التي ترد بالذهن:

  • هل هي مرتبطة بلغة Java؟ أم هو تشابه أسماء Java / JavaScript؟
  • هل هي لغة كتابة سيناريوهات برمجية وليست لكتابة برامج حقيقية؟

دعوني أصدمكم معي عندما سألت حورية الجافاسكريبت :mermaid: هاته الأسئلة! ضحكت الحورية قليلا ثم أخبرتني التالي:
"الحقيقة أن اسم JavaScript هو اسم متحفي (من التحف الفنية) وكان سبب اطلاق الاسم هو خدعة تسويقية!

حينما قام المخترع بريندان إيك Brendan Eich بصناعة الحورية، أطلق عليها اسم موكا (Mocha)
image
بعد ذلك، شاع استخدامها في شركة نت سكيب (NetScape) تحت اسم لايف سكريبت (LiveScript)

وعندما انطلقت الحورية للعالم الخارجي، عُرِفت باسم جافاسكريبت JavaScript :mermaid:

هناك بعض أوجه التشابه السطحية بين جافا سكريبت و لغة جافا. هذه التشابهات لا تأتي بشكل خاص
من التطوير البرمجي المشترك، ولكن كلا اللغتان تم تصميمهما لاستهداف المطورين الذين لديهم خبرة مع لغة C (و أيضا C ++).
ونستطيع القول أن لغة جافاسكريبت جاءت لتحل محل لغة جافا في عالم تطوير متصفحات الويب الحديثة.

بصورة أعمق، نجد أن شركة أوراكل Oracle المطورة والمستخدمة للغة الجافا تمتلك حقوق ترخيص لغة الجافاسكريبت أيضا.

معايير اللغة JavaScript Specification

هناك لجنة تدعى لجنة التوجيه الفنية لإدارة كل شئ متعلق بالجافاسكريبت (TC39, the technical steering committee that
manages JS
)

يجتمع أعضاء اللجنة بشكل دوري لمناقشة التعديلات والتحديثات المطلوبة، وبالتصويت تضاف التحديثات إلى المعيار الدولي ECMASCRIPT والذي نلتزم به نحن المطورون ومهندسو أطر العمل البرمجية كما التزمت جميع المتصفحات الرئيسية بالحفاظ على تطبيقات JS الخاصة بها متوافقة مع تلك المعايير المركزية.

للمزيد حول الخطوات التي تقوم به اللجنة الفنية، برجاء زيارة الرابط التالي: TC39 Process

تحكم الويب في جافاسكريبت

بالنسبة للجزء الأكبر في هذا الموضوع، فإن JS المحددة في المعايير و JS التي يتم تشغيلها في محركات JS المستندة إلى متصفحات الويب هي نفسها. لكن هناك بعض الاختلافات التي يجب مراعاتها.

نتفق معا ان هناك دوال تم تطويرها لتحديد سلوك المتصفحات، مثل اضافة دالة .contains() للمصفوفات
لكن هل الدالة التالية هي حقا في لغة الجافاسكريبت؟

alert("Hello World!")

الإجابة ستعتمد هنا على نظرتنا للأمور، فدالة alert() ليس موجودة أصلا في معايير لغة جافاسكريبت / ملحق ب
ولكنها موجودة ضمنيا ببيئات ومحركات الجافاسكريبت المعروفة (كمتصفحات الويب و محرك نود Node.js)

في الواقع ، هناك مجموعة كبيرة من واجهات برمجة التطبيقات (Application Program Interface API) التي تشبه JS ،
مثل fetch(..) و getCurrentLocation(..) و getUserMedia(..)

كلها واجهات برمجة تطبيقات الويب التي تشبه JS. في Node.js ، يمكننا الوصول إلى مئات من طرق API من وحدات مدمجة متنوعة ، مثل fs.write(..)

في نقس السياق، تعتبر دالة console.log() أيضا خارجية عن JS لأنها غير موجودة بملحقات المعايير، وإنما هي فقط موجودة بالمحركات التي تستخدم JS نظرا لفائدة تلك الدالة.

لذا بالنسبة للدوال alert(..) و console.log(..) لم يتم تعريفها بواسطة JS.
لكنها تبدو مثل JS.وهي تخضع لقواعد ترميز لغة JS. أما السلوكيات الخفية تسيطر عليها البيئة التي تشغل محرك JS ، ولكن في
السطح عليهم بالتأكيد الالتزام بـترميز JS لفتح إمكانية اللعب في ملعب JS.

بمعنى آخر، عملية استدعاء دالة alert() هي JS لكن دالة alert نفسها البرمجية ليست JS

لكن لماذا تم إدخال دوال كضيوف لمحركات الجافاسكريبت؟

بالنسبة لمطورين أكواد الفرونت يعرفون جيدا أدوات المطورين Developer tools الموجودة بمتصفحات الويب ومحررات الأكواد. الغرض الرئيسي من تلك الأدوات هو توفير بيئة عمل سهلة ويسيرة على المبرمجين لمعرفة نتيجة الأكواد البرمجية وتحليل أداءها وكذلك أيضا إيجاد الثغرات البرمجية والعمل على حلها.

لكن هذا ليس ضمانة لالتزام المحركات تلك بالالتزام دوما بمعايير الجافاسكريبت لأنها ببساطة تعمل على مختلف الأجهزة وأنظمة التشغيل. فهي تقوم بدور الوسيط بين نظام تشغيلك (مثل ويندوز) و برنامج متصفح الويب الذي يستخدم JS

في الحلقة القادمة سنبدأ بتعلم المزيد عن أوجه البرمجة بالجافاسكريبت

وإلى هنا كان النقاش السريع بيني وبين حورية الجافاسكريبت :mermaid: وانتهينا من شرب الليموناضة :lemon: :smile:

1 Like