المحتويات
فكر بايثون Python – كيف تفكر مثل عالم كمبيوتر
الهدف من كتاب فكر بايثون Python – كيف تفكر مثل عالم كمبيوتر، هو تعليمك التفكير كعالم حاسوب. تجمع طريقة التفكير هذه بين بعض أفضل ميزات الرياضيات والهندسة والعلوم الطبيعية.
مثل علماء الرياضيات، يستخدم علماء الحاسوب اللغات الرسمية للإشارة إلى الأفكار (على وجه التحديد الحسابات). مثل المهندسين، فإن علماء الحاسوب يصممون الأشياء ويجمعون المكونات في أنظمة ويقيمون ويحددون أفضل البدائل المتوفرة. ومثل العلماء، يلاحظون سلوك الأنظمة المعقدة، ويشكلون الفرضيات، ويختبرون التنبؤات.
المهارة الوحيدة الأكثر أهمية لعالم الحاسوب هي حل المشكلات. ويعني حل المشكلات القدرة على صياغة المشكلات والتفكير الإبداعي في الحلول والتعبير عن الحل بوضوح ودقة. وبالتالي فإن عملية تعلم البرمجة هي فرصة ممتازة لممارسة مهارات حل المشكلات. هذا هو سبب تسمية هذا الفصل، “طريقة البرنامج”.
من جهة، فإن كتاب فكر بايثون سوف تتعلم منه البرمجة، وهي مهارة مفيدة بحد ذاتها. ومن جهة أخرى، سوف تستخدم البرمجة كوسيلة لتحقيق غاية. ومع تقدمنا في فصول كتاب فكر بايثون، ستصبح هذه الغاية أكثر وضوحًا.
ما هو البرنامج؟
البرنامج عبارة عن سلسلة من التعليمات التي تحدد كيفية إجراء عملية حسابية. قد يكون الحساب شيئًا رياضيًا، مثل حل نظام المعادلات أو العثور على جذور كثيرة الحدود، ولكن يمكن أيضًا أن يكون حسابًا رمزيًا، مثل البحث عن نص واستبداله في مستند. أو يمكن أن يكون شيء رسومي، مثل معالجة صورة أو تشغيل فيديو.
تبدو التفاصيل مختلفة في لغات البرمجة المختلفة، لكن بعض الإرشادات أو التعليمات الأساسية تظهر في كل لغة تقريبًا:
- الإدخال: احصل على البيانات من لوحة المفاتيح أو الملف أو الشبكة أو أي جهاز آخر.
- الإخراج: عرض البيانات على الشاشة وحفظها في ملف وإرسالها عبر الشبكة وما إلى ذلك.
- الرياضيات: إجراء العمليات الحسابية الأساسية مثل الجمع والضرب.
- التنفيذ المشروط: تحقق من شروط معينة وقم بتشغيل الكود أو الشفرة البرمجية المناسبة.
- التكرار: قم بتنفيذ بعض الإجراءات بشكل متكرر، عادةً مع بعض الاختلاف.
صدق أو لا تصدق، هذا كل ما في الأمر. كل برنامج استخدمته من قبل، بغض النظر عن مدى تعقيده، يتكون من تعليمات تشبه إلى حد كبير هذه التعليمات.
لذلك يمكنك التفكير في البرمجة على أنها عملية تقسيم مهمة كبيرة ومعقدة إلى مهام فرعية أصغر وأصغر حتى تصبح المهام الفرعية بسيطة بما يكفي ليتم تنفيذها باستخدام أحد هذه التعليمات الأساسية.
تشغيل بايثون Python
تتمثل إحدى تحديات بدء استخدام بايثون Python في أنك قد تضطر إلى تثبيت Python والبرامج ذات الصلة على جهاز الكمبيوتر الخاص بك. إذا كنت معتادًا على نظام التشغيل الخاص بك، وخاصة إذا كنت مرتاحًا لواجهة سطر الأوامر، فلن تواجه مشكلة في تثبيت Python. ولكن بالنسبة للمبتدئين، قد يكون من المؤلم معرفة المزيد عن إدارة وبرمجة النظام في نفس الوقت.
لتجنب هذه المشكلة، أوصيك ببدء تشغيل Python في متصفح. لاحقًا، عندما تشعر بالراحة مع Python، سأقدم اقتراحات لتثبيت Python على جهاز الكمبيوتر الخاص بك.
هناك عدد من صفحات الويب التي يمكنك استخدامها لتشغيل Python. إذا كان لديك بالفعل طريقة مفضلة، فاستمر في استخدامها. وإلا فإنني أوصي باستخدام PythonAnywhere.
يوجد إصداران من Python، وهما Python 2 و Python 3. وهما متشابهان للغاية، لذلك إذا تعلمت أحدهما، فمن السهل التبديل إلى الآخر. في الواقع، لا يوجد سوى عدد قليل من الاختلافات التي قد تواجهها كمبتدئ. هذا الكتاب مكتوب لإصدار Python 3، لكني قمت بتضمين بعض الملاحظات حول Python 2.
مترجم بايثون Python Compiler
مترجم بايثون Python Compiler هو برنامج يقرأ وينفذ كود بايثون. اعتمادًا على بيئتك، يمكنك بدء المترجم الفوري بالنقر فوق أحد الرموز، أو بكتابة python في سطر أوامر. عندما يبدأ المترجم بالعمل، يجب أن ترى الإخراج مثل ما يلي:
Python 3.4.0 (default, Jun 19 2015, 14:20:21)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
تحتوي الأسطر الثلاثة الأولى على معلومات حول المترجم الفوري Compiler ونظام التشغيل الذي يعمل عليه، لذلك قد يكون الأمر مختلفًا بالنسبة إليك. لكن يجب عليك التحقق من أن رقم الإصدار، وهو 3.4.0 في هذا المثال، يبدأ بالرقم 3، مما يشير إلى أنك تقوم بتشغيل Python 3. إذا كان يبدأ بـ 2، فأنت تقوم بتشغيل Python 2 (كما خمنت).
السطر الأخير عبارة عن موجه يشير إلى أن المترجم الفوري جاهز لإدخال الرمز. إذا كتبت سطرًا من التعليمات البرمجية وضغطت على زر الإدخال Enter، فسيعرض المترجم النتيجة، مثلا كما يلي:
>>> 1 + 1
2
أنت الآن جاهز للبدء. من الآن فصاعدًا، أفترض أنك تعرف كيفية بدء تشغيل مترجم Python وتشغيل الكود.
البرنامج الأول في بايثون Python
تقليديًا، أول برنامج تكتبه بلغة جديدة يسمى “Hello، World!” لأن كل ما يفعله هو عرض الكلمات “Hello، World!”. في Python، يبدو الأمر كما يلي:
>>> print('Hello, World!')
هذا مثال على جملة print، على الرغم من أنه لا يطبع أي شيء على الورق، بل يعرض نتيجة على الشاشة. في هذه الحالة، تكون النتيجة عبارة Hello، World!
علامات الاقتباس في البرنامج تشير إلى بداية ونهاية النص المراد تشغيله، وهي لا تظهر في النتيجة.
تُشير الأقواس إلى أن الطباعة دالة. سنتحدث عن الدوال أو الوظائف في الفصل الثالث.
في Python 2، تختلف جملة print قليلاً؛ إنها ليست دالة، لذا فهي لا تستخدم الأقواس. ويمكن كتابتها كما يلي:
>>> print 'Hello, World!'
سيكون هذا التمييز أكثر منطقية قريبًا، لكن هذا يكفي للبدء.
العمليات الحسابية
بعد “Hello، World”، فإن الخطوة التالية هي العمليات الحسابية. توفر Python عوامل تشغيل، وهي رموز خاصة تمثل عمليات حسابية مثل الجمع والضرب.
تؤدي عوامل التشغيل + ، – ، و * عمليات الجمع والطرح والضرب، كما في الأمثلة التالية:
>>> 40 + 2
42
>>> 43 – 1
42
>>> 6 * 7
42
المشغل / ينفذ عملية القسمة أو التقسيم:
>>> 84 / 2
42.0
قد تتساءل لماذا تكون النتيجة 42.0 بدلاً من 42. سأشرح ذلك في القسم التالي.
أخيرًا، ينفذ عامل التشغيل ** رفع العدد إلى القوى أو الأس؛ أي أنه يرفع رقمًا إلى قوة معينة:
>>> 6**2 + 6
42
في بعض اللغات الأخرى، يتم استخدام ^ للأُس، لكن في Python هو عامل تشغيل أحادي المعامل يسمى XOR. إذا لم تكن معتادًا على عوامل التشغيل أحادية المعامل، فستفاجئك النتيجة:
>>> 6 ^ 2
4
لن أقوم بتغطية عوامل تشغيل البت في هذا الكتاب، ولكن يمكنك القراءة عنها على موقع بايثون التالي:
https: // wiki.python.org/moin/BitwiseOperators
القيم والأنواع في Python
القيمة Value هي أحد الأشياء الأساسية التي يعمل بها البرنامج، مثل حرف أو رقم. بعض القيم التي رأيناها حتى الآن هي 2 و42.0 و”Hello، World!”.
تنتمي هذه القيم إلى أنواع مختلفة Types: 2 عدد صحيح integer، و42.0 عدد بفاصلة عائمة floating-point number، و”Hello، World!” أو “مرحبًا، أيها العالم!” هي عبارة عن سلسلة محارف string، وتسمى كذلك لأن الحروف التي تحتوي عليها مرتبطة ببعضها البعض.
إذا لم تكن متأكدًا من نوع القيمة، فيمكن للمترجم أن يخبرك، وذلك كما يظهر في الأمثلة التالية:
>>> type(2)
<class 'int'>
>>> type(42.0)
<class 'float'>
>>> type('Hello, World!')
<class 'str'>
في هذه النتائج، يتم استخدام كلمة “فئة” Class بمعنى فئة؛ النوع هو فئة من القيم.
ليس من المستغرب أن تنتمي الأعداد الصحيحة إلى النوع int، بينما تنتمي السلاسل إلى str وتنتمي أرقام الفاصلة العائمة إلى float.
ماذا عن قيم مثل “2” و “42.0”؟ تبدو مثل الأرقام، لكنها موجودة بين علامات الاقتباس مثل السلاسل، ويمكن التأكد كما يلي:
>>> type('2')
<class 'str'>
>>> type('42.0')
<class 'str'>
هي سلاسل بالفعل.
عندما تكتب عددًا صحيحًا كبيرًا، قد تميل إلى استخدام الفواصل بين مجموعات الأرقام، كما هو الحال في العدد التالي: 1,000,000. هذا ليس عددًا صحيحًا قانونيًا في بايثون، لكنه قانوني:
>>> 1,000,000
(1, 0, 0)
هذا ليس ما كنا نتوقعه على الإطلاق! يفسر بايثون Python العدد 1000000 على أنه سلسلة من الأعداد الصحيحة مفصولة بفواصل. سنتعرف على المزيد حول هذا النوع من التسلسل لاحقًا.
اللغات الرسمية واللغات الطبيعية
اللغات الطبيعية Natural Languages هي اللغات التي يتحدث بها الناس، مثل الإنجليزية والإسبانية والفرنسية.
لم يتم تصميمها من قبل الناس (على الرغم من محاولة الناس فرض بعض النظام عليهم)؛ فهي تطورت بشكل طبيعي.
اللغات الرسمية Formal Languages هي اللغات التي صممها الناس لتطبيقات محددة. على سبيل المثال، التدوين الذي يستخدمه علماء الرياضيات هو لغة رسمية جيدة بشكل خاص في الإشارة إلى العلاقات بين الأرقام والرموز. يستخدم الكيميائيون لغة رسمية لتمثيل التركيب الكيميائي للجزيئات. والأهم من ذلك:
لغات البرمجة Programming Languages هي لغات رسمية تم تصميمها للتعبير عن العمليات الحسابية.
تميل اللغات الرسمية إلى قواعد نحوية صارمة تحكم بنية البيانات.
على سبيل المثال، في الرياضيات، تحتوي العبارة: 3 + 3 = 6 على البناء النحوي الصحيح Syntax، لكن العبارة: 3 + = 3 $ 6 تفتقد إلى البناء النحوي الصحيح. في الكيمياء، H2O هي صيغة صحيحة نحويًا، لكن Zz2 ليست كذلك.
تأتي القواعد النحوية في نسختين، تتعلق بالرموز المميزة والبنية. الرموز هي العناصر الأساسية للغة، مثل الكلمات والأرقام والعناصر الكيميائية. إحدى المشاكل مع 3+ = 3 $ 6 هي أن $ ليس رمزًا قانونيًا في الرياضيات (على الأقل بقدر ما أعرف). وبالمثل، فإن Zz2 غير قانوني لأنه لا يوجد عنصر كيميائي بالاختصار Zz.
النوع الثاني من قواعد بناء الجملة يتعلق بطريقة دمج الرموز المميزة. المعادلة 3 + / 3 غير قانونية لأنه على الرغم من أن + و / هي رمزين مميزين قانونيين في الرياضيات، إلا أنه لا يمكنك وضع رمز واحد تلو الآخر. وبالمثل، في الصيغة الكيميائية، يأتي الرمز السفلي بعد اسم العنصر، وليس قبله.
عندما تقرأ جملة باللغة الإنجليزية أو تعبيرًا بلغة رسمية، يجب عليك معرفة البنية (على الرغم من أنك تفعل ذلك في اللغة الطبيعية دون وعي). هذه العملية تسمى الإعراب.
أهم الاختلافات بين اللغات الرسمية والطبيعية
على الرغم من وجود العديد من السمات المشتركة بين اللغات الرسمية والطبيعية – الرموز، والبنية، والصياغة – إلا أن هناك بعض الاختلافات، ومنها:
- الغموض: اللغات الطبيعية مليئة بالغموض، والتي يتعامل معها الناس باستخدام أدلة نصية وغيرها من المعلومات. تم تصميم اللغات الرسمية بحيث تكون غير غامضة أو غير غامضة تمامًا، مما يعني أن أي عبارة لها معنى واحد تمامًا، بغض النظر عن السياق.
- التكرار: لتعويض الغموض وتقليل سوء الفهم، تستخدم اللغات الطبيعية الكثير من التكرار. نتيجة لذلك، غالبًا ما تكون مطولة. اللغات الرسمية أقل تكرارًا وأكثر إيجازًا.
- الحرفية: اللغات الطبيعية مليئة بالتعابير والمجاز. إذا قلت، “لقد انخفض البنس”، فربما لا يوجد بنس واحد ولا شيء ينخفض (هذا المصطلح يعني أن شخصًا ما فهم شيئًا بعد فترة من الارتباك). اللغات الرسمية تعني بالضبط ما تقوله.
نظرًا لأننا نشأنا جميعًا ونحن نتحدث لغات طبيعية، فمن الصعب أحيانًا التكيف مع اللغات الرسمية. الفرق بين اللغة الرسمية واللغة الطبيعية يشبه الاختلاف بين الشعر والنثر، ولكن الأهم:
- الشعر: تُستخدم الكلمات لصوتها وكذلك لمعناها، وتخلق القصيدة بأكملها معًا تأثيرًا أو استجابة عاطفية. الغموض ليس شائعًا فحسب، بل غالبًا ما يكون متعمدًا.
- النثر: المعنى الحرفي للكلمات أكثر أهمية، والبنية تساهم في زيادة المعنى. النثر أكثر قابلية للتحليل من الشعر ولكنه غالبًا ما يكون غامضًا.
- البرامج: معنى برنامج الكمبيوتر واضح وحرفي، ويمكن فهمه بالكامل من خلال تحليل الرموز والبنية. اللغات الرسمية أكثر كثافة من اللغات الطبيعية، لذلك تستغرق وقتًا أطول لقراءتها.
أيضًا، الهيكل Structure مهم، لذلك ليس من الأفضل دائمًا القراءة من أعلى إلى أسفل ومن اليسار إلى اليمين (أو اليمين إلى اليسار). بدلاً من ذلك، تعلم كيفية تحليل البرنامج في رأسك، وتحديد الرموز المميزة وتفسير الهيكل. أخيرًا، التفاصيل مهمة. يمكن للأخطاء الصغيرة في التهجئة وعلامات الترقيم، والتي يمكنك التخلص منها في اللغات الطبيعية، أن تحدث فرقًا كبيرًا في اللغة الرسمية.
تصحيح الأخطاء
المبرمجون يخطئون. لأسباب غريبة الأطوار، تسمى أخطاء البرمجة Bugs (تشبيه بالحشرة) ويطلق على عملية تعقبها تصحيح الأخطاء Debugging.
البرمجة، وخاصة تصحيح الأخطاء، تبرز أحيانًا مشاعر قوية. إذا كنت تعاني من حشرة صعبة، فقد تشعر بالغضب أو اليأس أو الإحراج.
هناك دليل على أن الناس يستجيبون بشكل طبيعي لأجهزة الكمبيوتر كما لو كانوا بشرًا. عندما يعملون بشكل جيد، نفكر فيهم كزملاء في الفريق، وعندما يكونون عنيدين أو وقحين، نرد عليهم بنفس الطريقة التي نرد بها على الأشخاص الفظين والعنيدين (ريفز وناس، معادلة الوسائط: كيف يعامل الناس أجهزة الكمبيوتر والتلفزيون، ووسائل الإعلام الجديدة مثل الأشخاص والأماكن الحقيقية).
قد يساعدك الاستعداد لردود الفعل هذه على التعامل معها. تتمثل إحدى الطرق في التفكير في الكمبيوتر كموظف يتمتع بنقاط قوة معينة، مثل السرعة والدقة، ونقاط ضعف معينة، مثل عدم التعاطف أو عدم القدرة على فهم الصورة الكبيرة.
مهمتك هي أن تكون مديرًا جيدًا: ابحث عن طرق للاستفادة من نقاط القوة وتخفيف نقاط الضعف. وابحث عن طرق لاستخدام عواطفك للتعامل مع المشكلة، دون السماح لردود أفعالك بالتدخل في قدرتك على العمل بشكل فعال.
قد يكون تعلم التصحيح أمرًا محبطًا، ولكنه مهارة قيمة ومفيدة للعديد من الأنشطة بخلاف البرمجة. في نهاية كل فصل من كتاب فكر بايثون يوجد قسم، مثل هذا، مع اقتراحات المؤلف لتصحيح الأخطاء. والذي يأمل أن يكون مفيدًا.
تمارين وتدريبات
فيما يلي بعض التمارين والتدريبات على هذا الفصل الأول من كتاب فكر بايثون:
التمرين الأول
من الجيد قراءة هذا الكتاب أمام الكمبيوتر حتى تتمكن من تجربة الأمثلة أثناء التنقل.
عندما تقوم بتجربة ميزة جديدة، يجب أن تحاول ارتكاب الأخطاء. على سبيل المثال، في برنامج “Hello، world!”، ماذا يحدث إذا تركت إحدى علامات الاقتباس؟ وماذا لو تركت كليهما؟ أو ماذا لو تهجأت الطباعة بشكل خاطئ؟
يساعدك هذا النوع من التجارب على تذكر ما تقرأه؛ كما أنه يساعد أيضًا أثناء البرمجة، لأنك تعرف ما تعنيه رسائل الخطأ. من الأفضل ارتكاب الأخطاء الآن وعن قصد من ارتكاب الأخطاء لاحقًا وعن طريق الخطأ.
- في تعليمة الطباعة، ماذا يحدث إذا تركت أحد الأقواس أو كليهما؟
- إذا كنت تحاول طباعة سلسلة، فماذا يحدث إذا تركت إحدى علامتي التنصيص أو كليهما؟
- يمكنك استخدام علامة الطرح لعمل رقم سالب مثل -2. ماذا يحدث إذا وضعت علامة الجمع قبل الرقم؟ ماذا عن 2 ++ 2؟
- في التدوين الرياضي، الأصفار البادئة لا بأس بها، كما في 09. ماذا يحدث إذا جربت هذا في بايثون؟ وماذا عن 011؟
- ماذا يحدث إذا كانت لديك قيمتان بدون عامل تشغيل بينهما؟
التمرين الثاني
ابدأ مترجم بايثون Python واستخدمه كآلة حاسبة.
- كم عدد الثواني في 42 دقيقة و42 ثانية؟
- كم ميلا في 10 كيلومترات؟ تلميح: هناك 1.61 كيلومتر في الميل.
- إذا ركضت في سباق 10 كيلومترات في 42 دقيقة و42 ثانية ، فما هو متوسط سرعتك (الوقت لكل ميل بالدقائق والثواني)؟ ما هو متوسط سرعتك بالأميال في الساعة؟
قائمة المصطلحات
فيما يلي قائمة المصطلحات التي ظهرت في هذا الفصل الأول من كتاب فكر بايثون:
- حل المشكلة: عملية صياغة أو تحديد المشكلة وإيجاد الحل والتعبير عنها.
- لغة عالية المستوى: لغة برمجة مثل Python تم تصميمها لتكون سهلة القراءة والكتابة على البشر.
- لغة منخفضة المستوى: لغة برمجة مصممة بحيث يسهل على الكمبيوتر تشغيلها؛ تسمى أيضًا “لغة الآلة” أو “لغة التجميع”.
- قابلية النقل: خاصية لبرنامج يمكن تشغيلها على أكثر من نوع واحد من أجهزة الكمبيوتر.
- مترجم أو Compiler: برنامج يقرأ برنامج آخر وينفذه.
- موجه: الأحرف التي يعرضها المترجم الفوري للإشارة إلى استعداده لأخذ مدخلات من المستخدم.
- البرنامج: مجموعة من التعليمات التي تحدد عملية حسابية.
- جملة الطباعة: تعليمة تجعل مترجم بايثون يعرض قيمة على الشاشة.
- عامل التشغيل: رمز خاص يمثل عملية حسابية بسيطة مثل الجمع أو الضرب أو تسلسل السلسلة.
- القيمة value: إحدى الوحدات الأساسية للبيانات، مثل رقم أو سلسلة، يعالجها البرنامج.
- النوع أو Type: فئة من القيم. الأنواع التي رأيناها حتى الآن هي الأعداد الصحيحة (النوع int) وأرقام الفاصلة العائمة (النوع float) والسلاسل (النوع str).
- عدد صحيح: نوع يمثل الأعداد الصحيحة.
- عدد الفاصلة العائمة: نوع يمثل الأعداد ذات الأجزاء الكسرية.
- سلسلة: نوع يمثل تسلسل الأحرف.
- لغة طبيعية: أي لغة يتحدث بها الناس تطورت بشكل طبيعي.
- اللغة الرسمية: أي لغة من اللغات التي صممها الأشخاص لأغراض معينة، مثل تمثيل الأفكار الرياضية أو برامج الكمبيوتر؛ جميع لغات البرنامج هي لغات رسمية.
- رمز Token: أحد العناصر الأساسية للبنية النحوية لبرنامج، مشابه لكلمة في لغة طبيعية.
- النحو أو Syntax: القواعد التي تحكم بنية البرنامج.
- تحليل: لفحص البرنامج وتحليل البنية النحوية.
- الخطأ أو Bug: خطأ في أحد البرامج.
- تصحيح الأخطاء أو Debugging: عملية البحث عن الأخطاء وتصحيحها.
- بالإضافة لكتاب فكر بايثون، نقترح لك قراءة موضوع بحثي بعنوان: لغة برمجة بايثون ومميزاتها وفلسفتها
المصدر
- كتاب: فكر بايثون Python – كيف تفكر مثل عالم كمبيوتر، الفصل الأول، تأليف: ألين بي داوني، ترجمة: د. م. مصطفى عبيد، مركز البحوث والدراسات متعدد التخصصات.