صناعة البرمجيات تتغير
محمد زهران
آخر تحديث:
السبت 20 نوفمبر 2021 - 8:30 م
بتوقيت القاهرة
منذ عدة شهور كتبت فى هذا المكان عن فرصة يجب أن نستغلها وهى استضافة واحدة من شركات تصنيع الرقائق الإلكترونية (chips) فى مصر والتعلم منها ثم الانطلاق فى هذا المجال، وقتها لم يعجب المقال الكثيرين، بعضهم اتهمنى أنى أحلم وآخرون قالوا إن التصنيع له شروط وهى لا تتوافر عندنا ولن نجنى شيئا من هذه الفكرة بل وقد نخسر، هناك ردود على كل ذلك لكنى لم أرد الدخول فى مناقشات لا جدوى منها على صفحات التواصل الاجتماعى، لكن لفت نظرى تعليق من أحد القراء أننا يجب أن نهتم بالبرمجيات أفضل وأسهل فأحببت أن أتكلم عن تطور صناعة البرمجيات بعد مرور عقدين من القرن الحادى والعشرين لأن البرمجيات اختلفت كثيرا الآن أو لنقل أصبحت أكثر تعقيدا وتستلزم مهارات مختلفة عن تسعينيات القرن الماضى، فما هى الحكاية؟
البرمجيات هى مجرد أوامر يكتبها المبرمج لجهاز الكمبيوتر حتى يقوم بمهمة ما تفيد أو تضرهم. هذا التعريف لم يتغير لكنه أصبح أكثر تعقيدا لثلاثة أسباب: أولا أجهزة الكمبيوتر اختلفت وتنوعت، فى الماضى كنا نتكلم عن جهاز الكمبيوتر الذى تضعه على مكتبك أو جهاز الكمبيوتر المحمول أو ما نسميه اللابتوب، الآن هناك جهاز كمبيوتر فى تليفونك وساعتك وسيارتك وهناك أجهزة فائقة السرعة تدير مواقع مثل فيسبوك وجوجل وتويتر وأجهزة أخرى فى غرف العمليات فى المستشفيات وأخرى تدير مركبات تهبط على المريخ، تنوع كبير جدا، ثانيا المطلوب من البرمجيات أصبح أكثر من ذى قبل، فى الماضى كنا نكتفى من البرمجيات بأن تقوم بعملها ثم أصبحنا نطلب منها أن تقوم بعملها وبسرعة ثم أصبحنا نطلب منها أيضا أن تستهلك طاقة قليلة حتى لا تضطر لشحن أجهزتك كل فترة قصيرة للأجهزة التى تعمل بالبطارية أو تدفع مبالغ طائلة فى فاتورة الكهرباء فى الأجهزة فائقة السرعة، وتضخمت القائمة لتضم سرية البيانات وألا تتعطل البرمجيات وثمن البرنامج وما زالت القائمة تتضخم، السبب الثالث المتسبب فى تعقيد صناعة البرمجيات يتعلق بالمستخدمين أنفسهم، فى القرن الماضى كان المستخدمون يكتفون بشكل ووظيفة بسيطة من البرمجيات وذلك لأن تلك الأجيال ترعرعت فى عصر لم يكن الكمبيوتر معروفا فيه، أما الأجيال الحالية فتعلمت استخدام التابلت قبل حتى أن تتعلم الكلام لذلك لم يعد من السهل إبهارها وأصبحوا يطلبون الكثير من البرمجيات.
إذا أضفنا إلى كل ما سبق أن لغات البرمجة تتغير وتتبدل خاصة فى العقدين الماضيين فهذا يقودنا إلى سؤال مهم: كيف إذا نتفوق فى هذا المجال الذى يبدو أنه يزداد تعقيدا ويتغير بسرعة ودائما ما يضرب الناس المثل بالهند كدولة نامية لكنها تفوقت أيضا فى مجال البرمجيات، ما لا يعلمه أغلب الناس أن الهند متفوقة أيضا فى مجال تصميم الحاسبات وليس فقط البرمجيات، هذا معناه أنه فى العصر الحالى لو أنك لم تفهم بعمق تصميم الكمبيوتر نفسه بالإضافة إلى البرمجيات فستكون ذا مستوى متوسط فى أحسن الأحوال، هناك طبعا إجابات معلبة تعود إلى القرن العشرين أنه من مهام البرمجيات عزل المبرمج عن ما يحدث داخل الجهاز نفسه (hardware) وأن هذا يشبه قيادة السيارة حيث يمكنك أن تكون قائدا بارعا دون أن تفهم شيئا فى ميكانيكا السيارة، وهذا خطأ لأنه كما قلنا المطلوب من المبرمج أشياء أكثر تعقيدا بكثير مما كان مطلوبا منه من قبل، قد يكون هناك برنامجان يفعلان نفس الشىء لكن أحدهما يستهلك طاقة أكثر بكثير من الآخر يجعلك تدفع فاتورة كهرباء أعلى أو تعيد شحن تليفونك كل ساعتين مثلا، هل كنا نتصور من قبل أن جزءا من مسئولية المبرمج هى تقليل استهلاك الطاقة بالإضافة طبعا إلى سرعة البرنامج.. إلخ؟
إذا أردت أن تكون فى المقدمة فيما يتعلق بالبرمجيات فعليك التعمق فى تصميم أجهزة الكمبيوتر والتعمق فى كيفية التفكير المنطقى، سؤال أطرحه دائما على الطلبة فى مرحلة البكالوريوس فى تخصص علوم الحاسب: لو أنك استيقظت يوما فوجدت أن لغات البرمجة التى تتقنها اختفت ولم يعد أحد يستخدمها فما هى المهارات المتبقية لك؟ إذا كنت فقط تتقن بعض لغات البرمجة فلن يتبقى لك شىء وإن كنت تتقن التفكير المنطقى وكيفية الاستفادة من تصميمات الحاسبات للوصول إلى أفضل سرعة واستهلاك طاقة أقل.. إلخ فأنت لم تخسر الكثير لأنه أسهل شىء فى علوم الحاسب فى عصرنا هو تعلم لغة برمجة.