فلسفة يونكسفلسفة يونكس، أصلها من أعمال كين ثومبسون، وهي مجموعة من المبادئ الثقافية والمناهج الفلسفية لتطوير برامج حاسوب بسيطة ونمطية تعتمد هذه الفلسفة على خبرة خبرات كبار المطورين الطلائعيين لنظام تشغيل يونكس. كان لمطوري يونكس الأوائل دورٌ هام في إدخال مفاهيم النمطية وإعادة الاستخدام في ممارسة هندسة البرمجيات، مما أدى إلى ظهور حركة "الأدوات البرمجية". تؤكد فلسفة يونكس على بناء برامج صغيرة، بسيطة، نظيفة وعلى شكل وحدات، وقابلة للتطوير والتوسيع يسهل صيانتها وتعديل الغاية منها من قبل مطورين غير أولئك الذي كتبوها. بمرور الوقت، وضع كبار مطوري يونكس (والبرامج التي تعمل عليه) مجموعة من المعايير الثقافية لتطوير البرمجيات. أصبحت هذه المعايير بنفس أهمية وتأثير تقنية يونكس نفسها، وأُطلق عليها اسم "فلسفة يونكس". تُشدد فلسفة يونكس على بناء كود برمجي بسيط ومختصر وواضح ونمطي وقابل للتوسيع، بحيث يسهل صيانته وإعادة استخدامه من قبل مطورين آخرين غير أولئك الذين قاموا بإنشاءه. تُفضل فلسفة يونكس قابلية التركيب والتجميع بدلاً من التصميم المتكامل الضخم. المنشأتتمثل فلسفة يونكس كما وثقها دوغلاس ماكلروي في مجلة بيل سيستم التقنية عام ١٩٧٨ في الآتي:[1]
وقد لخصها لاحقًا بيتر إتش. سالوس في "ربع قرن من يونكس" عام ١٩٩٤م في الآتي:[2]
في ورقة يونكس الخاصة بهما عام ١٩٧٤م، اقتبس ريتشي وثومبسون اعتبارات التصميم التالية:[3]
الأجزاءبيئة برمجة يونكسفي مقدمتهما لكتابهما الصادر عام ١٩٨٤ بعنوان "بيئة برمجة يونكس"، قدم كل من برايان كيرنيغان وروب بايك، وهما من مختبرات بل، وصفًا موجزًا لتصميم وفلسفة يونكس:[4] «بالرغم من أن نظام يونكس يقدم عددًا من البرامج والتقنيات المبتكرة، إلا أنه لا توجد برنامج أو فكرة واحدة تجعله يعمل بشكل جيد. بدلاً من ذلك، ما يجعله فعالاً هو طريقة التعامل مع البرمجة، وهي فلسفة استخدام الحاسوب. على الرغم من أن هذه الفلسفة لا يمكن كتابتها في جملة واحدة، إلا أن جوهرها هو فكرة أن قوة النظام تأتي من العلاقات بين البرامج أكثر من البرامج نفسها. تقوم العديد من البرامج على يونكس بأشياء بسيطة للغاية بشكل منفرد، ولكن عند دمجها مع برامج أخرى، تصبح أدوات عامة ومفيدة.» وكتب المؤلفان أيضًا أن هدفهما من هذا الكتاب هو "نقل فلسفة برمجة يونكس".[4] تصميم البرامج في بيئة يونكسفي أكتوبر عام ١٩٨٤، نشر كل من برايان كيرنيغان وروب بايك ورقة بحثية بعنوان "تصميم البرامج في بيئة يونكس". في هذه الورقة، انتقدوا التراكم المتزايد لخيارات وميزات البرامج الموجودة في بعض أنظمة يونكس الحديثة مثل 4.2BSD و System V، وشرحوا فلسفة يونكس لأدوات البرمجيات، حيث تؤدي كل أداة وظيفة عامة واحدة:[5] «تأتي قوة نظام التشغيل يونكس في جزء كبير منها من أسلوب تصميم البرامج الذي يجعل استخدام البرامج سهلًا، والأهم من ذلك، سهولة دمجها مع برامج أخرى. يُطلق على هذا الأسلوب استخدام "أدوات البرمجيات"، ويعتمد بشكل أكبر على كيفية ملاءمة البرامج لبيئة البرمجة وكيفية استخدامها مع برامج أخرى بدلًا من كيفية تصميمها داخليًا. [...] اعتمد هذا الأسلوب على استخدام "الأدوات": استخدام البرامج بشكل منفصل أو مجتمعة لإنجاز مهمة ما، بدلًا من القيام بذلك يدويًا، أو بواسطة أنظمة فرعية متجانسة مكتفية ذاتيًا، أو بواسطة برامج خاصة مصممة لغرض واحد فقط.» يقارن المؤلفان أدوات يونكس مثل الأمر «يُعد تصميم الأمر cat نموذجيًا لمعظم برامج يونكس: فهو يُنفذ وظيفة بسيطة ولكنها عامة يمكن استخدامها في العديد من التطبيقات المختلفة (بما في ذلك العديد من التطبيقات التي لم يتخيلها المؤلف الأصلي). تُستخدم أوامر أخرى لوظائف أخرى. على سبيل المثال، هناك أوامر منفصلة لمهام نظام الملفات مثل إعادة تسمية الملفات أو حذفها أو تحديد حجمها. بدلًا من ذلك، تجمع أنظمة أخرى هذه المهام في أمر "نظام ملفات" واحد بهيكل داخلي ولغة أوامر خاصة به. (يُعد برنامج نسخ الملفات Peripheral Interchange Program الموجود في أنظمة تشغيل مثل CP/M أو RSX-11 مثالًا على ذلك). هذا النهج ليس بالضرورة أسوأ أو أفضل، ولكنه بالتأكيد يتعارض مع فلسفة يونكس.»
إفعل شيئاً واحداً وأتقنهكما ذكر ماكلروي، وهو مبدأ مقبول عمومًا في مجتمع يونكس، يُفترض دائمًا أن تتبع برامج يونكس مفهوم "اِفْعَلْ شَيْئًا وَاحِدًا وَأَتْقِنْهُ" (Do One Thing And Do It Well - DOTADIW). توجد مصادر محدودة للاختصار DOTADIW على الإنترنت، لكن يُناقَش هذا المفهوم بإسهاب خلال تطوير وتعبئة أنظمة التشغيل الجديدة، خاصةً في مجتمع لينكس. استشهد باتريك فولكردينغ، قائد مشروع سلاكوير ، بمبدأ التصميم هذا في انتقاد لبنية systemd، حيث ذكر أن "محاولة التحكم في الخدمات والمآخذ والأجهزة ووحدات التخزين، إلخ، كلها داخل عملية كبرنامج خفي (daemon) واحدة تتعارض مع مفهوم يونكس المتمثل في فعل شيء واحد وإتقانه." قواعد يونكس السبعة عشر لإريك ريموندفي كتابه "فن برمجة يونكس" الذي نُشر لأول مرة عام ٢٠٠٣، لخص إريك إس. ريموند (المدافع عن المصادر المفتوحة والمبرمج) فلسفة يونكس بمبدأ "اجعلها بسيطة، يا غبي". وقدم سلسلة من قواعد التصميم:
ملاحظات بايك حول البرمجة بلغة Cيقترح روب بايك القواعد التالية كمبادئ أساسية للبرمجة، ومع ذلك، يمكن اعتبارها أيضًا أفكارًا جوهرية لفلسفة يونكس:[6]
تُكرر القاعدتان 1 و 2 المبدأ الشهير لدونالد إي. كنوث: "التحسين المُبكر هو أصل كل شر". صاغ كين تومبسون القاعدتين 3 و 4 على أنهما "استخدم القوة الغاشمة عند الشك"؛ هذه القواعد هي أمثلة على مبدأ KISS (اجعلها بسيطة، أيها الغبي). القاعدة 5 مأخوذة من فريد بروكس، الذي ذكرها في كتاب "أسطورة الشهر-الرجل" وغالبًا ما تُصاغ على أنها "اكتب كودًا غبيًا يستخدم بيانات ذكية". القاعدة 6 مأخوذة من مسرحية بروس من مونتي بايثون فلاينج سيركس (الحلقة 22). مايك جانكارس: فلسفة يونكسفي عام ١٩٩٤، نشر مايك جانكارس، العضو في فريق هندسة يونكس في شركة ديجيتال إكوبمينت كوربوريشن (UEG)، كتاب "فلسفة يونكس" بناءً على تجربته في تطوير نظام (Ultrix) في شركة DEC في الثمانينيات ومناقشاته مع زملائه. وهو أيضًا عضو في فريق تطوير نظام النوافذ X ومؤلف مدير نوافذ Ultrix (uwm). يركز الكتاب على نقل نظام يونكس إلى أجهزة كمبيوتر مختلفة خلال "حروب يونكس" في الثمانينيات ويصف فلسفته التي تنص على أن قابلية النقل يجب أن تكون أكثر أهمية من كفاءة استخدام واجهات غير قياسية للأجهزة وأجهزة الرسوميات. المبادئ الأساسية التسعة التي يرى أهميتها هي:
مبدأ "الأسوأ أفضل"يرى ريتشارد بي. غابرييل أن إحدى المزايا الرئيسية لنظام يونكس كانت تجسيده لفلسفة تصميم أسماها "الأسوأ أفضل"، حيث تكون بساطة كل من الواجهة والتنفيذ أكثر أهمية من أي سمات أخرى للنظام - بما في ذلك صحة واتساق واكتمال المخرجات. يرى غابرييل بأن نمط التصميم هذا له مزايا تطورية رئيسية، على الرغم من أنه يشكك في جودة بعض النتائج. على سبيل المثال، في الأيام الأولى، استخدم يونكس نواة متجانسة (مما يعني أن عمليات المستخدم نفذت استدعاءات نظام النواة جميعها على مكدسة المستخدم). إذا تم إرسال إشارة إلى عملية أثناء حظرها على إدخال/إخراج طويل الأجل في النواة، فإن التعامل مع الموقف كان غير واضح. لا يمكن تنفيذ معالج الإشارة عندما تكون العملية في وضع النواة، مع وجود بيانات حساسة للنواة على المكدس. مكإلوري: ربع قرن من يونكسدوجلاس مكإلوري، لخص فلسفة يونكس، عندما كان رئيسا لمختبرات بيل ومشاركا في تطوير «انابيب يونكس»[7] بالآتي:[8] «هذه فلسفة يونكس: اكتب برامج تفعل شيئا واحدا وتفعله بشكل جيد. اكتب برامج تعمل مع بعضها البعض. اكتب برامج تتعامل مع دفقات نصّية لأن ذلك هو نسق الواجهات العالمي»
روابط خارجية
مصادر
|