جافا سكريبت ، على الرغم من العديد من أوجه القصور فيها ، يمكن القول إنها أفضل لغة برمجة للمطورين المبتدئين ، وأفضل لغة يمكن للأطفال العبث بها.
كان عام 2007. ناشر ممتاز للكتب الفنية ، اتصل بي أورايلي ميديا بفكرة. سألوني إذا كنت أرغب في كتابة كتاب عن JavaScript سيكون للمبتدئين المطلقين في البرمجة. "لماذا على الأرض؟" سألت على الفور سؤالا مضادا.
لا يمكن القول أن جافا سكريبت كانت لغة عديمة الفائدة تمامًا في تلك الأيام. لكنه كان مجرد عنصر بعيد عن العنصر الأكثر أهمية من مجموعة مختارة بعناية من التقنيات اللازمة لتطوير الموقع. نعم ، يمكن استخدام أجزاء صغيرة من كود JS للتحقق من صحة النماذج ، أو لتسليط الضوء على الأزرار التي تحوم فوقها. لكن JavaScript كان مجرد إضافة اختيارية إلى وظائف الموقع. إذا قمت بإزالته من الصفحة ، فسيستمر كل شيء في العمل بنفس طريقة استخدامه تقريبًا.
جافا سكريبت ، بالإضافة إلى ذلك ، سحب الكثير من الأمتعة ، التي قدمتها التقنيات الأخرى. لذلك ، ارتبطت مشاكل عدم التوافق في المتصفح ؛ لقد كانت بطيئة وغير آمنة وغير موثوق بها تمامًا. لم أكن مهتمًا بتعليم شخص ما لإنشاء تطبيقات مصغّرة غير مجدية لصفحات الويب في JavaScript. بدا لي هذه الأدوات المصغّرة بلا معنى مثل صور GIF المتحركة مع كرة دوارة ، والتي كانت شائعة جدًا في فجر الإنترنت.
كانت الطريقة الأكثر وضوحًا لاستخدام جافا سكريبت ، كما اعتقدت بسذاجة ، هي شيء من هذا القبيل: يجب أن ينشئ إطار عمل كبير للخادم جميع تعليمات JS البرمجية اللازمة ويدمجها في صفحة مصممة خصيصًا لمتصفحك. قد يكون رمز JavaScript الذي تم إنشاؤه بواسطة الخادم مرهقًا للغاية ، ولكنه قد يكون مصممًا لإصدار محدد من المتصفح. ونظرًا لأن JS لعبت دور الآلية المساعدة فقط ، فسيعمل كل شيء كما ينبغي حتى لو قام زائر الموقع بإيقاف تشغيل JavaScript تمامًا.
وغني عن القول ، ثم لم أكتب كتابًا عن JavaScript. واصلت القيام بالبرمجة من جانب الخادم والكتابة عن تقنياتي المفضلة (عادةً حول C # و .NET Framework). لقد مرت سنوات عديدة.
ثم حدث شيء غريب.
جافا سكريبت أقلعت حرفيا.
ما زلت لا أعتقد أن جافا سكريبت تستحق شرف لقب أفضل لغة برمجة في العالم. حتى لو كنت ، بصراحة تامة ، لا أعتبرها لغة جيدة جدًا. ولكن في بعض الطرق غيرت رأيي. الآن أعتقد أن جافا سكريبت هي على الأرجح أفضل لغة للأطفال والمبرمجين المبتدئين. الشيء هو أن جافا سكريبت لديها ميزة رئيسية واحدة على جميع لغات البرمجة الأخرى.
إن الانتشار المذهل لجافا سكريبت هو ميزته الرئيسية.
واحدة من المزايا الفريدة لجافا سكريبت هي انتشاره.
هذه اللغة يمكن العثور عليها حرفيا في كل مكان. إنه مدعوم في جميع أنظمة التشغيل ، وفي جميع أنواع المتصفحات ، وعلى أجهزة كمبيوتر سطح المكتب والأجهزة المحمولة. من المهم أيضًا أن تعمل تطبيقات JavaScript دون تثبيتها على أجهزة كمبيوتر المستخدمين. في الواقع ، من الصعب بالفعل تذكر الأيام غير القديمة التي قضت فيها الشركات ، التي تنشر تطبيقات خادم العميل على شبكاتها الداخلية ، أسابيع تكافح مع مشاكل إعداد هذه التطبيقات وبأخطاء غير متوقعة. في مواجهة هذه الكوابيس ، قد تقدر جاذبية جافا سكريبت.
جافا سكريبت ، بسبب انتشاره ، لا يجب أن تكون أفضل لغة برمجة. يحتاج فقط أن يكون لغة جيدة بما فيه الكفاية.
تعمل آليات مماثلة عندما يتعلق الأمر بتعلم البرمجة. في البداية ، لا تبدو مشكلة انتشار اللغة ذات أهمية خاصة بالنسبة للشخص الذي يتمثل هدفه في تعلم الأساليب العملية التي تم اختبارها للوقت لتطوير البرامج. ولكن العديد من المشاكل نفسها ذات صلة ، كما هو الحال بالنسبة للبرمجة المهنية ، في تدريس البرمجة. إذا كنت تريد أن يستخدم أي شخص ما قمت بإنشائه ، فإن JavaScript هو البديل الوحيد.
افترض أنك تقوم بتطوير تطبيق رائع ، من خلال طرح الأسئلة على المستخدم ، يحدد ملفه الشخصي. إعداد بيئة تطوير بسيط للغاية. ولكن ماذا يحدث عندما تريد إرسال البرنامج إلى صديق؟ هل سيحتاج إلى تثبيت بيئة وقت تشغيل أو إعادة إنشاء نفس بيئة التطوير مثل بيئة التشغيل الخاصة بك؟ هل سيكون من الضروري "تعديل" إعدادات الأمان في جهاز الكمبيوتر الخاص به قبل أن يتمكن من تنزيل وتثبيت البرنامج؟ ربما يستخدم صديقك نظام تشغيل لا يدعم ببساطة برنامجك ، أو منصة متنقلة ، يمكنك تثبيت التطبيقات الاحترافية الموزعة عبر iTunes أو Google Play ، إذا لم تدخل في التفاصيل. إذا كنت تستخدم JavaScript لتطوير البرنامج ، واستخدام موقع ويب بسيط لتوزيعه (على سبيل المثال ، يتيح لك
GitHub إنشاء مثل هذه المواقع مجانًا) ، فستختفي كل هذه المشكلات ببساطة.
وإذا كان مبرمجنا المستقبلي هو طفل ، فهذه حقيقة لا يمكن إنكارها بالنسبة لك: الأطفال والمتصفحات مرتبطون بشدة. إذا شاهدت طفلاً يعمل على جهاز كمبيوتر (وليس على جهاز محمول) ، فربما لاحظت أنه يمضي 98٪ على الأقل من وقته في العمل مع متصفح. يلعب الأطفال ألعاب المتصفح ، ويستخدمون الشبكات الاجتماعية ، ويذهبون إلى المدرسة باستخدام Google Classroom و Google Docs. وإذا كانت الشفرة التي يكتبها الأطفال ستعمل في عالم متصفحهم الأصلي ، فستكون طبيعية تمامًا.
نحن نناقش الآن نقاط قوة جافا سكريبت. لكن ، بالطبع ، التحدث عن جافا سكريبت كلغة برمجة للمبتدئين ، لا يسع المرء إلا أن يتذكر أوجه القصور فيها.
عيوب جافا سكريبت
ماذا عن قضايا جافا سكريبت؟ هذه اللغة بها عيوب خطيرة ، ويمكن أن تكون المراوغات والتناقضات والقيود غير سارة للغاية بالنسبة لشخص بدأ لتوه في تعلم البرمجة. لحسن الحظ ، توجد حلول حديثة يمكن أن تخفف من معظم العيوب في JavaScript.
دعنا نحلل أربع شكاوى رئيسية حول هذه اللغة.
▍1. مشكلة العمل مع أنواع البيانات في JavaScript
إن المفهوم الأكثر أهمية الذي يتعلمه المبرمجون المبتدئون مبكرًا هو فكرة المتغيرات والحاويات التي تخزن المعلومات أثناء تشغيل البرنامج. المشكلة في جافا سكريبت هي أن هذه اللغة مفككة للغاية وفوضوي مع المتغيرات. يسمح لك بعمل شيء لا يبدو صحيحًا ، ويتجاهل التناقضات الواضحة. يمكن أن يؤدي إهماله إلى تحويل الأخطاء المطبعية البسيطة إلى كوارث تؤدي إلى تعطيل تشغيل البرامج.
فيما يلي مثال لرمز محكوم عليه بالفشل:
var myNumber = 100; myNumber = myNumbr + 1;
هل رأيت خطأ؟ في الواقع ، يستخدم السطر الثاني متغيرين: المتغير
myNumber
، الذي تم التصريح عنه في السطر الأول ، والمتغير الوهمي
myNumbr
. نحن نعلم أن المتغير الثاني هو نتيجة خطأ مطبعي ، ولكن جافا سكريبت
ReferenceError: myNumbr is not defined
فقط أثناء تنفيذ البرنامج ، مع إعطاء رسالة خطأ تشبه
ReferenceError: myNumbr is not defined
. يحدث الشيء نفسه عند كتابة اسم متغير ، يتم خلط
myNumber
والصغيرة (على سبيل المثال ، تحول متغير من
myNumber
بطريق الخطأ إلى
MyNumber
). قد تنشأ مشكلة ، ولكن ذات طبيعة مختلفة ، إذا نظرت إلى أن متغيرًا معينًا يخزن رقمًا ، ويضيف رقمًا آخر إليه ، وهذا المتغير ، في الواقع ، يحتوي على سلسلة أو شيء آخر. لن يبلغ جافا سكريبت في هذه الحالة عن خطأ ، لكن نتيجة الحسابات ستكون مختلفة تمامًا عما تتوقعه من إضافة رقمين. يمكن لكل مطور JavaScript أن يتذكر قصة غير سارة من هذا النوع ، عندما تسبب تشويش الأخطاء في أخطاء غريبة في البرامج.
من الصعب بما فيه الكفاية تعلم كيفية البرمجة ، وفي الوقت نفسه تقلق بشأن الكيفية التي يمكن أن تضر بها لغة البرمجة التي تتعلمها. ولكن لحسن الحظ ، يمكن بسهولة حل مشاكل العمل بأمان مع أنواع البيانات بمساعدة أدوات تطوير مناسبة.
يعد
Visual Studio Code أحد برامج تحرير الشفرة المفضلة لدي والتي تتناسب مع تعلم البرمجة والاستخدام الاحترافي. إنه مجاني ، متراجع عن الموارد ، رمزه مفتوح ، ويمكن توسيعه إلى ما لا نهاية. واحدة من أبرز ميزاتها هو دعم تنظيم التحقق من شفرة JavaScript للمشاكل الشائعة في TypeScript. يمكنك تمكين هذا الاختبار باستخدام ملف التكوين المناسب أو عن طريق إدراج التعليق التالي في الجزء العلوي من ملف JavaScript:
في ما يلي مثال على وجود خطأين ، لا يوجد خطأ من وجهة نظر JavaScript.
مشاكل جافا سكريبت لا تنظر في الأخطاءإذا قمت بإضافة التعليق
// @ts-check
في بداية هذا الملف ، فسيقوم VS Code بتسليط الضوء على أسطر التعليمات البرمجية التي تحتوي على أخطاء محتملة.
خطوط مميزة من التعليمات البرمجيةإذا كنت تحوم فوق خط مظلل ، فستظهر نافذة منبثقة تشرح المشكلة.
شرح المشكلةما هي الاستنتاجات التي يمكن استخلاصها من هذا؟ على الرغم من أن JavaScript يتسامح مع العديد من الأشياء السيئة ، إذا قمت بدمج JavaScript مع محرر كود الجودة والأدوات الإضافية المناسبة ، يمكنك إنشاء بيئة تطوير مشابهة لتلك التي تتوفر في لغات البرمجة الحديثة الأخرى. نتيجة لذلك ، يعد تطوير جافا سكريبت ملائمًا كما هو الحال في اللغات الأخرى ، وبالطبع لا تختفي ميزاته الأخرى.
▍2. جافا سكريبت لا يدعم OOP
البرمجة الموجهة للكائنات (OOP) هي طريقة لنمذجة وتنظيم الكود. إذا تم تطبيق تقنيات OOP بشكل صحيح ، فإنها تساعد المبرمج على إنشاء رمز بسيط جيد التنظيم. يجعل OOP أيضًا من السهل إعادة استخدام ميزات البرنامج الهامة.
جافا سكريبت هي سيئة السمعة لافتقارها إلى الدعم للبرمجة وجوه المنحى. في الواقع ، لقد تحايل مطورو JavaScript تقليديًا على هذا القصور باستخدام جميع أنواع التركيبات الغريبة. قد تعني هذه الإنشاءات شيئًا لشخص قام بدراسة OOP بالفعل (وحتى للشخص الذي لم يدرس ، ولكن ببساطة نسخ قالب في التعليمات البرمجية الخاصة به ويستخدم للعمل معه). ولكن إذا كنت شخصًا جديدًا تمامًا في البرمجة ، فإن استخدام مثل هذه الإنشاءات المشكوك فيها التي تقوم بتطبيق مفاهيم البرمجة الأساسية يعد خاطئًا تمامًا.
لحسن الحظ ، هناك حلول جميلة توفر دعم OOP في JavaScript. الحل المفضل لدي من هذا النوع هو
TypeScript ، وهو مشروع مفتوح المصدر أطلقته Microsoft في عام 2012. يعد TypeScript نوعًا من نوع محسّن من JavaScript يدعم OOP (بالإضافة إلى العديد من الميزات المفيدة الأخرى مثل التحقق من النوع القوي).
قد يقول شخص ما أننا نتحدث عن JavaScript ، وأن TypeScript هو ، مع ذلك ، ليس JavaScript. و ، في الواقع ، هو عليه. ولكن هنا هو واحد من التفاصيل المثيرة للاهتمام. تتم كتابة التعليمات البرمجية في TypeScript ومن ثم تحويلها إلى JavaScript قبل تنفيذها. يتيح لك هذا الاستمتاع بأفضل ما في العالمين من TypeScript و JavaScript. إذا اخترت TypeScript ، فسيكون لديك لغة برمجة حديثة يمكنك من خلالها كتابة التعليمات البرمجية الخاصة بك ، وأوسع دعم يستخدمه JavaScript العادي.
والأهم من ذلك كله ، يتم تحويل رمز TypeScript إلى JavaScript تلقائيًا. بالطبع ، يستخدم كود JavaScript الذي تم إنشاؤه بواسطة الكمبيوتر إنشاءات مرهقة إلى حد ما لتعكس فيه المفاهيم التي تنفذها TypeScript ، لكن هذا لا يغير شيئًا. يدرس مبرمج مفاهيم OOP ، ويعمل الرمز النهائي بشكل صحيح ، تتم معالجته دون مشاكل عن طريق أجهزة الكمبيوتر الحديثة.
لا تصدق؟ ثم فكر في حقيقة أن بعض تطبيقات سطح المكتب المبتكرة الحديثة تستخدم مزيجًا من TypeScript و
Electron ، وهو إطار يسمح لك بتنفيذ تعليمات JavaScript البرمجية خارج المستعرض التقليدي (على الرغم من أنه يجب ملاحظة أن Electron يستخدم إمكانيات المستعرض). أحد أكثر الأمثلة إثارة للإعجاب لمثل هذا التطبيق هو محرر كود VS. اتضح أن الأداة نفسها التي من المريح جدًا أن تكتب بها شفرة JavaScript هي نفسها مكتوبة بلغة JavaScript. صحيح ، لكي نكون أكثر دقة ، يتم كتابة VS Code في TypeScript ، ولكن لا يزال يتم تحويل التعليمات البرمجية المكتوبة بهذه اللغة إلى رمز JavaScript.
بالطبع ، عند تعلم البرمجة ، ليس من الضروري استخدام TypeScript ، وسيتمكن مبرمجو JavaScript الجدد ، إذا قرروا القيام بذلك ، من القيام بالكثير دون دراسة مبادئ OOP. هذه ، في الواقع ، مسألة اختيار. في أي حال ، يمكن الإشارة إلى أن JavaScript هي لغة متطورة ديناميكيًا ، وتتم إضافة الميزات إليها تدريجياً مما يجعلها أقرب إلى كل القيمة التي تمتلكها TypeScript.
▍3. حول مليء رمز جافا سكريبت ذات نوعية رديئة
ماذا يمكنني أن أقول. يمكن كتابة الكود السيئ في أي لغة برمجة. هل سمعت عن
Visual Basic ؟
▍4. يتطلب تطوير JavaScript مكتبات وأطر عمل إضافية
من أجل الوصول إلى مجموعة واسعة من الوظائف مقارنة باللغة (وليس لإعادة اختراع العجلة) ، يحتاج مبرمجو JavaScript إلى استخدام مكتبات وإطارات عمل تابعة لجهات خارجية. اختيار المكونات المناسبة المستخدمة لإنشاء مشروع ليس سهلاً كما يبدو للوهلة الأولى. على وجه الخصوص ، يجب أن تحل الأدوات الإضافية المحددة المهام التي تم تعيينها لها بشكل صحيح ، فمن الضروري أن يثق المبرمج في أنه سيستمر في استخدام دعم مطوريه لفترة طويلة ، وأنهم لا يتعارضون مع بعضهم البعض. البعض.
يواجه المطورون الذين يستخدمون لغات أخرى أيضًا بعض المشكلات. ومع ذلك ، تجدر الإشارة إلى أن لغات قليلة تعاني من هذه المشكلة مثل جافا سكريبت. لكي تصبح مبرمجًا جادًا في عالم مفتوح لجميع JavaScript ، تحتاج إلى تجميع مجموعة أدوات التطوير الخاصة بك. في الوقت نفسه ، يكون كل خيار ممكن معقدًا ومتعدد الأوجه بحيث لا يمكن فهمه إلا إذا كانت المكتبة مناسبة لك ، وإذا كنت تدرسها جيدًا (وعندما تدرسها ، فقد يتضح أنها قد فقدت أهميتها بالفعل عن طريق سيأتي مكانها بشيء جديد وجذاب ، ربما - لفترة قصيرة ، المصلحة العامة).
بغض النظر عن مدى حزن كل هذا ، فإن هذه المشكلات ، في الواقع ، لا تؤثر على المبتدئين. إذا كان شخص ما يتعلم البرمجة باستخدام جافا سكريبت ، فمن الأفضل الابتعاد عن الأطر والمكتبات ، سواء كانت معروفة على نطاق واسع ، مثل
jQuery أو
Angular أو
React أو
Vue أو شيء اخترع في وقت هذه الجملة كانت مكتوبة ، أو الثانية عندما نشرت هذه المقالة. بالطبع ، من المحتمل أن يرغب المبتدئ ، الذي أتقن الأمور الأساسية جيدًا ، في التعرف على واحدة من الأدوات الإضافية الشائعة على الأقل. لكن هذه قصة مختلفة تماما.
النتائج
في الواقع ، فإن اختيار لغة البرمجة الأولى هو السؤال الذي من المستحيل العثور على الإجابة الصحيحة تماما. شارك مؤلف هذه المادة هنا رأيه فقط في هذا الموضوع ، وقدم أمثلة قريبة منه بسبب خبرته وتفضيلاته. ولكن ، على أي حال ، يبدأ جميع المبرمجين في مكان ما ، وبغض النظر عن مدى صعوبة اختيار اللغة الأولى ، لا يزال يتعين القيام بهذا الاختيار.
أعزائي القراء! هل توافق على أن JavaScript ، في الظروف الحديثة ، هو أفضل لغة لتعلم البرمجة؟ إذا كنت لا توافق ، فربما تعرف بعض اللغات المناسبة لهذا الغرض؟
