الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

لماذا أعتبر Python لغتي المفضلة؟

مغلق
بدأه OMLX في 10 ديسمبر 2005 · 38 رد · 3,257 مشاهدة · في الأخبار والنقاشات التقنية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لماذا أعتبر Python لغتي المفضلة؟

للكاتب أحمد الهاشمي

رحلتي في مجال البرمجة بدأت قبل تسع سنوات، عندما كنت في الرابعة عشرة من عمري، وشملت كلا من Visual Basic وC وC++ وJava وPerl وPHP وJavaScript وPython، وأنا لا أتحدث هنا عن مرور الكرام، بل قمت بالعديد من المشاريع في كل منها ولا زالت قدراتي بكل هذه اللغات جيدة، وأستطيع استخدام أي منها إذا اقتضت الحاجة ذلك، لكن إذا كان الخيار متاحا لي في كل مرة، لاخترت Python لكل مشروع أعمل عليه.

والسبب؟ سهولة قراءة شفرات البرامج المكتوبة بها!

سهولة قراءة الشفرات؟

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

لكن الحقيقة هي أن استخدامي للغة Python جعلني أغير وجهة نظري هذه.

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

هذه المزايا في Python مهمة في عصر البرمجة الحالي.

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

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

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

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

إن اجراء اي تعديل على برنامج مثل هذا سيكون بمثابة كابوس، لدرجة أن من الأمور العادية جدا بالنسبة لمبرمجي C أن يحذفوا كل الشفرات التي كتبوها لمشروع ما سابقا ويعيدوا برمجة كل شيء من الصفر، لأن ذلك يكون في الكثير من الأحيان أسهل بكثير من محاولة تعديل الشفرة الحالية.

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

لكن هل يعقل أن يكمن الحل لكل المشاكل السابقة في لغة البرمجة؟ الإجابة التي أقدمها لك من واقع خبرتي هي: نعم! لغة البرمجة هي الحل، وسهولة القراءة هي السبب.

ما الذي يجعل Python سهلة القراءة؟

هنالك مجموعة من المزايا المهمة في لغة Python التي تجعلها سهلة القراءة، ومن المفيد لك أن تعرف هذه الأمور حتى تستطيع الاستمرار في تطبيقها على البرامج التي تكتبها أنت في Python.

1. سهولة القراءة جزء من الثقافة التي حول Python. وأقصد بالثقافة التي حول Python كل شيء من مطوري اللغة الأصليين إلى كتاب التعليمات والمتطوعين للإجابة عن أسئلة المبتدئين إلى المبرمجين الذين يستخدمون اللغة، كلهم مهتمون بأن تكون Python سهلة القراءة، لذا فإن أي تعديل على اللغة يدرس ويناقش لدرجة كبيرة من قبل كل من هو مهتم قبل أن تتم الموافقة على اضافته إلى اللغة، بعد التأكد من أنه لن يؤدي إلى برامج غير مفهومة الشفرة، وهذا الأمر مهم جدا، لأنه لا فائدة من إنشاء لغة جميلة وتقبيحها بعد ذلك بالتدريج بإضافة المزايا لها بصورة عشوائية ومن كل مكان، كما حدث مع لغات مثل Perl وPHP.

2. بساطة ونقاوة بنية اللغة. إذا كنت تبرمج باللغات التي تشبه C فأنت تعلم بالتأكيد بأن الجمل البرمجية تنتهي بالفاصلة المنقوطة (; ) وأن المقاطع البرمجية تكون محصورة بين الأقواس المجعدة { و }، أما في Python، فالجمل البرمجية تنتهي بنهاية السطر، أي كل جملة توضع في سطر، أما المقاطع البرمجية فلا تحاط بأقواس أو شيء مميز، وانما هي عبارة عن مجموعة من الأسطر (الجمل البرمجية) التي تتساوى في حاشيتها عن بداية السطر، وحتى تفهم ما أعنيه، قارن بين المقطعين التاليين من الشفرة، الأول بلغة C والثاني بلغة Python:

  /* C code */
  if ((age >= 6) && (age < = 18)) {
        printf(“You should go to school.\n”);
  }

  # Python code
  if (age >= 6) and (age < = 18):
        print “You should go to school.”

لاحظ الفرق في مقدار الرموز الغريبة التي تحتاجها في C ولا تحتاجها في Python، هذا الأمر يجعل برامج Python أسهل بكثير في القراءة، خاصة وأنها تشجع المبرمج على كتابة الشفرة بصورة واضحة وجميلة، على العكس من لغة C التي لا تهتم لذلك، فيمكن مثلا كتابة السطر السابق من C كالتالي:

  if((age>=6)&&(age<=18)){printf(“You should go to school.\n”);}

بينما يعد القيام بشيء مشابه في Python صعبا جدا، بل ربما يكون مستحيلا، وهذا الأمر يفيد كثيرا في تسهيل قراءة البرامج.

3. “يجب أن تكون هنالك طريقة واحدة واضحة، ويفضل أن تكون واحدة فقط، للقيام بأمر ما”. هذه العبارة مهمة وتذكر كثيرا في ثقافة Python، والمقصود بها هو أنك إذا واجهت مشكلة ما وأردت حلها بلغة Python فيجب أن تكون هنالك طريقة واضحة وضوح الشمس لحل هذه المشكلة، وأن تكون الطريق معبدة أمامك لحل هذه المشكلة بهذه الطريقة فقط، وما ينتج عن ذلك هو أنه لو كان هنالك أكثر من مبرمج يريدون حل المشكلة نفسها، فإنهم سيكتبون شفرات شبه متطابقة، أي أن المبرمجين كلهم سيفكرون بالطريقة نفسها، وبالتالي سيكون من السهل عليهم أن يفهموا شفرات بعضهم البعض.

هذه الميزة تذكر عادة في مقارنة Python باللغات الأخرى التي توفر عشرات الحلول للمشكلة نفسها، مثل Perl التي تفتخر بذلك، وعندما تكون اللغة ضخمة وتحتوي على الكثير من الأوامر والطرق المختلفة للقيام بالشيء نفسه، فإن كل مبرمج من مبرمجي اللغة سيتعلم جزءا من أوامر وقدرات اللغة ليحقق به ما يريده, وعندما تأتي بعد ذلك لأكثر من مبرمج وتطلب منهم أن يكتبوا نفس البرنامج بهذه اللغة فإن البرامج ستبدو مختلفة إلى درجة أنها قد تبدو أحيانا كما أو أنها كتبت بلغات مختلفة، وهذا يعني بأنك في كل مرة تريد أن تقرأ بها شفرة لمبرمج آخر ستحتاج لعمل تعديلات كبيرة على طريقة كتابتك للبرامج، وعندما تعمل على مشروع كبير فإنك قد تتأثر به لدرجة كبيرة، بحيث أنك عندما تعود إلى البرامج التي كتبتها أنت قبل فترة من الزمن، ستجدها غريبة عليك وغير مألوفة!

4. الأمور السحرية ممنوعة. لعل أفضل مثال على اللغات التي تستخدم الأمور السحرية مرة أخرى هي Perl، ولعل أفضل مثال في Perl على الأمور السحرية هي المتغيرة $_، فهذه المتغيرة تعتبر سحرية لأنها المتغيرة الافتراضية للكثير من العمليات، فهي المتغيرة التي تذهب إليها معلومات الملف إذا قمت بجلبها دون أن تحدد المتغيرة التي تريد أن تضع هذه المعلومات فيها، وهي المتغيرة التي تستخدم بصورة افتراضية عند تطبيق عمليات التعابير القياسية (Regular Expressions) دون تحديد متغيرة معينة، وهي المتغيرة الافتراضية عند طباعة المعلومات دون تحديد متغيرة ما، وهذا الأمر يجعل بالامكان كتابة برنامج يقوم مثلا بفتح ملف ما واستخلاص معلومات منه ثم طباعة هذه المعلومات دون استخدام أية متغيرات، أو بالأصح، باستخدام متغيرة سحرية دون الحاجة لتحديدها في البرنامج.

بشكل عام، الذي أعنيه عندما أقول بأن الأمور السحرية ممنوعة، هو أن Python تفضل الافصاح عن المقصود عند كتابة الشفرة (explicit) على الأمور التي تكون مفهومة ضمنيا أو من السياق (implicit)، وهذا الأمر يجعل فهم المقصود من الشفرة بقرائتها أسرع بكثير.

5. عدم وراثة الأمور الخاطئة من اللغات الأخرى. الكثير من مصممي لغات البرمجة الحديثة نقلوا إلى لغاتهم الكثير من الأمور من اللغات القديمة كطريقة لتسويق اللغة للمبرمجين على أنها مشابهة للقديمة، وحتى تبدو عملية الانتقال إلى اللغة الجديدة سهلة نسبيا، وتنتج بسبب ذلك لغة غير متناسقة ترث الكثير من الأمور التي كان من الممكن حلها وتصحيحها بعد مرورها بالتجربة في اللغة القديمة، ولعل من أفضل أمثلة ذلك هو دوال PHP التي ورثتها بنفس الاسم ونفس المعطيات من مكتبات C المختلفة، أما Python فهي لا تهتم بالتوافق مع اللغات الأخرى، فإذا كانت هنالك أفكار جيدة في الخارج فإن Python تتبناها بعد أن تصبح متوافقة مع بقية أجزاء Python، أما إذا كانت سيئة فمجرد تعود الآخرين على استخدامها لا يعد مبررا كافيا لدى Python لادخالها على اللغة.

من أمثلة ذلك حلقات for وwhile وdo..while في C التي تقوم بالأمر نفسه تقريبا مع اختلافات بسيطة في كيفية ترتيب الشروط وغيرها، أما في Python فستجد بأن هذه الأنواع الثلاثة من الحلقات اختزلت في الحلقة while (هنالك طريقة واضحة واحدة للقيام بأمر ما)، وهنالك أيضا نوع آخر من الحلقات في Python يختلف اختلافا كليا عن أنواع الحلقات الثلاثة في C، واسم هذه الحلقة في Python هو for، لكن لا يوجد أي تشابه بينها وبين حلقة for التي في C.

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

وهذا الأمر يعني يضمن استمرارية الميزة التي ذكرتها سابقا، وهي أن هنالك طريقة واحدة واضحة للقيام بأمر ما، لأن مطوري Python حتى إذا توصلوا إلى طريقة أفضل للقيام بأمر ما، فإنهم لن يكتفوا بإضافة الطريقة الأفضل، بل سيعملون أيضا على إزالة الطرق السابقة حتى تصبح الطريقة الجديدة هي الطريقة الوحيدة للقيام بذلك الأمر.

7. لا توجد معاملة خاصة لتطبيقات معينة. واحدة من الأمور الاعتيادية التي تقوم بها الكثير من لغات البرمجة مثلا هي البحث في النصوص عن أنماط ما باستخدام التعبيرات القياسية (Regular Expressions)، وللقيام بذلك، توجد عادة دالة في اللغة تأخذ التعبير القياسي والنص الذي تريد البحث فيه عن المقاطع المطابقة لهذا التعبير وتعيد لك هذه المقاطع، لكن مبرمجي Perl أحسوا بأن هذا الأمر مهم جدا، فلم يكفيهم أن يتم ذلك عبر دوال عادية، حالها حال القيام بأي أمر آخر، بل قاموا بعمل تعابير برمجية خاصة بالقيام بهذه العملية.

المشكلة هنا هي أن Perl أخذت تطبيقا خاصا بمجال محدد وهو مجال معالجة النصوص وأدخلته في صلب اللغة، والسؤال الذي يطرح نفسه في هذا المجال هو لماذا يتم ادخال هذه الميزة المتعلة بمعالجة النصوص ولا يتم ادخال مزايا أخرى في صلب اللغة، مثل مزايا عمل الواجهات الرسومية وغيرها؟

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

خلاصة القول

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

ماذا عن Ruby؟

في بداية هذا المقال، أشرت إلى عدد من اللغات وقلت بأنني أعرفها جيدا، لكن هنالك لغة مثيرة للاهتمام لم أشر إليها، وهي لغة Ruby، التي اشتهرت مؤخرا كلغة لإنشاء مواقع الويب التفاعلية باستخدام هيكلية اسمها Ruby on Rails.

الكثير يقارنون بين Ruby وPython، فاللغتان متشابهتان كثيرا من الخارج، ولو أنهما تختلفان أيضا في الكثير من المفاهيم الجوهرية، أهم ما هو مشترك بين Ruby وPython برأيي هو ثقافة التركيز على تسهيل القراءة وفهم الشفرة ووضعهما على رأس سلم الأولويات.

خبرتي العملية في استخدام Ruby لم تتعدى الشهرين في مقابل Python التي أستخدمها منذ أكثر من ثلاثة سنوات، لكن انطباعي عنها إلى الآن ممتاز، وحدسي يقول لي بأنها ستشارك Python كلغة مفضلة ثانية بالنسبة لي.

#2

أسئلة وأجوبة ، تابع للمقالة السابقة :

سؤال:

السلام عليكم..

شكراً لك اخي الهاشمي على هذا المقال..

انا كنت مصمم.. واﻵن مبتدئ في البرمجة.. أظن انني سابدأ بتعلم لغة الباثيون هذه أولاً لكن بعد أن أقرأ عنها أكثر وأفهم موضوعها

سؤال:

هل هي مثل الجافا.. يعني اذا كتبت البرنامج تراه يعمل على نظام الويندوز ونظام اللينكس ايضاً ام هناك اختﻻف أو انها محددة لنظام واحد دون غيره

وبما ان لك خبرة عن السي.. عندي سؤال:

هل هناك اختﻻف بين لغة C التي يعملون عليها في الويندوز ولغة C التي يعملون عليها في اللينكس أم هي لغة واحدة وتعمل في كل مكان ونفس اﻷوامر وكل شيء؟

وشكراً لك

الجواب:

وعليكم السلام ورحمة الله وبركاته ..

الله يوفقك أخي العزيز في تعلم اللغة، وتوقعي هو أنها ستكون رحلة ممتعة :)

بالنسبة لسؤالك حول كون اللغة مثل Java تعمل على أكثر من منصة، فالإجابة هي نعم، أداة CSSMirror التي تجدها على هذا الموقع قمت بإنشائها بالكامل على جهازي الخاص الذي يعمل ببيئة Windows، ثم قمت برفعها مباشرة إلى مزود Linux الذي يعمل عليه هذا الموقع فعملت الأداة دون أية مشاكل، بعد أن تأكدت من أن كل المكتبات التي أحتاجها مركبة على نسخة Python التي على المزود.

لكن هنالك اختلاف مهم بين Python وJava في تحقيق هذا التوافق، فلغة Python تحاول أن تزيل الاختلافات البسيطة بين الأنظمة المختلفة، وتسهل عليك التعامل مع الاختلافات الكبيرة، أما Java فعندما ووجهت بالاختلافات الكبيرة كانت ردة فعلها بإيجاد حلول جديدة كليا، مثال على ذلك الواجهات الرسومية، فبيئة Windows تستخدم مكتبة من الأوامر البرمجية تسمى WFC أما بيئة Linux فالمكتبات التي تستخدم عادة تسمى Qt/KDE وGTK، وكل واحدة من هذه المكتبات الثلاثة تعمل بصورة مختلفة تماما عن الأخرى.

الحل الذي قدمته Java لهذه المشكلة هي ايجاد مكتبة برمجية رابعة تختلف عن كل هذه المكتبات، اسمها Swig، وهي بالفعل تعمل بالصورة نفسها على الأنظمة المختلفة، لكنها أدت إلى ردة فعل عكسية، فبدلا من أن يتقلبها مستخدموا كافة الأنظمة .. رفضوها، فالبرامج المكتوبة باستخدام Swig تبدو مختلفة كثيرا عن بقية برامج النظام، وكأنها قادمة من المريّخ!

بشكل عام تستطيع أن تقول بأن Java تحاول الغاء الاختلافات بينما Python تحاول أن تسهل عليك التعامل معها.

بالنسبة لسؤالك بخصوص لغة C، فالإجابة هي أن اللغة هي نفسها على نظام Windows وLinux وكل الأنظمة الأخرى، لكن الاختلافات بين الأنظمة تكون في أمرين.

الأمر الأول هو المكتبات المتوفرة للغة، فالأوامر والمكتبات التي يوفرها نظام Windows تختلف عن تلك التي توفرها بيئة Linux، ولو أن هنالك الكثير من المكتبات التي تحاول أن تقلل من هذه الاختلافات، لكنها تظل موجودة ويجب عليك أن تتعامل معها.

أما الأمر الثاني فهو البرامج نفسها بعد تصنيفها، أي تحويلها من ملفات C إلى ملفات EXE في Windows أو غيرها من أنواع الملفات في البيئات الثانية، فهذه الملفات تختلف كثيرا من بيئة إلى أخرى، بل تختلف أيضا حسب المعالج الذي ستعمل عليه هذه البرامج.

لذا فإنه يجب أن تكون هنالك نسخ مختلف من البرنامج المكتوب بلغة C للبيئات المختلفة، لكن ذلك لا يعني بالضرورة بأن شفرات هذه البرامج مختلفة عن بعضها البعض.

سؤال:

السلام عليكم ورحمة الله

أخي الفاضل الهاشمي

جزاك الله خيرا على المقالة الأكثر من ممتازة

الصراحة استفدت كثيرا..

عندي بعض الأسئلة و سمحت:

* هل تتعامل لغة Python مع قواعد البيانات ؟ وكيف يتم الاتصال بهذه القواعد ؟

* هل يمكن إنشاء مواقع ويب بهذه اللغة ؟ + أمثلة لمواقع مكتوبة ب Python

* ماذا أحتاج لأبرمج ب Python ؟ محررات - مواصفات السيرفر ….

* مصادر عربية تتحدث عن اللغة

وشكرا مسبقا.

الجواب:

وعليكم السلام ورحمة الله وبركاته ..

يسرني أنك استفدت من هذه المقالة، ووفقك الله في سعيك لتعلم اللغة.

بالنسبة لأسئلتك، فهذه هي الإجابات عنها:

هل تتعامل Python مع قواعد البيانات وكيف يتم الاتصال بهذه القواعد؟

نعم، تستطيع Python أن تتعامل مع الكثير من أنظمة قواعد البيانات باستخدام مكتبات تقوم بتنزيلها من الشبكة، مثال على ذلك هذه المكتبة التي تتيح لك الاتصال بقواعد بيانات MySQL.

بالنسبة لكيفية الاتصال، فالطرق تختلف باختلاف نوع قواعد البيانات، لكن هنالك أيضا مواصفات موحدة في Python للوصول إلى قواعد البيانات اسمها DB-API، والاصدارة الحالية من هذه المواصفات هي الاصدارة الثانية DB-API 2.

إذا كانت لديك أسئلة محددة أكثر عن طرق الاتصال بقواعد البيانات فسيسرني أن أساعدك بالإجابة عنها.

كيف يتم انشاء مواقع ويب لهذه اللغة؟

في الحقيقة هذا الجانب من جوانب Python معقد نوع ما، والسبب هو أن هنالك الكثير من الطرق لتحقيق ذلك، لكن من وجهة نظري أسهل هذه الطرق المتوفرة حاليا هي هيكلية اسمها CherryPy، وهذا مثال على برامجها:

from cherrypy import cpg

class HelloWorld:
  def index(self):
    return \"Hello world!\"
  index.exposed = True

cpg.root = HelloWorld()
cpg.server.start()

وهنالك الآن هيكلية جديدة تبدو واعدة اسمها Subway هدفها هو تقليد هيكلية Ruby on Rails عن طريق ربط هيكلية CherryPy مع مجموعة من المكتبات البرمجية الأخرى لتوفير بيئة لإنشاء مواقع الويب بسهولة وسرعة فائقتين، لكنها لا تزال في بداياتها.

إضافة إلى ذلك، فهنالك هيكلية Zope الضخمة التي عادة ما تقارن مع هيكليات Java من العيار الثقيل.

أما بالنسبة لأمثلة على مواقع مكتوبة بلغة Python فيمكنك أن تجد قوائما بها في المواقع المختلفة للهيكليات، وهذا مثال على المواقع التي تعمل على CherryPy.

ومن أشهر برامج الويب التي تستخدم Python برنامج trac، وهو عبارة عن برنامج wiki محسن مع نظام لمتابعة المشاكل البرمجية الهدف منه مساعدتك على إدارة مشروعك البرمجي، وهو النظام المستخدم في إدارة مشاريع شهيرة مثل WordPress (tracker) و Ruby on Rails (tracker).

إضافة إلى ذلك فإن من المشهور عن Google أنها تبحث دائما عن مبرمجي Python، لكنني لا أعرف بالضبط أين تستخدم Python في Google.

ماذا أحتاج لأبرمج بلغة Python؟

أول شيء تحتاج إليه هو مترجم Python، ويمكنك تنزيله من موقع Python الرسمي.

إضافة إلى ذلك، يمكنك تحرير برامج Python باستخدام أي محرر نصوص عادي، بالنسبة لي، محرري المفضل هو برنامج صغيرة اسمه Notepad2

أما بالنسبة لمواصفات السيرفر، فهي تعتمد على الأسلوب الذي تريد استخدامه لتطوير البرامج، يفترض بأن أغلب شركات الاستضافة في بيئة Linux أن تسمح لك بعمل برامج Python باستخدام تقنية CGI، وهو ما قمت به شخصيا في أداة CSSMirror، أما إذا كنت تريد لبرامجك أن تعمل بصورة أسرع وأفضل من CGI فأشهر الحلول هو mod_pythonالتي تتيح لك دمج Python في مزودات Apache، لكن هذه الميزة ليست متوفرة من كل شركات الاستضافة.

مصادر عربية تتحدث عن اللغة

المصدر العربي الوحيد الذي أعرفه عن اللغة هو مستند “تعلم بايثون بكل سهولة” للأخ فهد السعيدي[OMLX].

سؤال:

السلام عليكم ورحمة الله وبركاته

ماذا تنصحني في مشواري مع البرمجة مع العلم بان هذه السنة هي اولى

سنواتي ، وانا اعاني كثيرا من لغة البرمجة التي ندرسها الc++ ( لغة السي

بلاس بلاس ) ،

لقد قرات المثال الذي وضعته عن الفرق بين لغة البيتون والسي ، وفعلا

هناك اختلاف كبير ، اتمنى ان اتقن لغة السي بلاس بلاس ، ومن ثم ابدا

مشواري مع اللغات الاخرى وبكل حرية في الاجازة الصيفية

الجواب:

وعليكم السلام ورحمة الله وبركاته ..

في البداية، وبما أن البرمجة ستكون مهنتك، أعتقد بأن من المهم بالنسبة لك أن تنظري لتوفر الفرص الوظيفية لمبرمجي اللغة التي تريدين تعملها، انطباعي عن الفرص الوظيفية في الوطن العربي هو أنها تكون لمبرمجي Oracle وMicrosoft وJava، لكن ذلك لا يعني بأنه ليست هنالك وظائف لمبرمجي اللغات الأخرى.

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

لكن على الرغم من كل ذلك، فأنا لا زلت أنصحك بتعلم لغة Python، وقرار مثل هذا قد يبدو صعبا في بداية المشوار، لكن بعد أن تتقني البرمجة بلغة C++ وغيرها من اللغات، سيكون تعلم لغات برمجة جديدة أمرا سهلا، وأحيانا سيكون كل ما تحتاجين إليه لتعلم لغة جديدة هو أسبوع واحد من الصفاء الذهني والتفرغ.

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

#3

طبعا لا أحتاج أن أذكركم ،، بالورقات التي كتبتها حول هذه اللغة ،،

تعلم بايثون بكل سهولة

#4

:lol: :lol:

مقال جميل (h)

مع أنى متفق على أنه كود بايثون أكثر منطقية وتفسيرا (مثلما قال رومانوف فى الدلفى >> وتبدو مشتقات البسكال الأكثر اقترابا إلى الفهم) إلا إنى كود السى بالنسبة لى هو المعتاد :blink: :blink: وهو نفسه فى البيشو :)

#6

مشكور يا فهد مع أننى لم أنتهى بعد من قراءة المقالة ولكن أنت كده حتخلى أنوريكا يتجنن !!!!

:D :D :D :D :D

#7

تصدير دافيد بيزلي

جامعة شيكاغو

مؤلف "دليلك الأساسي لپايثون"

كمعلم , و كباحث , و كمؤلف , يسعدني أن أرى اكتمال هذا الكتاب . إن پايثون هي لغة برمجة سهلة الاستعمال و ممتعة للغاية , و قد ازداد عدد مستعمليها و محبيها باضطراد في السنين الماضية . الرجل الذي صمم پايثون هو گيدو فان روسّم , و قد استقى نحوها و تراكيبها السهلة الاستعمال من لغة أ-ب-سي (ABC) , و هي لغة تعليمية تم تطويرها في الثمانينات من القرن الماضي . لكن پايثون هي لغة برمجة حقيقية , و ليست لعبة أو مجرد أداة تعليمية , و هناك الكثير من الخصائص في پايثون التي تم استسقائها من لغات برمجة مثل سي++ , چافا , موديولا , و سكيم (Scheme)! في الحقيقة , إن ميزة پايثون الأهم هي أنها تنفع الجميع ,هي لغة المحترفين و المبتدئين على حد سواء,و المبرمجين ,و العلماء ,و المعلمين ,و الباحثين و الفنانين أيضا !

بالرغم مما ذكرته الآن , قد تجد نفسك تتسائل : "لماذا پايثون ؟" أو "لم أتعلم البرمجة بپايثون؟" و خصوصا أن الآراء تجمع على بعض لغات البرمجة الاخرى ( التي من مزاياها تطفيش المبتدئين !) , مثل سي++ أو چافا . همم , في الحقيقة من الصعب الإجابة على هذا السؤال , لكن جوابي الشخصي هو أن البرمجة بلغة پايثون مسلية , و ممتعة للغاية , و منتجة أكثر من البرمجة باللغات الاخرى .

مهنتي هي التدريس , و عندما أدرس علم الحوسبة لطلابي , أريد أن اوصل المفاهيم المهمة إليهم , و أيضا أن أجعل المادة مشوقة و ممتعة للطلاب . لكن للأسف , عند تدريس البرمجة للطلاب الجدد , يصاب هؤلاء بالإحباط من التركيز الزائد ( أو الذي يبدو لهم زائدا ) على المفاهيم الرياضية و على التفاصيل الدقيقة لنحويات لغة معينة و قواعدها و ترجمتها (compiling) و غير ذلك . مع أن فهم الأفكار الرياضياتية المجردة و التقيد بالقواعد هما أمران مهمان جدا لكل المبرمجين المحترفين , و بالتأكيد لكل الطلاب الذين يودون متابعة دراسة البرمجة , لكن المبتدئين يصابون بالملل بسرعة , و يفقدون اهتمامهم بالبرمجة نهائيا , و هو ما لا أريد أن يحدث . عندما أعطي دروسي , أتمنى أن أرى طلابي مليئين بالحماس و الرغبة في التعلم ..أحب أن أراهم منهمكين في حل بعض المشاكل الممتعة , و أريد فيهم روحا من الإبداع و التمرد على المألوف , أن يصلوا إلى طرق خلاقة لحل المشاكل ..و أن يبذلوا جهدهم و أن يتعلموا من الأخطاء التي يرتكبونها. إذا كان هناك شيء لا أريده , فهو أن أضيع الوقت الذي كان يمكن استثماره بطريقة أفضل في أشياء مثل البحث عن أخطاء في التراكيب النحوية المستعملة , أو تفسير رسائل الخطأ عصية الفهم التي يولدها المترجم (compiler), أو الألف طريقة و طريقة التي يمكن أن يسبب بها برنامج ما خطأ حماية عام (general protection fault).

إن أحد الاسباب التي تجعلني أستخدم پايثون هو التوازن الحسن فيها ما بين الجوانب النظرية و الجوانب العملية . بما أن پايثون لغة مفسرة , يمكن للمبتدئين أن يبدئوا تعلمها و يقوموا بكتابة بضعة برامج بسيطة دون الارتباك و التعب الذي تسسبه اللغات المترجمة في العادة , بمشاكل الترجمة و الربط (linking) التي لا يستطيع أي مبتدأ فهمها . بالإضافة إلى ذلك , تأتي پايثون مع مكتبة كبيرة من الوحدات النمطية (modules) التي تستخدم في كثير من المهام , من البرمجة للوب(*) إلى دعم XML(**) إلى التصميم الرسومي و معالجة الرسوميات . هذة الجوانب العملية من پايثون تزيد من اهتمام الطلاب بالبرمجة كما تسمح لهم باتمام بعض البرامج المفيدة و العملية . پايثون أيضا لغة ممتازة لتأسيس الطلاب في علم الحاسب , و بما أنها تدعم الإجرائات التنفيذية (procedures) و الصفوف (classes) بشكل كامل , يمكن تعريف الطلاب تدريجيا على مواضيع يمكن تطبيقها لاحقا في لغات برمجة مثل سي++ و جاڤا , المواضيع التي أتحدث عنها تشمل التجريد الإجرائي (procedural abstraction), و البرمجة غرضية التوجه (object-oriented programming), و طبعاً بنى المعطيات (data structurtes). هناك حتى بعض الخصائص قد استعارتها پايثون من لغات البرمجة التابعية (functional programming ) , و التي قد يستفيد منها المدرس في طرح مواضيع يمكنه تغطيتها لاحقا مع لغات مثل سكيم و لسب .

دهشت عندما قرأت تعليق جفري في مقدمته , كيف أن پايثون مكنته من أن يرى "نسبا أعلى من النجاح و نسبا أقل من الإمتعاض" بين طلابه . و أنه استطاع أن يغطي نسبة أكبر من المنهاج و بنتائج أعلى . مع أن هذة التعليقات تشير إلى منهاج لمبتدئي البرمجة , لكنني أستعمل پايثون أحيانا لنفس هذة الأسباب بالضبط , في دروسي للمتخرجين من طلبة الدبلوم بجامعة شيكاغو . في هذة الدروس , يكون عليَّ تغطية الكثير من المعلومات في فترة ضئيلة , حوالي التسعة أسابيع . و بالرغم أنه من الممكن جدا بالنسبة لي أن ألحق الكثير من المعاناة و الألم بالطلاب إذا استخدمت لغة مثل سي++ , لكن هكذا طريقة ستضر أكثر مما تنفع , خصوصا إذا كان الموضوع لا يتعلق بالبرمجة بشكل مباشر , مثلا إذا كان عن الخوارزميات أو بنى المعطيات . إن پايثون تسمح لي بالتركيز على موضوع الدراسة و تسمح لطلابي باكمال برامج تطبيقية أكثر عليه مما لو استخدمنا سي++ .

مع أن پايثون ما زالت صغيرة في السن , لكن أعتقد أن المستقبل أمامها براق في مجال التعليم , و هذا الكتاب هو خطوة مهمة على ذلك الطريق .

دافيد بيزلي

جامعة شيكاغو

مؤلف "دليلك الأساسي لپايثون"

مصدر الترجمة

#8

مقدمة مقدمة ... بقلم چف إلكنر

يدين هذا الكتاب بوجوده للتعاون الذي جعلته شبكة الانترنت و حركة البرامج الحرة ممكنا . المؤلفون الثلاثة, و هم مدرس جامعي , و مدرس في ثانوية , و مبرمج محترف , لم يلتقوا وجها لوجه حتى هذة اللحظة . لكنهم تمكنوا من أن يتعاونوا معا بشكل وثيق , عبر شبكة الانترنت , كما ساعدهم الكثير من الأشخاص الرائعين الذي تبرعوا بوقتهم و مجهودهم لكي يحسنوا هذا الكتاب . و نحن نعتقد بإخلاص أن هذا الكتاب هو شهادة حية على المنافع و على الامكانيات المستقبلية التي يحملها هذا النوع من التعاون , الذي وضع إطاره العام ريتشارد ستولمان و مؤسسة البرامج الحرة (Free Software Foundation).

كيف و لماذا بدأت باستعمال پايثون

في عام 1999 , تم تغيير اللغة المستخدمة في إمتحان المقرر المتقدم في علوم الحاسب لطلاب الثانوية , تم تغييرها من پاسكال إلى سي++ . و كما كان الأمر في كل المدارس الثانوية عبر الولايات المتحدة , كان لهذا تأثير كبير على المنهاج الذي أدرسه في الثانوية التي أعمل بها , ثانوية يوركتاون في مدينة آرلينغتون بولاية ڨرجينيا . بما أن المقرر مدته سنتان , و قد جرت العادة أن تستخدم اللغة نفسها في السنتين , منعا لإرباك الطلاب , فقد قررنا تدريس لغة سي++ في العام الدراسي 1997-1998 ليمكن للطلاب من المتابعة بسي++ و تقديم الامتحان بها في العام الذي يليه .

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

أردت لغة تعمل على حواسب المدرسة التي تشغل نظام تشغيل لينوكس , و تعمل أيضا على حواسب ويندوز و حواسب الماكنتوش التي يملكها الطلاب في منازلهم . أردت لغة مفتوحة المصدر , بحيث يمكن للطلاب اقتناؤها و تشغيلها في منازلهم بغض النظر عن دخل الأسرة . و أردت لغة يستعملها مبرمجون محترفون , و لها مجتمع نشط من المطورين , لغة تدعم البرمجة غرضية التوجه (Object Oreiented Programming) و البرمجة الإجرائية (Procedural Programming) أيضا . و أهم نقطة بالتأكيد هي أن تكون لغة سهلة في التعلم و التعليم . عندما تفحصت خياراتي بناء على هذة المعايير , لم أجد إلا لغة ملائمة واحدة , و كانت هي پايثون .

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

البحث عن كتاب

كانت أكبر مشكلة واجهتها بعد أن قررت استعمال بايثون عوضا عن سي++ هي عدم توفر كتاب مدرسي ملائم , أو أي كتاب عن بايثون يمكن للطلبة أن يستخدموه كمرجع للمقرر , و هنا تدخل "المحتوى الحر" للمساعدة . كان ريتشارد ستولمان قد عرفني في وقت سابق من ذلك العام إلى آلان داوني , حيث أن كلينا كنا قد تحدثنا إليه عن رغبتنا في تطوير كتب و مواد تعليمية اخرى "حرة" . "حرة" بمعنى أنه يمكن توفيرها مجانا , و نسخها و تعديلها و ترجمتها و استلهامها في أعمال اخرى دون أي قيود , على شرط واحد و هو أن العمل الناتج هو أيضا "حر" , بنفس المعنى السابق . كان آلان قد كتب كتابا اسمه "كيف تفكر كعالم حاسبات : أسس البرمجة باستعمال لغة جافا" , لاستعمال طلابه من طلبة السنة الأولى في كلية الهندسة المعلوماتية(*) , و هو كتاب "حر" , بالمعنى المذكور آنفا . عندما قرئت هذا الكتاب عرفت للتو أنه الكتاب الذي كنت أبحث عنه , حيث أنه كان أوضح نص رئيته في حياتي للمبتدئين في علم الحوسبة , و كان التركيز فيه على العمليات الفكرية المتعلقة بالبرمجة بشكل عام و ليس على خصائص لغة معينة . إن كتاب آلان جعل مني معلما أفضل بمجرد أن أنهيت قرائته .

كان كتاب آلان ممتازا , لكن هذا لم يكن السبب الوحيد وراء إنجذابي إليه , بل أيضا أنه كان متوفرا تحت ترخيص ال GPL , بمعنى أنه كتاب حر , يمكن استخدامه كأساس لكتب اخرى دون أي قيود . و خطر لي , بعد أن قررت استخدام بايثون في الصف الذي ادرسه أنه ربما من الممكن "ترجمة" كتاب آلان من جافا إلى بايثون و استخدامه ككتاب مدرسي , خصوصا أنه لم تكن لدي في ذلك الوقت لا القابلية و لا الوقت الكافي لكتابة كتاب جديد من الصفر ,و أيضا , خطر لي أنه لو نجح هذا الكتاب , فسيكون دليلا على أن النموذج التعاوني في التطوير , السائد (و بنجاح ساحق) في عالم البرمجيات الحرة يمكن أيضا إستخدامه (أيضا بنجاح ساحق؟) في تطوير المواد التعليمية .

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

في النصف الثاني من الكتاب , و الذي يتعلق بالبرمجة غرضية التوجه (Object Oriented Programming) , أدركت حاجتي إلى شخص ذي خبرة عملية أكبر في البرمجة مني , لكنني لم أجد شخصا مستعدا للمساعدة مباشرة , و هكذا بقي الكتاب نصف-منجز لحوالي العام حتى قدم لي مجتمع المصادر الحرة مجددا المساعدة التي احتجتها : تلقيت رسالة إلكترونية من كريس مايرز عبر فيها عن اهتمامه بالكتاب , و كريس هو مبرمج محترف كان قد بدأ في تدريس مادة البرمجة (باستعمال بايثون!) في جامعة لاين الحكومية (مدينة يوجين في ولاية أوريجون في الولايات المتحدة) . كان كريس يبحث عن مواد تعليمية يمكنه استخدامها مع طلابه , و قاده هذا البحثإلى هذا الكتاب , و بدأ فورا بالإضافة إليه و تعديله ,كما أنه أضاف مشروعا جديدا إلى موقعنا سماه "برمجة بايثون المسلية" , و عمل مع بعض طلابي المتميزين كمعلم أعلى , يقودهم ألى أشياء لم أكن لأستطيع أن أقودهم إليها .

أول مرة

إن عملية ترجمة و أعداد "كيف تفكر كعالم حاسبات" التي قمنا بها في السنتين الماضيتين قد أكدت لي أن بايثون هي اللغة المثلى لتعليم البرمجة للمبتدئين .بايثون تجعل طرح أمثلة البرمجة أمرا سهلا جدا و تساعد المتعلمين الجدد على فهم الأفكار الجوهرية بسهولة فائقة .

يمكن استخدام أول برنامج في هذا الكتاب لتوضيح هذة الفكرة الجوهرية , البرنامج هو بطبيعة الحال البرنامج التقليدي الأول الذي يكتبه المبتدئون و قد اصطلح على تسميته ببرنامج "مرحبا !" (The "Hello , World!" Program) . انظر إلى نصه في لغة سي++ :

#include <iostream.h> void main() { cout << "Hello, World!" << endl; }

و قارن ذلك بنصه في بايثون :

print "Hello, World!"

صحيح أن هذا برنامج بسيط جدا , لكن حتى في هذا البرنامج يبدو تفوق بايثون واضحا للعيان . مادة البرمجة التي أدرسها في ثانوية يوركتاون ليس لها متطلبات مسبقة , و لهذا فإن برنامج "مرحبا" آنف الذكر هذا هو أول برنامج يراه غالبية الطلبة في حياتهم . بطبيعة الحال , الكثيرون منهم قلقون بعض الشيئ , و على الأغلب سمعوا الكثير من الاشاعات أن"البرمجة صعبة جدا و معقدة جدا و من شبه المستحيل فهمها " . تدريس البرمجة باستخدام سي++ كان يجبرني على القيام بأحد أمرين , و أحلاهما مر , بعد كتابة هذا البرنامج : إما أن أشرح معنى عبارات "include" و "void main" و رموز الــ} و الــ{ , ما قد يؤدي إلى إرباك الطلبة في هذة المرحلة أو حتى زرع الخوف من البرمجة في قلوب بعضهم , و إما أن أقول لهم ببساطة : "لا تهتموا بهذة الأشياء المعقدة الآن , سأشرحها لكم لاحقا , و هذا قد يؤدي إلى نفس النتيجة . الأهداف التعليمية لمادة البرمجة 1 التي كنت إدرسها هي تقديم فكرة العبارات البرمجية للطلاب و مساعدتهم على كتابة برنامجهم الأول , و هذا بالضبط ما يساعدهم عليه استخدام بايثون عوضا عن سي++ .

إن مقارنة شرح برنامج "مرحبا!" في نسخة بايثون من هذا الكتاب مع شرحه في نسخة سي++ ستقنع المرء بصواب استخدام بايثون : شرح "مرحبا!" في سي++ أطول 7 مرات من شرحه في بايثون , و النقطة المهمة هي هذة : الأسطر الزائدة في نسخة سي++ لا تتعلق بأي أفكار مهمة في البرمجة , بل بنحو سي++ العصي على الفهم . في الحقيقة , هذا الأمر لا يقتصر على البرنامج فقط , بل ستراه في الكتاب بكامله , حيث وجدت صفحات كاملة تتبخر بين أصابعي لأن نحو بايثون الواضح و المباشر جعلها غير ضرورية .

إن استخدام لغة عالية المستوى جدا مثل بايثون يمكن المدرس من تأجيل الحديث عن التفاصيل منخفضة المستوى و التي تتعلق ببنية الحاسب إلى الوقت الذي يحتاجها فيه الطلاب و يستطيعون الاستفادة منها و فهمها , و هكذا يمكن تقديم الأشياء المهمة أولا , و من ثم تقديم التفاصيل .من أوضح الأمثلة على هذا (الأساسيات و من ثم التفاصيل )الطريقة التي يدرس فيها مفهوم المتغيرات . في سي++ المتغير هو إسم لمكان في الذاكرة يحتوي على شيء . يجب أن "يعلن عن" المتغير قبل استخدامه و يحدد نمطه (type) , على الأقل جزئيا ليمكن تحديد حجم المكان الذي سيشغله . و هكذا فإن مفهوم المتغير مرتبط نوعا ما بعتاد الآله . مفهوم المتغير هو مفهوم أساسي جدا و هام جدا في البرمجة(و أيضا في الجبر) , و من الصعب فهمه حتى دون وجود كل التعقيدات الإضافية . الحديث عن البايتات و العناوين الذي يضطر مدرسوا البرمجة في سي++ إليه يزيد في الصعوبة على الطالب . في بايثون , من جهة اخرى , المتغير هو إسم يشير إلى شيء . و هذا أمر شبه بديهي للطلاب الجدد , و قريب جدا من مفهوم ال"متغير" الذي تعلموه خلال دراستهم للرياضيات (خصوصا الجبر) . سهلت بايثون حياتي و حياة الطلاب كثيرا , و لم نضطر لصرف الكثير من الوقت على المتغيرات و لم يجدوا الكثير من المشاكل معها .

من مقدمة كتاب كيف تفكر كعالم حاسبات : البرمجة مع بايثون

#9
# Python code by samran
import arabteam2000forum as AF
share = AF.getSharelist()
om = "OMLX"
me = "sam2"
if me love (om.share):
               import chat
               print dir (chat.respect_faces)
else:
               import chat
               print dir (chat.bad_faces)

--------

:) :D -waf

#11

بالمناسبة اليكم هذه الصفحة فهى تحتوى على كتب للغة البايثون (( هدية الى الاخ أنوريكا !!! :o :o ))

http://www.miex.org/python/

:D :D

#12
Arab Penguin كتب:
بالمناسبة اليكم هذه الصفحة فهى تحتوى على كتب للغة البايثون (( هدية الى الاخ أنوريكا !!!  :o  :o ))

http://www.miex.org/python/

:D  :D

أيه الهدايا الحلوه اليومين دول، مشكوووورين :D :D

من الصبح وأنا عمال أقرأ بايثون وخلصت كتابين كمان :wacko: :wacko: :wacko: :wacko: :wacko:

فاضل التطبيق بقى :s

بس عندى سؤالين .. هل يوجد IDE محترم شويه يشبه VS.NET أو Delphi بحيث يعمل مع البايثون (محدش يقول vs.net plug-in لأنه يشتغل 21 يوم :angry: ).

السؤال الثانى: ما موضوع أن الكود يبقى مع اللغة (لأنها مفسره) ؟؟ يعنى أرفق برنامجى والسورس كود يبقى ظاهر؟ دى تبقى كاااااارثة :lol: :lol: أصل الكلام ده لما نعمله على الويب عادى محدش هيشوف السورس أما client فالموضوع ده لازم يتغير ..

بالمره ... هل هناك أى مثال لبرنامج واحد تم عمله بالبايثون؟ :blink:

#14

من قال ان بايثون لا توجد فيها امور سحرية .. هذا خطأ فادح!!!!

c = a or b

هذا مثلا, سطر سحري .. لماذا؟

اولا ما الذي يفعله هذا السطر؟

هذا السطر مماثل للسطر التالي في السي:

c = a? a : b

كيف تحول هذا الى ذاك؟

هذا يعود إلى طريقة python في تقييم الـ boolean expression و استخدام الـ short circuiting

في لغة جافا مثلا, الـ boolean expressions لا تجوز الا على المتغيرات من نوع boolean, و مثلا,

if ( a || b )

ستعطيك اما true او false, بناءا على قيم a و b

و طبعا, لو كانت a صحيحة true, فإن a || b ستعطيك true بغض النظر عن قيمة b, لذلك تقوم اللغة باستغلال هذه النقطة من أجل تقليل عدد الأوامر اللازمة لتنفيذ تلك الجملة, و هذا يسمى short circuiting, بمعنى انه اذا كان a هو true, فإن جافا لن تقوم باختبار قيمة b, بل ستعطيك true على الفور!!

بايثون تقوم بعمل مشابه, و لكن, في بايثون تستطيع القيام بعمل boolean expressions على اي نوع من المتغيرات!!

و من هذا ينتج, أن a or b بعد ان كان من المفروض ان تعطيك true او false, فإنها تعطيك a اذا كانت a صحيحة non-zero, و تعطيك b اذا كانت a خاطئة zero

لهذا, تستطيع ان تقوم:

c = a or b

و هذا سيكون معناه:

if a:
    c = a
else:
    c = b

من قال ان بايثون لا يوجد فيها حركات سحرية؟ :rolleyes:

هناك حركات سحرية اخرى لم استطع فهمها!! :lol: تجدونها في هذا المقال,

http://www.hetland.org/python/instant-python.php

و هو بالمناسبة, مقال لتعليم بايثون للمبرمجين ..

#15

أخي omlx سؤال لو سمحت

في مشاركتي رقم 9 كتبت

share = AF.getSharelist()

هل هذا يعني أني حملت قائمه share في الذاكره و إستخدمت قسم كبير منها ؟

(بإعتبار أني أقول share تساوي قائمه المشاركات)

و شكرا لك و كل الإحترام

#16

أخي sam2

في بايثون كل شيء عبارة عن إشارة إلى مرجع تقريبا ،، يعني أنت تشير إلى القائمة ولم تقم بتحميلها ،، تقريبا شبيه بالمؤشرات في لغة السي ،،،

#17

السلام

انا الحين اقرا الموضوع اذا استصعب علي أي شيء راح أسأل

ok

#18

الجافا على بطئها تبقى أسرع من ال Python

أليس كذلك؟

اللهم طهر أرض فلسطين من العملاء والخونة

#19

حرام عليكم بتلعبوا في دماغي تاني ورجعتوا الحكايه بعد ما نسيتها :D , طب استحملوا بقي :D

أنا عارف انه ممكن نبني واجهه بها لكن هل توجد بيئه فيجوال للبايثون بس تكون Drag-Drop ؟؟؟ أصلي الصراحه اتعودت علي الدلع بتاع ميكروسوفت :D

علشان مش لسه هستخدم المكتبان علشان أبني واجهه , كسل بقي :D

تم تعديل هذه المشاركة بواسطة hazzoom في 11 ديسمبر 2005 في 20:08

#20

للأسف ال Python دعمها الفني والتقني ضعيف ولا يوازي الدعم الفني للغات ميكروسوفت أو لغة ال java

حتى لو أجمعتم على أنها لغة سهلة..

لا تركزوا على السهولة وتنسوا المرونة في التطبيقات وقوة البرامج والمستقبل المشرق..

لا أعتقد أنه من المنصف مقارنة ال python

بالجافا أو بال C#

شتان ما بين الثرى والثريا ..

اللهم طهر أرض فلسطين من العملاء والخونة

#21

أيه اللى حصل :D

أنا أنتجت أول برنامج بالسى شارب فى غضون 10 دقائق ومثلها بالدلفى :blink: وأخذت 24 ساعة من غير ما اطلع نافذه بالبايثون :( :( :(

اقتباس
أنا عارف انه ممكن نبني واجهه بها لكن هل توجد بيئه فيجوال للبايثون بس تكون Drag-Drop ؟؟؟

نفس السؤال عندى :)

ولم أعرف موضوع عمل البرنامج بالسورس أم لا :(

#22

gazaal : تفضل على الرحب والسعة

ala101:

الجافا على بطئها تبقى أسرع من ال Python

أليس كذلك؟

نعم هي أبطأ في اللغة ، ولكن لما تشتغل على الواجهات الرسومية ستحس الفرق، يعني ليس بطيئة مثل جافا، لأنها تعتمد على مكتبات مكتوبة بالسي والسي ++، و تتناسق مع النظام التشغيلي بشكل رائع جدا، وبهذه تتفوق على جافا بمراحل ...

أما مسألة الدعم والمستقبل المشرق ، لا تدري ربما تقرر الشركة في ليلة وضحاها توقف الدعم عن هذه اللغات فماذا تفعل؟ انظر مثلا بيئة التطوير كيلكس من شركة بورلاند توقف الدعم وانتهت ، أما إذا كانت اللغة من المصادر الحرة فلا أعتقد أنها ستنتهي مثل نهاية بقية اللغات ، فرصة البقاء أكبر ،،

وفوق كل شيء السهولة مطلب مهم جدا، وهذا ما جعل فيجوال بيسك مشهورة ومحبوبة :D

ولكل لغة اختاص و مكان، ولكل واحد الحرية في اختيار ما يناسبه ،،

hazzoom

ميزة السحب والإسقاط تعتمد على بيئة التطوير وليس على اللغة، وعلى فكرة هناك الكثير و الكثير من مصممات الواجهات ، يعني ستجد في كل مكتبة تقريبا بيئة تطوير فيجوال ، مثل GTK و QT وwxWedigt و TK ، يعني شوف المكتبة التي تريد الرسومية التي تحبها ومن ثم ابحث عن بيئة التطوير ،

وبصراحة أنا أخترت GTK و منصة التطويرpydev و لا أستخدم واجهة رسومية من بقايا وصايا الجافا ،،

يا أنور ، انته تحاول أن تقارن بين بيئة تطوير و سطر أوامر،، الفرق شاسع ،، حصل على بيئة تطوير ومن ثم قارن،، لو حاولت أن تكتب واجهة رسومية بدون بيئة التطوير ستعرف الفرق بكل تأكيد

هذا مثال بسيط لواجهة رسومية بمكتبة GTK، لكي تشغله يجب أن يكون في جهازك مكتبة pygtk

#!/usr/bin/env python

import pygtk
pygtk.require('2.0')
    import gtk 
       class HelloWorld:
         def hello(self, widget, data=None):
             print "Hello World"
   
         def delete_event(self, widget, event, data=None):
              print "delete event occurred"
              return False
         def destroy(self, widget, data=None):
              gtk.main_quit()
         def __init__(self):
              self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
              self.window.connect("delete_event", self.delete_event)
              self.window.connect("destroy", self.destroy)
              self.window.set_border_width(10)
              self.button = gtk.Button("Hello World")
              self.button.connect("clicked", self.hello, None)
              self.button.connect_object("clicked", gtk.Widget.destroy, self.window)
              self.window.add(self.button)
              self.button.show()
              self.window.show()
         def main(self):
              gtk.main()
      if __name__ == "__main__":
          hello = HelloWorld()
          hello.main()

انظر البساطة بنفسك ، وسهولة قراءة الكود

#23

هل نسيت أن الجافا مفتوحة المصدر؟

إذاً لا فرق بين الجافا وال python من حيث المصادر المتاحة ..

وبما أنك تقول أن ال python تستخدم مكتبات لغة C++

أعتقد أن هذا يعني أن C++ أقوى من الpython فهي اللغة الأم لها على الأقل..

في هذه الأيام المبرمجين يقارنون بين الجافا وال C# فهاتين اللغتين لهما السيطرة على الساحة البرمجية في هذا الوقت حسب معلوماتي..

أنا أستغرب لماذا لا تطالبون بافتتاح منتدى لل Python :D

ربما يصبح عليها طلب أكبر من ال Visual basic خاصة للمبتدئين في تعلم البرمجة والخوارزميات..

اللهم طهر أرض فلسطين من العملاء والخونة

#24

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

كما أنها تنتج جميع أنواع التطبيقات و مدعومة على كل نظم التشغيل حتى Symbian OS المعفن يدعمها دعم قوي و متميز

أنا لا أستخدم الPython و لكني أعرف حوالي 3 من زملائي من محترفين الPython و يقومون بتنفيذ مشاريع رائعة في وقت قليل مقارنة ببعض اللغات الأخرى مثل الJava و ال#C ...

على العموم هذه آراء

Sr. Software Development Engineer
Hulu, LLC
My Blogs

#25
bashmohandes كتب:
أنا لا أدري كيف تقيمون لغة مثل الPython و تطلقون أحكاماً عليها بهذه البساطة.. فهي لغة رائعة و سلسة و portable و OO و كل شئ كما أنها أيضاً مفتوحة المصدر و سرعتها ليست سيئة ...

كما أنها تنتج جميع أنواع التطبيقات و مدعومة على كل نظم التشغيل حتى Symbian OS المعفن يدعمها دعم قوي و متميز

أنا لا أستخدم الPython و لكني أعرف حوالي 3 من زملائي من محترفين الPython و يقومون بتنفيذ مشاريع رائعة في وقت قليل مقارنة ببعض اللغات الأخرى مثل الJava و ال#C ...

على العموم هذه آراء

كلام جميل يا أخ محمد وأنا أيضا سأكون واحدا من مجتمع Python عن قريب بإذن الله .

هذا الموضوع مغلق.

مواضيع مشابهة