كثير من المطورين يتساءلون عن الاختيار الأنسب بين WSL وPowerShell عند التعامل مع سطر أوامر Windows. الفرق لا يقتصر على واجهة مختلفة فقط، بل يمتد ليشمل طريقة تنفيذ الأوامر وإمكانية تشغيل أدوات Linux بشكل مباشر داخل Windows. هذا الدمج بين بيئتين يفتح المجال لتجربة مرنة وأكثر قوة، وهو ما جعل WSL يتفوق لدى العديد من المستخدمين الذين يبحثون عن سرعة وأداء متكامل مع أدوات التطوير الحديثة.
في نظام ويندوز، عندما أريد سطر أوامر، يُمكنني الاختيار بين PowerShell الأصلي أو تثبيت نظام ويندوز الفرعي لنظام لينكس. أُفضّل الخيار الأخير عند استخدام ويندوز. لهذا السبب أستخدم واجهة لينكس بدلاً من PowerShell.
أصبحتُ أكثر درايةً بنظام Linux.
أحد أسباب تمسكي باستخدام WSL على نظام ويندوز، لدرجة أنني أُثبّته على كل جهاز ويندوز جديد أشتريه، بدلاً من PowerShell، هو أنني أجد نموذج لينكس ويونكس أكثر ألفةً. كنت أستخدم نظام MS-DOS في التسعينيات، وكنت أستخدم موجه الأوامر أحيانًا في الإصدارات الأقدم من ويندوز، ولكن فيما يتعلق بسطر الأوامر، كان يونكس هو من أسر خيالي، بأوامره الغريبة ls وpwd وcd.
بدأت هذه الرحلة، على نحوٍ غريب، على نظام ماك، الذي كان ولا يزال المنصة الرائدة لإنشاء الوسائط عندما كنتُ أدرس الاتصالات. في أحد الأيام، قررتُ استكشاف طرفية macOS، أو بالأحرى Mac OS X. هناك تعلمتُ كيفية التنقل بين المجلدات وإنشاء الملفات في Vim. يبدو أنني من القلائل الذين يعرفون كيفية الاستفادة من Vim. أو على الأقل سأفعل ذلك لو أردت.
متسلحًا بمعرفتي بنظام يونكس، أخرجتُ قرص Knoppix وشغّلته سريعًا، إذ تمكنتُ أخيرًا من توصيله بالإنترنت بعد توصيله بجهاز توجيه Airport (نعم، كانت Apple تُصنّع أجهزة التوجيه، وقد أدخلت تقنية Wi-Fi عمليًا في مطلع الألفية). قادني هذا إلى استكشاف توزيعات لينكس، مما دفعني في النهاية إلى الكتابة لـ HTG.
معرفتي بنظامي لينكس ويونكس قيّمة جدًا ولا أضيعها في تعلم شيء مختلف تمامًا عن واجهات سطر الأوامر الأخرى.
يبدو PowerShell غريبًا.
لم أتمكن قط من فهم PowerShell بشكل كامل. يبدو أنه يحاول أن يكون مختلفًا جذريًا عن نموذج يونكس ولينكس التقليدي. في لينكس، تعمل على نص خالص. يمكن إعادة توجيه إدخال النص وإخراجه إلى برامج وملفات أخرى. هذا ما يمنح أسلوب يونكس في البرمجة قوته، وهو جزء أساسي من “فلسفة يونكس”.
على النقيض من ذلك، صُمم PowerShell ليكون “كائني التوجه”. عند كتابة خط أنابيب في PowerShell، فإنك تعمل على كائن بدلاً من مجرى نصي.
لطالما بدت صياغة سطر الأوامر مطولة بعض الشيء بالنسبة لي. أُقدّر حقًا قيام مايكروسوفت بـ”تضمين” بعض الأوامر الشائعة في أوامر أقصر لنظامي MS-DOS ويونكس. يبدو أن مايكروسوفت ربما أدركت أن هذه قد تكون مشكلة أيضًا.
Linux لديه المزيد من اهتمامات المطورين
لم يأسر لينكس، أو بالأحرى يونكس، خيالي فحسب، بل أسر خيال بقية مجتمع المطورين. إذا اطلعت على أي كتاب برمجة، فمن المرجح أنك ستستخدم بيئة شبيهة بيونكس. ستكون هذه بيئة تثبيت إما Linux أو ماك أو إس. اقرأ مقالات على موقع Hacker News. غالبًا ما تبدأ شذرات سطر الأوامر بعلامة “$”، التي تشير إلى موجه المستخدم الافتراضي لمعظم واجهات برمجة التطبيقات الشبيهة بيونكس، إذا لم تكن “#” (علامة التجزئة)، مما يدل على أن الأمر مُصمم ليتم تشغيله كمستخدم خارق. أنظمة يونكس الشبيهة، بما في ذلك ماك أو إس وأوبونتو وأنظمة لينكس الأخرى، مرغوبة بشدة في استطلاع Stack Overflow للمطورين.
انظر إلى جهاز الكمبيوتر المحمول الخاص بالمطور، وستجده يُشغّل إما نافذة طرفية لنظام ماك أو نوع من واجهات برمجة تطبيقات لينكس. لهذا السبب أنشأت مايكروسوفت WSL في المقام الأول: إن نموذج يونكس شائع بين المبرمجين. هذا ما يتعلمه المطورون في فصول علوم الحاسوب في الجامعة. هذا ما يبنون عليه مشاريعهم في أوقات فراغهم. لقد اكتسب جيل من المطورين خبرة واسعة في استخدام أدوات مفتوحة المصدر تعمل على لينكس، ولا يهتمون بالبرمجة على أدوات .NET.
عندما يُنشئ المطورون مشروعًا في العالم الحقيقي، على ماذا سيبنونه، لينكس أم باورشيل؟ من البديهي أن الخيار الأول سيكون متاحًا. لهذا السبب، حتى على ويندوز، أُكرّس جهدي لتعلم لغة برمجة WSL.
إذا أردتُ متابعة كتاب أو برنامج تعليمي لتعلم لغة برمجة أو أداة جديدة، فأنا واثق من أنه إذا أردتُ ذلك على ويندوز، فسأتمكن من تشغيل نافذة WSL ومتابعة البرنامج. لست متأكدًا من إمكانية ذلك من خلال نافذة PowerShell.
Linux يبدو أكثر قابلية للنقل
في حين تُؤكد مايكروسوفت أن PowerShell برنامج متعدد المنصات، وأنها مفتوحة المصدر ومتاحة على لينكس، إلا أنه ليس من الواضح لماذا قد يرغب أي شخص في استخدام PowerShell على نظام لينكس.
تتميز واجهات لينكس بميزة تثبيتها مسبقًا على توزيعات لينكس. مع PowerShell، يجب تثبيته بشكل منفصل عن النظام. إذا قامت أي توزيعة لينكس بدمجه كواجهة افتراضية، فسأكون سعيدًا باختباره ومراجعته لمقال قادم.
حتى على نظام ويندوز، الذي يبدو أنه يُفضّل PowerShell، يُمكنني الحصول على واجهة لينكس. هذا صحيح منذ سنوات قبل توفر WSL. استطاعت Cygwin وMinGW وUWIN توفير إمكانيات تُشبه يونكس على ويندوز. لم يُبذل جهد كبير لنقل موجه الأوامر إلى لينكس.
بفضل معرفتي بسطر أوامر لينكس، يُمكنني تشغيل الأوامر من تلقاء نفسي، بل وحتى تشغيل البرامج النصية، دون الحاجة إلى تعديلها. لا يُمكنني قول الشيء نفسه عن العكس.
معظم برامج سطر الأوامر تُركّز على Linux أولاً.
نتيجةً لهيمنة لينكس على عقول المطورين، يبدو أن أدوات سطر الأوامر الجديدة تُكتب أولاً لأنظمة شبيهة بيونكس، وخاصةً لينكس. هذا ليس مُستغربًا بالنظر إلى عدد الخوادم التي تعمل بنظام لينكس.
لا تزال الخوادم الجديدة، والمُفسّرات، ومُصحّحات الأخطاء، والمُحرّرات، وعملاء IRC تُكتب لينكس. ويبدو أنها تشقّ طريقها ببطء إلى ويندوز عبر PowerShell. وعندما تصل إلى ويندوز، فعادةً ما يكون ذلك عبر WSL. ومن المُرجّح أن يكون هناك سبب تقنيّ لذلك. لسنواتٍ عديدة، افتقر ويندوز إلى وحدة تحكم وهمية حقيقية، مما جعل نقل العديد من التطبيقات الشائعة القائمة على الطرفية إلى ويندوز أمرًا صعبًا. كان مشروع WSL هو الدافع لإنشاء هذا البرنامج الحيوي أخيرًا على لينكس، وفقًا لمنشورٍ على مدونة مايكروسوفت.
أستخدم WSL لأنه يُتيح لي الوصول إلى الأدوات التي أعتمد عليها بسهولة.
تُصنّف مايكروسوفت PowerShell في المقام الأول كأداة لمسؤولي تكنولوجيا المعلومات لإدارة أجهزة سطح المكتب والخوادم، وليس كوسيلة لتشغيل البرامج الفعلية في الطرفية، مع أنها قطعت شوطًا كبيرًا بإضافة أدوات مثل OpenSSH إلى تثبيت ويندوز الافتراضي.
أستطيع إدارة ويندوز من Linux
بينما تدّعي مايكروسوفت أن PowerShell هو الوسيلة الأمثل لإدارة ويندوز من سطر الأوامر، لدرجة أنها استبدلت به موجه الأوامر القديم، إلا أنني أستطيع القيام بالعديد من المهام التي قد أستخدم PowerShell لأجلها من خلال تثبيت WSL.
تتيح تثبيتات WSL إمكانية الوصول إلى نظام ويندوز من لينكس من خلال مجلد /mnt. هذا يعني أنه بالنسبة لتثبيت ويندوز الرئيسي على محرك الأقراص C:\، يمكنني تشغيل جميع أدواتي المفضلة من لينكس على مجلدات وملفات ويندوز. لا داعي للتعامل مع غرابة PowerShell. يمكنني أيضًا تشغيل برامج ويندوز العادية من سطر أوامر لينكس.
يمكنني القيام بذلك باستخدام جميع أدواتي المفضلة وبرامج لينكس التي تعرفت عليها على أنظمة أخرى، مع الاستمرار في تشغيل تطبيقات شائعة مثل الألعاب من ويندوز. صحيح أن هناك المزيد من الألعاب على لينكس، وبروتون يواصل التطور، ولكن سيظل هناك بعض المطورين المتأخرين الذين لا يكترثون بكتابة “make” من أجهزتهم الطرفية.
بما أنني أكثر درايةً بـ WSL كمستخدم قديم لأنظمة شبيهة بيونكس، فسأستخدمه بدلاً من PowerShell عند استخدامي لنظام ويندوز. ربما يعود ذلك إلى مجرد معرفة سابقة، ولكن مع انتشار لينكس في عالم التكنولوجيا، من المرجح أن أكون على دراية جيدة به.
الانتقال إلى WSL لا يعني التخلي عن PowerShell تماماً، لكنه يمنح المطورين خيارات أوسع وأدوات أقوى للتعامل مع المشاريع الحديثة. اختيار البيئة المناسبة يعتمد على طبيعة عملك، لكن تجربة WSL تكشف بسرعة لماذا أصبح الخيار الأول للكثير من المطورين.