الدرس 1 — لماذا بايثون
بايثون بطيئة. هذه ليست مبالغة: حلقة حسابية مكتوبة ببايثون الصافية قد تكون أبطأ بعشرات المرّات من الحلقة نفسها بلغة C. ومع ذلك، كلّ نموذج ذكاء اصطناعي كبير تقريباً يُدرَّب اليوم من كود بايثون. هذا التناقض الظاهري يشرح كلّ شيء عن المنظومة.
الحلّ: بايثون تنسّق ولا تحسب
عندما تكتب سطراً يضرب مصفوفتين بحجم ألف في ألف، لا تنفّذ بايثون هذا الضرب. هي تُسلّم العمل إلى مكتبة مكتوبة بلغة C أو Fortran أو CUDA، فتتولّى هذه المكتبة العمليات كلّها ثمّ تعيد النتيجة.
النتيجة: الجزء البطيء يمثّل نسبة ضئيلة من الزمن. أنت تكتب مئة سطر من بايثون تنظّم العمل، وتُنفَّذ مليارات العمليات في كود مُحسَّن لا تراه.
تخيّل بايثون كمهندس ورشة يوزّع المهامّ. هو لا يحمل الحديد بنفسه. سرعته في الكلام ليست مهمّة، لأنّ الوقت كلّه يُصرَف في الرفع، لا في إعطاء الأوامر. ويصبح بطء بايثون مشكلة حقيقية فقط إذا كتبت الحلقة الحسابية بنفسك بدل تسليمها للمكتبة، وهذا خطأ المبتدئين الأكثر تكراراً.
ما جعل هذا النمط ممكناً
بايثون مصمَّمة أصلاً لتكون لغة لاصقة: استدعاء كود C منها سهل، وواجهتها لتوسيعها بلغات أخرى قديمة ومستقرّة. هذا التفصيل التقني، الذي لم يبدُ مهمّاً في التسعينيات، هو سبب سيطرتها اليوم.
فحين أراد باحثو الحساب العلمي واجهة مريحة فوق مكتبات جبر خطّي مكتوبة بـFortran، كانت بايثون الاختيار الأقلّ مقاومة. ومن هناك نشأ NumPy، ثم كلّ ما بُني فوقه.
أثر الشبكة: السبب الذي يمنع التغيير
الحجّة التقنية تفسّر البداية، وأثر الشبكة يفسّر الاستمرار.
- المكتبات: NumPy وpandas وscikit-learn وPyTorch وTensorFlow وHugging Face، كلّها بايثون أوّلاً.
- الأبحاث: تُنشَر تنفيذات الأوراق البحثية ببايثون، فتجرّبها في اليوم نفسه.
- النماذج المدرَّبة مسبقاً: مئات آلاف النماذج على Hugging Face تُحمَّل بثلاثة أسطر بايثون.
- الدروس والأجوبة: كلّ سؤال تقع فيه، وقع فيه ألف شخص قبلك وكتب الجواب ببايثون.
- التوظيف: إعلانات الوظائف تطلب بايثون، والفرق تتوقّعها.
اختيار لغة أخرى يعني التخلّي عن هذه الطبقات كلّها. ذلك ممكن، ونادراً ما يكون عقلانياً.
| اللغة | نقطة قوّتها | لماذا ليست الخيار الأول في الذكاء الاصطناعي |
|---|---|---|
| بايثون | المنظومة الكاملة، لغة لاصقة | — |
| R | الإحصاء والتصوير البياني | ضعيفة في التعلّم العميق والإنتاج |
| Julia | سريعة أصلاً، جميلة رياضياً | منظومة صغيرة، نماذج مدرَّبة قليلة |
| C++ | أقصى أداء | تطوير بطيء، تُستخدم داخل المكتبات لا فوقها |
| JavaScript | تعمل في المتصفّح | أدوات تدريب محدودة، للنشر أكثر منه للتدريب |
ما تحتاجه فعلاً من اللغة
خبر جيّد للمبتدئ: مجموعة بايثون المطلوبة للذكاء الاصطناعي أصغر ممّا يُخيَّل. لا تحتاج إلى إتقان اللغة بأكملها. تحتاج إلى:
- الأنواع الأساسية: الأرقام، النصوص، القوائم، القواميس.
- التحكّم في المسار: الشروط والحلقات، مع معرفة أنّ الحلقة على البيانات الضخمة تُستبدَل عادةً بعملية متّجهية.
- الدوالّ: تعريفها، تمرير الوسائط، إعادة القيم.
- الأصناف: قراءتها وفهمها، وليس بالضرورة تصميم تسلسل وراثة معقّد.
- قراءة الأخطاء: تتبّع المكدّس (traceback) يُقرأ من الأسفل إلى الأعلى، وهذه مهارة توفّر ساعات.
كلّ ما تبقّى — التزامن، الميتابرمجة، الديكوريتورات المتقدّمة — يُتعلَّم لاحقاً أو لا يُتعلَّم أبداً.
تعلّم بايثون بالقدر الذي يخدم البيانات: قراءة ملفّ، معالجة جدول، رسم منحنى، تدريب نموذج. تعلّم اللغة لذاتها من دون هدف بياني هو أسرع طريق إلى فقدان الحافز.
الإصدارات ومصدر الارتباك
بايثون 2 انتهت رسمياً في 2020. وأيّ درس يستخدم print "مرحبا" بلا أقواس قديم بأكثر من ستّ سنوات، وينبغي تجاوزه.
الإصدارات الحديثة (3.10 وما بعدها) هي المعيار. والتفصيل الذي يهمّ عملياً: بعض المكتبات تتأخّر عن أحدث إصدار. تنصيب أحدث بايثون في اليوم الأول من إصدارها يكسر غالباً أُطر التعلّم العميق. القاعدة العملية: إصدار أو اثنان تحت الأحدث.
في ثلاث جمل
بايثون بطيئة، وهذا لا يهمّ لأنّها تنسّق العمل وتسلّم الحساب الثقيل إلى مكتبات مكتوبة بلغة C وCUDA. وقد اختيرت أصلاً لسهولة ربطها بهذه المكتبات، ثم رسّخها أثر الشبكة: المكتبات والأبحاث والنماذج المدرَّبة والوظائف كلّها هنا. وما تحتاجه من ال لغة أصغر ممّا يُظنّ: الأنواع الأساسية والدوالّ وقراءة الأخطاء تكفي للبدء.
التالي — الدرس 2: NumPy وpandas ←