البايثونية

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

حسان القوز

تم النشر

15 يونيو 2025

مقدمة

بسم الله الرحمن الرحيم. والحمد لله والصلاة والسلام على رسول الله وآله وصحبه ومن والاه. أما بعد.

لماذا نبرمج؟

ظل الذكاء الاصطناعي طموحًا عاليًا منذ بزوغ فجر علوم الحاسب (1953). وما زال هذا الهدف دافعًا قويًّا لكل من فهم أننا باختراع الحاسب (1833 - 1871) استطعنا محاكاة المنطق في آلات صماء. ولا حد لإمكانيَّة هذا المعالِج الآلي إلا تعبيرك اللغوي أيها الناطق البشري. فهذا جانب المعالجة.

وجانب الإدراك فيه:

أدوات الإحساس التي تُدخِلُ المرئيات والمسموعات ونحوها ؛ وقد تم محاكاتها بآلة التصوير (كاميرا) ولاقط الصوت (مايكروفون). وكذلك أجهزة استشعار دقيقة مثل مستشعر الحرارة أو الرطوبة أو أجهزة قياس المسافة أو ماسحات البصمة أو الرنين المغناطيسي (MRI) أو الموجات الكهرومغناطيسية في الأقمار الصناعية وأجهزة الملاحة الجوية والبحرية والبوصلة أو ميزان التسوية الأفقية (Gyroscope) وغيرها كثير.

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

ثم أدوات الاستيعاب وهي التي تجمع المحسوسات في وعاءٍ واحدٍ للاعتبار جُملةً واحدة، وقد تم محاكاتهُا بما نسميه الذاكرة (وهي على مراحل تَبعُد وتَقترب من مركز المعالجة). وتشبه الذاكرة في الجهاز ما يراه الشخص في الوقت الواحد أو يمكن تصوُّرُه في الذهن وتخيله في لحظة واحدة. أما الذكريات المخزنة لدينا ، وما نكتبه في مذكرات فيكون مسجلاً في أجهزة التخزين.

ثم تأتي أدوات المعالجة وهي الآلات القابلة للبرمجة؛ مثل وحدة المعالجة المركزية (CPU) ووحدة المعالجة الرسومية (GPU) وغيرها؛ حيث يوضَع المنطق المترجَم من لغات البرمجة ويشغِّل هذه الإلكترونيات المجهرية لتحقيق مقصوده منها.

لمن هذا الكتاب؟

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

ثم أعدت النظر فيه فراعيت أصحاب التخصصات غير التقنية إذْ لم أغرِق في التفاصيل الرياضية ولا الحاسوبية الدقيقة.

  • فمن أراد أن يبدأ في البرمجة فليبدأ بهذا الكتاب؛ فالمواضيع منظمة بشكل منطقي وعملي مع مسائل نافعة للمبرمج تقترب في كل مرة من الواقع أكثر فأكثر.
  • ومن أراد مرجِعًا لمواضيع البرمجة بلغة بايثون فهذا الكتاب صديقه؛ فالكتاب مقسَّم بحسب الموضوعات وكل موضوعٍ مقسَّم كذلك لتسهيل الوصول إلى أي مفهوم. كما تستطيع استعمال خاصيَّة البحث.
  • وهو كذلك معينٌ لمن أراد تدريس البرمجة منطلقًا من لغة بايثون؛ فقد جمعتُ فيه ما تفرَّق ونظمتُه بعد نظرٍ في عدة مؤلفات مماثلة، وعلى ما رأيتُ أنه أنفع للمتعلم، وأضفتُ بعض الأقسام المتممة لما رأيت أنه ناقص بدونها.

أهداف الكتاب

  1. استيعاب ماهية البرمجة، ومعرفة إمكانياتها وحدودها
  2. إكساب مهارة التعبير الخوارزمي بلغة بايثون
  3. امتلاك القدرة على فتح مكتبات برمجية بايثونية والاستفادة من النتاج المعرفي البرمجي المتراكم في بناء تطبيقات مفيدة

لماذا وقع الاختيار على لغة بايثون؟

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

مجالات لغة بايثون

إذا نظرنا في إحصاء JetBrains 2023 نجد مجالات استعمال لغة بايثون:

بم تستعمل لغة بايثون؟

بم تستعمل لغة بايثون؟

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

ومن الشركات التقنية التي قامت على بايثون: Instagram، Spotify, Reddit, Netflix, Dropbox, Quora, Pintrest.

والمجتمعات البرمجية في بايثون كثيرة ومتعددة في اهتماماتها. منها على سبيل المثال:

🌐 تطوير مواقع الشبكة

  • Django - لبناء مواقع متصلة بقواعد بيانات
  • FastAPI - حديث وسريع لبناء واجهات برمجية على الشبكة

📊 تحليل البيانات وتصويرها

  • Pandas - لتحليل البيانات المرصوصة
  • statsmodels - للنماذج الإحصائية
  • Seaborn - لتصوير البيانات الإحصائية على أساس Matplotlib.
  • matplotlib - مكتبة شاملة لإنشاء تصورات ثابتة ومتحركة وتفاعلية.
  • Selenium لتصفح المواقع بشكل آلي وسحب البيانات منها

📊📊📊 البيانات الضخمة

  • معالجة البيانات المتدفقة بسرعة وكفاءة عالية: Dask و Ray.
  • أتمتة عمليات البيانات: AirflowDagster و Prefect

🤖 الذكاء الاصطناعي وتعلم الآلة

  • scikit-learn - لاكتشاف الأنماط والتنبؤ (تعلم الآلة)
  • PyTorch - بناء وتدريب نماذج التعلم العميق
  • Keras - بناء وتدريب نماذج التعلم العميق
  • Hugging Face - اختيار وتدريب نماذج التعلم العميق

🖼️ معالجة الصور

📐 التحليل الرياضي

  • SciPy - خوارزميات أساسية في الحوسبة العلمية
  • sympy - للرياضيات الرمزية.
  • PySR - الانحدار الرمزي.
  • cvxPy - التحسين (Convex Optimization)
  • FEniCS - حل المعادلات التفاضلية الجزئية (PDEs) باستخدام طريقة العناصر المحدودة (FEM)
  • igraph - الترابطات والشبكات
  • python-control - أنظمة التحكم

🧪 الكيمياء

⚛️ الحوسبة الكمومية

🧠 علم النفس

🧬 المعلوماتية الحيوية

🗻 علوم الأرض

🔭 علم الفلك

بايثون وحدها لا تكفي

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

تعريب المصطلح

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

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

والمصطلح العلمي له من اللغة معنىً يتأثر بالسياق الذي يُستعمل فيه، وكذلك يتأثر بالمصطلحات المحيطة به. فإذا ما جُرِّد المصطلح عن قصته، ولم يُعرَف أصله؛ فقد يتسرع المرءُ بالحكم على عدم مناسبته.

ولا يُفهم مما سبق أن المصطلح الإنجليزي مُهمَل؛ بل نضرب بالحجر عصفورين. إذْ لا بد لك من إتقان اللغة الإنجليزية لتستقي من تلك المنابع.