 |
في مدونتي القديمة كنت قد كتبت تدوينتين كمقدمة للغة البرمجة Python الأولى Python – مقدمة والثانية كيف تعمل لغة Python والأن نكمل التحدث أكثر عنها ..
في البداية قابلتني مشكلة حين فتحت الكتب التي تتحدث عن اللغة لأحضر منها المواضيع التي سأتكبتها بترتيب يسمح بالإستفادة وشرح الأساسيات بدون التوسع التام لكل نقاط اللغة فأي لغة برمجة تحتاج لكتب من الحجم الكبير لشرحها وليس مجرد عدة تدوينات !!
|
بعدها وجدت كتاب How to Think Like a Computer Scientist Using Python وهو كتاب حر لشرح أساسيات اللغة .. ووجدته أكثر من جيد في تلك النقطة الحقيقة بدون تشعبات كثير في البداية .. وبعد مراسلة مؤلف الكتابJeffrey Elkner وأخذت موافقته في السماح بإستخدام هيكل المواضيع في الكتاب والتحدث في نقاطه والزيادة عليها كما أريد .. وكان شرطه أن يظل المحتوى حرا بالنسبة للقارىء باللغة العربية .. وهذا ما أردته من الأساس !!
الفصل الأول : الطريق لتطوير البرامج
مقدمة :
الهدف من الكتاب هو تعليمك كيف تفكر كعالم كمبيوتر .. طريقة التفكير هذه هي دمج لأحسن مميزات الرياضيات و الهندسة وعلوم طبيعية أخرى مثل المنطق .. فمثلا مستخدمي علم الرياضيات ومثلهم مستخدمين علوم الكمبيوتر يرمزون لأفكارهم بلغات معينة إن كانت أرقام أو لغات برمجة للتعامل مع برامج الكمبيوتر .. ومستخدمي المجال الهندسي يهتمون بالتصميم الهيكلي للأشياء (وفي حالتنا هنا البرامج) يجمعون المكونات المختلفة ويفاضلون بينها للوصول إلى الأحسن .. والعلماء لهم أدوار أخرى في ملاحظة الأنظمة المعقدة وفرضيات عملها ووسائل تطويرها . وأنت لتصبح عالم كمبيوتر تحتاج لدمج الكثير من كل ما سبق .
مع كل ذلك تظل أهم ميزة في عالم الكمبيوتر هي حل المشكلات .. ولحل المشكلة يجب أولا عرض المشكلة , التفكير بطريقة إبداعية في الحلول , و تحديد الحل المناسب بدقة ..
وفي هذا المستوى سنستعرض كيفية البرمجة كمهارة في حد ذاتها .. ونستخدم الأمثلة بلغة البرمجة بايثون ..
في البداية يجب أن تعود مرة أخرى للرابطين في أول التدوينة لمعرفة مقدمة عن اللغة وما يميزها عن لغات البرمجة الاخرى .. في تلك النقطة الأن أريد فقط أن أعود لمفهوم الفرق بين طريقة عمل مترجم لغة البايثون Python Interpreter و المترجمات العادية للغات الأخرى compiler هو أن الـ Interpreter يقرأ البرنامج في مستوى High Level ثم يقوم بتنفيذه مباشرة .. بمعنى أنه يقوم بالقليل من العمليات في وقت قصير للتنفيذ .. لكن الـ compiler يعمل بطريقة مختلفة فهو يقوم بقراءة سطور البرنامج كلها من البداية لتنفيذها كاملة قبل عمل البرنامج في حد ذاته .. في هذه الحالة تسمى الأكواد البرمجية Source Code .. والبرنامج المترجم يسمى object code أو executable فبمجرد أن يتم تشغيل وترجمة البرنامج ككل يمكنك إستخدامه كما تشاء بدون أي عمليات ترجمة إضافية من الكمبيوتر ..
يمكنك فهم الأسلوبين بطريقة أخرى في الشكليين التاليين :-
Interpreter

Compiler

ولكن أيضا بعض لغات البرمجة الحديثة تستخدم الأسلوبين معا في تنفيذ وترجمة البرامج .. في البداية تقوم بالترجمة للغة في مستوى Low Level تسمى byte code ثم بعد ذلك تقوم بعملية مشابهة لما يقوم به الـ Interpreter أو بما يسمى virtual machine (وهو يشبه المستخدم في لغة Java والبرامج المطورة بإستخدام بيئة Net. .. وفي الحقيقة أن بايثون أيضا تستخدم الأسلوبين معا في ترجمة البرنامج ولكن أشتهر مع الكثير من المبرمجين وطريقة عملهم معها كـ لغة تعمل بالـ Interpreter ..
وهناك طريقتان مشهورتان للتطوير ببايثون هما Shell Mode و Script Mode .. في النوع الأول يمكنك كتابة الأكواد في الـ Shell “وهو سطر الأوامر في أنظمة التشغيل مثل اليونكس واللينوكس” و الـ Interpreter يقوم بعرض النتائج مباشرة كالمثال التالي ..
$ python
Python 2.5.1 (r251:54863, May 2 2007, 16:56:35)
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type “help”, “copyright”, “credits” or “license” for more information.
>>> print 1 + 1
2
والسطر الأول في الأكواد السابقة وظيفته تشغيل الـ Interpreter في نظام التشغيل .. الثلاث سطور التالية هي سطور يكتبها النظام .. السطر الخامس الذي يبدأ بـ <<< هو أمر من أوامر اللغة ويسمى بـ Python prompt يكتب النظام هذه الرموز ليخبرنا أنه على إستعداد لإستلام وتنفيذ الأوامر البرمجية .. ثم في نفس السطر كتبنا الأمر print 1 + 1 بمعنى إطبع نتيجة العملية 1 + 1 وفي السطر الأخير هو طباعة نتيجة العملية مباشرة ..
أما عن طريقة كتابة بايثون عن طريق Script .. فيمكننا كتابة السطر print 1 + 1 في ملف فارغ بإستخدام أي محرر نصوص Text Editor ونسميه مثلا firstprogram.py ونلاحظ هنا أن أي برنامج يكتب بلغة بايثون يكون في ملف منتهي بـ py. .. ثم نقوم بتنفيذه بإستخدام الـ Interpreter كالتالي
$ python firstprogram.py
2
وجدير بالذكر هنا أن إسلوب الـ Shell مناسب عند كتابة عدد صغير من سطور الأكواد بسبب ظهور النتيجة بشكل مباشر .. فكر فيه بإستخدامه كورقة بيضاء للتجربة خارج البرنامج الأساسي لتجربة شىء ما بشكل سريع .. أما إن زاد البرنامج عن عدد أسطر صغير يجب كتابته في ملف منفصل بإمتداد py. كما أشرنا في المثال السابق ..
في النهاية أريد أن ألفت نظرك أن بحثك عن معنى مصطلح ما بشكل موسع مما جاء في هذه التدوينة سيزيد من فهمك لموضوعنا والتعمق فيه .. يمكنك البحث بصفة عامة على الإنترنت أو البحث بصفة خاصة على موقع Wikipedia .. أو ببساطة تقوم تكتب سؤالك في رد على التدوينة !
مصدر الصورة
والسلام عليكم لحين التدوينة القادمة و برمجة سعيدة
..