2  مقدمة

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

2.1 ما سبب تأليفي للكتاب؟

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

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

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

2.2 ماذا ستتعلم؟

فأما المخرجات من المادة العلمية فهي كالآتي:

  1. التعرف على البرمجة؛ قراءة وكتابة وتشغيلا
  2. تكوين التصورات الأساسية التي تنبني عليها برمجة البرمجيات؛
  3. القدرة على التعلم: كفتح مكتبات برمجية بايثونية للاستفادة من النتاج المعرفي البرمجي المتراكم، أو التعلم مع الذكاء الاصطناعي، أو ساحات النقاش البرمجية والمقاطع والكتب الأخرى.

ونحن في هذا نهدف لتأهيلك لمسارين -على الأقل-:

  1. مسار مهندس البرمجيات
  2. مسار محلل البيانات

وغيرهما.

2.3 لماذا كُتِبَ الكتاب بالعربية؟

  • لماذا لا نكتب باللغة العربية؟
  • لماذا لا نتعلم باللغة العربية؟
  • لماذا لا ندرِّس باللغة العربية؟
  • لماذا لا نقرأ باللغة العربية؟
  • لماذا لا نسمع باللغة العربية؟

أجيب عن ذلك فأقول:

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

ووجب أن نفرِّقَ بين أمرين: المعنى واللفظ الموضوع له. فإن المعنى هو المقصود الأوَّل؛ وليس للمعنى نفسه لغة معيَّنة؛ فبأي لغة عبر إلى ذهنك واستقر فهي أفضل.

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

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

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

2.4 ما هي البرمجة؟

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

وقد نقسم المنطق البرمجي إلى قسمين:

  1. إدراك
  2. فعل

فأما الإدراك:

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

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

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

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

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

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

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

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

إذا نظرنا في إحصاء 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 - أنظمة التحكم

🧪 الكيمياء:

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

🧠 علم النفس:

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

🗻 علوم الأرض:

🔭 علم الفلك:

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