البايثونية
مقدمة
بسم الله الرحمن الرحيم. والحمد لله والصلاة والسلام على رسول الله وآله وصحبه ومن والاه. أما بعد.
ظل الذكاء الاصطناعي طموحًا عاليًا منذ بزوغ فجر علوم الحاسب (1953). وما زال هذا الهدف دافعًا قويًّا لكل من فهم أننا باختراع الحاسب (1833 - 1871) استطعنا محاكاة المنطق في آلات صماء. ولا حد لإمكانيَّة هذا المعالِج الآلي إلا تعبيرك اللغوي أيها الناطق البشري. فهذا جانب المعالجة.
وجانب الإدراك فيه:
أدوات الإحساس التي تُدخِلُ المرئيات والمسموعات ونحوها ؛ وقد تم محاكاتها بآلة التصوير (كاميرا) ولاقط الصوت (مايكروفون). وكذلك أجهزة استشعار دقيقة مثل مستشعر الحرارة أو الرطوبة أو أجهزة قياس المسافة أو ماسحات البصمة أو الرنين المغناطيسي (MRI) أو الموجات الكهرومغناطيسية في الأقمار الصناعية وأجهزة الملاحة الجوية والبحرية والبوصلة أو ميزان التسوية الأفقية (Gyroscope) وغيرها كثير.
ومنها ما يُسجل يدويًّا كما يكون في المستشفى: العمر والوزن والطول، أو بيانات الحضور والانصراف أو المبيعات اليومية، أو بيانات طلاب أو متدربين في دورة تدريبية أو سجلات المخزون ونحو ذلك. وهي كثيرة جدًّا.
ثم أدوات الاستيعاب وهي التي تجمع المحسوسات في وعاءٍ واحدٍ للاعتبار جُملةً واحدة، وقد تم محاكاتهُا بما نسميه الذاكرة (وهي على مراحل تَبعُد وتَقترب من مركز المعالجة). وتشبه الذاكرة في الجهاز ما يراه الشخص في الوقت الواحد أو يمكن تصوُّرُه في الذهن وتخيله في لحظة واحدة. أما الذكريات المخزنة لدينا ، وما نكتبه في مذكرات فيكون مسجلاً في أجهزة التخزين.
ثم تأتي أدوات المعالجة وهي الآلات القابلة للبرمجة؛ مثل وحدة المعالجة المركزية (CPU) ووحدة المعالجة الرسومية (GPU) وغيرها؛ حيث يوضَع المنطق المترجَم من لغات البرمجة ويشغِّل هذه الإلكترونيات المجهرية لتحقيق مقصوده منها.
سبب تأليف الكتاب
لمستُ حاجة المبتدئين لفهم أدقَّ للغة بايثون -وعلى صعيد أكبر- المعاني البرمجية بالعموم. وغلبةً على من تعلَّم بلغة غيره أن يعظِّمه فيقلد حتى متناقضات مقالاته ولا يميِّز بين صحيحها وسقيمها. وعجزَه عن الإضافة المفيدة لما تعلَّمه ولمن علمه؛ فعسيرٌ عليه أنْ يعرف المنطلقات حتى يتتبع أصل الحكم الذي هو متمسِّك به اليوم.
ورأيتُ أنَّ وصف المفاهيم باللغة الأم أمكن في الذهن وأوعى، وأوسع في الاختراع والإبداع، ومنسجمٌ مع من استمدَّ من وعيِه الثقافي آلة لتكوين وعيِه العلمي في علمٍ من العلوم والصناعة. ورجائي بذلك أن يكون صعودُك في درج هذا العلم قفزًا.
وتمنيتُ أن أُسْهِمَ في تعليم من هم على أبواب البرمجة ينظرون وليس عندهم دليل يرشدهم في طُرُقاتها. فهم مع ما عندهم من العلوم، لم يدرسوا دراسةً منهجيَّة في علوم الحاسب أو فروعه المهتمَّة بالبرمجة: كأصحاب التخصصات الإنسانية واللغوية والتجريبية والمنطقية والشرعية، ممن يجد في نفسه ميلاً إلى التحليل الرياضي والصبر على التدقيق المنطقي. وأرى تيسيرها باللغة العربية لهم أنفعُ في علومهم وأعمالهم.
عناصر الكتاب
قُسِّمَ الكتاب على النحو التالي:
- النظرية فيه المفاهيم والأقسام والقواعد .. وليست فيه أمثلة وتطبيق.
- التطبيق: نرى فيه كيف نضع ما تعلمنا في سياقات مختلفة
- التمرين: يأتي دوْر المتعلم ليرسخ المفاهيم بالممارسة
- الحل: للتحقق من صحَّة حلك للتمرين
ولم أجرِ على ذكر المصطلح دائمًا باللغة الإنجليزية في موضع ذكره باللغة العربية، لأن ذلك يقطع تمام الحديث؛ بل المقصود أن يكون المعنى واضحًا من غير الرجوح للترجمة. ومن أراد البحث فلا بد له من الترجمة لذا جعلتها في جدولٍ خاصٍّ بالمصطلحات.
لماذا لغة بايثون بالتحديد؟
تعتبر المؤسسات لغات البرمجة منتجاتٍ لها. وهذا المنتج -الذي هو لغة البرمجة- كالمطرقة والمنشار بل وصندوق الأدوات كاملًا؛ وسيلة للإنتاج. والتنافُس يشكل تداخلاً في الوظائف التي تخدمها كل لغة، فبعضها يستعمل لأنظمة التشغيل (مستوى دوني من البرمجة) وبعضها يستعمل لتطبيقات الشبكة (مستوى عالي من البرمجة).
ويقع الاختيار على لغة بايثون كثيرًا لأمور:
- السهولة نسبةً إلى أخواتها؛ حيث يجد فيها المبتدئ قُربًا إلى اللغة الإنجليزية
- العموم (عدم اختصاصها بمجال ضيق) وذلك يتمثل في تنوع تطبيقاتها
- القبول فالجهود متظافرة على خدمة مكتباتها من المجتمعات التي تتمحور حول نوع ما من التطبيقات. وهذا التراكم يعني أن كثيرًا من الأوامِر يعبَّر عنه بأسطر قليلة
ومن تطبيقاتها:
- تطوير مواقع الشبكة
- تطبيقات تعلم الآلة والذكاء الاصطناعي
- تحليل البيانات وتصويرها
وأكثر التطبيقات من أنظمة المعلومات: التي تختص بجمع المعلومات وحفظها وفهرستها وترتيبها وتقسيمها وعرضها وتسهيل الحصول عليها بالسؤال المباشر وغير المباشر، والتحقق منها وتوفيرها والاستفادة منها وترجمتها ونحو ذلك:
- مثل: محرك بحث قوقل (يعمل على ترتيب شبكة الإنترنت)
- ونظام الدفع عبر البطاقة
- والبرمجيات المكتيبة (تقارير ، محاسبة ، تخطيط، …إلخ) ، ونحو ذلك
وليست بايثون مقصودة لذاتها فمن بساطة البرمجة أن تعلُّمَك للغة الثانية أسهل بمراحل من الأولى؛ إذْ كان عليك أن تتعلم مفاهيم جديدة في أوَّل مرة؛ وهي الآن تتكرر بتنسيق مختلف قليلاً وبألفاظ وتراكيب جديدة. إلا إنْ انتقلت في مستوى التطبيق من لغة عالية (مثل Python و Go) إلى لغة دانية (مثل C أو Rust) حيت يزيد التحكم في التفاصيل الدقيقة ويقل التجرُّد عن الآلة. والواقع أن ليسَ ثمة لغة واحدة تحقق كل ما تريد؛ بل يغلب على المشاريع البرمجية تعدد اللغات فيها.