هذا المقال مترجم عن Vanilla JS doesn't scale، المنشور . وقد نشرت هذه الترجمة أيضا في مجتمع أسس.
شارك أحد طلابي أمس هراءً منشورا في تويتر عن شكوى الناس من أن البرمجة بجافاسكربت المحضة غير قابلة للتوسع، وأنها تعني إعادة اختراع الأشياء من البَدء، وغير ذلك.
أردت اليوم توضيح لماذا كل ذلك هذيان لا يعتد به.
لنبدأ!
# ما معنى قابلية التوسع؟
من الناس من يعني بها أن «التطبيق يستطيع التعامل مع طلبات كثيرة في وقت واحد». فإنهم يظنون أن جافاسكربت المحضة أضعف من ريأكت (React) في فعل هذا.
ومنهم من يظن أن استعمال ريأكت للنموذج الوهمي لكائنات المستند (virtual DOM) يجعلها أسرع من «النموذج الحقيقي لكائنات المستند»، ولا يدركون أن على ريأكت أن تتعامل مع هذا النموذج الحقيقي نفسه عاجلا أو آجلا.
ومنهم من يقول أن «المكتبة تفرض عليك أنماطا تسهّل كتابة التطبيقات ورعايتها».
لعل من المحتمل أن ربما قد يكون هذا صحيحا. لكن… اسأل ثمانية مبرمجي ريأكت كيف يتعاملون مع مشكلة معينة، يُجيبوك ثماني إجابات مختلفة. بل إن المكتبة نفسها غيرت رأيها ثلاث مرات أو أزيد بخصوص إدارة المصدر البرمجي عند التوسع. معظم المصادر البرمجية القائمة منذ زمن وتستعمل هذه المكتبة، تجدها فوضى متشابكة من الأنماط.
وليست الأنماط جيدة إلا بقدر التزام المبرمجين باستعمالها بدقة وأمانة.
# ستعيد اختراع بعض الأشياء…
كل مشروع، سواء بنيته بمكتبة أو بغيرها، يحتاج كتابة أجزاء مخصصة.
يبدو أن الكثيرين يؤمنون واهمين أن «جافاسكربت المحضة» تعنى «اكتب التطبيق بكامله من اللاشيء»؛ هذا لغوٌ محال.
إني أستعمل المكتبات طوال الوقت. أختارها بعناية وأنظر كيف تعمل. أوثر المكتبات التي لا تعتمد على مكتبات أخرى (هذا ما يجعلها «محضة»)، والتي فعلا تراعي الوصولية (accessibility).
أحيانا لا أجد الأداة المناسبة، فعندئذٍ أبنيها بنفسي.
أعجز عن فهم لما هذا أسوأ من استعمال مكوِّن جاهز قد لا يراعي الوصولية، أو يفعل أزيد مما تريد، أو يفرض عليك تثبيت مكتبة أخرى ليعمل.
# كل مكتبة مشهورة كانت مشروعا مدللا
من يظنون أن جافاسكربت المحضة تعني إعادة اختراع كل شيء، يتناسون أن كل مكتبة يحبونها كانت في البَدء مشروعا مدلّلًا عند صاحبها، بجافاسكربت المحضة.
كانت Angular موجودة عند إنشاء React. كانت React موجودة عند إنشاء Vue. كانت Vue موجودة عند إنشاء Preact و Solid.
كانت NextJS و Veux موجودتان عندما أنشأ Rich Harris مكتبة Svelte. وكانت Svelte معروفة عند إنشاء Astro.
وما إن تكتسب المكتبة عزمًا، تجد أولئك المستهزئين بجافاسكربت الأصيلة يسكتون عن إعادة اختراع الأشياء.
# منصة الوب تفعل الكثير حقا
تأتي هذه الردود غالبا من الذين لا يعرفون أدني شيء عن استعمال منصة الوب أي متصفحات الوب أي الوب الأصيل.
قابلت أقواما من المبرمجين الذين اجتازوا معسكرات برمجية (Bootcamps)، لم يتعلموا فيها سوى ريأكت، ولا يعرفون أدني شيء عن مقدار ما يعتمدون على ريأكت في فعله والمتصفح يفعله لهم بغير مكتبة.
هذا فشل المجال بقدر ما هو فشل الأفراد.
شركات مفترسة تنقضّ على الذين لا يعلمون شيئا، فتأخذ منهم أموالا طائلة وتعدهم أن يعملوا بعد ستة أشهر في وظيفة بمئات الآلاف شهريا، ثم لا يعلمونهم إلا أسرع طرق البرمجة وأكسلها.
إن الأمر مثل مدرسة فنية تخرّج بنّائين لا يعرفون شيئا عن قوانين البناء. لكن هذا يحدث عندنا لأن مجالنا يفتقر إلى التنظيم المهني والاعتماد.
# لذا…
ما أود قوله أن البرمجة بجافاسكربت المحضة قابلة للتوسع، وأنها ليست إعادة اختراع لكل شيء، وأن كل من يقول غير هذا لا يعرف أدنى شيء عما يقول.
(الصورة إضافة المترجم وتصميمه، بخط Ubuntu Arabic، وخلفيتها من sttimm على pixabay.com.)