با پایتون دقیقا چکارهایی را میتوان انجام داد؟

python-100732474-orig

اگر شما هم جزو آن دسته از افرادی بوده باشید که به فکر یادگیری زبان پایتون هستید یا اگر اصول و مقدمات زبان برنامه نویسی پایتون را فرا گرفته باشید با این سوال روبرو شده اید که:

"با پایتون دقیقا میشود چکار کرد؟!"

طبیعی است که پاسخ دادن به این سوال به این راحتی ها هم نیست، چرا که زبان پایتون به عنوان یک زبان محبوب در موارد و حوزه های متعددی کاربرد دارد. اما در این مقاله ما میخواهیم سه کاربرد اصلی و محبوب پایتون را معرفی و به صورت کامل بررسی کنیم.

سه کاربرد محبوب و پرطرفدار پایتون

  • توسعه وب
  • علم داده (شامل یادگیری ماشین، آنالیز داده ها، مصورسازی داده)
  • اسکریپت نویسی

حال با ما همراه باشید تا هرکدام از موارد بالا را مفصل بررسی کنیم.

توسعه وب

وب فریمورک هایی مثل جنگو (django) و فلسک (flask) که بر پایه زبان پایتون هستند اخیرا به شدت در بین پایتون کاران برای استفاده در حوزه توسعه وب  محبوب شده اند.

وب فریمورک های بالا کمک می کنند تا ما با استفاده از دانش پایتونی خود برای قسمت سرور یا اصطلاحا بک اند (backend) سایت برنامه نویسی کنیم. کدهای بخش بک اند برخلاف کدهای بخش فرانت اند (front-end) سایت که بر روی کامپیوتر و مرورگر کاربر اجرا میشود، بر روی سرور اجرا میشوند.

تفاوت جنگو (django) با فلسک (flask) چیست؟

سوالی که شاید برای شما هم پیش آمده باشد که برای توسه وب کدام فریمورک بهتر میباشد؟

جواب این سوال در واقع هیچ کدام است! شما باید با در نظر گرفتن تفاوت های این دو فریمورک و با نگاه به پروژه خود یکی از فریمورک های بالا که برای پروژه شما مسیر بهینه تری را دارد انتخاب کنید.

تفاوت اصلی فلسک و جنگو را میتوان به صورت زیر بیان کرد:

  • فلسک برای شما سادگی، انعطاف پذیری و کنترل بیشتر بر برنامه ایی که مینویسید را فراهم میکند. در واقع فلسک به شما اجازه می دهد تا تصمیم بگیرید که همه اجزا برنامه را هر طور که میخواهید پیاده سازی کنید.
  • جنگو برای شما یک تجربه همه جانبه و کامل را فراهم می کند. یک پنل مدیریت، رابط پایگاه داده، ORMT، ساختار دایرکتوری های برنامه شما ارمغان این فریمورک برای شما است.

تفاوت بالا نشان میدهد که شما در فریمورک فلسک کنترل بیشتری بر کدنویسی پروژه خود دارید و دستتان بازتر است اما به این معنای برتری فلسک نیست، شما باید با توجه به آنچه که میخواهید سراغ یکی از فریمورک های بالا بروید.

فلسک یا جنگو؟ مسئله این است!

اگر شما بر روی تجربه و فرصت های یادگیری بیشتر تمرکز کرده اید و یا میخواهید کنترل بیشتری بر اجزای برنامه یا پروژه خود داشته باشید فلسک را تجربه کنید و لذت ببرید. اما اگر برای شما محصول نهایی مهم تر است و مسیری واضح برای آنچه که میخواهید انجام دهید را در فریمورک خواستارید، جنگو را تجربه کنید و لذت ببرید. برای پیاده سازی سایتهایی مانند سایت های خبری، فروشگاه های الکترونیکی و وبلاگ ها بهترین انتخاب فریمورک جنگو است.

در یک جمله میتوان اینگونه این بحث را جمع بندی کرد که جنگو به شما ابزارهای گوناگونی می بخشد که برنامه نویسی را برای رسیدن به محصول نهایی آسان تر و سریع تر می کند اما قطعا در فلسک دستتان برای انجام کارهایی که دوست دارید بازتر است و با محیط انعطاف پذیرتری روبرو خواهید شد.

علم داده (Data Science)

یادگیری ماشین

شاید بهترین راه برای توضیح یادگیری ماشین استفاده از یک مثال ساده باشد.

فرض کنید شما میخواهید برنامه ایی بنویسید که به صورت خودکار یا اتوماتیک چیزی را در یک عکس تشخیص دهد.

تصویر زیر را در نظر بگیرید،شما میخواهید برنامه ایی بنویسید که در این عکس سگ را تشخیص دهد.

پردازش تصویر با Python

حال فرض کنید میخواهید برنامه ایی بنویسید که در تصویر زیر میز را تشخیص بدهد.

پردازش تصویر میز در پایتون

شاید برای ساخت برنامه مذکور راه های گوناگونی داشته باشید. شاید بگویید برای برنامه تصویر یک اگر در تصویر پیکسل های روشن قهوه ایی مشاهده شد اعلام کند که سگ را تشخیص داده، یا با تشخیص لبه ها میز را در تصویر دو تشخیص بدهیم اما این راه ها راه حل های خوبی نیست.

اگر ما در تصویر یک سگی سفید با موهای قهوه ایی داشته باشیم چه؟ یا اگر در تصویر دو ما فقط قسمتی از میز را در تصویر داشتیم چه؟

اینجاست که دقیقا "یادگیری ماشین" وارد میشود!

یادگیری ماشین معمولا از الگوی ورودی هایی که دریافت می کند به الگوریتمی برای تشخیص و اجرا می رسد.

یعنی شما میتوانید 1000 عکس سگ و 1000 عکس میز را به یک الگوریتم یادگیری ماشین بدهید. به این ترتیب آن تفاوت بین سگ و میز را به خوبی تشخیص می دهد. حال اگر به او یک تصویر جدید سگ یا میز بدهید به خوبی قادر خواهد بود که آنها را شناسایی کند.

این روش تقریبا شبیه یادگیری یک کودک تازه متولد شده است. یک کودک چگونه تشخیص می دهد چه چیزی سگ و چه چیزی میز است؟

والدینش به او می گویند:" این یک سگ است و آن یکی میز است." یا شاید بگویند: "اگر چیزی کرک دار یا پشمالو بود و موهای قهوه ایی روشن دارد احتمالا سگ است."

کودک  تصاویر گوناگونی که از اطرافش می بیند در ذهنش جمع آوری می کند و با مقایسه هایی که انجام می دهد بعد مدت کوتاهی به راحتی نوع اشیا اطرافش را تشخیص می دهد.

از آشناترین موارد کاربرد یادگیری ماشین میتوان به سیستم های تشخیص صدا یا تشخیص چهره و امثال این ها اشاره کرد. البته یادگیری ماشین مبحث بسیار وسیعی است که در خود مباحث وسیع و جذابی چون یادگیری عمیق (Deep Learning) ، شبکه های مصنوعی (Neural networks) و... جای داده است.

پایتون برای یادگیری ماشین

حالا پس از درک مفهوم کلی و کاربرد های بحث یادگیری ماشین نوبت به بیان و بررسی کتابخانه ها و فریمورک های پایتونی برای برنامه نویسی در حوزه یادگیری ماشین رسیده است.

دو تا از معروف ترین و محبوب ترین کتابخانه ها برای این مسئله scikit-learn و TensorFlow می باشند.

scikit-learn یک کتابخانه است که با برخی الگوریتم های محبوب یادگیری ماشین ساخته شده است و برای کاربردهای یادگیری ماشین مانند خوشه بندی، رگرسیون و کلاس بندی بسیار قدرتمند عمل می کند و عمدتا در داده کاوی کاربرد فراوان دارد.

TensorFlow یک کتابخانه سطح پایین است که به شما اجازه ساخت الگوریتم های سفارشی یادگیری ماشین می دهد. این کتابخانه به صورت اوپن سورس توسط گوگل توسعه داده شده است.

اگر شما قصد دارید یادگیری ماشین را با پایتون شروع کنید توصیه میشود با scikit-learn این راه را آغاز کنید. اما اگر دنبال انجام کارهای پیشرفته مخصوصا در زمینه شبکه های عصبی مصنوعی هستید کتابخانه TensorFlow بهترین انتخاب است.

آنالیز و مصور سازی داده

همانند بحث یادگیری ماشین در این قسمت هم بهتر است مفاهیم مورد نظر را با یک مثال ساده توضیح بدهیم.

فرض کنید شما به عنوان یک آنالیزگر داده برای یک کمپانی که در کار فروش محصولات آنلاین است کار میکنید.

فرض کنید شما به عنوان آنالیزور داده نمودار زیر را  برای تهیه گزارش فروش های روز یکشنبه خواهید کشید.

آنالیز داده در پایتون

از این نمودار متوجه خواهیم شد که 400 نفر از خریداران محصولات مرد و حدود 350 نفر زن بوده اند.

اما چرا تعداد خریداران مرد این محصول بیشتر از تعداد خریداران زن است؟

یک توضیح احتمالی این است که این محصول در بین مردان محبوب تر است. توضیح دیگر این است که اندازه نمونه (فقط روز یکشنبه) کوچک است و نمیتوان نظر کلی را بیان کرد. یکی دیگر از توضیحات هم این است که مردان به دلایلی این محصول را فقط در روز یکشنبه بیشتر خریداری می کنند.

برای درک اینکه کدام یک از توضیحات بالا درست است شما مجبورید نمودار زیر را رسم کنید.

مصورسازی داده در پایتون

حال در این نمودار برخلاف نمودار قبلی نه فقط خریداران روز یکشنبه بلکه تعدد خریداران در تمامی روزهای هفته را مشاهده میکنیم. در این نمودار میتوانیم به راحتی به این تشخیص برسیم که این محصول در بین مردان محبوب تر است و تعداد بالای خریداران مرد بخاطر همین امر است، اما اگر شما با نمودار زیر به عنوان نمودار فروش هفتگی روبرو بشوید چه دلیل و تحلیلی خواهید داشت؟

همانطور که میبینید دیگر تحلیل این نمودار اصلا به آسانی نمودار قبلی نیست. در دنیای واقعی هم نمودارها به همین اندازه پیچیده هستند و تحلیل آنها واقعا سخت است و اینجاست که دقیقا نیاز به آنالیز داده و مصورسازی داده ها با کمک پایتون را حس می کنیم.

آنالیز داده/مصور سازی داده با پایتون

یکی از کتابخانه های پایتونی محبوب و معروف برای مصور سازی داده ها کتابخانه Matplotlib می باشد.

این کتابخانه به علت ساده بودن و اینکه کتابخانه دیگری در این حوزه به نام seaborn بر پایه این کتابخانه ساخته شده است بهترین انتخاب برای شروع است.

اسکریپت

اسکریپت به نوشتن برنامه های کوچکی اشاره دارد که برای انجام کارهای ساده پیاده سازی و طراحی شده اند.

برای فهم بهتر این مسئله اجازه دهید یک مثال بزنم.

فرض کنید شما در یک استارتاپ کوچک در ژاپن مشغول به کار هستید که یک سیستم پشتیبانی ایمیل دارد و  شما را قادر می سازد تا به سوالات مشتریان که از طریق ایمیل ارسال شده است پاسخ بدهید.

حال به شما این وظیفه محول میشود که ایمیل هایی که حاوی کلمات کلیدی خاصی است را بشمارید و تجزیه و تحلیل کنید. شما میتوانید این کار را دستی انجام دهید اما راه دیگری هم وجود دارد. نوشتن یک برنامه ساده با استفاده از زبان پایتون میتواند این کار شما را به راحتی و با سرعت انجام بدهد.

ساخت برنامه های ساده و کاربردی با استفاده از زبان آسان و جذاب پایتون یکی دیگر از موارد کاربرد اصلی و محبوب پایتون است که مثال ساده آن را در بالا دیدیم.

چگونه با پایتون بازی (Game) بنویسیم؟

اگر به حوزه گیم و بازی سازی علاقه دارید پایتون برای آن هم برنامه دارد! شما میتوانید با استفاده از کتابخانه PyGame به ساخت و توسعه بازی بپردازید. شما با این کتابخانه میتوانید به راحتی پروژه های ساده یا متوسط گیم را توسعه بدهید، البته اگر دنبال فعالیت های کاملا جدی و بزرگ در حوزه گیم و بازی سازی هستید باید سراغ موتور بازی سازی یونیتی (با زبان سی شارپ) که محبوب ترین و بهترین موتور بازی سازی است بروید.

ساخت برنامه های دسکتاپ با پایتون

شما همچنین میتوانید با پایتون برنامه هایی ویژه دسکتاپ بسازید. گرچه که برای ساخت برنامه های دسکتاپ استفاده از زبان های جاوا و سی شارپ محبوب تر و پر استفاده تر از پایتون است، اما شما در پایتون با استفاده از کتابخانه Tkinter ایده های برنامه های دسکتاپ خود را اجرایی کنید.

نویسنده شوید

دیدگاه‌های شما (3 دیدگاه)

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

Href
10 دی 1398
سلام , می خواستم بدونم اگر به موضوع نفوذ علاقه مندی زیادی داشته باشیم ، فریمورک django رو پیشنهاد می کنید یا flask، که هم برای برنامه نویسی back_end مورد استفاده قرار بگیره و هم در نفوذ قدرت استفاده ی بیش تری به ما بدهد. ممنون.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

امید
02 مرداد 1398
سلام خسته نباشید من یه سوالی داشتم اگه میشه سریع پاسخ بدید. من می خواهم یه وبلاگ رو از پایه ی پایه بسازم و در واقع می خوام یک سیستم مدیریت محتوا بسازم مثل ورد پرس(مثل وردپرس قدرتمند نه! بلکه برای یه وبلاگ کوچیک) شما کدوم فریمورک پایتون رو پیشنهاد می دید فلسک یا جنگو. اگه بشه با فلسک اون سیستم رو ساخت ارزش داره؟ و اگه نداره جنگو خوبه بعلاوه اینکه وبلاگ من خیلی بازدید نداره و به چیز ساده باشه.

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.

سبحان
05 تیر 1398
سلام بنده چند مدت با جنگو کار کردم django rest framework ولی اصلا منطق route هاشو درک نکردم! ممنون میشم در باره route هم یک مقالع منتشر کنید

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.