الهدف : برمجة بالبايثون , لم هو مشهور !
المدة : 90 دقيقة
التوقيت : 19:00 gmt , بتوقيت جرينتش السابعة مساءا
اليوم : الخميس, الحادي عشر من مارس 2010 , 11/3/2010
المحاضر : الأستاذ مسلم عادل
####################################
ملخص الجلسة
الوقت المستغرق: ساعة ونصف
عدد الحضور: 15 شخص
####################################
نص الجلسة بعد التنقيح وتعريب الأسماء
lord-zk: مرحبا بكم في الجلسات التعليمية لقناة مجتمع لينكس العربي
lord-zk: الجلسة الثانيةالهدف : برمجة بالبايثون , لم هو مشهور !
lord-zk: المدة : 90 دقيقة
lord-zk: التوقيت : 19:00 GMT , بتوقيت جرينتش السابعة مساءا
lord-zk: اليوم : الخميس, الحادي عشر من مارس 2010 , 11/3/2010
lord-zk: المحاضر : الأستاذ مسلم عادل
***lord-zk من يريد أن يسأل فقط ليضع اشارة استفهام وعندما يسمح له المحاضر يلقي السؤال
مسلم عادل: السلام عليكم ورحمة الله وبركاته
مسلم عادل: في البداية اود أن ارحب بالجميع في القناة التعليمية الخاصة بمجتمع لينوكس العربي
مسلم عادل: فقط تعريف بسيط عن نفسي لمن لا يعرفني
مسلم عادل: اسمي مسلم عادل، إداري في مجتمع لينوكس العربي وأحد مؤسسيه الثلاث
مسلم عادل: حيث تم دمج المنتدى الذي كنت اديره (منتدى توزيعة ارابيان) مع كل من منتدى عرب نكس الذي كان يديره الاخ علي الشمري ومنتدى لينكس دنيا المعرفة التي كان يديره الاخ خالد المسيهيج
مسلم عادل: ومنهم الثلاث انبثق مجتمع لينوكس العربي
مسلم عادل: اعمل حاليا في احدى الشركات المتخصصة في خدمات الاتصالات وكنت من قبل اعمل في شركة كانت تحاول تشجيع استخدام المصادر المفتوحة
مسلم عادل: ولكن للاسف الشركة السابقة لم يكتب لهذا النجاح بسبب عدم تقبل فكرة المصادر المفتوحة في الاسواق المحلية
***lord-zk الرجاء عدم التحدث قبل طلب الإذن ويكون فقط للسؤال الباقي ممكن تكملوه على الخاص أو في القناة الإجتماعية
مسلم عادل: حيث ان الناس لم يفهموا الفلسفة الموجودة في المصادر المفتوحة
مسلم عادل: انا مستخدم لينوكس قديم (1997 تقريبا)
مسلم عادل: واجيد البرمجة بمجموعة من اللغات منها C/C++, JAVA, Python, Perl and PHP
مسلم عادل: كما اني اجيد التعامل مع الشبكات حيث لدي كل من CCNA, RHCE, SC
مسلم عادل: بعد هذه المقدمة والتعريف البسيط عن نفسي، أريد أن ادخل الى الموضوع الأساسي وهو بايثون، لماذا هو مشهور
مسلم عادل: كل منا مر عليه وقت كان يسال عن أي لغة برمجة يجب ان يبدا بها لينطلق منها الى عالم البرمجة
مسلم عادل: واعتقد ان الكثير منا هنا قيل له، ابدا بالبايثون فانها الانسب للمبتدئين
مسلم عادل: بالرغم ان هذا صحيح، الا ان هذا أعطى بعض الناس بعض الافكار الخاطئة عن بايثون وعن قوة اللغة
مسلم عادل: حيث ان الكثيرين قد يعتقدون انها لغة لا تصلح سوا للتعلم وللمبتدئين
مسلم عادل: ولكن هذا غير صحيح
مسلم عادل: ينصح المبتدئين بتعلم بايثون لبساطتها ولسهولتها
مسلم عادل: وكونها لغة تستخدم منطق "الامور يجب ان تفعل بطريقة واحدة"
مسلم عادل: فلغات أخرى من الـ perl تعطيك مرونة هائلة تجعلها لغة صعبة
مسلم عادل: لو اردت ان تعمل شيء في بيرل ستلاحظ انه يمكنك ان تعمله بعدة طرق مختلفة تجعلك تحتار عند بدء تعلمها
مسلم عادل: لان مبرمج ما قد يفضل طريقة واخر قد يفضل طريقة اخرى
مسلم عادل: مثال على ما اقصده
مسلم عادل: if $a != $b print 'a isn't equal b'
مسلم عادل: unless $a == $b print 'a isn't equal b'
مسلم عادل: بايثون بالمقابل تستخدم طريقة واحدة للتعامل مع غالبية الأمور
مسلم عادل: لذا تعتبر الأفضل من يريد ان يتعلم
مسلم عادل: كما أنها تتميز بجمال الكود وذلك بفضل إستخدام الـ indentation
مسلم عادل: وهو المسافات
مسلم عادل: في لغات اخرى غالبا ما تستخدم العلامات {} لبداية الجمل وإنهائها
مسلم عادل: هذا أمر جيد، ولكنه يساهم في جعل الكود صعب القراءة
مسلم عادل: لأن كل الكود الموجود بداخل العلامات {} يعتبر صحيح (إذا كان كتب صحيح طبعا) سواء كان يبدا في بداية السطر أو في وسطه أو في اخره
مسلم عادل: لا يهم ترتيب الكود طالما العلامات {} موجودة
مسلم عادل: ولكن في بايثون هذا غير مقبول
مسلم عادل: المسافات في بايثون هي شرط من شروط اللغة
مسلم عادل: لهذا السبب يطلق على بايثون بأنها لغة أنيقة
مسلم عادل: نعم هي أنيقة وجميلة لأنها تجبرك على ترتيب الكود الخاص بك
مسلم عادل: فإذا لم تفعل هذا رسائل الأخطاء ستظهر من كل مكان
مسلم عادل: نقطة أخرى يجعل من بايثون لغة مناسبة للمبتدئين وجود أغلب المكتبات الإضافية معها
مسلم عادل: تسطيع في بايثون إيجاد مكتبة لكل شيء وأغلب هذه المكتبات تأتي مرفقة مع اللغة
مسلم عادل: قليل هي المكتبات التي تحتاج الى تحميلها من مصادر خارجية
مسلم عادل: نقطة أخرى تجعلها مناسبة للمبتدئين، وجود توثيق مكتباتها الإضافية معها
مسلم عادل: بإستخدام الامر البسيط: pydoc -p 1234 وفتح متصفح الانترنت وكتابة العنوان http://127.0.0.1:1234
مسلم عادل: تستطيع تصفح وقراءة والبحث في توثيق المكتبات الخاصة باللغة
مسلم عادل: هذا الى الان مقدمة بسيطة عن بايثون، هل يوجد سؤال قبل أن انتقل الى نقطة أخرى؟
مسلم عادل: هل يوجد اي سؤال يا شباب؟
مسلم عادل: طيب إذا انتقل الى نقطة أخرى وهي، هل بايثون مناسبة لعمل برامج إحترافية؟
أسامة عقاد: لا
مسلم عادل: الجواب البسيط على هذا السؤال هو نعم، بايثون مناسبة لعمل برامج إحترافية
مسلم عادل: قبل أن اشرح هذه النقطة، سأعطيكم بعض الأمثلة على برامج نستخدمها جميعا هي بايثون
مسلم عادل: - برنامج تركيب ريدهات، سنت اوس، فيدورا (اناكوندا)
مسلم عادل: مكتوب بالبايثون
مسلم عادل: - برنامج تركيب اوبونتو
مسلم عادل: موقع الانترنت يوتيوب
مسلم عادل: محرك البحث جوجل
مسلم عادل: او على الاقل جوجل تعتمد على باثيون في الكثير من اجزاءه ان لم يكن بالكامل
مسلم عادل: ناسا تستخدم بايثون
مسلم عادل: مواقع حكومية لكثير من الدول تستخدم plone المبني على zope المكتوب بالبايثون
مسلم عادل: مواقع جرائد امريكية تعتمد على django المكتوب بالبايثون
مسلم عادل: والقائمة تطول وتطول
مسلم عادل: ولكن مالذي يجعل بايثون لغة قوية ومناسبة لاعمال كبيرة؟
مسلم عادل: يوجد مجموعة من النقاط يمكن استخدامها في الاجابة عن هذا السؤال
مسلم عادل: أولا: لغة متعددة المنصات
مسلم عادل: بايثون تعمل على لينوكس، ويندوز، يونيكس،
مسلم عادل: هواتف الجوالات التي تعمل على نظام Symbian
مسلم عادل: تعدد المنصات هذا، يجعل الكود الذي تكتبه يعمل على أي مكان يدعم بايثون
مسلم عادل: لذا كل ما تحتاجه هو كتابة الكود مرة وتشغيله في كل مكان
مسلم عادل: طبعا هذا يشترط عدم استخدامك في البرنامج على أمور خاصة بنظام تشغيل معين
مسلم عادل: فلو كبتبت برنامج بالبايثون على لينوكس وعرفت فيه ادلة مثل /etc/mysoftware/config/
مسلم عادل: وحاولت تشغيله على ويندوز طبعا سيعطيك رسالة خطا
مسلم عادل: لان المجلد نفسه غير موجود
مسلم عادل: ولكن من جمال بايثون انها تتيح لك امكانية معرفة أي نظام تشغيل انت عليه الان
مسلم عادل: وبالتالي تستطيع اتخاذ اجراءات احتياطية
مسلم عادل: لتتفادى مثل هكذا اخطاء
مسلم عادل: النقطة الثانية التي تجعل من بايثون لغة قوية
مسلم عادل: ثانيا: تعدد الاستخدامات
مسلم عادل: من الأمور التي قد لا يعرفها البعض أنه يمكن استخدام بايثون لعمل اي تطبيق تقريبا
مسلم عادل: مثلا لو أردت عمل تطبيق يعمل على سطر الأوامر فقط (أو ما نسميه core service) بايثون وحدها كافي
مسلم عادل: لو أردت عمل برنامج يحتوي على واجهة رسومية
مسلم عادل: بايثون تدعم عدد كبير من مكتبات الواجهة الرسومية مثل QT, GTK, TK الخ....
مسلم عادل: لو أردت عمل web application أو تطبيق الويب، بايثون أيضا يمكنها ان تساعدك من خلال احدى إطارات العمل (frameworks) مثل django, turbogears, web2py zope الخ...
مسلم عادل: لو أردت أن تكتب كلاسات جافا (java classes) بطريقة سهلة وبسيطة بايثون أيضا تساعدك (عن طريق jython)
أحمد عربي: ?
مسلم عادل: لو أردت ادماج بايثون مع .Net الحل موجود مع IronPython
مسلم عادل: وان اردت استخدام بايثون مع C يوجد CPython
مسلم عادل: يا شباب هل يوجد أي سؤال قبل أن انتقل الى نقطة أخرى؟
مسلم عادل: هل يوجد أي سؤال؟
أحمد عربي: نعم
مسلم عادل: تفضل
أحمد عربي: اذا قمت بعمل تطبيق يستخدم مكتبة معينه مثلا gtk
أحمد عربي: هل هناك طريقة تمكنني مثلا من نقل تلك المكتبة الي ويندوز ؟
أحمد عربي: او ماك مثلا
مسلم عادل: سؤال جيد
مسلم عادل: هذا يعتمد على مكتبة الـ GTK نفسها
مسلم عادل: مثلا لو كانت GTK لا تعتمد على موارد خاصة بنظام التشغيل التي تعمل عليه (وليس هذا الوضع مع GTK) فنعم
مسلم عادل: يمكنك نقلها بكل سهولة الى أي نظام آخر
مسلم عادل: ولكن GTK تعتمد على موارد من نظام التشغيل وهذا قد يجعلها لا تعمل على نظام آخر
مسلم عادل: ولكن لحل هذه المعضلة
مسلم عادل: لنقل أنك تريد أن تعمل برنامج بإستخدام Python + GTK ليعمل على كل من لينوكس وويندوز
مسلم عادل: في هذه الحالة ستكبت البرنامج بالطريقة العادية وتستدعي المكتبات التي تريدها، وعند نقل البرنامج الى نظام اخر لا تنقل مكتبات GTK ولكن قم بتركيب مكتبة الGTK الخاصة بنظام التشغيل الذي تعمل عليه
مسلم عادل: ستجد أنه يوجد نسخة من pygtk للينوكس
مسلم عادل: ونسخة منه للويندوز
أحمد عربي: اذن بايثون توفر طريقة لاتسخدام gtk داخل بايثون وليس بديل عن gtk نفسه مثلا
مسلم عادل: في الويندوز قم بتركيب النسخة الخاصة به وستعمل ان شاء الله
أحمد عربي: شكرا , فهمت
مسلم عادل: حياك الله
مسلم عادل: شخص اخر لديه سؤال؟
أحمد عربي: اذن اعتقد انه يمكننا الانتقال الي نقطة أخري
مسلم عادل: النقطة الثالثة التي تجعل من بايثون لغة مناسبة للمطورين
مسلم عادل: سهولة ونظافة الكود بالاضافة سهولة كتابته وتعديله وعدم الحاجة الى تصفيف (compile)
مسلم عادل: كما ذكرت في البداية python عبارة عن لغة تفسيرية interpreted
مسلم عادل: وهذا يعني أنه يمكنك أن تكتب الكود وتنفذه مباشرة
مسلم عادل: دون الحاجة الى عمل تصفيف compile له
meGenius: !
مسلم عادل: تفضل
meGenius: فقط كتعقيب
meGenius: هذه النقطة هي تعتبر عامل ضعف و قوة في اللغة
مسلم عادل: طيب اخي بما انك اشرت الى هذا هل يمكنك ان توضح اكثر؟
meGenius: حسناً
meGenius: عدم إمكانية بناء الشفرة المصدرية للكود يجعل من نقل البرنامج إلى أي منصة أخرى يحتاج إلى وجود كل المكتبات التي يستخدمها البرنامج المكتوب بالبايثون مثبتة
meGenius: في حين لو كان بالإمكان بناء الشفرة المصدرية فإنه ستتمكن من نقل البرنامج دون الحاجة إلى إجبار الشخص على تثبيت المكتبات التطويرية و البايثون
مسلم عادل: جميل
مسلم عادل: جميل جدا، سآتي الى هذا التعقيب عندما انتهي
مسلم عادل: شكرا لك اخي meGenius
مسلم عادل: إذا متابعة لكلامي السابق،
مسلم عادل: يمكنك كتابة كود البايثون وتنفيذه مباشرة دون الحاجة الى تصفيفه (compile) مما يجعل من عملية التعديل على الأخطاء أمر بسيط جدا
مسلم عادل: خاصة عندما يكون البرنامج productive
مسلم عادل: في عملي، أطور الكثير من البرامج باستخدام بايثون، بعضها للويب وبعضها لسطح المكتب
مسلم عادل: وهذه الخاصية تجعل من تصحيح الخطا امر في غاية السهولة
مسلم عادل: حيث كل ما علي فعله هو فتح الملف الذي يحتوي على الخطا واحرره واحفظه واغلقه!
مسلم عادل: طبعا في الكثير من الحالات ستحتاج الى اعادة تشغيل البرنامج لياخذ التعديلات الجديدة
مسلم عادل: ولكن هذا يعتمد على الطريقة التي كتبت البرنامج
مسلم عادل: حيث اني اكتبها بطريقة لا احتاج الى اعادة تشغيله، بل يعلم البرنامج انه تم التعديل على ملف ويقوم بعمل reload له
مسلم عادل: على العموم
مسلم عادل: أيضا من جماليات عدم الحاجة الى التصفيف، امكانية معرفة مكان الخطا مباشرة عن طريق python interpreter دون الحاجة الى استخدام IDE خاص باللغة
مسلم عادل: وهذا بالمناسبة من الأمور التي يسأل عنها البعض
مسلم عادل: سألني بعض الأخوة عن أي IDE أستخدم لكتابة أكواد البايثون
مسلم عادل: فأجبته بأني أستخدم Kate!
مسلم عادل: فقالوا لي ان kate عبارة عن محرر نصوص عادي وليس IDE واجبتهم بنعم
مسلم عادل: حيث اني لا احتاج الى IDE لان بايثون تظهر لي مكان الخطا عند التنفيذ وفي نفس الوقت مكتبات بايثون كلها متاحة امامي باستخدام pydoc
مسلم عادل: وفي حال كنت اريد ان اجرب بعض الامور كل ما علي فعله هو الدخول الى python interpreter
مسلم عادل: وتنفيذ ما اريد بداخله لارى النتيجة فورا
مسلم عادل: الان تعقيبا على كلام الأخ meGenius
مسلم عادل: فقد قال أخونا ان عدم امكانية تصفيف الكود يعتبر جيد وسيء وسبب عدم امكانية نقل المكتبات الى النظام الاخر
مسلم عادل: هنا قد أختلف مع أخونا في هذا الأمر، والسبب هو كما قلت أغلب المكتبات موجودة أصلا في اللغة وقليل هي المكتبات التي تحتاجها من الخارج. هذا واحد
مسلم عادل: اثنان، يمكن استخدام المكبتة distutils وعمل ملف setup للبرنامج ليقوم بالبحث وتحميل المكتبات التي قد لا تكون موجودة
مسلم عادل: ثالثا، يمكن تصفيف كود البايثون وانشاء ملف تنفيذي منه !!!
مسلم عادل: نعم يمكن هذا باسختدام py2exe في حال الويندوز
مسلم عادل: حيث سيقوم هذا بعمل ملف تنفيذي يحتوي على كل المكتبات التي يستخدمها البرنامج ويمكن نقل هذا الملف الى اي نظام ويندوز اخر سواء كان يحتوي على بايثون نفسه مثبت او لا
مسلم عادل: في لينوكس أيضا يمكن انشاء ملف تنفيذي عن طريق cxfreeze اذا لم اكن مخطيء
مسلم عادل: ولكن انشاء ملف مصفف تنفيذي من البرنامج سيفقدك خصائص السهولة التي ذكرتها سابقا
مسلم عادل: قبل أن انتقل الى نقطة اخرى هل يوجد أي سؤال؟
مسلم عادل: اي سؤال يا شباب؟
أحمد عربي: !
مسلم عادل: تفضل
أحمد عربي: اليس موضوع ان بايثون ليست compiling , يجعلها ابطأ
أحمد عربي: مثلا هناك اداة emerge , فى جنتو بالبايثون ولكنها بطيئة جدا
مسلم عادل: نعم و لا في نفس الوقت!
أحمد عربي: كيف ?
مسلم عادل: نعم لان الـ python interpreter يستغرق بعض الوقت في قراءة الملف المصدري (الذي كتبته انت) وتحويله الى bytecode
مسلم عادل: ومن ثم تنفيذه
meGenius: !
مسلم عادل: لا، لان عندما تتم هذه الخطوة المرة الأولى، فان الـ interpreter سيقوم بقراءة الـ bytecode
مسلم عادل: مثال على هذا
مسلم عادل: لنقل انك عملت برنامج اسمه test ويستخدم مكتبة اسمها welcome
مسلم عادل: عند تنفيذك لـ test سيقوم الinterpreter بتحويل كل من test و welcome الى bytecode ومن ثم تنفيذهم
مسلم عادل: الجميل في الامر ان ال bytecode سيبقى مخزن في الجهاز (يحتوي على الامتداد pyc)
مسلم عادل: وعند استدعائه مرة اخرى ستكون النتيجة اسرع من الاول
مسلم عادل: يمكن تشبيه هذا بالجافا
مسلم عادل: فاي ملف ينتهي ب .java هو عبارة عن الملف المصدري
مسلم عادل: واي ملف ينتهي ب class هو عبارة عن ال bytecode
مسلم عادل: نفس الامر في بايثون اي ملف ينتهي ب py هو الملف المصدري واي ملف ينتهي ب pyc هو ال bytecode
مسلم عادل: هل ما زال لديك سؤال؟
أحمد عربي: لا شكرا
مسلم عادل: اذا لا سانتقل الى الاخ meGenius
مسلم عادل: تفضل اخي
meGenius: لقد جاوبت على سؤالي لا داعي
meGenius: شكراً
مسلم عادل: تمام
مسلم عادل: نقطة اخيرة في البايثون هو انها لا تجبرك على استخدام البرمجة الموجهة للكائنات (object oriented)
مسلم عادل: بالرغم أنها اسست على مبدا البرمجة الموجهة للكائنات
مسلم عادل: في الجافا مثلا، لطباعة جملة مثل Hello World تحتاج الى انشاء Class
مسلم عادل: في بايثون هذا ليس ضروري بالرغم ان اللغة مثل الجافا اساسها هو الـ Object orientation
مسلم عادل: الجميل في البايثون
مسلم عادل: انها تدعم اكثر من paradigms
مسلم عادل: فيمكنك استخدامها كـ structure programming
مسلم عادل: او object orientation programming
مسلم عادل: او حتى functional programming
مسلم عادل: وانت لك الحرية في استخدام ما تريد
مسلم عادل: بعكس الجافا مثلا التي تجبرك على object orientation او ال c مثلا التي تجبرك على structure programming
مسلم عادل: اخواني هذا ما لدي لهذا اللقاء، إذا حد عنده أي سؤال بامكانه استخدام العلامة ؟ للسؤال
مسلم عادل: شكرا للجميع لهذا لحضور الطيب
أحمد عربي: ?
مسلم عادل: تفضل
أحمد عربي: هل يمكن ان نستضيفك لاحقا لأحد الدروس العملية علي بايثون
?
مسلم عادل: نعم
حسان: ؟
مسلم عادل: تفضل
حسان: هل تعدد اصدارات اللغة تعتبر مشكلة
مسلم عادل: اممممم، نعم ولا
حسان: حيرتني
مسلم عادل: غالبا الكود المكتوب بالبايثون 2 متوافق مع بينه
مسلم عادل: ولكن بايثون لا تحتفظ بالتوافقية بين ارقام الاصدارات الكبيرة مثل 1 2 3
مسلم عادل: فكود مكتوب بالبايثون 1 لن يعمل بالطريقة المتوقعة على بايثون 2
مسلم عادل: وبالتاكيد لن يعمل على 3
مسلم عادل: وكود مكتوب بالبايثون 2 ايضا لن يعمل كما تريده على بايثون 3
مسلم عادل: ولكن يمكنك التغلب على هذا
مسلم عادل: بتركيب اكثر من python interpreter في جهازك
مسلم عادل: وتحديد الاصدار الذي تريده في راس الملف المصدري مثل
حسان: ألا يحدث تعارض
مسلم عادل: #!/usr/bin/python2.6
مسلم عادل: #!/usr/bin/python3.0
مؤيد السعدي: !
مسلم عادل: لا أعتقد انه لن يحدث تعارض (لست متاكد صراحة لم اجرب هذا من قبل)
مسلم عادل: تفضل
مؤيد السعدي: أحببت أن أقول أنه في فيدورا 13 ستكون بايثون 3 و 2 مثبتة معا
مؤيد السعدي: يعني إن تمت عملية تثبيتهما بشكل سليم ومدروس لن يحدث تعارض
مسلم عادل: الاستاذ مؤيد اعطاك الجواب النهائي في هذا
حسان: ؟
مسلم عادل: اذا يمكنك التغلب على التعارض بتحديد اصدار اللغة التي تريدها في ترويسة الملف المصدري
meGenius: !
مسلم عادل: تفضل
حسان: طيب ، المبتدئ بأيهما يبدأ بالثاني أو الثالث
مسلم عادل: حسان
مسلم عادل: نصيحة شخصية، الثاني
مسلم عادل: ثم انتقل الى الثالث
مسلم عادل: الثاني يتحتوي على الكثير من المكتبات التي لم تنقل بعد الى الثالث
meGenius: !
مسلم عادل: لذا ابدا به، ومن ثم انتقل الى الثالث حيث ان الفارق بين الاثنين ليس كبيرا ويمكنك تعلمه بسهولة
مسلم عادل: تفضل
مسلم عادل: meGenius
meGenius: بايثون 3 كانت في معظمها إضافات
meGenius: التعديلات الرئيسية تكاد لا تذكر
meGenius: أهم تعديل هو تحويل print من كلمة محجوزة في اللغة إلى function
مسلم عادل: نعم
مسلم عادل: يوجد تعديلات اخرى مثل raw_input وغيره
حسان: !
مسلم عادل: ولكنها كما قلت ليست بالكبيرة
مسلم عادل: يمكن بسهولة معرفة التعديلات وتجنبها
مسلم عادل: تفضل
حسان: سؤال آخير
مسلم عادل: تفضل
حسان: إذا أردت بناء موقع على النت مع وجود تعقيد كبير فيه، هل الأفضل بايثن أو بي اتش بي
مسلم عادل: امممم، هذا يعتمد عليك أكثر من اللغة نفسها
مسلم عادل: يعتمد على مدى اتقانك كل من اللغات التي ذكرت
مسلم عادل: ولكن ساتكلم عن تجربة شخصية هنا
مسلم عادل: كان عندي احد العملاء
مسلم عادل: وقمت بعمل webapplication له
مسلم عادل: خاص بادارة شركته
مسلم عادل: البرنامج عملته بـ django وهي اطار مكتبة لبايثون
new2010: ؟
مسلم عادل: المشروع لم يستغرق وقت طويل لاتقاني كل من بايثون وdjango
مسلم عادل: ولكن حدث امر وطلب العميل تحويل البرنامج الى php
مسلم عادل: طبعا من البداية كان الاتفاق على اعطائه المصدر البرمجي والسماح له بعمل التعديلات التي يريدها كيفما شاء
مسلم عادل: العميل فضل التحول من بايثون الى php لان المطورين عنده لم يتعبوا انفسهم وتعلم بايثون
مسلم عادل: قررت الشركة الموافقة على الطلب وبدانا بتحويل البرنامج الى php
مسلم عادل: لتسهيل المهمة استخدمت codeigniter وهي اطار عمل للـ php
مسلم عادل: النتيجة
مسلم عادل: الوقت المستغرق في التحويل اخذ ضعف الوقت المستغرق في انشاء البرنامج
مسلم عادل: !!
مسلم عادل: طبعا هذا حدث لسببين
مسلم عادل: الاول اضطرارنا الى كتابة الكثير من الموديلز لـ codeigniter لتحاكي ما كنا نستخدمه في django
مسلم عادل: السبب الثاني عدم بساطة ونظافة php
أحمد عربي: !
مسلم عادل: هذا يعطيك مثال، ولكن شخص اخر قد يعارضني تماما هنا
مسلم عادل: وهذا اختيار شخصي في الاخر
أحمد عربي: تعلق بسيط
مسلم عادل: قبلك يوجد new2010
مسلم عادل: تفضل new2010
new2010: هل يمكن استخدام البايثون في اجراء عمليات علىالنظام
مسلم عادل: نعم
new2010: حدف حفظ تغيير
مسلم عادل: نعم يمكن هذا وهذا من اساسيات اللغة
مسلم عادل: وهذه الامور متوفرة في المكتبة os
مسلم عادل: أحمد عربي
أحمد عربي: هو بالنسبة للبي اتش بي
مسلم عادل: تفضل
أحمد عربي: البرمجة من الصفر بها , شئ غير مفضل واستخدام فرام ورك كما اوضحت انت يسهل كثيرا
أحمد عربي: وايضا فرام ورك Cakephp يستخدم django style تقريبا بحسب ما اعلم
***lord-zk السؤال الأخير شباب وننهي هذه الجلسة
أحمد عربي: هل من اسئلة اخري
?
مسلم عادل: كان الاستقرار على codeigniter لسهولة التعديل عليه نفسه واضافة ما نريد، ليس لدي تجربة مع cakephp ولم نجربه وقت التحويل حتى لنرى ان كان سيلبي احتياجنا
مسلم عادل: سؤال اخير يا شباب؟
أحمد عربي: تفضل
مؤيد السعدي: أظنه يقصد هل من سؤال أخير.
مسلم عادل: نعم
***lord-zk هل يوجد سؤال ؟؟
مسلم عادل: طيب اذا سبحانك الله وبحمدك نشهد ان لا اله الا انت نستغرفك ونتوب اليك
حسان: جزاك الله خيرا
***lord-zk شكرا لجميع من حضر معنا وساهم وكل الشكر للأستاذ مسلم عادل على تخصيص وقته لنشر العلم وتعميم الفائدة على الجميع شكرا لكم جميعا
مسلم عادل: السلام عليكم ورحمة الله
lord-zk: الجلسة الثانيةالهدف : برمجة بالبايثون , لم هو مشهور !
lord-zk: المدة : 90 دقيقة
lord-zk: التوقيت : 19:00 GMT , بتوقيت جرينتش السابعة مساءا
lord-zk: اليوم : الخميس, الحادي عشر من مارس 2010 , 11/3/2010
lord-zk: المحاضر : الأستاذ مسلم عادل
***lord-zk من يريد أن يسأل فقط ليضع اشارة استفهام وعندما يسمح له المحاضر يلقي السؤال
مسلم عادل: السلام عليكم ورحمة الله وبركاته
مسلم عادل: في البداية اود أن ارحب بالجميع في القناة التعليمية الخاصة بمجتمع لينوكس العربي
مسلم عادل: فقط تعريف بسيط عن نفسي لمن لا يعرفني
مسلم عادل: اسمي مسلم عادل، إداري في مجتمع لينوكس العربي وأحد مؤسسيه الثلاث
مسلم عادل: حيث تم دمج المنتدى الذي كنت اديره (منتدى توزيعة ارابيان) مع كل من منتدى عرب نكس الذي كان يديره الاخ علي الشمري ومنتدى لينكس دنيا المعرفة التي كان يديره الاخ خالد المسيهيج
مسلم عادل: ومنهم الثلاث انبثق مجتمع لينوكس العربي
مسلم عادل: اعمل حاليا في احدى الشركات المتخصصة في خدمات الاتصالات وكنت من قبل اعمل في شركة كانت تحاول تشجيع استخدام المصادر المفتوحة
مسلم عادل: ولكن للاسف الشركة السابقة لم يكتب لهذا النجاح بسبب عدم تقبل فكرة المصادر المفتوحة في الاسواق المحلية
***lord-zk الرجاء عدم التحدث قبل طلب الإذن ويكون فقط للسؤال الباقي ممكن تكملوه على الخاص أو في القناة الإجتماعية
مسلم عادل: حيث ان الناس لم يفهموا الفلسفة الموجودة في المصادر المفتوحة
مسلم عادل: انا مستخدم لينوكس قديم (1997 تقريبا)
مسلم عادل: واجيد البرمجة بمجموعة من اللغات منها C/C++, JAVA, Python, Perl and PHP
مسلم عادل: كما اني اجيد التعامل مع الشبكات حيث لدي كل من CCNA, RHCE, SC
مسلم عادل: بعد هذه المقدمة والتعريف البسيط عن نفسي، أريد أن ادخل الى الموضوع الأساسي وهو بايثون، لماذا هو مشهور
مسلم عادل: كل منا مر عليه وقت كان يسال عن أي لغة برمجة يجب ان يبدا بها لينطلق منها الى عالم البرمجة
مسلم عادل: واعتقد ان الكثير منا هنا قيل له، ابدا بالبايثون فانها الانسب للمبتدئين
مسلم عادل: بالرغم ان هذا صحيح، الا ان هذا أعطى بعض الناس بعض الافكار الخاطئة عن بايثون وعن قوة اللغة
مسلم عادل: حيث ان الكثيرين قد يعتقدون انها لغة لا تصلح سوا للتعلم وللمبتدئين
مسلم عادل: ولكن هذا غير صحيح
مسلم عادل: ينصح المبتدئين بتعلم بايثون لبساطتها ولسهولتها
مسلم عادل: وكونها لغة تستخدم منطق "الامور يجب ان تفعل بطريقة واحدة"
مسلم عادل: فلغات أخرى من الـ perl تعطيك مرونة هائلة تجعلها لغة صعبة
مسلم عادل: لو اردت ان تعمل شيء في بيرل ستلاحظ انه يمكنك ان تعمله بعدة طرق مختلفة تجعلك تحتار عند بدء تعلمها
مسلم عادل: لان مبرمج ما قد يفضل طريقة واخر قد يفضل طريقة اخرى
مسلم عادل: مثال على ما اقصده
مسلم عادل: if $a != $b print 'a isn't equal b'
مسلم عادل: unless $a == $b print 'a isn't equal b'
مسلم عادل: بايثون بالمقابل تستخدم طريقة واحدة للتعامل مع غالبية الأمور
مسلم عادل: لذا تعتبر الأفضل من يريد ان يتعلم
مسلم عادل: كما أنها تتميز بجمال الكود وذلك بفضل إستخدام الـ indentation
مسلم عادل: وهو المسافات
مسلم عادل: في لغات اخرى غالبا ما تستخدم العلامات {} لبداية الجمل وإنهائها
مسلم عادل: هذا أمر جيد، ولكنه يساهم في جعل الكود صعب القراءة
مسلم عادل: لأن كل الكود الموجود بداخل العلامات {} يعتبر صحيح (إذا كان كتب صحيح طبعا) سواء كان يبدا في بداية السطر أو في وسطه أو في اخره
مسلم عادل: لا يهم ترتيب الكود طالما العلامات {} موجودة
مسلم عادل: ولكن في بايثون هذا غير مقبول
مسلم عادل: المسافات في بايثون هي شرط من شروط اللغة
مسلم عادل: لهذا السبب يطلق على بايثون بأنها لغة أنيقة
مسلم عادل: نعم هي أنيقة وجميلة لأنها تجبرك على ترتيب الكود الخاص بك
مسلم عادل: فإذا لم تفعل هذا رسائل الأخطاء ستظهر من كل مكان

مسلم عادل: نقطة أخرى يجعل من بايثون لغة مناسبة للمبتدئين وجود أغلب المكتبات الإضافية معها
مسلم عادل: تسطيع في بايثون إيجاد مكتبة لكل شيء وأغلب هذه المكتبات تأتي مرفقة مع اللغة
مسلم عادل: قليل هي المكتبات التي تحتاج الى تحميلها من مصادر خارجية
مسلم عادل: نقطة أخرى تجعلها مناسبة للمبتدئين، وجود توثيق مكتباتها الإضافية معها
مسلم عادل: بإستخدام الامر البسيط: pydoc -p 1234 وفتح متصفح الانترنت وكتابة العنوان http://127.0.0.1:1234
مسلم عادل: تستطيع تصفح وقراءة والبحث في توثيق المكتبات الخاصة باللغة
مسلم عادل: هذا الى الان مقدمة بسيطة عن بايثون، هل يوجد سؤال قبل أن انتقل الى نقطة أخرى؟
مسلم عادل: هل يوجد اي سؤال يا شباب؟
مسلم عادل: طيب إذا انتقل الى نقطة أخرى وهي، هل بايثون مناسبة لعمل برامج إحترافية؟
أسامة عقاد: لا
مسلم عادل: الجواب البسيط على هذا السؤال هو نعم، بايثون مناسبة لعمل برامج إحترافية
مسلم عادل: قبل أن اشرح هذه النقطة، سأعطيكم بعض الأمثلة على برامج نستخدمها جميعا هي بايثون
مسلم عادل: - برنامج تركيب ريدهات، سنت اوس، فيدورا (اناكوندا)
مسلم عادل: مكتوب بالبايثون
مسلم عادل: - برنامج تركيب اوبونتو
مسلم عادل: موقع الانترنت يوتيوب
مسلم عادل: محرك البحث جوجل
مسلم عادل: او على الاقل جوجل تعتمد على باثيون في الكثير من اجزاءه ان لم يكن بالكامل
مسلم عادل: ناسا تستخدم بايثون
مسلم عادل: مواقع حكومية لكثير من الدول تستخدم plone المبني على zope المكتوب بالبايثون
مسلم عادل: مواقع جرائد امريكية تعتمد على django المكتوب بالبايثون
مسلم عادل: والقائمة تطول وتطول
مسلم عادل: ولكن مالذي يجعل بايثون لغة قوية ومناسبة لاعمال كبيرة؟
مسلم عادل: يوجد مجموعة من النقاط يمكن استخدامها في الاجابة عن هذا السؤال
مسلم عادل: أولا: لغة متعددة المنصات
مسلم عادل: بايثون تعمل على لينوكس، ويندوز، يونيكس،
مسلم عادل: هواتف الجوالات التي تعمل على نظام Symbian
مسلم عادل: تعدد المنصات هذا، يجعل الكود الذي تكتبه يعمل على أي مكان يدعم بايثون
مسلم عادل: لذا كل ما تحتاجه هو كتابة الكود مرة وتشغيله في كل مكان
مسلم عادل: طبعا هذا يشترط عدم استخدامك في البرنامج على أمور خاصة بنظام تشغيل معين
مسلم عادل: فلو كبتبت برنامج بالبايثون على لينوكس وعرفت فيه ادلة مثل /etc/mysoftware/config/
مسلم عادل: وحاولت تشغيله على ويندوز طبعا سيعطيك رسالة خطا
مسلم عادل: لان المجلد نفسه غير موجود
مسلم عادل: ولكن من جمال بايثون انها تتيح لك امكانية معرفة أي نظام تشغيل انت عليه الان
مسلم عادل: وبالتالي تستطيع اتخاذ اجراءات احتياطية
مسلم عادل: لتتفادى مثل هكذا اخطاء
مسلم عادل: النقطة الثانية التي تجعل من بايثون لغة قوية
مسلم عادل: ثانيا: تعدد الاستخدامات
مسلم عادل: من الأمور التي قد لا يعرفها البعض أنه يمكن استخدام بايثون لعمل اي تطبيق تقريبا
مسلم عادل: مثلا لو أردت عمل تطبيق يعمل على سطر الأوامر فقط (أو ما نسميه core service) بايثون وحدها كافي
مسلم عادل: لو أردت عمل برنامج يحتوي على واجهة رسومية
مسلم عادل: بايثون تدعم عدد كبير من مكتبات الواجهة الرسومية مثل QT, GTK, TK الخ....
مسلم عادل: لو أردت عمل web application أو تطبيق الويب، بايثون أيضا يمكنها ان تساعدك من خلال احدى إطارات العمل (frameworks) مثل django, turbogears, web2py zope الخ...
مسلم عادل: لو أردت أن تكتب كلاسات جافا (java classes) بطريقة سهلة وبسيطة بايثون أيضا تساعدك (عن طريق jython)
أحمد عربي: ?
مسلم عادل: لو أردت ادماج بايثون مع .Net الحل موجود مع IronPython
مسلم عادل: وان اردت استخدام بايثون مع C يوجد CPython
مسلم عادل: يا شباب هل يوجد أي سؤال قبل أن انتقل الى نقطة أخرى؟
مسلم عادل: هل يوجد أي سؤال؟
أحمد عربي: نعم
مسلم عادل: تفضل
أحمد عربي: اذا قمت بعمل تطبيق يستخدم مكتبة معينه مثلا gtk
أحمد عربي: هل هناك طريقة تمكنني مثلا من نقل تلك المكتبة الي ويندوز ؟
أحمد عربي: او ماك مثلا
مسلم عادل: سؤال جيد
مسلم عادل: هذا يعتمد على مكتبة الـ GTK نفسها
مسلم عادل: مثلا لو كانت GTK لا تعتمد على موارد خاصة بنظام التشغيل التي تعمل عليه (وليس هذا الوضع مع GTK) فنعم
مسلم عادل: يمكنك نقلها بكل سهولة الى أي نظام آخر
مسلم عادل: ولكن GTK تعتمد على موارد من نظام التشغيل وهذا قد يجعلها لا تعمل على نظام آخر
مسلم عادل: ولكن لحل هذه المعضلة
مسلم عادل: لنقل أنك تريد أن تعمل برنامج بإستخدام Python + GTK ليعمل على كل من لينوكس وويندوز
مسلم عادل: في هذه الحالة ستكبت البرنامج بالطريقة العادية وتستدعي المكتبات التي تريدها، وعند نقل البرنامج الى نظام اخر لا تنقل مكتبات GTK ولكن قم بتركيب مكتبة الGTK الخاصة بنظام التشغيل الذي تعمل عليه
مسلم عادل: ستجد أنه يوجد نسخة من pygtk للينوكس
مسلم عادل: ونسخة منه للويندوز
أحمد عربي: اذن بايثون توفر طريقة لاتسخدام gtk داخل بايثون وليس بديل عن gtk نفسه مثلا
مسلم عادل: في الويندوز قم بتركيب النسخة الخاصة به وستعمل ان شاء الله
أحمد عربي: شكرا , فهمت

مسلم عادل: حياك الله
مسلم عادل: شخص اخر لديه سؤال؟
أحمد عربي: اذن اعتقد انه يمكننا الانتقال الي نقطة أخري

مسلم عادل: النقطة الثالثة التي تجعل من بايثون لغة مناسبة للمطورين
مسلم عادل: سهولة ونظافة الكود بالاضافة سهولة كتابته وتعديله وعدم الحاجة الى تصفيف (compile)
مسلم عادل: كما ذكرت في البداية python عبارة عن لغة تفسيرية interpreted
مسلم عادل: وهذا يعني أنه يمكنك أن تكتب الكود وتنفذه مباشرة
مسلم عادل: دون الحاجة الى عمل تصفيف compile له
meGenius: !
مسلم عادل: تفضل
meGenius: فقط كتعقيب
meGenius: هذه النقطة هي تعتبر عامل ضعف و قوة في اللغة
مسلم عادل: طيب اخي بما انك اشرت الى هذا هل يمكنك ان توضح اكثر؟
meGenius: حسناً
meGenius: عدم إمكانية بناء الشفرة المصدرية للكود يجعل من نقل البرنامج إلى أي منصة أخرى يحتاج إلى وجود كل المكتبات التي يستخدمها البرنامج المكتوب بالبايثون مثبتة
meGenius: في حين لو كان بالإمكان بناء الشفرة المصدرية فإنه ستتمكن من نقل البرنامج دون الحاجة إلى إجبار الشخص على تثبيت المكتبات التطويرية و البايثون
مسلم عادل: جميل
مسلم عادل: جميل جدا، سآتي الى هذا التعقيب عندما انتهي
مسلم عادل: شكرا لك اخي meGenius
مسلم عادل: إذا متابعة لكلامي السابق،
مسلم عادل: يمكنك كتابة كود البايثون وتنفيذه مباشرة دون الحاجة الى تصفيفه (compile) مما يجعل من عملية التعديل على الأخطاء أمر بسيط جدا
مسلم عادل: خاصة عندما يكون البرنامج productive
مسلم عادل: في عملي، أطور الكثير من البرامج باستخدام بايثون، بعضها للويب وبعضها لسطح المكتب
مسلم عادل: وهذه الخاصية تجعل من تصحيح الخطا امر في غاية السهولة
مسلم عادل: حيث كل ما علي فعله هو فتح الملف الذي يحتوي على الخطا واحرره واحفظه واغلقه!
مسلم عادل: طبعا في الكثير من الحالات ستحتاج الى اعادة تشغيل البرنامج لياخذ التعديلات الجديدة
مسلم عادل: ولكن هذا يعتمد على الطريقة التي كتبت البرنامج
مسلم عادل: حيث اني اكتبها بطريقة لا احتاج الى اعادة تشغيله، بل يعلم البرنامج انه تم التعديل على ملف ويقوم بعمل reload له
مسلم عادل: على العموم
مسلم عادل: أيضا من جماليات عدم الحاجة الى التصفيف، امكانية معرفة مكان الخطا مباشرة عن طريق python interpreter دون الحاجة الى استخدام IDE خاص باللغة
مسلم عادل: وهذا بالمناسبة من الأمور التي يسأل عنها البعض
مسلم عادل: سألني بعض الأخوة عن أي IDE أستخدم لكتابة أكواد البايثون
مسلم عادل: فأجبته بأني أستخدم Kate!
مسلم عادل: فقالوا لي ان kate عبارة عن محرر نصوص عادي وليس IDE واجبتهم بنعم
مسلم عادل: حيث اني لا احتاج الى IDE لان بايثون تظهر لي مكان الخطا عند التنفيذ وفي نفس الوقت مكتبات بايثون كلها متاحة امامي باستخدام pydoc
مسلم عادل: وفي حال كنت اريد ان اجرب بعض الامور كل ما علي فعله هو الدخول الى python interpreter
مسلم عادل: وتنفيذ ما اريد بداخله لارى النتيجة فورا
مسلم عادل: الان تعقيبا على كلام الأخ meGenius
مسلم عادل: فقد قال أخونا ان عدم امكانية تصفيف الكود يعتبر جيد وسيء وسبب عدم امكانية نقل المكتبات الى النظام الاخر
مسلم عادل: هنا قد أختلف مع أخونا في هذا الأمر، والسبب هو كما قلت أغلب المكتبات موجودة أصلا في اللغة وقليل هي المكتبات التي تحتاجها من الخارج. هذا واحد
مسلم عادل: اثنان، يمكن استخدام المكبتة distutils وعمل ملف setup للبرنامج ليقوم بالبحث وتحميل المكتبات التي قد لا تكون موجودة
مسلم عادل: ثالثا، يمكن تصفيف كود البايثون وانشاء ملف تنفيذي منه !!!
مسلم عادل: نعم يمكن هذا باسختدام py2exe في حال الويندوز
مسلم عادل: حيث سيقوم هذا بعمل ملف تنفيذي يحتوي على كل المكتبات التي يستخدمها البرنامج ويمكن نقل هذا الملف الى اي نظام ويندوز اخر سواء كان يحتوي على بايثون نفسه مثبت او لا
مسلم عادل: في لينوكس أيضا يمكن انشاء ملف تنفيذي عن طريق cxfreeze اذا لم اكن مخطيء
مسلم عادل: ولكن انشاء ملف مصفف تنفيذي من البرنامج سيفقدك خصائص السهولة التي ذكرتها سابقا
مسلم عادل: قبل أن انتقل الى نقطة اخرى هل يوجد أي سؤال؟
مسلم عادل: اي سؤال يا شباب؟
أحمد عربي: !
مسلم عادل: تفضل
أحمد عربي: اليس موضوع ان بايثون ليست compiling , يجعلها ابطأ
أحمد عربي: مثلا هناك اداة emerge , فى جنتو بالبايثون ولكنها بطيئة جدا
مسلم عادل: نعم و لا في نفس الوقت!
أحمد عربي: كيف ?
مسلم عادل: نعم لان الـ python interpreter يستغرق بعض الوقت في قراءة الملف المصدري (الذي كتبته انت) وتحويله الى bytecode
مسلم عادل: ومن ثم تنفيذه
meGenius: !
مسلم عادل: لا، لان عندما تتم هذه الخطوة المرة الأولى، فان الـ interpreter سيقوم بقراءة الـ bytecode
مسلم عادل: مثال على هذا
مسلم عادل: لنقل انك عملت برنامج اسمه test ويستخدم مكتبة اسمها welcome
مسلم عادل: عند تنفيذك لـ test سيقوم الinterpreter بتحويل كل من test و welcome الى bytecode ومن ثم تنفيذهم
مسلم عادل: الجميل في الامر ان ال bytecode سيبقى مخزن في الجهاز (يحتوي على الامتداد pyc)
مسلم عادل: وعند استدعائه مرة اخرى ستكون النتيجة اسرع من الاول
مسلم عادل: يمكن تشبيه هذا بالجافا
مسلم عادل: فاي ملف ينتهي ب .java هو عبارة عن الملف المصدري
مسلم عادل: واي ملف ينتهي ب class هو عبارة عن ال bytecode
مسلم عادل: نفس الامر في بايثون اي ملف ينتهي ب py هو الملف المصدري واي ملف ينتهي ب pyc هو ال bytecode
مسلم عادل: هل ما زال لديك سؤال؟
أحمد عربي: لا شكرا
مسلم عادل: اذا لا سانتقل الى الاخ meGenius
مسلم عادل: تفضل اخي
meGenius: لقد جاوبت على سؤالي لا داعي
meGenius: شكراً
مسلم عادل: تمام
مسلم عادل: نقطة اخيرة في البايثون هو انها لا تجبرك على استخدام البرمجة الموجهة للكائنات (object oriented)
مسلم عادل: بالرغم أنها اسست على مبدا البرمجة الموجهة للكائنات
مسلم عادل: في الجافا مثلا، لطباعة جملة مثل Hello World تحتاج الى انشاء Class
مسلم عادل: في بايثون هذا ليس ضروري بالرغم ان اللغة مثل الجافا اساسها هو الـ Object orientation
مسلم عادل: الجميل في البايثون
مسلم عادل: انها تدعم اكثر من paradigms
مسلم عادل: فيمكنك استخدامها كـ structure programming
مسلم عادل: او object orientation programming
مسلم عادل: او حتى functional programming
مسلم عادل: وانت لك الحرية في استخدام ما تريد
مسلم عادل: بعكس الجافا مثلا التي تجبرك على object orientation او ال c مثلا التي تجبرك على structure programming
مسلم عادل: اخواني هذا ما لدي لهذا اللقاء، إذا حد عنده أي سؤال بامكانه استخدام العلامة ؟ للسؤال
مسلم عادل: شكرا للجميع لهذا لحضور الطيب
أحمد عربي: ?
مسلم عادل: تفضل
أحمد عربي: هل يمكن ان نستضيفك لاحقا لأحد الدروس العملية علي بايثون
?مسلم عادل: نعم
حسان: ؟
مسلم عادل: تفضل
حسان: هل تعدد اصدارات اللغة تعتبر مشكلة
مسلم عادل: اممممم، نعم ولا
حسان: حيرتني
مسلم عادل: غالبا الكود المكتوب بالبايثون 2 متوافق مع بينه
مسلم عادل: ولكن بايثون لا تحتفظ بالتوافقية بين ارقام الاصدارات الكبيرة مثل 1 2 3
مسلم عادل: فكود مكتوب بالبايثون 1 لن يعمل بالطريقة المتوقعة على بايثون 2
مسلم عادل: وبالتاكيد لن يعمل على 3
مسلم عادل: وكود مكتوب بالبايثون 2 ايضا لن يعمل كما تريده على بايثون 3
مسلم عادل: ولكن يمكنك التغلب على هذا
مسلم عادل: بتركيب اكثر من python interpreter في جهازك
مسلم عادل: وتحديد الاصدار الذي تريده في راس الملف المصدري مثل
حسان: ألا يحدث تعارض
مسلم عادل: #!/usr/bin/python2.6
مسلم عادل: #!/usr/bin/python3.0
مؤيد السعدي: !
مسلم عادل: لا أعتقد انه لن يحدث تعارض (لست متاكد صراحة لم اجرب هذا من قبل)
مسلم عادل: تفضل
مؤيد السعدي: أحببت أن أقول أنه في فيدورا 13 ستكون بايثون 3 و 2 مثبتة معا
مؤيد السعدي: يعني إن تمت عملية تثبيتهما بشكل سليم ومدروس لن يحدث تعارض
مسلم عادل: الاستاذ مؤيد اعطاك الجواب النهائي في هذا
حسان: ؟
مسلم عادل: اذا يمكنك التغلب على التعارض بتحديد اصدار اللغة التي تريدها في ترويسة الملف المصدري
meGenius: !
مسلم عادل: تفضل
حسان: طيب ، المبتدئ بأيهما يبدأ بالثاني أو الثالث
مسلم عادل: حسان
مسلم عادل: نصيحة شخصية، الثاني
مسلم عادل: ثم انتقل الى الثالث
مسلم عادل: الثاني يتحتوي على الكثير من المكتبات التي لم تنقل بعد الى الثالث
meGenius: !
مسلم عادل: لذا ابدا به، ومن ثم انتقل الى الثالث حيث ان الفارق بين الاثنين ليس كبيرا ويمكنك تعلمه بسهولة
مسلم عادل: تفضل
مسلم عادل: meGenius
meGenius: بايثون 3 كانت في معظمها إضافات
meGenius: التعديلات الرئيسية تكاد لا تذكر
meGenius: أهم تعديل هو تحويل print من كلمة محجوزة في اللغة إلى function
مسلم عادل: نعم
مسلم عادل: يوجد تعديلات اخرى مثل raw_input وغيره
حسان: !
مسلم عادل: ولكنها كما قلت ليست بالكبيرة
مسلم عادل: يمكن بسهولة معرفة التعديلات وتجنبها
مسلم عادل: تفضل
حسان: سؤال آخير
مسلم عادل: تفضل
حسان: إذا أردت بناء موقع على النت مع وجود تعقيد كبير فيه، هل الأفضل بايثن أو بي اتش بي
مسلم عادل: امممم، هذا يعتمد عليك أكثر من اللغة نفسها
مسلم عادل: يعتمد على مدى اتقانك كل من اللغات التي ذكرت
مسلم عادل: ولكن ساتكلم عن تجربة شخصية هنا
مسلم عادل: كان عندي احد العملاء
مسلم عادل: وقمت بعمل webapplication له
مسلم عادل: خاص بادارة شركته
مسلم عادل: البرنامج عملته بـ django وهي اطار مكتبة لبايثون
new2010: ؟
مسلم عادل: المشروع لم يستغرق وقت طويل لاتقاني كل من بايثون وdjango
مسلم عادل: ولكن حدث امر وطلب العميل تحويل البرنامج الى php
مسلم عادل: طبعا من البداية كان الاتفاق على اعطائه المصدر البرمجي والسماح له بعمل التعديلات التي يريدها كيفما شاء
مسلم عادل: العميل فضل التحول من بايثون الى php لان المطورين عنده لم يتعبوا انفسهم وتعلم بايثون
مسلم عادل: قررت الشركة الموافقة على الطلب وبدانا بتحويل البرنامج الى php
مسلم عادل: لتسهيل المهمة استخدمت codeigniter وهي اطار عمل للـ php
مسلم عادل: النتيجة
مسلم عادل: الوقت المستغرق في التحويل اخذ ضعف الوقت المستغرق في انشاء البرنامج
مسلم عادل: !!
مسلم عادل: طبعا هذا حدث لسببين
مسلم عادل: الاول اضطرارنا الى كتابة الكثير من الموديلز لـ codeigniter لتحاكي ما كنا نستخدمه في django
مسلم عادل: السبب الثاني عدم بساطة ونظافة php
أحمد عربي: !
مسلم عادل: هذا يعطيك مثال، ولكن شخص اخر قد يعارضني تماما هنا
مسلم عادل: وهذا اختيار شخصي في الاخر
أحمد عربي: تعلق بسيط

مسلم عادل: قبلك يوجد new2010
مسلم عادل: تفضل new2010
new2010: هل يمكن استخدام البايثون في اجراء عمليات علىالنظام
مسلم عادل: نعم
new2010: حدف حفظ تغيير
مسلم عادل: نعم يمكن هذا وهذا من اساسيات اللغة
مسلم عادل: وهذه الامور متوفرة في المكتبة os
مسلم عادل: أحمد عربي
أحمد عربي: هو بالنسبة للبي اتش بي

مسلم عادل: تفضل
أحمد عربي: البرمجة من الصفر بها , شئ غير مفضل واستخدام فرام ورك كما اوضحت انت يسهل كثيرا
أحمد عربي: وايضا فرام ورك Cakephp يستخدم django style تقريبا بحسب ما اعلم
***lord-zk السؤال الأخير شباب وننهي هذه الجلسة
أحمد عربي: هل من اسئلة اخري
?مسلم عادل: كان الاستقرار على codeigniter لسهولة التعديل عليه نفسه واضافة ما نريد، ليس لدي تجربة مع cakephp ولم نجربه وقت التحويل حتى لنرى ان كان سيلبي احتياجنا
مسلم عادل: سؤال اخير يا شباب؟
أحمد عربي: تفضل
مؤيد السعدي: أظنه يقصد هل من سؤال أخير.
مسلم عادل: نعم
***lord-zk هل يوجد سؤال ؟؟
مسلم عادل: طيب اذا سبحانك الله وبحمدك نشهد ان لا اله الا انت نستغرفك ونتوب اليك
حسان: جزاك الله خيرا
***lord-zk شكرا لجميع من حضر معنا وساهم وكل الشكر للأستاذ مسلم عادل على تخصيص وقته لنشر العلم وتعميم الفائدة على الجميع شكرا لكم جميعا
مسلم عادل: السلام عليكم ورحمة الله
ملاحظة قمت بإرفاق ملف نصي يحوي ماهو ضمن الاقتباس في حال أحد واجه صعوبة أو أراد نقله ونشره
أيضا قام الأخ أحمد عربي مشكور بتنسيقها بصيغة html وترتيبها وهوي موجودة على الرابط التالي
http://lac-irc.co.cc/session02.log.html
كما يمكنكم متابعة جميع الجلسات على الرابط التالي
http://lac-irc.co.cc/index.html


Menu
Cat Widget