الجمعة، 4 مايو 2007

ما هي لغة جافاسكربت؟

في عالم الحاسوب هناك الكثير من التقنيات التي لا نفهمها جيداً لأسباب مختلفة، فهناك مثلاً من يرى أن لغة HTML هي لغة برمجة وهي ليست كذلك، أو يظن أن لينكس هو نظام تشغيل لكنه في الحقيقة نواة لنظام تشغيل، ولا ألوم عامة الناس على مثل هذا الخلط بين الأشياء، تاريخ التقنيات وتطورها يجعل فهمها أكثر صعوبة ما لم يحاول شرحها شخص ما بلغة سهلة بسيطة.

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

تاريخ جافاسكربت مربك بعض الشيء، الاسم نفسه يوحي بأن هذه اللغة لها علاقة بلغة جافا وهذا ليس صحيحاً وكلمة "سكربت" توحي بأنها ليست لغة برمجة حقيقية بل شيء أقل من ذلك وهذا أيضاً ليس بصحيح.

لكي نزيل سوء الفهم علينا أن نعرف بعض النقاط السريعة حول هذه اللغة.

  • جافاسكربت كان اسمها في البداية LiveScript.
  • اللغة طورت في شركة نيتسكيب لكي تكون لغة برمجة صفحات المواقع.
  • اللغة اكتسبت سمعة سيئة بسبب التطبيق السيء لها، لكن تحسن مستوى اللغة ولا زالت سمعتها تعاني من تاريخها.
  • يقول دوغلاس بأن كل الكتب التي تتحدث عن جافاسكربت سيئة ولا تصلح لمن يريد تعلم اللغة لأنها تحوي أخطاء كثيرة، ونصح بكتاب واحد هو JavaScript: The Definitive Guide
  • حاولت شركة صن مايكروسيستيمز التعاون مع نيتكسيب لكي تجعل لغة جافا هي لغة البرمجة المستخدمة في نيتسكيب، لكن لم ينجح الاتفاق بينهما، وغير اسم LiveScript إلى جافاسكربت لأسباب لا يعرفها دوغلاس.
  • مايكروسوفت قامت بإنشاء محرك خاص للغة جافاسكربت سمته Jscript وهو الذي يستخدم في نظام ويندوز ومتصفح إكسبلورر، الكثير من الناس يظنون أن Jscript لغة تختلف عن جافاسكربت لكنهما في الحقيقة متشابهتان لكن بأسماء مختلفة.
  • حاولت نيتكسيب تحويل جافاسكربت إلى مواصفات قياسية لكي لا تقوم مايكروسوفت بالسيطرة على اللغة والتحكم في سوق المتصفحات، وأصبح لدينا مواصفات قياسية لهذه اللغة تسمى ECMAScript.
  • جافاسكربت لا تستخدم في المتصفحات فقط لكن في العديد من البرامج والمزودات.

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

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