أنظمة التشغيل اليوم ومشاكلها

two-toed-slothوصلت لمقال يتحدث عن وضع أنظمة التشغيل اليوم، إن كنت تتابع ما أكتبه في مدونتي السابقة ستعرف أنني مهتم بالموضوع وأجد أنظمة التشغيل اليوم غير كافية ويمكن تحسينها بطرق مختلفة.

المقال وصلت له من خلال موقع هاكر نيوز، والنقاش هناك مفيد لكنه سلبي في رأيي، على إعجابي بموقع هاكرنيوز إلا أنه سلبي بدرجة كبيرة عندما يتعلق بمواضيع ناقدة للحواسيب وأنظمتها، كثير من المعلقين يركزون على ما هو خطأ أو غير منطقي وينسون ما هو صحيح ومنطقي، ولست أدعو إلى تجاهل الأخطاء وعدم نقدها، شيء من التوازن مطلوب لكي تجد الأفكار الجديدة والمختلفة فسحة وفرصة لكي تعيش.

وإليك ما يمكن أن يتفق عليه أكثر محبي التقنية: أنظمة تشغيل سطح المكتب يمكنها أن تتطور كثيراً لكن الشركات المسؤولة عن ذلك لا تهتم لأن السوق الواعد والرابح أكثر لها هو سوق الهواتف، وبالتالي من الطبيعي ألا ترى تطورات كثيرة في سطح المكتب، ومن ناحية أخرى البعض يرى أن أنظمة سطح المكتب بصورتها الحالية لا مشكلة فيها ولا تحتاج لأي تطوير جذري.

أعود إلى المقال، هناك أفكار أتفق معها:

أنظمة تشغيل سطح المكتب ثقيلة، هذه نقطة تبدو واضحة لي، أذكر كلمة لألن كاي يقول فيها أن ويندوز لوحده يحوي ما يقرب من 300 مليون سطر برمجي، أضف إليها 300 مليون سطر آخر لحزمة البرامج أوفيس، كل هذا سيستخدمه شخص ما لكتابة وثيقة بسيطة يرسلها بالبريد لشخص آخر أو يطبعها، هل هذا التعقيد كلها ضروري لإنجاز هذه المهمة؟ بالطبع أوفيس وويندوز يقدمان خصائص أكثر من مجرد كتابة وثيقة، لكن هذا ليس عذر هنا، عندما يتمكن الباحثون من تطوير نظام يمكنه تقديم نفس الخصائص بعدد أسطر برمجية أقل بكثير فليس هناك عذر للشركات.

وبالطبع لا أستثني مجتمع البرامج الحرة فأسطح المكتب جنوم وكيدي ثقيلة الوزن كذلك، لكن في مجال البرامج الحرة هناك خيارات أخرى أخف وزناً وهناك نسخ من توزيعات لينكس مصممة لكي تعمل على حواسيب قديمة.

هناك طبقات عديدة بين البرنامج والحاسوب، بعض تطبيقات اليوم التي تستخدم تقنيات الويب تستخدم محرك متصفح مع حزمة برمجة بتقنية جافاسكربت، بمعنى محركي جافاسكربت لتطوير تطبيقات سطح مكتب قابلة للتشغيل في أنظمة مختلفة، لكنها تطبيقات ثقيلة وكبيرة الحجم، نفس هذه التطبيقات يمكن أن تطور باستخدام تقنيات أنظمة التشغيل لتكون أكثر سرعة وكفاءة لكن ستخسر قابلية التشغيل على أنظمة أخرى، إلا إن طور المبرمج نسخاً لكل نظام تشغيل.

تطوير أنظمة سطح المكتب توقف، مطوري أنظمة التشغيل بسطوا الأنظمة لتصل إلى أكبر عدد من الناس ثم انتقل الناس إلى الهواتف الذكية كسوق جديد واعد فتوقفت الشركات عن تطوير أنظمة سطح المكتب، هذا ليس صحيح كلياً، ما زالت الأنظمة تطور لكنها تطويرات بسيطة مقارنة بما فعلته مايكروسوفت وأبل في التسعينات وأوائل الألفية الجديدة.

لا يمكن وضع ملف في مكانين أو أكثر، ولكي أكون أكثر دقة: ليس هناك طريقة عملية لوضع ملف في مكانين أو أكثر ولا تحتاج لبرنامج من طرف ثالث، أعلم أن الأنظمة الثلاثة توفر طريقة لفعل ذلك لكنها كلها غير عملية.

التطبيقات جزر معزولة عن بعضها البعض، التطبيقات تستخدم قواعد بيانات خاصة بها وملف إعدادات خاص ومحرك بحث لمحتوياتها، هناك كثير من تكرار الخصائص بين التطبيقات بدلاً من توفيرها على مستوى النظام ولكل المحتويات، التطبيقات لا يمكنها التواصل مع بعضها البعض.

قاعدة بيانات الوثائق، خاصية يريد رؤيتها كاتب المقال، وهي أن تكون كل المحتويات في قاعدة بيانات ويمكن لكل التطبيقات استخدام هذه القاعدة بدلاً من إنشاء قاعدة بيانات خاصة لكل تطبيق، المطور لا يحتاج تطوير قاعدة بيانات خاصة لتطبيقه، بل فقط التواصل مع واحدة يوفرها نظام التشغيل، بهذه الطريقة يمكن لتطبيقات عديدة أن تصل لبيانات مختلفة بسهولة، يمكن تطوير تطبيقات تتعامل مع البيانات على اختلافها، ويمكن للوثيقة الواحدة أن تكون في أكثر من مكان واحد في نفس الوقت.

التطبيقات يجب أن تكون وحدات مستقلة، ترسل الرسائل في ما بينها لإنجاز مهمات مختلفة، الكاتب استخدم كلمة “Modules” وترجمتها إلى وحدة، جزء واحد وفي الغالب ينجز عملاً واحداً، ويمكن جمع هذه الأدوات لصنع تطبيقات مختلفة، تطوير التطبيقات سيكون أكثر سهولة بهذه الطريقة لأن هناك أجزاء كثيرة جاهزة ويمكن استخدامها ومصدر البيانات موحد بين كل هذه الأجزاء.

نظام سطر أوامر حديث، سطر الأوامر واجهة قوية لكنها نصية في الغالب، كاتب المقال يريد واجهة رسومية يمكنها التعامل مع تقنيات اليوم وحقيقة أن حواسيبنا متصلة بالشبكة، أبل طورت مثل هذا النظام لكنها توقفت لاحقاً عن تطويره.

كل هذه الأفكار وغيرها قديمة، مع ذلك لا نجدها في أنظمة اليوم، لأن التغيير صعب أو حتى مرفوض في بيئة تتقبل ما لديها وتراه جيداً كفاية، كذلك لأنه لا يوجد ربح من مخاطرة كبيرة بكسر التوافق مع تطبيقات وبيانات الماضي لبناء شيء جديد أكثر كفاءة.

شخصياً استفدت من بعض هذه الأفكار، على الأقل أجد أن فكرة التطبيقات يمكنها أن تكون عملية إن صممت بالطريقة التي يذكرها المقال، ويمكن للنظام أن يبدو كأنظمة اليوم ويعمل بطريقة مختلفة تقنياً، بمعنى أنه يوفر واجهة مماثلة فيها تطبيقات وملفات لكنه يستطيع تقديم الكثير.

نقطة أخرى وهي أن أنظمة اليوم صممت لتناسب معظم الناس، وهذا يعني أن تكون سهلة ومبسطة حتى يستخدمها الجميع، بما في ذلك المحترفون والأشخاص الذين يقضون معظم ساعات اليوم في تصفح فايسبوك، وهذه مشكلة، الأنظمة لم تصمم لكي تكون مرنة ويستطيع الفرد منا أن يجعلها بيئة تحوي الأدوات التي يحتاجها فيكون حاسوب الشخص الذي يتصفح فايسبوك مختلفاً عن حاسوب شخص محترف في البرمجة أو التصميم، المحترف سيحوي حاسوبه أدوات تناسبه بحسب ما يحتاج، هذا صحيح نسبياً اليوم لكن الأدوات هنا هي تطبيقات كبيرة مثل فوتوشوب وبيئات تطوير البرامج.

5 أفكار على ”أنظمة التشغيل اليوم ومشاكلها

  1. اطلعت على المقالة و يبدو أن الكاتب مهتم جداً بإحداث تطوير على أنظمى التشغيل الحالية. في الواقع كثير من مشكلات أنظمة التشغيل الحالية لا يمكن حلها هكذا، ببساطة. حتى أوضح رأيي ككل، أقسمه على فقرات منفصلة.
    كثرة الأسطر البرمجية: هذا شر لا بد منه، لاحظ أن مهمة نظام التشغيل الرئيسة هي جعل التعامل مع العتاد أسهل. يمكنك بلا شك الاستغناء عن نظام التشغيل، لكنك في هذه الحالة ستضطر لتعلم البرمجة بنظام العد السداسعشري hexadecimal (حرفياً). في الوضع الحالي، يوجد لدينا أنواع مختلفة مع العتاد (مختلف المعالجات باختلاف وضيفتها و الشاشات و أبعادها و الذواكر بأنواعها هي الأخرى) و كل هذا بحاجة لتعريفات من أجل العمل، و التعريف لنوع واحد يتطلب آلاف الأسطر البرمجية. واجهات لينكس الخفيفة تعيسة، دائماً بها نواقص، و هذذا موضوع آخر يطول لو ناقشناه. أبل حلت المشكلة في نظام iOS بعمله على نوع واحد من المعالجات المركزية هو Apple A series و المعالجات الرسومية تحديداً PowerVR و حتى مقاسات الشاشات لها أبعاد محددة و محدودة. نفس الفكرة لدى مايكروسوفت مطبقة في ويندوز فون 7 فهو لا يعمل سوى على رقاقات Snapdragon و الهواتف دقة الشاشات فيها 800 طول و 480 عرض.
    وجود طبقات عديدة: واقع الأمر هذه المشكلة موجودة فقط في تطبيقات الويب. تطبيق الويب الحديث كود جافاسكريبت يحتاج ترجمة في كل مرة من خلال محرك جافاسكريبت الذي يعمل من خلال المتصفح و الأخير يعمل على نظام التشغيل. قارن هذا بأي برنامج native الذي لا يفصل بينه و بين العتاد سوى الواجهة البرمجية لنظام التشغيل (التي هي بالأساس تسهل التعامل مع العتاد).
    توقف تطور أنظمة التشغيل: يبدو أن هذه الفكرة مبالغ بها، لكن على أية حال، بعض التغييرات لو تطبق قد تكسر معها التوافقية backward compatibility.
    ملف في عدة مسارات: نظام ملفات أبل المسمى APFS به خاصية اسمها clones بحيث يكون لنفس الملف أكثر من نسخة دون أن تشغل النسخ مساحة إضافية. لا أعلم عن إمكانية جعلها في نفس المسار أو مسارات مختلفة.
    يورد المقال عدة مشكلات، لكنها إما محدودة أو ليست مشكلات أساساً، مثل:
    أنظمة الملفات الشجرية: هذا الأسلوب الأمثل لتخزين الملفات. المقابل أن تخزن الملفات كلها في مجلد واحد به جميع الملفات من ملفات نظام إلى ملفات مستخدم، و هذا سيخلق العبث للمطورين و المستخدمين.
    أساليب التواصل بين العمليات IPC المتعددة: هذه ميزة بالمناسبة. التعدد مهم لأنه حتى في الواقع لا توجد طريقة مناسبة لكل شيء، كل أسلوب له إيجابياته و سلبياته. الملفات تصلح لتبادل الملفات الضخمة و الوسائط المتعددة. الذذاكرة المشتركة و الأنابيب تصلح للبيانات العددية و البينات النصية المتسلسلة strings.
    أنظمة النوافذ: هذه مشكلة في GNU/Linux و FreeBSD فقط. الحل موجود، بروتوكول Wayland. ميزة Wayland أنه متوافق مع تطبيقات X لكنه يعرضها كما لو كانت تطبيقات بينيت في التسعينات، لونها رمادي.
    التطبيقات الأصلية أو native applications: ليست ثقيلة، و طبيعي أنها تتطلب وقتاً في التطوير نظراً لما تتطلبه من معرفة كبيرة في أساليب إدارة الذاكرة.
    ——————————
    على الهامش / أتمنى لو تسوق لمدونتك لأن التفاعل قليل جداً، و أنا لو لم أكن أتابع حسابك في تويتر لما علمت بشأن هذه المدونة أبداً.

    Liked by 1 person

    • أياً كانت آرائنا عن أنظمة التشغيل، أظن أن هناك اتفاق بين مجموعة من الناس على أن أنظمة التشغيل بحاجة لتطوير من ناحية الواجهات والتقنيات، مثلاً فكرة ملف في أكثر من مكان يمكن تطبيقها اليوم في أنظمة اليوم، أعرف ذلك لكن الواجهة غير عملية، المشكلة هنا في الواجهة وفي كونها خاصية لا يعرفها المستخدم ما لم يبحث عنها.

      كسر التوافقية مع تطبيقات الماضي أمر مهم في رأيي، لا يمكن إبقاء دعم تقنيات الماضي إلى الأبد، يمكن تطوير برامج محاكاة لمن يريد استخدام هذه التقنيات لكن الأنظمة نفسها يفترض أن تتخلص من إرث الماضي إن كان لهذا أثر سلبي عليها.

      على أي حال، هذا الموضوع سأكرر الحديث عنه ولاحقاً سأكتب عنه بالتفصيل أكثر، أعترف بأن هناك جوانب كثيرة أجهلها، لكن جانب واحد أنا متأكد منه وهو الواجهة.

      Liked by 1 person

      • “الأنظمة نفسها يفترض أن تتخلص من إرث الماضي إن كان لهذا أثر سلبي عليها.” أتفق تماماً مع هذه النقطة.
        نظام تشغيل Haiku الذي يعيد إحياء BeOS لديهم مشكلة. هم يضطرون لاستخدام نسخة قديمة من مترجم GCC من أجل تشغيل برامج BeOS على معالجات x86 ذات 32 بت. هذه المشكلة غير موجودة في حالة معالجات x86_64 أي 64 بت و لا معالجات ARM. دعم المعالجات القديمة بالأساس مضيعة وقت و جهد. في الوقت الحالي، بعض توزيعات GNU/Linux ألغت دعم معالجات x86 ذات 32 بت نظراً لقلة حصولها على عدد كبير من التحميلات و قلة الأجهزة المتصلة بالإنترنت المستخدمة لهذه التوزيعات بهذه المعمارية تحديداً، مؤخراً وجدت Manjaro تفعل هذا، و هي توزيعة تركز على سهولة الاستخدام، لذا تجدها محملة بكل التطبيقات الأساسية. قارن بين توزيعة (البرامج جاهزة لكن تحتاج فقط لتحزيم مخصص) و نظام تشغيل كامل (من النواة و الواجهة البرمجية و التعريفات حتى التطبيقات) لترى أن النوع الأول اتجهوا نحو توفير الوقت و الجهد.
        في الماضي لما انتقل أجهزة Mac من نظام التشغيل الكلاسيكي إلىى نظام التشغيل المبني على FreeBSD، وفرت أبل طبقة توافقية مع التطبيقات القديمة. في Windows 7 Ultimate يوجد Windows XP Mode و هو محاكاة من أجل تشغيل برامج Windows XP، لكنه يتطلب ذاكرة أعلى من المعتاد.

        إعجاب

  2. نقطة نسيت أعلق عليها بخصوص تطبيقات الويب. توجد الآن تقنية WebAssembly. بعيداً عن التعريفات، أجدها أشبه بأ تكو الخليفة الروحي لتقيات ActiveX و Java Applets و Native Client NaCl. الرابط التالي يوضح باختصار الفكرة مع استخداماتها.
    https://github.com/WebAssembly/design/blob/master/UseCases.md
    التقنية اختبارية في الوقت الحالي، لكنها مدعومة في المتصفحات الحديثة و توجد تطبيقات استعراضية demo لها. أقترح عليك تجرب هذا الرابط على جهاز قديم و تلاحظ فرق الإطارات. أنا جربته في لابتوب قديم و ألاحظ فرق كبير في الإطارات لما أبدل بين JavaScript و WebAssembly لما يعرض 30 نموذج model، بمعدل 5 إطارات في الثانية في حالة JavaScript و 25 إطار في الثانية في حالة WebAssembly.
    aws-website-webassemblyskeletalanimation-ffaza.s3-website-us-east-1.amazonaws.com
    بما أن التقنية royalty-free أي لا تكاليف ترخيص تدفع لأي طرف، هذه فرصة للشركان بأن تقل برامجها أو ألعبها القديمة للويب من خلال WebAssembly، مع الأخذ بعين الاعتبر إعادة كتابة واجهة البرامج باستخدام HTML5/CCC3.

    إعجاب

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار وردبرس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

Connecting to %s