ما الذي تستطيع عمله عن طريق بايثون؟
هذا المقال تم ترجمته من المصدر التالي: https://medium.com/free-code-camp/what-can-you-do-with-python-the-3-main-applications-518db9a68a78
إذا كنت تفكر في تعلم لغة بايثون – أو بدأت في تعلمها- قد تتساءل:
ما الذي يمكنني عمله باستخدام بايثون؟
هذا سؤال صعب يجب الإجابة عنه ، لأن هناك العديد من التطبيقات الخاصة بلغة بايثون.
لكن مع مرور الوقت, لاحظت ثلاث تطبيقات رئيسية لبايثون:
تطوير المواقع
علم البيانات, وذلك يشمل تعلم الآلة, تحليل البيانات, وتمثيل البيانات
كلغة برمجة نصية (Scripting)
سنتحدث عن كل واحدة من هذه التطبيقات.
تطوير المواقع:
أصبحت أُطر الويب المبينة باستخدام بايثون مثل Django و Flask شائعة جدًا لتطوير المواقع.
هذه الأُطر تساعد على إنشاء كود بايثون خاص بالخادم (كود الواجهة الخلفية). هذا الكود سيعمل في جهة الخادم وليس على أجهزة المستخدمين والمتصفحات (كود الواجهة الأمامية). إذا لم تكن لديك خلفية عن الفرق بين الواجهة الخلفية (back-end) والواجهة الأمامية (front-end) فستجد الفرق أسفل المقال.
لكن , لماذا احتاج إطار عمل للويب؟
هذا يرجع إلى كون أطر الويب تجعل من السهل بناء المنطق الخاص بجهة الخادم. وهذا يشمل التعامل مع قواعد البيانات, وإنشاء ملفات HTML لواجهة المستخدم في المتصفح
أي من أطرالويب الخاصة بلغة بايثون يجب أن استخدمها؟
Django و Flask من أشهر أطرالويب لبايثون. أنصحك باستخدام إحداهما إذا كنت مبتدئ
ماهو الفرق بين Django و Flask؟
هناك مقال ممتاز حول هذا الموضوع , دعني اقتبس منه التالي:
"المقارنة الرئيسية:
Falsk يوفر لك البساطة والمرونة والتحكم بالجزئيات الدقيقة. لايقيدك بشيء (يعطيك الخيار في تنفيذ ماتريده)
Django يوفرلك تجربة شاملة: من لوحة التحكم, واجهات قواعد البيانات,
,ربط الكائنات بعلاقات أو الجداول (object-relational mapping) وهيكلة للتطبيقات والمشاريع الخاصة بك.
عليك اختيار:
Falsk إذا كنت ستركز على فرص التعلم والتجربة, أو كنت تريد في التحكم في اختيار العناصر التي ترغب في استخدامها (مثل أي قاعدة بيانات ستقوم باستخدامها وكيف سيتم التواصل معها)
Django إذا كنت ستركز على المنتج النهائي. خاصة إذا كنت تقوم بعمل تطبيق مباشر وواضح الغرض مثل موقع أخبار أو متجر إلكتروني أو مدونة وتريد أن يكون هناك دائمًا طريقة واحدة واضحة لعمل الأشياء"
بمعنى آخر ، إذا كنت مبتدئًا ربما يكون Flask خيارك الأفضل لأنه يحتوي على مكونات أقل للتعامل معه. أيضا يعتبر الخيار الأفضل إذا كنت تريد المزيد من التخصيص.
بينما إذا كنت تبحث عن بناء شيء ما بشكل مباشر ، فمن المحتمل أن يتيح لك Django الوصول إليه بشكل أسرع.
إذا كنت ستبدأ في تعلم Django, أنصحك بكتاب اسمه Django for Beginner
تجده هنا:
أيضا بإمكانك الحصول على نسخ مجانية لبعض الفصول من هنا
https://djangoforbeginners.com/
لننتقل إلى النقطة التالية
علم البيانات, وذلك يشمل تعلم الآلة, تحليل البيانات, وتمثيل البيانات
في البداية لنراجع معنى تعلم الآلة (Machine Learning):
أعتقد أن أفضل طريقة لشرح تعلم الآلة هو بإعطاء مثال بسيط:
لنفترض أنك تريد تطوير برنامج يقوم باكتشاف ما في الصورة بشكل تلقائي.
أي بالنظر إلى هذه الصورة أدناه (الصورة 1) ، فأنت تريد أن يدرك البرنامج أنه كلب.
وبالنظر إلى هذا الصورة الأخرى أدناه (الصورة 2) ، فأنت تريد أن يتعرف برنامجك أنها صورة طاولة.
قد تقول ، حسنًا ، يمكنني فقط كتابة بعض الكود للقيام بذلك. على سبيل المثال ، ربما إذا كان هناك الكثير من وحدات البكسل ذات اللون البني الفاتح في الصورة ، فيمكننا القول إنه كلب.
أو ربما ، يمكنك معرفة كيفية اكتشاف الحواف في صورة ما. بعد ذلك ، يمكنك القول إذا كان هناك العديد من الحواف المستقيمة ، فهي طاولة.
لكن ، هذا النوع من الطرق ستزداد تعقيدًا بشكل سريع. ماذا لو كان هناك كلب أبيض في الصورة بدون شعر بني؟ ماذا لو كانت الصورة تظهر فقط الأجزاء المستديرة من الطاولة؟
هنا يأتي دور تعلم الآلة
تعلم الآلة يعتمد على تنفيذ خوارزمية تقوم باكتشاف نمط معين في المدخلات المعطاة.
يمكنك أن تعطي ، على سبيل المثال ، 1000 صورة لكلب و 1000 صورة طاولة لخوارزمية تعلم الآلة وسوف تتعلم الفرق بين الكلب والطاولة. وبعدها عندما تعطيها صورة جديدة لكلب أو طاولة ، فستكون قادرة على التعرف على الصورة.
أعتقد أن هذا يشبه إلى حد ما كيف يتعلم الطفل أشياء جديدة. كيف يتعلم الطفل أن هناك شيئًا ما يشبه الكلب وآخر يشبه الطاولة؟ على الغالب أنه من خلال مجموعة من الأمثلة.
ربما لا تخبر الطفل صراحة ، "إذا كان هناك شيء فروي وله شعر بني فاتح ، فمن المحتمل أنه كلب". ولكن على الأرجح ستقول فقط ، "هذا كلب, هذا أيضا كلب. وهذه هي الطاولة, وهذه طاولة أخرى "
خوارزميات تعلم الآلة تعمل بنفس الطريقة, يمكن أن تطبق نفس الفكرة على:
· أنظمة التوصية (فكر في YouTube و Amazon و Netflix)
· تمييز الوجوه
· التعرف على الصوت
أشهر خوارزميات تعلم الآلة والتي قد تكون سمعت بها:
· الشبكات العصبية Neural networks
· التعلم العميق Deep learning
· آلة المتجهات الداعمة Support vector machines
· الغابة العشوائية Random forest
يمكنك استخدام أي من الخوارزميات المذكورة أعلاه لحل مشكلة تصنيف الصورة المذكورة سابقًا.
بايثون في تعلم الآلة:
هناك العديد من مكتبات وبيئات العمل الخاصة بتعلم الآلة في بايثون:
scikit-learn و TensorFlow هما الأكثر انتشارًا
يأتي scikit-Learn متضمنًا بعض خوارزميات التعلم الآلي الأكثر شيوعًا والتي ذكرت بعضًا منها في الأعلى.
TensorFlow هو أكثر مكتبة منخفضة المستوى تتيح لك إنشاء خوارزميات مخصصة لتعلم الآلة.
إذا كنت بدأت للتو في مشروع تعلم الآلة ، فأنصحك بأن تبدأ أولاً بتعلم scikit-Learn. وإذا واجهت مشاكل في الكفاءة ، فابدأ في البحث في TensorFlow.
كيف يمكنني البدء في تعلم الآلة؟
لتعلم أساسيات تعلم الآلة ، أنصحك إما بدورة التعلم الآلي في جامعة ستانفورد أو معهد كاليفورنيا للتكنولوجيا.
يرجى ملاحظة أنك بحاجة إلى معرفة أساسيات حساب التفاضل والتكامل والجبر الخطي لفهم بعض المواد في تلك الدورات.
بعد ذلك ، يجب عليك ممارسة ما تعلمته من إحدى هذه الدورات مع Kaggle (موقع ويب يتنافس فيه الأشخاص لإنشاء أفضل خوارزمية لتعلم الآلة لحل مشكلة معينة. أيضًا يوجد لديهم دروس جميلة للمبتدئين)
ماذ عن تحليل وتمثيل البيانات؟
لمساعدتك في فهم ما الذي يبدو عليه تحليل وتمثيل البيانات, سأقوم بوضع مثال
لنفترض أنك تعمل لدى شركة تبيع بعض المنتجات عبر الإنترنت.
بعد ذلك ، كمحلل بيانات ، يمكنك رسم أعمدة بيانية كالتالي:
من هذا الرسم البياني ، يمكننا استنتاج أن الرجال اشتروا أكثر من 400 وحدة من هذا المنتج وأن النساء قد اشتروا حوالي 350 وحدة من هذا المنتج يوم الأحد.
كمحلل بيانات ، قد تتوصل إلى بعض التفسيرات المحتملة لهذا الاختلاف.
أحد التفسيرات المحتملة الواضحة هو أن هذا المنتج أكثر شعبية لدى الرجال منه لدى النساء. قد يكون التفسير الآخر المحتمل هو أن حجم العينة صغير جدًا وهذا الاختلاف نتج فقط عن طريق الصدفة. وقد يكون هناك تفسير آخر محتمل وهو أن الرجال يميلون إلى شراء هذا المنتج أكثر يوم الأحد فقط لسبب ما.
لفهم أي من هذه التفسيرات هو الصحيح ، يمكنك تمثيل رسم بياني آخر كالتالي.
بدلاً من عرض البيانات ليوم الأحد فقط ، سننظر إلى البيانات لمدة أسبوع كامل. كما ترون ، من هذا الرسم البياني ، يمكننا أن نرى أن هذا الفارق ثابت إلى حد ما على مدار أيام مختلفة.
من هذا التحليل القليل ، قد تستنتج أن التفسير الأكثر إقناعًا لهذا الاختلاف هو أن هذا المنتج ببساطة أكثر شعبية لدى الرجال منه لدى النساء.
من ناحية أخرى ، ماذا لو رأيت رسمًا بيانيًا كهذا بدلاً من ذلك؟
إذن ، ما الذي يفسر الفرق في يوم الأحد؟
قد تقول ، ربما يميل الرجال إلى شراء المزيد من هذا المنتج يوم الأحد فقط لسبب ما. أو ربما كانت مجرد صدفة أن الرجال اشتروا الكثير منها يوم الأحد.
هذا مثال مبسط لما قد يبدو عليه تحليل البيانات في العالم الحقيقي.
تحليل البيانات الذي قمت به عندما كنت أعمل في Google و Microsoft كان مشابه جدًا لهذا المثال – لكن أكثر تعقيدًا. لقد استخدمت Python في Google لهذا النوع من التحليل ، بينما استخدمت JavaScript في Microsoft.
و استخدمت SQL في كل من تلك الشركات لسحب البيانات من قواعد البيانات الخاصة بنا. بعد ذلك ، استخدم إما Python و Matplotlib (في Google) أو JavaScript و D3.js (في Microsoft) لتصوير هذه البيانات وتحليلها.
تحليل وتمثيل البيانات باستخدام بايثون:
واحدة من أكثر المكتبات شعبية لتمثيل البيانات هي Matplotlib.
إنها مكتبة جيدة للبدء بها لأنها من السهل العمل عليها
تعتمد بعض المكتبات الأخرى مثل seaborn على مكتبة Matplotlib . لذلك ، سيساعدك تعلم Matplotlib على تعلم هذه المكتبات الأخرى لاحقًا.
كيف يجب أن أتعلم تحليل البيانات / تمثيلها باستخدام بايثون؟
يجب أن تتعلم أولاً أساسيات تحليل البيانات وتمثيلها. عندما بحثت عن مصادر جيدة في الإنترنت ، لم أتمكن من العثور على أي منها. لذلك ، انتهى بي الأمر إلى إنشاء مقطع فيديو على YouTube حول هذا الموضوع:
https://youtu.be/a9UrKTVEeZA
انتهى بي الأمر إلى تقديم دورة كاملة حول هذا الموضوع على Pluralsight ، والتي يمكنك أن تأخذها مجانًا من خلال الاشتراك في الإصدار التجريبي المجاني لمدة 10 أيام.
بعد تعلم أساسيات تحليل البيانات وتمثيلها ، سيكون تعلم أساسيات الإحصاءات من مواقع مثل Coursera و Khan Academy مفيدًا أيضًا.
النص البرمجي Scripting
ماهو Scripting؟
يشير النص البرمجي عادةً إلى كتابة برامج صغيرة مصممة لأتمتة المهام البسيطة.
دعوني أقدم لكم مثالاً من تجربتي الشخصية هنا.
كنت أعمل لدى شركة ناشئة صغيرة في اليابان حيث كان لدينا نظام لدعم البريد الإلكتروني. النظام مخصص للرد على الأسئلة التي أرسلها العملاء إلينا عبر البريد الإلكتروني. عندما كنت أعمل هناك ، كانت مهمتي حساب عدد رسائل البريد الإلكتروني التي تحتوي على كلمات رئيسية معينة حتى نتمكن من تحليل رسائل البريد الإلكتروني التي تلقيناها.
كان بإمكاننا القيام بذلك يدويًا ، لكن بدلاً من ذلك ، كتبت برنامجًا بسيطًا لأتمتة هذه المهمة. في الواقع ، استخدمنا روبي في ذلك الوقت ، لكن بايثون هي أيضًا لغة جيدة لهذا النوع من المهام. Python مناسب لهذا النوع من المهام بشكل رئيسي لأنه يحتوي على صياغة بسيطة نسبيًا وسهلة الكتابة. من السهل أيضًا كتابة شيء صغير به واختباره.
ماذا عن التطبيقات المدمجة؟
لست خبيرًا في التطبيقات المدمجة ، لكنني أعرف أن Python يعمل مع Rasberry Pi. يبدو أنه تطبيق شائع بين هواة العتاد hardware
ماذا عن الألعاب؟
يمكنك استخدام المكتبة المسماة PyGame لتطوير الألعاب ، ولكنها ليست محرك الألعاب الأكثر شعبية. يمكنك استخدامه لإنشاء مشروع لمجرد الهواية ، لكنني شخصياً لن أختره إذا كنت جادًا في تطوير اللعبة.
بدلاً من ذلك ، أوصي باستخدام Unity مع C#، وهو أحد أكثر محركات الألعاب شيوعًا. يتيح لك إنشاء لعبة للعديد من المنصات ، بما في ذلك Mac و Windows و iOS و Android.
ماذا عن تطبيقات سطح المكتب؟
يمكنك إنشاء تطبيق سطح مكتب في Python باستخدام Tkinter ، لكنها لا تبدو الخيار الأكثر شيوعًا أيضًا.
بدلاً من ذلك ، يبدو أن لغات مثل Java و C # و C ++ أكثر شيوعًا لهذا الغرض.
في الآونة الأخيرة ، بدأت بعض الشركات باستخدام JavaScript لإنشاء تطبيقات سطح المكتب أيضًا.
على سبيل المثال ، تم تصميم تطبيق سطح المكتب الخاص بـ Slack باستخدام شيء يسمى Electron. يسمح لك بإنشاء تطبيقات سطح المكتب باستخدام JavaScript.
شخصيا ، إذا كنت بصدد إنشاء تطبيق سطح مكتب ، فسوف اختار JavaScript. ستسمح لك بإعادة استخدام بعض الكود من إصدار الويب إذا كان لديك.
ومع ذلك ، لست خبيرًا في تطبيقات سطح المكتب أيضًا ، لذا يرجى إعلامي في التعليقات إذا كنت توافق أو لا توافق على ذلك.
بايثون 3 أم بايثون 2؟
أوصي بايثون 3 لأنه أكثر حداثة وهو خيار أكثر شعبية في هذه المرحلة.
ملاحظة:
الكود الخاص بالواجهة الخلفية و الكود الخاص بالواجهة الأمامية (في حال عدم معرفتك بالفرق):
لنفترض أنك تريد عمل شيء مثل Instagram.
بعد ذلك ، ستحتاج إلى إنشاء كود خاص بالواجهات (front-end) لكل نوع من أنواع الأجهزة التي تريد دعمها.
يمكنك استخدام ، على سبيل المثال:
سويفت لل ios
جافا للأندرويد
جافا سكريبت لمتصفحات الويب
سيتم تشغيل كل مجموعة من التعليمات البرمجية على كل نوع من أنواع الأجهزة / المتصفحات. ستكون مجموعة التعليمات البرمجية هذه هي التي تحدد الشكل الذي سيكون عليه واجهة التطبيق ، وما هو شكل الأزرار عند النقر فوقها ، إلخ.
ومع ذلك ، ستظل بحاجة إلى القدرة على تخزين معلومات المستخدمين وصورهم. ستحتاج إلى تخزينها على الخادم الخاص بك وليس فقط على أجهزة المستخدمين لديك حتى يتمكن كل متابع من مشاهدة الصور الخاصة به.
هنا يأتي دور الواجهة الخلفية / جانب الخادم. ستحتاج إلى كتابة بعض التعليمات البرمجية للواجهة الخلفية (back-end) للقيام بأشياء مثل:
تتبع من يتابع من
ضغط الصور حتى لا تشغل مساحة تخزين كبيرة
التوصية بالصور والحسابات الجديدة لكل مستخدم في ميزة الاكتشاف
لذلك ، هذا هو الفرق بين كود الواجهة الخلفية وكود الواجهة الأمامية.
بالمناسبة ، بايثون ليس هو الخيار الوحيد الجيد لكتابة التعليمات البرمجية للواجهة الخلفية / جانب الخادم. هناك العديد من الخيارات الشائعة الأخرى ، بما في ذلك Node.js ، والتي تستند إلى JavaScript.