لماذا لن تستخدم لغة البرمجة (بايثون) في المستقبل؟
استغرق مجتمع البرمجة عقودًا عدة لتقدير لغة بايثون ، لكن استخدامها بدأ يزدهر منذ مطلع عام 2010 حتى الآن، وقد تخطت عدة لغات أخرى في الانتشار، مثل سي، وسي شارب، وجافا، وجافا سكريبت.
لكن إلى متى سيستمر رواجها؟ ومتى ستُستبدَل لغة بايثون بلغة أخرى؟ ولماذا؟
من الصعب أن نحدد تاريخًا دقيقًا لاندثار لغة بايثون، لكننا سنُقيّم المزايا التي تجعل بايثون منتشرةً الآن، ونقاط الضعف التي ستسبب انهيارها في المستقبل.
ما الذي يجعل بايثون منتشرةً حاليًا؟
يعتمد نجاح بايثون على مؤشر الرواج وفقًا لموقع (ستاك أوفرفلو)، الذي يقيس الإشارات في منشورات المنصة، ونظرًا إلى حجم هذه المنصة، فهو مؤشر جيد لانتشار هذه اللغة.
إشارات اللغات البرمجية المختلفة على منصة ستاك أوفرفلو
كانت اللغة (R) في صعود مستمر خلال السنوات العديدة الماضية، والكثير من لغات البرمجة الأخرى في هبوط مستمر، لكن يبدو أن نمو بايثون لا يمكن إيقافه. ترتبط 14% تقريبًا من إجمالي الأسئلة المطروحة على منصة ستاك أوفرفلو ببايثون، وهذا الاتجاه تصاعدي لأسباب عديدة.
1. إنها لغة قديمة
كانت بايثون موجودةً منذ التسعينات، وبهذا فهي لم تحظ بوقت كاف للنمو فحسب، بل اكتسبت مجتمعًا كبيرًا داعمًا لها أيضًا.
لذلك، إذا كانت لديك أي مشكلة في أثناء البرمجة بواسطة بايثون، فاحتمال قدرتك على حلها بإجراء بحث واحد على غوغل كبير، لأن شخصًا ما قد واجه مشكلتك بالفعل وكتب شيئًا مفيدًا بشأنها.
2. السهولة
ليس فقط أنها كانت موجودةً منذ عقود، فقد مُنح المبرمجون وقتًا كافيًا لتقديم دروس رائعة عنها، فبُنية بايثون قابلة للقراءة البشرية بسهولة.
بدايةً، لا ضرورة لتحديد نوع البيانات، عليك فقط تحديد المتغيرات، وبايثون سيفهم من سياق المدخلات إن كانت عددًا صحيحًا أم قيمة عشرية أم قيمة مطلقة أو غير ذلك، وهذه ميزة كبيرة للمبتدئين، فإذا استخدمت لغة (++C) سابقًا من أجل البرمجة، فلا بد أنك عرفت قدر الإحباط عندما لا يتجمع برنامجك بسبب استبدالك قيمةً عشرية بعدد صحيح.
إذا قرأت أسطر البرمجة للغتي بايثون و(++C) جنبًا الى جنب، فستدرك مدى سهولة فهم لغة بايثون. ومع أن تصميم لغة البرمجة (++C) يأخذ اللغة الإنكليزية بعين الاعتبار، تصعب قراءتها مقارنةً بلغة بايثون.
3. التنوع
لما كانت بايثون موجودةً وقتًا طويلًا، فقد صمم المطورون حزمةً لكل غرض، وتستطيع اليوم أن تجد حزمةً لكل شيء تقريبًا.
هل تريد أن تعالج الأرقام والمتجهات والمصفوفات؟ أفضل حزمة لذلك هي NumPy. هل تريد إجراء حسابات للتكنولوجيا والهندسة؟ استخدم حزمة SciPy. هل تريد أن تتوسع في معالجة البيانات وتحليلها؟ جرب حزمة Pandas. هل تريد مجال الذكاء الاصطناعي؟ استعمل حزمة Scikit-Learn.
مهما كانت المهمة الحسابية التي تحاول إدارتها، فستجد حزمة بايثون مخصصة لها، ما يجعل بايثون على قمة الطفرة الحديثة في مجال التعلم الآلي خلال السنوات الماضية.
السلبيات
استنادًا إلى ما سبق، قد تتخيل أن بايثون ستبقى على قمة الهرم لأجيال قادمة، لكن لها -مثل كل تقنية- نقاط ضعف، سنتناول أهمها تاليًا، وسنقيّم كون هذه العيوب قاتلةً أم لا.
1. البطء
لغة بايثون بطيئة للغاية، إذ تحتاج إلى ما يقارب ضعفين إلى 10 أضعاف الوقت لتأدية مهمة مقارنةً بأي لغة أخرى.
توجد عدة أسباب لهذا، منها أنها مكتوبة ديناميكيًا، فأنت لا تحدد نوع البيانات كما في اللغات الأخرى، ما يعني استهلاك جزء كبير من الذاكرة، لأن البرنامج يحجز مساحة كافية لكل متغير يعمل داخله في كل حالة، واستهلاك قدر أكبر من الذاكرة يعني استغراق وقت أطول في الحوسبة.
سبب آخر هو أن بايثون تستطيع تأدية مهمة واحدة فقط في وقت ما، وهذا من تداعيات استخدام أنواع البيانات المرنة. يجب تأكيد أن كل متغير لديه نوع واحد فقط من البيانات، واستخدام عمليات متوازية قد يُفسد ذلك.
هذا في حين أن متصفح الويب لديك يمكنه تشغيل عشرات العمليات في نفس الوقت، وتوجد بعض النظريات الأخرى حول ذلك أيضًا. لكن الخلاصة أن مشكلة السرعة غير مهمة، إذ أصبحت أجهزة الحاسوب والخوادم رخيصة جدًا، لدرجة أننا نتحدث عن أجزاء من الثانية، ولا يهتم المستخدم حقًا إذا حُمِل تطبيقه في 0.001 أو 0.01 ثانية.
2. النطاق
حُدِد نطاق بايثون أصلًا ليكون ديناميكيًا، ما يعني أساسًا أنه عند تقييم أي عبارة، سيبحث المترجم (كومبايلر) أولًا في القسم الحالي، وبعدها في كل الدوال المُستدعاة تواليًا.
مشكلة النطاق الديناميكي أن كل عبارة يجب أن تُختبر في كل سياق ممكن، وهذا مضجر. لهذا السبب تستخدم أغلب لغات البرمجة النطاق الثابت.
فشل انتقال بايثون إلى النطاق الثابت. تستطيع النطاقات الداخلية للدوال الفرعية ضمن الدوال الرئيسية رؤية النطاقات الخارجية وتغييرها، أما في بايثون فإن النطاقات الداخلية يمكنها رؤية النطاقات الخارجية فقط، دون أن تستطيع تغييرها، ما يؤدي إلى الكثير من الإرباك.
3. الدوال المجهولة
رغم مرونة لغة بايثون ، يبقى استعمال الدوال المجهولة مقيدًا إلى حد ما. قد تكون العبارات دوال مجهولةً في بايثون، لكن من غير المحتمل أن تكون الصيغ كذلك.
تتعامل بايثون مع تعريفات وعبارات المتغيرات على أساس كونها عبارات دائمًا، ما يعني أنه لا يمكن استعمال الدوال المجهولة معها. هذا الفارق بين العبارات والصيغ تعسفي إلى حد ما، وغير موجود في اللغات الأخرى.
تجعل المسافات البيضاء الأسطر البرمجية أكثر قابليةً للقراءة، لكنها أقل مرونةً في الصيانة
4. المسافات البيضاء
يمكن استخدام المسافات البيضاء والمسافات البادئة في بايثون للإشارة إلى مستويات البرمجة المختلفة، ما يجعل الأسطر البرمجية جذابةً للنظر، وبديهية الفهم.
تعتمد اللغات الأخرى (++C مثلًا) على الفواصل والأقواس، ومع أن هذا يجعلها غير جذابة بصريًا، وليست سهلةً للمبتدئين، لكنها تجعل الشيفرة البرمجية أكثر قابليةً للصيانة والتعديل، وهذا مفيد جدًا للمشاريع الكبيرة.
تحل لغات جديدة مثل (هاسكل) هذه المشكلة، إذ تعتمد المسافات البيضاء، مع تقديم بنية بديلة لمن يرغبون في العمل دونها.
5. تطوير تطبيقات المحمول
في ظل التحول من الحواسيب المكتبية إلى الهواتف الذكية، اتضح الاحتياج إلى لغات قوية لبناء البرمجيات المحمولة.
لا تُطوَّر أكثر تطبيقات الجوال باستخدام لغة البرمجة بايثون ، وهذا لا يعني استحالة تصميم التطبيقات من طريقها، إذ تتخصص إحدى حِزم بايثون في ذلك، وهي حزمة (كيفي).
لكن لم تأخذ بايثون -عند إنشائها- الهواتف المحمولة بعين الاعتبار، ومع أنها تعطي نتائج مقبولة للمهام أساسية، فإن الخيار الأفضل هو اختيار لغة أُنشئت لتطوير تطبيقات الجوال، مثل ريآكت نيتف، وفلاتر، وأيكونيك، وكوردوفا.
لن تختفي الحواسيب المكتبية والمحمولة لسنوات قادمة، لكن الهواتف أصبحت أكثر انتشارًا، لذلك فإن تعلم بايثون ليس كافيًا كي تصبح مطورًا خبيرًا.
6. أخطاء التشغيل
لا يُجمع نص بايثون في البداية ثم يعمل بعد ذلك، بل يُجمع في كل مرة لتنفيذه. لذلك لا تظهر أي أخطاء برمجية إلا وقت التشغيل، ما يؤدي إلى أداء ضعيف واستهلاك للوقت وإجراء العديد من الاختبارات.
هذا جيد للمبتدئين، لأن الاختبارات ستعلمهم الكثير، لكن للمطورين المخضرمين، فإن الاضطرار إلى إصلاح الأخطاء في برنامج معقد يزعجهم. هذا الضعف في الأداء هو العامل الأكبر الذي يحدد طابع الوقت في بايثون.
ما البدائل المحتملة للغة بايثون؟ ومتى يمكن تطبيقها؟
تتنافس عدة لغات جديدة في مجال البرمجة.
لغة (رست)
توفر نفس النوع من الأمان الذي تتمتع به بايثون، ولا يمكن استبدال أي متغير دون قصد، وتحل مشكلة الأداء بمفهوم الملكية والاقتراض، وهي أيضًا لغة البرمجة الأكثر شعبية في السنوات القليلة الماضية، وفقًا لإحصائيات ستاك أوفرفلو.
لغة (غو)
هي مثل بايثون، رائعة للمبتدئين وتسهل صيانة شيفرتها البرمجية وتعديلها. ويُعَد مطورو لغة (غو) الأعلى دخلًا بين المبرمجين.
لغة (جوليا)
هي لغة جديدة منافسة لبايثون، تملأ الفراغ الموجود في الحوسبة التقنية واسعة النطاق (المستخدمة في المشاريع الضخمة). عند استخدام بايثون أو ماتلاب، يتطلب إصلاح الأخطاء عادةً دمجها مع مكتبات (++C)، وهذا ضروري على نطاق واسع، أما الآن يمكنك استخدام جوليا بدلًا من استخدام لغتين.
توجد لغات أخرى في السوق، لكن اللغات الثلاث التي ذكرناها هي التي تتلافى أخطاء بايثون، وتتفوق في التقنيات الأحدث، خاصةً في مجال الذكاء الاصطناعي، ومع ذلك ما زال انتشارها محدودًا، وإن كان مؤشر ستاك أوفرفلو يشير إلى أنها منطلقة نحو الأفضل.
لغات البرمجة الجديدة على ستاك أوفرفلو
نظرًا إلى شعبية بايثون وانتشارها حاليًا، من المؤكد أن استبدالها بلغة أخرى قد يستغرق نصف عقد أو ربما عقدًا كاملًا.
من الصعب تحديد أي اللغات الجديدة ستكون لغة المستقبل، لكن نظرًا إلى مشاكل الأداء الأساسية في بنية بايثون، فإن إحدى اللغات الجديدة ستحل محلها بالتأكيد.