مرحبا يا هبر! أقدم لكم ترجمي لمقال
" The Big Big Lies About JavaScript " بقلم ريتشارد كينيث. كُتِب هذا المقال في مايو 2016 ، لكن أهميته ، في رأيي ، لم تختف. أنا مبرمج مبتدئ ، لذا فمن الممكن حدوث أخطاء من حيث "الفهم". لذلك ...
ثلاثة أكاذيب كبيرة حول جافا سكريبت
هناك نوعان من الأكاذيب: الكذبة التي نخبر الآخرين بها والكذب الذي نخبر أنفسنا لتبريره
هناك ثلاث أكاذيب كبيرة يخبرني بها محبو JavaScript مرارًا وتكرارًا.
الأكاذيب رقم 1
جافا سكريبت هي لغة البرمجة الأكثر سوء فهم في العالم.الناس لا يعرفون كيفية استخدامها بشكل صحيح ، وبالتالي هم باستمرار في جميع أنواع المشاكل. وهذه كذبة ، لأنه في
JavaScript لا يوجد شيء غير مفهوم.
هذه لغة برمجة إلزامية / إجرائية عادية مع قدر صغير من وظائف البرمجة (FP) ووظيفة "موجهة نحو الكائن" مثيرة للجدل تسمى نماذج أولية للكائنات. وما هو الشيء المميز في ذلك؟
كل المشكلات التي تنشأ عند استخدام JavaScript هي خطأ الأشخاص الذين يستخدمونها فقط: فهم جاهلون ، وهم كسولون ، وهم معتادون على كيفية إجراء البرمجة في Java أو Python ، فما الذي لا يعرفونه؟ البرمجة الوظيفية؟
لماذا ، إذن ، لا يخطئ الأشخاص عند استخدام لغات FP أخرى ، مثل
C # و Clojure و Dart و Elm و Erlang و F # و Julia و Haskell و Scala و Scheme ؟ البرمجة الوظيفية هي نموذج جيد الفهم في صناعة تكنولوجيا المعلومات. فما الذي يجعل جافا سكريبت مشكلة بشكل خاص في هذا الصدد؟
ربما الناس ليسوا على دراية بالنماذج الأولية للأشياء. في هذه الحالة ، اقرأ
"ما هي نماذج كائن JavaScript غير الموجودة .
" النماذج ، بالطبع ، ليست مناسبة لتطوير البرمجيات. أنها ليست مستوى عالية للغاية من التجريد البرمجة. النماذج الأولية هي في الغالب جداول تجزئة مميزة ومستوى منخفض جدًا وهذا ما أسميه "لبنات بناء" للبرمجة الحقيقية للكائنات (OOP القائمة على الفصل). قد لا يفهم الناس كيفية استخدام النماذج الأولية للكائنات ، ولكن لماذا تحتاج إلى تعلم كيفية "وضع الطوب"؟ هذا لا يستحق الجهد الخاص بك.
نعم ، فهمت ذلك. النماذج الأولية مرنة للغاية. لا يمتلكون جميع "الطقوس" التي يقف عليها AKI الكلاسيكي. في هذا المعنى ، فهي ممتعة للاستخدام. لكنها لا تتناسب بشكل جيد مع التطبيقات الكبيرة ، وبالتالي يعود الأشخاص إلى الفصول الدراسية. إذا كانت النماذج الأولية من هذه التقنيات المفيدة ، فسترى أنها تتكيف في كل مكان ، لأنه يمكن نمذجة النماذج بلغات قائمة على الفصل ، تمامًا كما يمكن تصميم الفئات بلغات قائمة على النماذج الأولية. وهذا شيء لا يمكن لمبرمجي
JavaScript اكتشافه.
الأكاذيب # 2
البرمجة غير المتزامنة هي القوة الرئيسية لجافا سكريبت. حسنًا ، دعونا أولاً نفهم سبب وجود البرمجة غير المتزامنة في
JavaScript .
لتطوير واجهة مستخدم رسومية (GUI) ، تكون حلقة الحدث -
de rigueur (الشيء المعتاد) ، سواء في
Windows أو
X Window أو
OS X's Cocoa أو مستعرض ويب. كل منهم التعامل مع أحداث إدخال المستخدم بشكل غير متزامن. هل هذا يعني أن البرمجة غير المتزامنة هي أيضًا قوة
C ++ أو
Object-C ؟ كما تم استخدام حلقات الأحداث (مع المكتبات غير المتزامنة) في
Python و
Perl و
Tcl . ثم ، أعتقد أن لديهم جميعًا قوة البرمجة غير المتزامنة؟ (أضحك عندما يستخدم الناس الكلمة غير الموجودة "عدم
التزامن " (
غير المتزامنة هي صفة تصف الأشياء أو الأحداث التي لا يتم تنسيقها في الوقت المناسب ).
يستخدم
JavaScript أيضًا حلقة حدث ومعالجة غير متزامنة لدعم واجهة مستخدم متصفح الويب. هل هذا يجعله لغة عظيمة؟
والآن ، جعل هذا النموذج الحسابي
Node.js مشهورًا جدًا على جانب الخادم ، حيث يتم استخدامه لتطوير غير واجهة المستخدم الرسومية ، أي للحصول على التزامن عالية الأداء.
من الواضح أن
العقدة مفيدة للعديد من التطبيقات ، ولكن من غير المرجح أن تتولى عالم التزامن. الأحداث الأخيرة تظهر قيود
Node.js. ونعم ، هذا يجب أن يقنع الجميع باستخدام JavaScript فقط.
لقد وصفت دورة الأحداث بأنها "تواز للفقراء.
يحب أنصار
Node إظهار نفس الأمثلة للمؤسسات الكبيرة (PayPal و Netflix و Walmart و Uber ، إلخ) مرارًا وتكرارًا. ما لكل مثال
Node.js يمكن مقارنتها في الجواب؟ - المئات من الأمثلة
جافا ؟ أثبتت
جافا نفسها مرات لا تحصى لتطوير المشاريع. هذا هو السبب في أنه معيار الصناعة.
Node.js لم يثبت نفسه بعد. لا نعرف حقًا عدد الشركات التي حاولت استخدام
Node.js وتجاهلت عنها في النهاية. ليس لدينا أي فكرة عن معدل النجاح الحقيقي لمشاريع
Node.js. بالنسبة للمؤسسة ، لا يزال اختيار
Node.js يمثل مخاطرة.
أتوقع بثقة أن Go ستحل محل Node في المستقبل بمجرد أن تنمو نظامها البيئي من الأطر والحزم. مسارها لا يمكن إنكاره.
يمكن أن تتفوق لغات مثل
Go و
Erlang / Elixir بسهولة على
Node في معظم سيناريوهات التوافق. حتى نموذج الحدث / حلقة غير متزامن غير مستدام على المدى الطويل. يجب أن نكون مهتمين باستخدام لغات البرمجة المتوازية الحقيقية إذا كان هدفنا هو أقصى أداء. لماذا حل وسط مع
جافا سكريبت .
الأكاذيب # 3
جافا سكريبت هي لغة البرمجة الأكثر شعبية في العالم.هل هذا حقا هكذا؟ هناك
فرق كبير بين اللغة المستخدمة على نطاق واسع بشكل افتراضي واللغة المستخدمة على نطاق واسع.
تذكر أنه في أي مجال آخر باستثناء الإنترنت ، فإن المطورين ليسوا رهائن لغة واحدة. نحن نتجاهل هذه الحقيقة على مسؤوليتنا الخاصة.
تعد
JavaScript هي اللغة الأم الوحيدة لمتصفح الويب ، لذلك فهذه هي الطريقة الأكثر مباشرة لكتابة تطبيق المتصفح. ومع ذلك ، فإن معظم المطورين يحتقرون هذه اللغة ، وإذا كان لديهم حقًا اختيار أفضل ، فإنهم سيختارونها. يمكنك التحقق من ذلك بنفسك إذا كنت تبحث في الإنترنت (المنتديات ، والشبكات الاجتماعية ، ومواقع الويب ، وما إلى ذلك) للحصول على آراء الأشخاص في
JavaScript . هناك العديد من القوائم الطويلة من
WAT و
WTFs حول
JavaScript والتي لن تجدها لأي لغة أخرى باستثناء
PHP .
ما نعرفه بالتأكيد هو أن الويب شائع جدًا وليس جافا سكريبت .
لا تشير معظم مؤشرات تصنيف اللغات الرئيسية إلى أن
JavaScript هي لغة البرمجة الأكثر شعبية. ولا حتى المركز الثاني أو الثالث أو الرابع. وفقًا
لطيف IEEE (American Journal) - هذا هو المكان
رقم 8 ،
PYPL # 5 ،
TIOBE # 7 ،
CodeEval # 6 .
يستخدم Redmonk (شركة تحليلية) إحصائيات
Github ، والتي تُظهر عددًا كبيرًا للغاية
لجافا سكريبت ، وذلك بالتحديد لأن تطبيقات الويب المكتوبة بأي لغة يجب أن تحتوي على الأقل على بعض
JavaScript لتشغيلها في المتصفح ؛ لا توجد خيارات. لذلك ،
Redmonk غير قادر على إعطاء تصنيف موضوعي من الحالات الشاذة
JavaScript ؛ خلاف ذلك ، فإن اللغة الأكثر شعبية هي
جافا .
استطلاعات المستخدمين ، على سبيل المثال ، من StackOverflow ، تحتوي أيضًا على تحيز مماثل في التحديد. كيف يمكننا أن نقول أن
جافا سكريبت هي لغة شائعة عندما لا يكون لدينا خيار سوى استخدامها وحدها؟ (لحسن الحظ ، المترجمون متاحون لنا).
يجب أن نتذكر أنه بالنسبة للمناطق الأخرى (على سبيل المثال ، خوادم الشبكة والألعاب والرسومات والجوال وسطح المكتب وما إلى ذلك). هناك مجموعة واسعة في اختيار لغة البرمجة. تطبيقات الويب فريدة للغاية. (على الأقل حتى يتم إصدار WebAssembly أخيرًا.)
حقيقة
اسمحوا لي أن أكون واضحا للغاية:
جافا سكريبت ليست لغة برمجة جيدة لتطوير البرمجيات . تم تصميم
JavaScript ليكون لغة برمجة نصية وخفيفة الوزن لمتصفح الويب. على هذا النحو ، تم جعلها مرنة ومرنة للغاية ، مع كتابة ضعيفة. لا يحتوي حتى على نوع عدد صحيح أو نوع صفيف الصحيح. ما هي اللغة هذا؟
الكتابة الضعيفة ، هذا هو كعب أخيل في لغة البرمجة التي تم تطوير البرامج بها. على الرغم من أن هذا يجعل كتابة البرامج النصية البسيطة سريعة لمستعرض الويب أمرًا سهلاً للغاية ، إلا أنه يعمل ضدك عندما تكتب تطبيقات كبيرة تتطلب الأمان والموثوقية. هذا هو السبب في أن معظم اللغات الرئيسية عادة ما تكتب بقوة (لا يجب الخلط بينها وبين تلك المكتوبة بشكل ثابت). وهذا مهم جدا جدا!
يُظهر التصنيف الضعيف والإكراه التعسفي الناتج عدم وجود انضباط لغوي كامل. هذا ما يفسر معظم قائمة
WATs و
WTFs.ولدت بواسطة جافا سكريبت. (علاوة على ذلك ، يقدم المؤلف روابط لمصادر عبر الإنترنت ، حيث يتم توفير قائمة بثور
JavaScript ).